From 617bcdaf5b1ece13ca0d2551deb4249a64dbc139 Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Wed, 20 Mar 2024 20:54:37 +0200 Subject: [PATCH 001/912] [core] Update prettier script to use `master` branch (#12522) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 896c4ac9af1b..d23ef5331d66 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "eslint:ci": "eslint . --report-unused-disable-directives --ext .js,.ts,.tsx --max-warnings 0", "markdownlint": "markdownlint-cli2 \"**/*.md\"", "postinstall": "patch-package", - "prettier": "pretty-quick --branch next --ignore-path .eslintignore", + "prettier": "pretty-quick --branch master --ignore-path .eslintignore", "prettier:all": "prettier --write . --ignore-path .eslintignore", "proptypes": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./docs/scripts/generateProptypes.ts", "size:snapshot": "node --max-old-space-size=2048 ./scripts/sizeSnapshot/create", From 428065579e16b9361204023df6292f2b4cb999b4 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 21 Mar 2024 12:07:58 +0200 Subject: [PATCH 002/912] [core] Update supported browsers (browserlistrc) (#12521) --- .browserslistrc | 81 +++++++++++++++++++++++++++++++++++-------------- yarn.lock | 6 ++-- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index 729c34746e4b..92f902fcf61b 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -7,34 +7,71 @@ node 14 # Default/Fallback -# `npx browserslist --mobile-to-desktop "> 0.5%, last 2 versions, Firefox ESR, not dead, not IE 11"` when the last major is released. - -# Manually downgrading to ios_saf 12.4 for iPhone 6 and webpack 4 support. +# Explicit safari versions are here based on the agreed terms in: https://github.com/mui/material-ui/issues/40958#issuecomment-1953215043 +# Run before a major release: `npx browserslist@latest --update-db && npx browserslist --mobile-to-desktop "> 0.5%, last 2 versions, Firefox ESR, not dead, safari >= 15.4, iOS >= 15.4"`. +# Update the versions in the `stable` section with the output result. +# Reference PR: https://github.com/mui/mui-x/pull/12521. # On update, sync references where "#stable-snapshot" is mentioned in the codebase. [stable] -and_chr 91 -and_ff 89 -and_qq 10.4 -and_uc 12.12 -android 91 -baidu 7.12 -chrome 90 -edge 91 -firefox 78 - -# 12.4 but 12.2-12.5 are treated equally in caniuse-lite. - -# Though caniuse-lite does not supporting finding an exact version in a range which is why `12.4` would result in "Unknown version 12.4 of ios_saf" - -ios_saf 12.2 +and_chr 122 +and_chr 121 +and_ff 123 +and_ff 122 +and_qq 14.9 +and_uc 15.5 +android 122 +android 121 +chrome 122 +chrome 121 +chrome 120 +chrome 119 +chrome 109 +edge 122 +edge 121 +firefox 123 +firefox 122 +firefox 115 +ios_saf 17.4 +ios_saf 17.3 +ios_saf 17.2 +ios_saf 17.1 +ios_saf 17.0 +ios_saf 16.6-16.7 +ios_saf 16.5 +ios_saf 16.4 +ios_saf 16.3 +ios_saf 16.2 +ios_saf 16.1 +ios_saf 16.0 +ios_saf 15.6-15.8 +ios_saf 15.5 +ios_saf 15.4 +kaios 3.0-3.1 kaios 2.5 op_mini all -op_mob 73 -opera 76 -safari 14 -samsung 13.0 +op_mob 80 +opera 108 +opera 107 +opera 106 +safari 17.4 +safari 17.3 +safari 17.2 +safari 17.1 +safari 17.0 +safari 16.6 +safari 16.5 +safari 16.4 +safari 16.3 +safari 16.2 +safari 16.1 +safari 16.0 +safari 15.6 +safari 15.5 +safari 15.4 +samsung 23 +samsung 22 # snapshot of `npx browserslist "maintained node versions"` diff --git a/yarn.lock b/yarn.lock index 572f5f748967..f0779977e1a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5074,9 +5074,9 @@ camelize@^1.0.0: integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591: - version "1.0.30001591" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz#16745e50263edc9f395895a7cd468b9f3767cf33" - integrity sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ== + version "1.0.30001599" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz#571cf4f3f1506df9bf41fcbb6d10d5d017817bce" + integrity sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA== chai-dom@^1.12.0: version "1.12.0" From fb7e03e91958c49f69249d37a73d2c4a2e8387e6 Mon Sep 17 00:00:00 2001 From: sai chand <60743144+sai6855@users.noreply.github.com> Date: Thu, 21 Mar 2024 18:11:15 +0530 Subject: [PATCH 003/912] [DataGridPremium] Fix boolean cell not rendered in group rows (#12492) Co-authored-by: Andrew Cherniavskyi --- .../tests/rowGrouping.DataGridPremium.test.tsx | 16 ++++++++++++++++ .../src/components/cell/GridBooleanCell.tsx | 10 ++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx b/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx index 601df5408868..9dc6dc7eef7c 100644 --- a/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx +++ b/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx @@ -163,6 +163,22 @@ describe(' - Row grouping', () => { expect(getColumnValues(0)).to.deep.equal(['Cat A (3)', '', '', '', 'Cat B (2)', '', '']); }); + it('should display icon on auto-generated row', () => { + render( + ({ ...row, isFilled: false }))} + />, + ); + + expect(screen.getByTestId('CloseIcon')).toBeVisible(); + }); + it('should respect the grouping criteria with colDef.groupable = false', () => { render( { return composeClasses(slots, getDataGridUtilityClass, classes); }; -interface GridBooleanCellProps - extends GridRenderCellParams, - Omit {} +interface GridBooleanCellProps extends GridRenderCellParams, Omit { + hideDescendantCount?: boolean; +} function GridBooleanCellRaw(props: GridBooleanCellProps) { const { @@ -40,6 +40,7 @@ function GridBooleanCellRaw(props: GridBooleanCellProps) { isEditable, hasFocus, tabIndex, + hideDescendantCount, ...other } = props; @@ -108,6 +109,7 @@ GridBooleanCellRaw.propTypes = { * If true, the cell is the active element. */ hasFocus: PropTypes.bool.isRequired, + hideDescendantCount: PropTypes.bool, /** * The grid row id. */ @@ -140,7 +142,7 @@ const GridBooleanCell = React.memo(GridBooleanCellRaw); export { GridBooleanCell }; export const renderBooleanCell: GridColDef['renderCell'] = (params: GridBooleanCellProps) => { - if (isAutoGeneratedRow(params.rowNode)) { + if (params.field !== '__row_group_by_columns_group__' && isAutoGeneratedRow(params.rowNode)) { return ''; } From dcb8721de38019e9ac712797d29ec8ec6530d3d0 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 21 Mar 2024 17:19:50 +0200 Subject: [PATCH 004/912] [DateTimeRangePicker] Fix views behavior regression (#12529) --- .../src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index c794c6f7a4ec..ce0f3684164a 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -105,7 +105,7 @@ const rendererInterceptor = function rendererInterceptor< viewRenderer as PickerViewRenderer, TimeViewWithMeridiem, any, {}> } view={view && isInternalTimeView(view) ? view : 'hours'} - views={finalProps.views.filter(isInternalTimeView)} + views={finalProps.views as TimeViewWithMeridiem[]} openTo={isInternalTimeView(openTo) ? openTo : 'hours'} /> ); From 2916fb15d4df24868bdccb0d3cbc8a8ef10cb0e1 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Thu, 21 Mar 2024 16:34:32 +0100 Subject: [PATCH 005/912] [docs] Update "What's new in MUI X" page (#12527) --- docs/src/modules/components/WhatsNewLayout.js | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/docs/src/modules/components/WhatsNewLayout.js b/docs/src/modules/components/WhatsNewLayout.js index 9ed6e778bc59..d2df9ca9e718 100644 --- a/docs/src/modules/components/WhatsNewLayout.js +++ b/docs/src/modules/components/WhatsNewLayout.js @@ -18,31 +18,47 @@ import TimelineOppositeContent from '@mui/lab/TimelineOppositeContent'; const entries = [ { - title: 'MUI X v7.0.0-beta.0', + title: 'MUI X v7.0.0', description: 'Featuring new components and multiple enhancements for both developers and end-users.', - date: new Date(2024, 0, 29), - url: 'https://mui.com/blog/mui-x-v7-beta/', + date: new Date(2024, 2, 21), + url: 'https://mui.com/blog/mui-x-v7/', highlightList: [ { - title: 'Data Grid - Sticky headers', - url: 'https://mui.com/blog/mui-x-v7-beta/#sticky-headers', + title: 'Data Grid – Column resizing on the Community plan', + url: 'https://mui.com/blog/mui-x-v7/#column-resizing-on-the-community-plan', }, { - title: 'Data Grid - Columns management panel', - url: 'https://mui.com/blog/mui-x-v7-beta/#improved-columns-panel-design', + title: 'Data Grid – Sticky headers and improved scrolling performance', + url: 'https://mui.com/blog/mui-x-v7/#sticky-headers-and-improved-scrolling-performance', + }, + { + title: 'Data Grid – Improved columns panel design', + url: 'https://mui.com/blog/mui-x-v7/#improved-columns-panel-design', + }, + { + title: 'Data Grid – New stable features', + url: 'https://mui.com/blog/mui-x-v7/#new-stable-features', }, { title: 'Rich Tree View', - url: 'https://mui.com/blog/mui-x-v7-beta/#richtreeview', + url: 'https://mui.com/blog/mui-x-v7/#rich-tree-view', + }, + { + title: 'Charts - Gauge charts', + url: 'https://mui.com/blog/mui-x-v7/#gauge-charts', + }, + { + title: 'Charts - Reference line', + url: 'https://mui.com/blog/mui-x-v7/#reference-line', }, { title: 'Date Time Range Picker', - url: 'https://mui.com/blog/mui-x-v7-beta/#date-time-range-picker', + url: 'https://mui.com/blog/mui-x-v7/#date-time-range-picker', }, { - title: 'Charts - Reference line ', - url: 'https://mui.com/blog/mui-x-v7-beta/#reference-line', + title: 'Support for date-fns v3', + url: 'https://mui.com/blog/mui-x-v7/#support-for-date-fns-v3', }, ], }, From 2e5fbb325fb290c53e3d53043d70bc2e36f8d8b3 Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Fri, 22 Mar 2024 13:32:30 +0200 Subject: [PATCH 006/912] v7.0.0 (#12523) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Andrew Cherniavskyi Co-authored-by: Bilal Shafi Co-authored-by: Flavien DELANGLE Co-authored-by: Lukas Co-authored-by: José Rodolfo Freitas --- CHANGELOG.md | 185 +++++++++++++++++- package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 2 +- packages/x-data-grid-generator/package.json | 4 +- packages/x-data-grid-premium/package.json | 8 +- .../rowGrouping.DataGridPremium.test.tsx | 2 +- packages/x-data-grid-pro/package.json | 6 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 6 +- packages/x-date-pickers/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 13 files changed, 204 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0499f734d2d..e885ff6e1e0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,189 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## v7.0.0 + +_Mar 22, 2024_ + +We're excited to [announce the first v7 stable release](https://mui.com/blog/mui-x-v7/)! 🎉🚀 + +This is now the officially supported major version, where we'll keep rolling out new features, bug fixes, and improvements. +Migration guides are available with a complete list of the breaking changes: + +- [Data Grid](https://mui.com/x/migration/migration-data-grid-v6/) +- [Date and Time Pickers](https://mui.com/x/migration/migration-pickers-v6/) +- [Tree View](https://mui.com/x/migration/migration-tree-view-v6/) +- [Charts](https://mui.com/x/migration/migration-charts-v6/) + +We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨: + +- 🚀 Improve the usage of custom `viewRenderers` on `DateTimePicker` (#12441) @LukasTy +- ✨ Set focus on the focused Tree Item instead of the Tree View (#12226) @flaviendelangle +- 🕹️ Support controlled `density` for the Data Grid (#12332) @MBilalShafi +- 🎁 Dynamic virtualization range for the Data Grid (#12353) @romgrk +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### Breaking changes + +- The `density` is a [controlled prop](https://mui.com/x/react-data-grid/accessibility/#set-the-density-programmatically) now, if you were previously passing the `density` prop to the Data Grid, you will need to do one of the following: + + 1. Move it to the `initialState.density` to initialize it. + + ```diff + + ``` + + 2. Move it to the state and use `onDensityChange` callback to update the `density` prop accordingly for it to work as expected. + + ```diff + + const [density, setDensity] = React.useState('compact'); + setDensity(newDensity)} + /> + ``` + +- The selector `gridDensityValueSelector` was removed, use the `gridDensitySelector` instead. + +- The props `rowBuffer` and `columnBuffer` were renamed to `rowBufferPx` and `columnBufferPx`. + Their value is now a pixel value rather than a number of items. Their default value is now `150`. + +- The props `rowThreshold` and `columnThreshold` have been removed. + If you had the `rowThreshold` prop set to `0` to force new rows to be rendered more often – this is no longer necessary. + +#### `@mui/x-data-grid@7.0.0` + +- [DataGrid] Allow to control the grid density (#12332) @MBilalShafi +- [DataGrid] Dynamic virtualization range (#12353) @romgrk +- [DataGrid] Fix `ElementType` usage (#12479) @cherniavskii +- [DataGrid] Fix cell value formatting on copy (#12357) @sai6855 +- [DataGrid] Fix checkbox selection is keeping selection when filtering (#11751) @g1mishra +- [DataGrid] Make `rows` an optional prop (#12478) @MBilalShafi + +#### `@mui/x-data-grid-pro@7.0.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.0.0`. + +#### `@mui/x-data-grid-premium@7.0.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.0.0`, plus: + +- [DataGridPremium] Add support for confirmation before clipboard paste (#12225) @cherniavskii +- [DataGridPremium] Fix single grouping column sorting (#9679) @cherniavskii +- [DataGridPremium] Fix boolean cell not rendered in group rows (#12492) @sai6855 + +### Date and Time Pickers + +#### Breaking changes + +- The `DesktopDateTimePicker` view rendering has been optimized by using the same technique as for `DesktopDateTimeRangePicker`. + - The `dateTimeViewRenderers` have been removed in favor of reusing existing time view renderers (`renderTimeViewClock`, `renderDigitalClockTimeView` and `renderMultiSectionDigitalClockTimeView`) and date view renderer (`renderDateViewCalendar`). + - Passing `renderTimeViewClock` to time view renderers will no longer revert to the old behavior of rendering only date or time view. + +#### `@mui/x-date-pickers@7.0.0` + +- [fields] Allow to override the separator between the start and the end date in all range fields (#12174) @flaviendelangle +- [fields] Support format without separator (#12489) @flaviendelangle +- [pickers] Use renderer interceptor on `DesktopDateTimePicker` (#12441) @LukasTy + +#### `@mui/x-date-pickers-pro@7.0.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.0.0`, plus: + +- [DateTimeRangePicker] Add component `JSDoc` (#12518) @LukasTy +- [DateTimeRangePicker] Fix views behavior regression (#12529) @LukasTy + +### Charts + +#### `@mui/x-charts@7.0.0` + +- [charts] Fix small typo in `CartesianContextProvider` (#12461) @Janpot + +### Tree View + +#### Breaking changes + +- The required `nodeId` prop used by the `TreeItem` has been renamed to `itemId` for consistency: + +```diff + +- ++ + +``` + +- The focus is now applied to the Tree Item root element instead of the Tree View root element. + + This change will allow new features that require the focus to be on the Tree Item, + like the drag and drop reordering of items. + It also solves several issues with focus management, + like the inability to scroll to the focused item when a lot of items are rendered. + + This will mostly impact how you write tests to interact with the Tree View: + + For example, if you were writing a test with `react-testing-library`, here is what the changes could look like: + + ```diff + it('test example on first item', () => { + - const { getByRole } = render( + + const { getAllByRole } = render( + + + + + ); + + - const tree = getByRole('tree'); + + const firstTreeItem = getAllByRole('treeitem')[0]; + act(() => { + - tree.focus(); + + firstTreeItem.focus(); + }); + - fireEvent.keyDown(tree, { key: 'ArrowDown' }); + + fireEvent.keyDown(firstTreeItem, { key: 'ArrowDown' }); + }) + ``` + +#### `@mui/x-tree-view@7.0.0` + +- [TreeView] Rename `nodeId` to `itemId` (#12418) @noraleonte +- [TreeView] Set focus on the focused Tree Item instead of the Tree View (#12226) @flaviendelangle +- [TreeView] Update JSDoc of the `ContentComponent` prop to avoid using the word "node" (#12476) @flaviendelangle + +### `@mui/x-codemod@7.0.0` + +- [codemod] Add a codemod and update the grid migration guide (#12488) @MBilalShafi + +### Docs + +- [docs] Finalize migration guide (#12501) @noraleonte +- [docs] Fix nested cells alignment in the popular features demo (#12450) @cherniavskii +- [docs] Fix some Vale errors (#12469) @oliviertassinari +- [docs] Remove mentions of pre release (#12513) @noraleonte +- [docs] Update branch name and tags (#12498) @cherniavskii +- [docs] Update links to v6 (#12496) @cherniavskii +- [docs] Update links to v7 docs (#12500) @noraleonte +- [docs] Update supported versions (#12508) @joserodolfofreitas +- [docs] Update "What's new in MUI X" page #12527 @cherniavskii + +### Core + +- [core] Bump `@mui/material` peer dependency for all packages (#12516) @LukasTy +- [core] Fix `no-restricted-imports` ESLint rule not working for Data Grid packages (#12477) @cherniavskii +- [core] Lower the frequency of `no-response` action runs (#12491) @michaldudak +- [core] Remove leftover `legacy` `browserlistrc` entry (#12415) @LukasTy +- [core] Update NPM tag (#12511) @cherniavskii +- [core] Update supported browsers (browserlistrc) (#12521) @LukasTy +- [core] Use Circle CI context @oliviertassinari +- [license] Fix grammar on expired license error message (#12460) @joserodolfofreitas + ## 7.0.0-beta.7 _Mar 14, 2024_ @@ -324,7 +507,7 @@ Same changes as in `@mui/x-data-grid-pro@7.0.0-beta.4`. - The headless field hooks (e.g.: `useDateField`) now returns a new prop called `enableAccessibleFieldDOMStructure`. This property is utilized to determine whether the anticipated UI is constructed using an accessible DOM structure. Learn more about this new [accessible DOM structure](/x/react-date-pickers/fields/#accessible-dom-structure). - When building a custom UI, you are most-likely only supporting one DOM structure, so you can remove `enableAccessibleFieldDOMStructure` before it is passed to the DOM: + When building a custom UI, you are most-likely only supporting one DOM structure, so you can remove `enableAccessibleFieldDOMStructure` before it is passed to the DOM: ```diff function MyCustomTextField(props) { diff --git a/package.json b/package.json index d23ef5331d66..e0d3d46d991b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.0.0-beta.7", + "version": "7.0.0", "private": true, "scripts": { "start": "yarn && yarn docs:dev", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index a28ffc10cabb..0dac51e3288b 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The community edition of the charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 3eaba12224cf..bb8b208b0492 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-codemod", - "version": "7.0.0-beta.7", + "version": "7.0.0", "bin": "./codemod.js", "private": false, "author": "MUI Team", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 507376edc417..0d1d90500c68 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", @@ -34,7 +34,7 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@mui/base": "^5.0.0-beta.40", - "@mui/x-data-grid-premium": "7.0.0-beta.7", + "@mui/x-data-grid-premium": "7.0.0", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index daf04247a6cf..48ebefe940c2 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The Premium plan edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,9 +45,9 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.0.0-beta.7", - "@mui/x-data-grid-pro": "7.0.0-beta.7", - "@mui/x-license": "7.0.0-beta.6", + "@mui/x-data-grid": "7.0.0", + "@mui/x-data-grid-pro": "7.0.0", + "@mui/x-license": "7.0.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "exceljs": "^4.4.0", diff --git a/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx b/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx index 9dc6dc7eef7c..c7bf4608de88 100644 --- a/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx +++ b/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx @@ -172,7 +172,7 @@ describe(' - Row grouping', () => { }, }} columns={[...baselineProps.columns, { field: 'isFilled', type: 'boolean' }]} - rows={baselineProps.rows.map((row) => ({ ...row, isFilled: false }))} + rows={baselineProps.rows?.map((row) => ({ ...row, isFilled: false }))} />, ); diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index d9ea31031cad..24b27a4ebb19 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The Pro plan edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.0.0-beta.7", - "@mui/x-license": "7.0.0-beta.6", + "@mui/x-data-grid": "7.0.0", + "@mui/x-license": "7.0.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index ff003e22d0bf..00b3f3c8a3d8 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The community edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index fe442d22e5cd..effd9cda07e0 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The commercial edition of the date picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-date-pickers": "7.0.0-beta.7", - "@mui/x-license": "7.0.0-beta.6", + "@mui/x-date-pickers": "7.0.0", + "@mui/x-license": "7.0.0", "clsx": "^2.1.0", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 267014fdbc1d..7746d0ab63b6 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The community edition of the date picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 87851acac3a1..0fb6503bafe3 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.0.0-beta.6", + "version": "7.0.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 7e738ab9394b..0e99bd3721ff 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.0.0-beta.7", + "version": "7.0.0", "description": "The community edition of the tree view components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From 2722f3ddfbb08a00870c533aed0170f201d6c185 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 22 Mar 2024 14:18:53 +0200 Subject: [PATCH 007/912] [docs] Sync static images from core repository (#12525) --- .../static/branding/product-advanced-dark.svg | 25 +++ .../branding/product-advanced-light.svg | 1 + .../static/branding/product-core-dark.svg | 1 + .../static/branding/product-core-light.svg | 1 + .../branding/product-designkits-dark.svg | 1 + .../branding/product-designkits-light.svg | 1 + .../branding/product-templates-dark.svg | 1 + .../branding/product-templates-light.svg | 1 + .../static/branding/product-toolpad-dark.svg | 1 + .../static/branding/product-toolpad-light.svg | 1 + docs/public/static/sponsors/marblism-dark.svg | 1 + .../public/static/sponsors/marblism-light.svg | 1 + .../static/sponsors/marblism-rectangular.svg | 148 ++++++++++++++++++ .../static/sponsors/marblism-square.svg | 1 + .../public/static/sponsors/octopus-square.svg | 1 + 15 files changed, 186 insertions(+) create mode 100644 docs/public/static/branding/product-advanced-dark.svg create mode 100644 docs/public/static/branding/product-advanced-light.svg create mode 100644 docs/public/static/branding/product-core-dark.svg create mode 100644 docs/public/static/branding/product-core-light.svg create mode 100644 docs/public/static/branding/product-designkits-dark.svg create mode 100644 docs/public/static/branding/product-designkits-light.svg create mode 100644 docs/public/static/branding/product-templates-dark.svg create mode 100644 docs/public/static/branding/product-templates-light.svg create mode 100644 docs/public/static/branding/product-toolpad-dark.svg create mode 100644 docs/public/static/branding/product-toolpad-light.svg create mode 100644 docs/public/static/sponsors/marblism-dark.svg create mode 100644 docs/public/static/sponsors/marblism-light.svg create mode 100644 docs/public/static/sponsors/marblism-rectangular.svg create mode 100644 docs/public/static/sponsors/marblism-square.svg create mode 100644 docs/public/static/sponsors/octopus-square.svg diff --git a/docs/public/static/branding/product-advanced-dark.svg b/docs/public/static/branding/product-advanced-dark.svg new file mode 100644 index 000000000000..0518c815d329 --- /dev/null +++ b/docs/public/static/branding/product-advanced-dark.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/static/branding/product-advanced-light.svg b/docs/public/static/branding/product-advanced-light.svg new file mode 100644 index 000000000000..deed2209c809 --- /dev/null +++ b/docs/public/static/branding/product-advanced-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/product-core-dark.svg b/docs/public/static/branding/product-core-dark.svg new file mode 100644 index 000000000000..559c337f6d71 --- /dev/null +++ b/docs/public/static/branding/product-core-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/product-core-light.svg b/docs/public/static/branding/product-core-light.svg new file mode 100644 index 000000000000..3e78a586ce9a --- /dev/null +++ b/docs/public/static/branding/product-core-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/product-designkits-dark.svg b/docs/public/static/branding/product-designkits-dark.svg new file mode 100644 index 000000000000..34a5d628f225 --- /dev/null +++ b/docs/public/static/branding/product-designkits-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/static/branding/product-designkits-light.svg b/docs/public/static/branding/product-designkits-light.svg new file mode 100644 index 000000000000..4e642fac7532 --- /dev/null +++ b/docs/public/static/branding/product-designkits-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/product-templates-dark.svg b/docs/public/static/branding/product-templates-dark.svg new file mode 100644 index 000000000000..42622104ac6f --- /dev/null +++ b/docs/public/static/branding/product-templates-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/static/branding/product-templates-light.svg b/docs/public/static/branding/product-templates-light.svg new file mode 100644 index 000000000000..23ad7bddf755 --- /dev/null +++ b/docs/public/static/branding/product-templates-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/branding/product-toolpad-dark.svg b/docs/public/static/branding/product-toolpad-dark.svg new file mode 100644 index 000000000000..f30e2fb4285a --- /dev/null +++ b/docs/public/static/branding/product-toolpad-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/static/branding/product-toolpad-light.svg b/docs/public/static/branding/product-toolpad-light.svg new file mode 100644 index 000000000000..8af9515f7c8a --- /dev/null +++ b/docs/public/static/branding/product-toolpad-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/sponsors/marblism-dark.svg b/docs/public/static/sponsors/marblism-dark.svg new file mode 100644 index 000000000000..383b35a994f8 --- /dev/null +++ b/docs/public/static/sponsors/marblism-dark.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/sponsors/marblism-light.svg b/docs/public/static/sponsors/marblism-light.svg new file mode 100644 index 000000000000..1a704531a53e --- /dev/null +++ b/docs/public/static/sponsors/marblism-light.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/sponsors/marblism-rectangular.svg b/docs/public/static/sponsors/marblism-rectangular.svg new file mode 100644 index 000000000000..4c7d3db29660 --- /dev/null +++ b/docs/public/static/sponsors/marblism-rectangular.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/static/sponsors/marblism-square.svg b/docs/public/static/sponsors/marblism-square.svg new file mode 100644 index 000000000000..81b03e27ffdb --- /dev/null +++ b/docs/public/static/sponsors/marblism-square.svg @@ -0,0 +1 @@ + diff --git a/docs/public/static/sponsors/octopus-square.svg b/docs/public/static/sponsors/octopus-square.svg new file mode 100644 index 000000000000..721e4ed65b1d --- /dev/null +++ b/docs/public/static/sponsors/octopus-square.svg @@ -0,0 +1 @@ + From ec57ad791eaa67d9dc4808ab633e9d3034b638e1 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 22 Mar 2024 14:19:05 +0200 Subject: [PATCH 008/912] [core] Include `DateTimeRangePicker` tag in `releaseChangelog` (#12526) --- scripts/releaseChangelog.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index 01152512c8b6..595630d7b093 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -164,6 +164,7 @@ async function main(argv) { pickersCommits.push(commitItem); break; case 'DateRangePicker': + case 'DateTimeRangePicker': pickersProCommits.push(commitItem); break; case 'charts': From 02867d1781d19e09b2b628b32a17a3b2332e435e Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Fri, 22 Mar 2024 13:41:45 +0100 Subject: [PATCH 009/912] [docs] Add example to add a second icon next to the field's opening button (#12524) --- .../AddWarningIconWhenInvalid.js | 42 ++++++++++++++++ .../AddWarningIconWhenInvalid.tsx | 43 +++++++++++++++++ .../AddWarningIconWhenInvalid.tsx.preview | 10 ++++ .../AddWarningIconWhenInvalidRange.js | 47 ++++++++++++++++++ .../AddWarningIconWhenInvalidRange.tsx | 48 +++++++++++++++++++ .../custom-opening-button.md | 12 +++++ 6 files changed, 202 insertions(+) create mode 100644 docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js create mode 100644 docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx create mode 100644 docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx.preview create mode 100644 docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js create mode 100644 docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js new file mode 100644 index 000000000000..45751705f59d --- /dev/null +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js @@ -0,0 +1,42 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import InputAdornment from '@mui/material/InputAdornment'; +import PriorityHighIcon from '@mui/icons-material/PriorityHigh'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DemoContainer } from '@mui/x-date-pickers/internals/demo'; +import { DatePicker } from '@mui/x-date-pickers/DatePicker'; + +function CustomInputAdornment(props) { + const { hasError, children, sx, ...other } = props; + return ( + + + {children} + + ); +} + +export default function AddWarningIconWhenInvalid() { + const [error, setError] = React.useState(null); + + return ( + + + + + + ); +} diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx new file mode 100644 index 000000000000..9fda0784aff8 --- /dev/null +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx @@ -0,0 +1,43 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import InputAdornment, { InputAdornmentProps } from '@mui/material/InputAdornment'; +import PriorityHighIcon from '@mui/icons-material/PriorityHigh'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DemoContainer } from '@mui/x-date-pickers/internals/demo'; +import { DatePicker } from '@mui/x-date-pickers/DatePicker'; +import { DateValidationError } from '@mui/x-date-pickers/models'; + +function CustomInputAdornment(props: InputAdornmentProps & { hasError?: boolean }) { + const { hasError, children, sx, ...other } = props; + return ( + + + {children} + + ); +} + +export default function AddWarningIconWhenInvalid() { + const [error, setError] = React.useState(null); + + return ( + + + + + + ); +} diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx.preview b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx.preview new file mode 100644 index 000000000000..fcaed745b3d2 --- /dev/null +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx.preview @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js new file mode 100644 index 000000000000..bf53aa2044b7 --- /dev/null +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js @@ -0,0 +1,47 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import InputAdornment from '@mui/material/InputAdornment'; +import PriorityHighIcon from '@mui/icons-material/PriorityHigh'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DemoContainer } from '@mui/x-date-pickers/internals/demo'; +import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; + +function CustomInputAdornment(props) { + const { hasError, children, sx, ...other } = props; + return ( + + + {children} + + ); +} + +export default function AddWarningIconWhenInvalidRange() { + const [error, setError] = React.useState([null, null]); + + return ( + + + ({ + InputProps: { + endAdornment: ( + + ), + }, + }), + }} + /> + + + ); +} diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx new file mode 100644 index 000000000000..d9fa4ffdfd78 --- /dev/null +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx @@ -0,0 +1,48 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import InputAdornment, { InputAdornmentProps } from '@mui/material/InputAdornment'; +import PriorityHighIcon from '@mui/icons-material/PriorityHigh'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DemoContainer } from '@mui/x-date-pickers/internals/demo'; +import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { DateRangeValidationError } from '@mui/x-date-pickers-pro/models'; + +function CustomInputAdornment(props: InputAdornmentProps & { hasError?: boolean }) { + const { hasError, children, sx, ...other } = props; + return ( + + + {children} + + ); +} + +export default function AddWarningIconWhenInvalidRange() { + const [error, setError] = React.useState([null, null]); + + return ( + + + ({ + InputProps: { + endAdornment: ( + + ), + }, + }), + }} + /> + + + ); +} diff --git a/docs/data/date-pickers/custom-opening-button/custom-opening-button.md b/docs/data/date-pickers/custom-opening-button/custom-opening-button.md index 08a8d486a5c7..4dadc61d97e0 100644 --- a/docs/data/date-pickers/custom-opening-button/custom-opening-button.md +++ b/docs/data/date-pickers/custom-opening-button/custom-opening-button.md @@ -34,3 +34,15 @@ If you want to track the opening of the picker, you should use the `onOpen` / `o ``` ::: + +## Add an icon next to the opening button + +If you want to add an icon next to the opening button, you can use the `inputAdornment` slot. +In the example below, the warning icon will be visible anytime the current value is invalid: + +{{"demo": "AddWarningIconWhenInvalid.js"}} + +To add the same behavior to a picker that do not have an input adornment (e.g: Date Range Picker), +you need to use the `textField` slot to add one: + +{{"demo": "AddWarningIconWhenInvalidRange.js"}} From 6b72f371eedb6ec455e2f338e06f276584305ae5 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Fri, 22 Mar 2024 15:18:33 +0100 Subject: [PATCH 010/912] [core] Upgrade monorepo (#12536) --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index f0779977e1a4..423740868a85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2018,7 +2018,7 @@ "@mui/monorepo@https://github.com/mui/material-ui.git#master": version "5.15.14" - resolved "https://github.com/mui/material-ui.git#9585d28317c90f2c71ab88dd5ae37638bb64ad82" + resolved "https://github.com/mui/material-ui.git#39fe215ce8bb1ed215e9a274f63b979714876e61" dependencies: "@googleapis/sheets" "^5.0.5" "@netlify/functions" "^2.6.0" From 7f4d0ba90cefa10b8ec54657f7ce6f1ab9bec693 Mon Sep 17 00:00:00 2001 From: Antonio Mancini Date: Mon, 25 Mar 2024 10:51:43 +0100 Subject: [PATCH 011/912] [l10n] Improve Italian (it-IT) locale (#12549) Signed-off-by: Antonio Mancini Co-authored-by: Antonio --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/itIT.ts | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 52aa6c3832b9..97b551653c66 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -123,7 +123,7 @@ "languageTag": "it-IT", "importName": "itIT", "localeName": "Italian", - "missingKeysCount": 15, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/itIT.ts" }, diff --git a/packages/x-date-pickers/src/locales/itIT.ts b/packages/x-date-pickers/src/locales/itIT.ts index f263d30bd621..46e19c0b96b1 100644 --- a/packages/x-date-pickers/src/locales/itIT.ts +++ b/packages/x-date-pickers/src/locales/itIT.ts @@ -25,10 +25,10 @@ const itITPickers: Partial> = { // DateRange labels start: 'Inizio', end: 'Fine', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Data di inizio', + startTime: 'Ora di inizio', + endDate: 'Data di fine', + endTime: 'Ora di fine', // Action bar cancelButtonLabel: 'Cancellare', @@ -67,7 +67,7 @@ const itITPickers: Partial> = { value !== null && utils.isValid(value) ? `Scegli l'ora, l'ora selezionata è ${utils.format(value, 'fullTime')}` : "Scegli l'ora", - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Cancella valore', // Table labels timeTableLabel: "scegli un'ora", @@ -77,24 +77,24 @@ const itITPickers: Partial> = { fieldYearPlaceholder: (params) => 'A'.repeat(params.digitAmount), fieldMonthPlaceholder: (params) => (params.contentType === 'letter' ? 'MMMM' : 'MM'), fieldDayPlaceholder: () => 'GG', - // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE', + fieldWeekDayPlaceholder: (params) => (params.contentType === 'letter' ? 'GGGG' : 'GG'), fieldHoursPlaceholder: () => 'hh', fieldMinutesPlaceholder: () => 'mm', fieldSecondsPlaceholder: () => 'ss', fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Anno', + month: 'Mese', + day: 'Giorno', + weekDay: 'Giorno della settimana', + hours: 'Ore', + minutes: 'Minuti', + seconds: 'Secondi', + meridiem: 'Meridiano', // Common - // empty: 'Empty', + empty: 'Vuoto', }; export const itIT = getPickersLocalization(itITPickers); From 1d2d0530ba88f487ae75c43f5cd5ce7a8b4324e6 Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 25 Mar 2024 12:07:10 +0200 Subject: [PATCH 012/912] [core] Fix `l10n` script on Windows (#12550) --- scripts/l10n.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/l10n.ts b/scripts/l10n.ts index 50a8db878650..d65107ab6c25 100644 --- a/scripts/l10n.ts +++ b/scripts/l10n.ts @@ -442,7 +442,10 @@ async function run(argv: yargs.ArgumentsCamelCase) { } if (!missingTranslations[localeCode][packageInfo.key]) { missingTranslations[localeCode][packageInfo.key] = { - path: localePath.replace(workspaceRoot, '').slice(1), // Remove leading slash + // prettier-ignore + path: localePath + .replace(workspaceRoot, '').slice(1) // Remove leading slash + .split(path.sep).join('/'), // Ensure the path is using forward slashes even on Windows machines missingKeys: [], }; } From 6968393d1a78924b3085a30bd59bb0ec9f3ee841 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 25 Mar 2024 14:05:15 +0100 Subject: [PATCH 013/912] [TreeView] Do not use outdated version of the state to compute new label first char in `RichTreeView` (#12512) --- .../useTreeViewFocus/useTreeViewFocus.ts | 12 +++-- .../useTreeViewJSXNodes.tsx | 2 + .../useTreeViewKeyboardNavigation.test.tsx | 53 +++++++++++++++++++ .../useTreeViewKeyboardNavigation.ts | 20 +++---- .../useTreeViewNodes/useTreeViewNodes.ts | 13 +++++ .../useTreeViewNodes.types.ts | 11 ++++ 6 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 68d3337ec937..72c756902d67 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -107,11 +107,13 @@ export const useTreeViewFocus: TreeViewPlugin = ({ } const node = instance.getNode(state.focusedNodeId); - const itemElement = document.getElementById( - instance.getTreeItemId(state.focusedNodeId, node.idAttribute), - ); - if (itemElement) { - itemElement.blur(); + if (node) { + const itemElement = document.getElementById( + instance.getTreeItemId(state.focusedNodeId, node.idAttribute), + ); + if (itemElement) { + itemElement.blur(); + } } setFocusedItemId(null); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx index 7ac7809b31e2..1ad50070711e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx @@ -18,6 +18,8 @@ export const useTreeViewJSXNodes: TreeViewPlugin = instance, setState, }) => { + instance.preventItemUpdates(); + const insertJSXNode = useEventCallback((node: TreeViewNode) => { setState((prevState) => { if (prevState.nodes.nodeMap[node.id] != null) { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx new file mode 100644 index 000000000000..970bed10f721 --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx @@ -0,0 +1,53 @@ +import * as React from 'react'; +import { expect } from 'chai'; +import { act, createRenderer, fireEvent } from '@mui-internal/test-utils'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; + +describe('useTreeViewKeyboardNavigation', () => { + const { render } = createRenderer(); + + it('should work after adding / removing items', () => { + const { getByRole, setProps } = render( + , + ); + + act(() => { + getByRole('treeitem', { name: 'one' }).focus(); + }); + + fireEvent.keyDown(getByRole('treeitem', { name: 'one' }), { key: 'f' }); + expect(getByRole('treeitem', { name: 'four' })).toHaveFocus(); + + setProps({ + items: [ + { id: 'one', label: 'one' }, + { id: 'two', label: 'two' }, + { id: 'three', label: 'three' }, + ], + }); + expect(getByRole('treeitem', { name: 'one' })).toHaveFocus(); + + fireEvent.keyDown(getByRole('treeitem', { name: 'one' }), { key: 't' }); + expect(getByRole('treeitem', { name: 'two' })).toHaveFocus(); + + setProps({ + items: [ + { id: 'one', label: 'one' }, + { id: 'two', label: 'two' }, + { id: 'three', label: 'three' }, + { id: 'four', label: 'four' }, + ], + }); + expect(getByRole('treeitem', { name: 'two' })).toHaveFocus(); + + fireEvent.keyDown(getByRole('treeitem', { name: 'two' }), { key: 'f' }); + expect(getByRole('treeitem', { name: 'four' })).toHaveFocus(); + }); +}); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index 762573b4dada..344cc4a5532b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { useTheme } from '@mui/material/styles'; import useEventCallback from '@mui/utils/useEventCallback'; -import { TreeViewPlugin } from '../../models'; +import { TreeViewNode, TreeViewPlugin } from '../../models'; import { getFirstNode, getLastNode, @@ -13,7 +13,6 @@ import { TreeViewFirstCharMap, UseTreeViewKeyboardNavigationSignature, } from './useTreeViewKeyboardNavigation.types'; -import { TreeViewBaseItem } from '../../../models'; import { MuiCancellableEvent } from '../../models/MuiCancellableEvent'; function isPrintableCharacter(string: string) { @@ -31,36 +30,31 @@ function findNextFirstChar(firstChars: string[], startIndex: number, char: strin export const useTreeViewKeyboardNavigation: TreeViewPlugin< UseTreeViewKeyboardNavigationSignature -> = ({ instance, params }) => { +> = ({ instance, params, state }) => { const theme = useTheme(); const isRTL = theme.direction === 'rtl'; const firstCharMap = React.useRef({}); - const hasFirstCharMapBeenUpdatedImperatively = React.useRef(false); const updateFirstCharMap = useEventCallback( (callback: (firstCharMap: TreeViewFirstCharMap) => TreeViewFirstCharMap) => { - hasFirstCharMapBeenUpdatedImperatively.current = true; firstCharMap.current = callback(firstCharMap.current); }, ); React.useEffect(() => { - if (hasFirstCharMapBeenUpdatedImperatively.current) { + if (instance.areItemUpdatesPrevented()) { return; } const newFirstCharMap: { [itemId: string]: string } = {}; - const processItem = (item: TreeViewBaseItem) => { - const getItemId = params.getItemId; - const itemId = getItemId ? getItemId(item) : (item as { id: string }).id; - newFirstCharMap[itemId] = instance.getNode(itemId).label!.substring(0, 1).toLowerCase(); - item.children?.forEach(processItem); + const processItem = (node: TreeViewNode) => { + newFirstCharMap[node.id] = node.label!.substring(0, 1).toLowerCase(); }; - params.items.forEach(processItem); + Object.values(state.nodes.nodeMap).forEach(processItem); firstCharMap.current = newFirstCharMap; - }, [params.items, params.getItemId, instance]); + }, [state.nodes.nodeMap, params.getItemId, instance]); const getFirstMatchingItem = (itemId: string, firstChar: string) => { let start: number; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts index 39a63d0281d8..01f133f5b9c6 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts @@ -155,7 +155,18 @@ export const useTreeViewNodes: TreeViewPlugin = ({ return childrenIds; }; + const areItemUpdatesPreventedRef = React.useRef(false); + const preventItemUpdates = React.useCallback(() => { + areItemUpdatesPreventedRef.current = true; + }, []); + + const areItemUpdatesPrevented = React.useCallback(() => areItemUpdatesPreventedRef.current, []); + React.useEffect(() => { + if (instance.areItemUpdatesPrevented()) { + return; + } + setState((prevState) => { const newState = updateNodesState({ items: params.items, @@ -205,6 +216,8 @@ export const useTreeViewNodes: TreeViewPlugin = ({ getChildrenIds, getNavigableChildrenIds, isNodeDisabled, + preventItemUpdates, + areItemUpdatesPrevented, }); populatePublicAPI(publicAPI, { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts index 55a5bc1c52c9..352cf93605ff 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts @@ -15,6 +15,17 @@ export interface UseTreeViewNodesInstance { getChildrenIds: (itemId: string | null) => string[]; getNavigableChildrenIds: (itemId: string | null) => string[]; isNodeDisabled: (itemId: string | null) => itemId is string; + /** + * Freeze any future update to the state based on the `items` prop. + * This is useful when `useTreeViewJSXNodes` is used to avoid having conflicting sources of truth. + */ + preventItemUpdates: () => void; + /** + * Check if the updates to the state based on the `items` prop are prevented. + * This is useful when `useTreeViewJSXNodes` is used to avoid having conflicting sources of truth. + * @returns {boolean} `true` if the updates to the state based on the `items` prop are prevented. + */ + areItemUpdatesPrevented: () => boolean; } export interface UseTreeViewNodesPublicAPI From 48677e475e985770a87b3e12eb3710fca640dbe4 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Mon, 25 Mar 2024 14:24:14 +0100 Subject: [PATCH 014/912] [docs] Reduce noize in migration docs side navigation (#12552) --- docs/data/pages.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/pages.ts b/docs/data/pages.ts index 5ca6c1bd5d8f..1adde55b0238 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -537,7 +537,7 @@ const pages: MuiPage[] = [ }, { pathname: '/x/migration-v6', - subheader: 'Upgrade to v6', + title: 'Upgrade to v6', children: [ { pathname: '/x/migration/migration-data-grid-v5', title: 'Breaking changes: Data Grid' }, { @@ -552,7 +552,7 @@ const pages: MuiPage[] = [ }, { pathname: '/x/migration-earlier', - subheader: 'Earlier versions', + title: 'Earlier versions', children: [ { pathname: '/x/migration/migration-pickers-lab', From 655153081636d0e64c06497481daad3b52bfb5af Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Mon, 25 Mar 2024 10:45:16 -0400 Subject: [PATCH 015/912] [DataGrid] Fix bug in suspense (#12553) --- .../src/components/columnHeaders/GridColumnHeaderItem.tsx | 4 +++- .../components/columnHeaders/GridGenericColumnHeaderItem.tsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx index da14c18250ae..671f546d6017 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx @@ -258,7 +258,9 @@ function GridColumnHeaderItem(props: GridColumnHeaderItemProps) { const focusableElement = headerCellRef.current!.querySelector('[tabindex="0"]'); const elementToFocus = focusableElement || headerCellRef.current; elementToFocus?.focus(); - apiRef.current.columnHeadersContainerRef!.current!.scrollLeft = 0; + if (apiRef.current.columnHeadersContainerRef?.current) { + apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0; + } } }, [apiRef, hasFocus]); diff --git a/packages/x-data-grid/src/components/columnHeaders/GridGenericColumnHeaderItem.tsx b/packages/x-data-grid/src/components/columnHeaders/GridGenericColumnHeaderItem.tsx index 8f45f8176d4a..7b1111733f9e 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridGenericColumnHeaderItem.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridGenericColumnHeaderItem.tsx @@ -97,7 +97,9 @@ const GridGenericColumnHeaderItem = React.forwardRef(function GridGenericColumnH const focusableElement = headerCellRef.current!.querySelector('[tabindex="0"]'); const elementToFocus = focusableElement || headerCellRef.current; elementToFocus?.focus(); - apiRef.current.columnHeadersContainerRef!.current!.scrollLeft = 0; + if (apiRef.current.columnHeadersContainerRef?.current) { + apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0; + } } }, [apiRef, hasFocus]); From 0e1dce4afeaf0146e1260fdf71ffc78d582ca28d Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Mon, 25 Mar 2024 13:15:47 -0400 Subject: [PATCH 016/912] [docs] Add missing note to Data Grid migration guide (#12557) --- .../migration/migration-data-grid-v6/migration-data-grid-v6.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 7a1f588a5eb8..3ed538523b73 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -510,6 +510,8 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) - The `columnHeadersInner`, `columnHeadersInner--scrollable`, and `columnHeaderDropZone` classes were removed since the inner wrapper was removed in our effort to simplify the DOM structure and improve accessibility. - The `pinnedColumnHeaders`, `pinnedColumnHeaders--left`, and `pinnedColumnHeaders--right` classes were removed along with the element they were applied to. The pinned column headers now use `position: 'sticky'` and are rendered in the same row element as the regular column headers. +- The column headers and pinned section now require an explicit color. By default, the MUI `theme.palette.background.default` color will be used. To customize it, see https://mui.com/material-ui/customization/palette/#customization + We will be adding a new color name to the palette for additional customization, read [#12443](https://github.com/mui/mui-x/issues/12443) for more details. ### Changes to the public API From 00ad17b3f707e28126b1fa0a99339ba7f981da18 Mon Sep 17 00:00:00 2001 From: Diogo Parente <66437099+diogoparente@users.noreply.github.com> Date: Tue, 26 Mar 2024 06:20:19 +0000 Subject: [PATCH 017/912] [docs] Fix small typo (#12558) --- docs/data/pages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/pages.ts b/docs/data/pages.ts index 1adde55b0238..c53b315baa2f 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -383,7 +383,7 @@ const pages: MuiPage[] = [ { pathname: '/x/react-date-pickers/custom-layout' }, { pathname: '/x/react-date-pickers/custom-field' }, { pathname: '/x/react-date-pickers/custom-opening-button' }, - { pathname: '/x/react-date-pickers/playground', title: 'Customziation playground' }, + { pathname: '/x/react-date-pickers/playground', title: 'Customization playground' }, ], }, ], From 6034acf255b6d36898ae71073613bfe093c1c68f Mon Sep 17 00:00:00 2001 From: samchiu90 <51096971+samchiu90@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:21:57 +0800 Subject: [PATCH 018/912] [l10n] Improve Chinese (Hong Kong) (zh-HK) locale (#12547) Co-authored-by: Sam Chiu <341975@haeco.com> Co-authored-by: Lukas --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/zhHK.ts | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 97b551653c66..30db1a184762 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -27,7 +27,7 @@ "languageTag": "zh-HK", "importName": "zhHK", "localeName": "Chinese (Hong Kong)", - "missingKeysCount": 14, + "missingKeysCount": 1, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/zhHK.ts" }, diff --git a/packages/x-date-pickers/src/locales/zhHK.ts b/packages/x-date-pickers/src/locales/zhHK.ts index dc1fc08f0792..73f30fe05cb6 100644 --- a/packages/x-date-pickers/src/locales/zhHK.ts +++ b/packages/x-date-pickers/src/locales/zhHK.ts @@ -23,10 +23,10 @@ const zhHKPickers: Partial> = { // DateRange labels start: '開始', end: '結束', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: '開始日期', + startTime: '開始時間', + endDate: '結束日期', + endTime: '結束時間', // Action bar cancelButtonLabel: '取消', @@ -82,17 +82,17 @@ const zhHKPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: '年', + month: '月', + day: '日', + weekDay: '星期', + hours: '小時', + minutes: '分鐘', + seconds: '秒', + meridiem: '子午線', // Common - // empty: 'Empty', + empty: '空值', }; export const zhHK = getPickersLocalization(zhHKPickers); From 7f86c76db4d06bf04d6106ea8a6c6e6f8a887664 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 26 Mar 2024 09:41:12 +0100 Subject: [PATCH 019/912] [pickers] Prepare compatibility with `@mui/zero-runtime` (stop using `ownerState` in `styled`) (#12003) --- .../date-pickers/date-range-picker-day.json | 1 + .../date-range-picker-day.json | 3 + .../DateRangePickerDay/DateRangePickerDay.tsx | 135 ++++++++---- .../DateTimeRangePickerToolbar.tsx | 39 +++- .../src/DatePicker/DatePickerToolbar.tsx | 15 +- .../DateTimePicker/DateTimePickerToolbar.tsx | 122 +++++++---- .../DayCalendarSkeleton.tsx | 13 +- .../src/DigitalClock/DigitalClock.tsx | 16 +- .../src/MonthCalendar/PickersMonth.tsx | 7 +- .../MultiSectionDigitalClockSection.tsx | 14 +- .../PickersCalendarHeader.tsx | 17 +- .../src/PickersDay/PickersDay.tsx | 39 ++-- .../src/PickersLayout/PickersLayout.tsx | 36 ++-- .../PickersFilledInput/PickersFilledInput.tsx | 204 +++++++++++------- .../PickersInput/PickersInput.tsx | 129 ++++++----- .../PickersInputBase/PickersInputBase.tsx | 72 +++++-- .../PickersInputBase.types.ts | 7 + .../PickersOutlinedInput/Outline.tsx | 83 +++---- .../PickersOutlinedInput.tsx | 37 +++- .../x-date-pickers/src/TimeClock/Clock.tsx | 55 +++-- .../src/TimeClock/ClockNumber.tsx | 15 +- .../src/TimeClock/ClockPointer.tsx | 26 ++- .../src/TimePicker/TimePickerToolbar.tsx | 34 +-- .../src/YearCalendar/PickersYear.tsx | 7 +- .../PickersArrowSwitcher.tsx | 13 +- .../internals/components/PickersPopper.tsx | 16 +- .../internals/components/PickersToolbar.tsx | 47 ++-- 27 files changed, 791 insertions(+), 411 deletions(-) diff --git a/docs/pages/x/api/date-pickers/date-range-picker-day.json b/docs/pages/x/api/date-pickers/date-range-picker-day.json index fc19b9e50ec6..fa57a2557f2b 100644 --- a/docs/pages/x/api/date-pickers/date-range-picker-day.json +++ b/docs/pages/x/api/date-pickers/date-range-picker-day.json @@ -23,6 +23,7 @@ "disableMargin": { "type": { "name": "bool" }, "default": "false" }, "disableRipple": { "type": { "name": "bool" }, "default": "false" }, "disableTouchRipple": { "type": { "name": "bool" }, "default": "false" }, + "draggable": { "type": { "name": "bool" }, "default": "false" }, "focusRipple": { "type": { "name": "bool" }, "default": "false" }, "focusVisibleClassName": { "type": { "name": "string" } }, "isVisuallySelected": { "type": { "name": "bool" } }, diff --git a/docs/translations/api-docs/date-pickers/date-range-picker-day/date-range-picker-day.json b/docs/translations/api-docs/date-pickers/date-range-picker-day/date-range-picker-day.json index d24a2914f43b..56e31a43dd71 100644 --- a/docs/translations/api-docs/date-pickers/date-range-picker-day/date-range-picker-day.json +++ b/docs/translations/api-docs/date-pickers/date-range-picker-day/date-range-picker-day.json @@ -22,6 +22,9 @@ "disableTouchRipple": { "description": "If true, the touch ripple effect is disabled." }, + "draggable": { + "description": "If true, the day can be dragged to change the current date range." + }, "focusRipple": { "description": "If true, the base button will have a keyboard focus ripple." }, diff --git a/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx b/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx index 29c0be8863b8..95ca252d165c 100644 --- a/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx @@ -50,6 +50,11 @@ export interface DateRangePickerDayProps * Indicates if the day should be visually selected. */ isVisuallySelected?: boolean; + /** + * If `true`, the day can be dragged to change the current date range. + * @default false + */ + draggable?: boolean; } type OwnerState = DateRangePickerDayProps & { @@ -154,10 +159,11 @@ const DateRangePickerDayRoot = styled('div', { }, styles.root, ], -})<{ ownerState: OwnerState }>(({ theme, ownerState }) => - ownerState.isHiddenDayFiller - ? {} - : { +})<{ ownerState: OwnerState }>(({ theme }) => ({ + variants: [ + { + props: { isHiddenDayFiller: false }, + style: { [`&:first-of-type .${dateRangePickerDayClasses.rangeIntervalDayPreview}`]: { ...startBorderStyle, borderLeftColor: (theme.vars || theme).palette.divider, @@ -166,25 +172,44 @@ const DateRangePickerDayRoot = styled('div', { ...endBorderStyle, borderRightColor: (theme.vars || theme).palette.divider, }, - ...(ownerState.isHighlighting && { - borderRadius: 0, - color: (theme.vars || theme).palette.primary.contrastText, - backgroundColor: theme.vars - ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` - : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity), - '&:first-of-type': startBorderStyle, - '&:last-of-type': endBorderStyle, - }), - ...((ownerState.isStartOfHighlighting || ownerState.isFirstVisibleCell) && { - ...startBorderStyle, - paddingLeft: 0, - }), - ...((ownerState.isEndOfHighlighting || ownerState.isLastVisibleCell) && { - ...endBorderStyle, - paddingRight: 0, - }), }, -); + }, + { + props: { isHiddenDayFiller: false, isHighlighting: true }, + style: { + borderRadius: 0, + color: (theme.vars || theme).palette.primary.contrastText, + backgroundColor: theme.vars + ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.focusOpacity})` + : alpha(theme.palette.primary.main, theme.palette.action.focusOpacity), + '&:first-of-type': startBorderStyle, + '&:last-of-type': endBorderStyle, + }, + }, + { + props: ({ + ownerState: { isHiddenDayFiller, isStartOfHighlighting, isFirstVisibleCell }, + }: { + ownerState: OwnerState; + }) => !isHiddenDayFiller && (isStartOfHighlighting || isFirstVisibleCell), + style: { + ...startBorderStyle, + paddingLeft: 0, + }, + }, + { + props: ({ + ownerState: { isHiddenDayFiller, isEndOfHighlighting, isLastVisibleCell }, + }: { + ownerState: OwnerState; + }) => !isHiddenDayFiller && (isEndOfHighlighting || isLastVisibleCell), + style: { + ...endBorderStyle, + paddingRight: 0, + }, + }, + ], +})); DateRangePickerDayRoot.propTypes = { // ----------------------------- Warning -------------------------------- @@ -209,24 +234,42 @@ const DateRangePickerDayRangeIntervalPreview = styled('div', { }, styles.rangeIntervalPreview, ], -})<{ ownerState: OwnerState }>(({ theme, ownerState }) => ({ +})<{ ownerState: OwnerState }>(({ theme }) => ({ // replace default day component margin with transparent border to avoid jumping on preview border: '2px solid transparent', - ...(ownerState.isPreviewing && - !ownerState.isHiddenDayFiller && { - borderRadius: 0, - border: `2px dashed ${(theme.vars || theme).palette.divider}`, - borderLeftColor: 'transparent', - borderRightColor: 'transparent', - ...((ownerState.isStartOfPreviewing || ownerState.isFirstVisibleCell) && { + variants: [ + { + props: { isPreviewing: true, isHiddenDayFiller: false }, + style: { + borderRadius: 0, + border: `2px dashed ${(theme.vars || theme).palette.divider}`, + borderLeftColor: 'transparent', + borderRightColor: 'transparent', + }, + }, + { + props: ({ + ownerState: { isPreviewing, isHiddenDayFiller, isStartOfPreviewing, isFirstVisibleCell }, + }: { + ownerState: OwnerState; + }) => isPreviewing && !isHiddenDayFiller && (isStartOfPreviewing || isFirstVisibleCell), + style: { borderLeftColor: (theme.vars || theme).palette.divider, ...startBorderStyle, - }), - ...((ownerState.isEndOfPreviewing || ownerState.isLastVisibleCell) && { + }, + }, + { + props: ({ + ownerState: { isPreviewing, isHiddenDayFiller, isEndOfPreviewing, isLastVisibleCell }, + }: { + ownerState: OwnerState; + }) => isPreviewing && !isHiddenDayFiller && (isEndOfPreviewing || isLastVisibleCell), + style: { borderRightColor: (theme.vars || theme).palette.divider, ...endBorderStyle, - }), - }), + }, + }, + ], })); DateRangePickerDayRangeIntervalPreview.propTypes = { @@ -248,19 +291,22 @@ const DateRangePickerDayDay = styled(PickersDay, { ], })<{ ownerState: OwnerState; -}>(({ ownerState }) => ({ +}>({ // Required to overlap preview border transform: 'scale(1.1)', '& > *': { transform: 'scale(0.9)', }, - ...(ownerState.draggable && { - cursor: 'grab', - }), - ...(ownerState.draggable && { - touchAction: 'none', - }), -})) as unknown as ( + variants: [ + { + props: { draggable: true }, + style: { + cursor: 'grab', + touchAction: 'none', + }, + }, + ], +}) as unknown as ( props: PickersDayProps & { ownerState: OwnerState }, ) => React.JSX.Element; @@ -405,6 +451,11 @@ DateRangePickerDayRaw.propTypes = { * @default false */ disableTouchRipple: PropTypes.bool, + /** + * If `true`, the day can be dragged to change the current date range. + * @default false + */ + draggable: PropTypes.bool, /** * If `true`, the base button will have a keyboard focus ripple. * @default false diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx index 32fbf3ec18ba..4d4c6155c38e 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx @@ -76,24 +76,43 @@ const DateTimeRangePickerToolbarStart = styled(DateTimePickerToolbar, { name: 'MuiDateTimeRangePickerToolbar', slot: 'StartToolbar', overridesResolver: (_, styles) => styles.startToolbar, -})>(({ ownerState }) => ({ +})>({ borderBottom: 'none', - ...(ownerState?.toolbarVariant !== 'desktop' - ? { + variants: [ + { + props: ({ toolbarVariant }: DateTimeRangePickerStartOrEndToolbarProps) => + toolbarVariant !== 'desktop', + style: { padding: '12px 8px 0 12px', - } - : { + }, + }, + { + props: { toolbarVariant: 'desktop' }, + style: { paddingBottom: 0, - }), -})) as DateTimeRangePickerStartOrEndToolbarComponent; + }, + }, + ], +}) as DateTimeRangePickerStartOrEndToolbarComponent; const DateTimeRangePickerToolbarEnd = styled(DateTimePickerToolbar, { name: 'MuiDateTimeRangePickerToolbar', slot: 'EndToolbar', overridesResolver: (_, styles) => styles.endToolbar, -})>(({ ownerState }) => ({ - padding: ownerState?.toolbarVariant !== 'desktop' ? '12px 8px 12px 12px' : undefined, -})) as DateTimeRangePickerStartOrEndToolbarComponent; +})>({ + variants: [ + { + props: ({ + ownerState: { toolbarVariant }, + }: { + ownerState: DateTimeRangePickerStartOrEndToolbarProps; + }) => toolbarVariant !== 'desktop', + style: { + padding: '12px 8px 12px 12px', + }, + }, + ], +}) as DateTimeRangePickerStartOrEndToolbarComponent; const DateTimeRangePickerToolbar = React.forwardRef(function DateTimeRangePickerToolbar< TDate extends PickerValidDate, diff --git a/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx b/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx index 820e0f5ed83a..9e0dbdba817d 100644 --- a/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx +++ b/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx @@ -45,11 +45,16 @@ const DatePickerToolbarTitle = styled(Typography, { name: 'MuiDatePickerToolbar', slot: 'Title', overridesResolver: (_, styles) => styles.title, -})<{ ownerState: DatePickerToolbarProps }>(({ ownerState }) => ({ - ...(ownerState.isLandscape && { - margin: 'auto 16px auto auto', - }), -})); +})<{ ownerState: DatePickerToolbarProps }>({ + variants: [ + { + props: { isLandscape: true }, + style: { + margin: 'auto 16px auto auto', + }, + }, + ], +}); type DatePickerToolbarComponent = (( props: DatePickerToolbarProps & React.RefAttributes, diff --git a/packages/x-date-pickers/src/DateTimePicker/DateTimePickerToolbar.tsx b/packages/x-date-pickers/src/DateTimePicker/DateTimePickerToolbar.tsx index f100e3fbe33b..21593a3f6081 100644 --- a/packages/x-date-pickers/src/DateTimePicker/DateTimePickerToolbar.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/DateTimePickerToolbar.tsx @@ -60,25 +60,36 @@ const DateTimePickerToolbarRoot = styled(PickersToolbar, { name: 'MuiDateTimePickerToolbar', slot: 'Root', overridesResolver: (props, styles) => styles.root, -})<{ ownerState: DateTimePickerToolbarProps }>(({ theme, ownerState }) => ({ - paddingLeft: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 24 : 16, - paddingRight: ownerState.toolbarVariant === 'desktop' && !ownerState.isLandscape ? 0 : 16, - borderBottom: - ownerState.toolbarVariant === 'desktop' - ? `1px solid ${(theme.vars || theme).palette.divider}` - : undefined, - borderRight: - ownerState.toolbarVariant === 'desktop' && ownerState.isLandscape - ? `1px solid ${(theme.vars || theme).palette.divider}` - : undefined, +})<{ ownerState: DateTimePickerToolbarProps }>(({ theme }) => ({ + paddingLeft: 16, + paddingRight: 16, justifyContent: 'space-around', position: 'relative', - ...(ownerState.toolbarVariant === 'desktop' && { - [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: { - color: (theme.vars || theme).palette.primary.main, - fontWeight: theme.typography.fontWeightBold, + variants: [ + { + props: { toolbarVariant: 'desktop' }, + style: { + borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`, + [`& .${pickersToolbarClasses.content} .${pickersToolbarTextClasses.selected}`]: { + color: (theme.vars || theme).palette.primary.main, + fontWeight: theme.typography.fontWeightBold, + }, + }, }, - }), + { + props: { toolbarVariant: 'desktop', isLandscape: true }, + style: { + borderRight: `1px solid ${(theme.vars || theme).palette.divider}`, + }, + }, + { + props: { toolbarVariant: 'desktop', isLandscape: false }, + style: { + paddingLeft: 24, + paddingRight: 0, + }, + }, + ], })); DateTimePickerToolbarRoot.propTypes = { @@ -117,22 +128,33 @@ const DateTimePickerToolbarTimeContainer = styled('div', { name: 'MuiDateTimePickerToolbar', slot: 'TimeContainer', overridesResolver: (props, styles) => styles.timeContainer, -})<{ ownerState: DateTimePickerToolbarProps }>(({ theme, ownerState }) => { - const direction = - ownerState.isLandscape && ownerState.toolbarVariant !== 'desktop' ? 'column' : 'row'; +})<{ ownerState: DateTimePickerToolbarProps }>(({ theme }) => { return { display: 'flex', - flexDirection: direction, - ...(ownerState.toolbarVariant === 'desktop' && { - ...(!ownerState.isLandscape && { - gap: 9, - marginRight: 4, - alignSelf: 'flex-end', - }), - }), + flexDirection: 'row', ...(theme.direction === 'rtl' && { - flexDirection: `${direction}-reverse`, + flexDirection: 'row-reverse', }), + variants: [ + { + props: ({ isLandscape, toolbarVariant }: DateTimePickerToolbarProps) => + isLandscape && toolbarVariant !== 'desktop', + style: { + flexDirection: 'column', + ...(theme.direction === 'rtl' && { + flexDirection: 'column-reverse', + }), + }, + }, + { + props: { toolbarVariant: 'desktop', isLandscape: false }, + style: { + gap: 9, + marginRight: 4, + alignSelf: 'flex-end', + }, + }, + ], }; }); @@ -140,12 +162,17 @@ const DateTimePickerToolbarTimeDigitsContainer = styled('div', { name: 'MuiDateTimePickerToolbar', slot: 'TimeDigitsContainer', overridesResolver: (props, styles) => styles.timeDigitsContainer, -})<{ ownerState: DateTimePickerToolbarProps }>(({ theme, ownerState }) => ({ +})<{ ownerState: DateTimePickerToolbarProps }>(({ theme }) => ({ display: 'flex', - ...(ownerState.toolbarVariant === 'desktop' && { gap: 1.5 }), ...(theme.direction === 'rtl' && { flexDirection: 'row-reverse', }), + variants: [ + { + props: { toolbarVariant: 'desktop' }, + style: { gap: 1.5 }, + }, + ], })); DateTimePickerToolbarTimeContainer.propTypes = { @@ -168,10 +195,18 @@ const DateTimePickerToolbarSeparator = styled(PickersToolbarText, { overridesResolver: (props, styles) => styles.separator, })<{ ownerState: DateTimePickerToolbarProps; -}>(({ ownerState }) => ({ - margin: ownerState.toolbarVariant === 'desktop' ? 0 : '0 4px 0 2px', +}>({ + margin: '0 4px 0 2px', cursor: 'default', -})); + variants: [ + { + props: { toolbarVariant: 'desktop' }, + style: { + margin: 0, + }, + }, + ], +}); // Taken from TimePickerToolbar const DateTimePickerToolbarAmPmSelection = styled('div', { @@ -184,21 +219,26 @@ const DateTimePickerToolbarAmPmSelection = styled('div', { ], })<{ ownerState: DateTimePickerToolbarProps; -}>(({ ownerState }) => ({ +}>({ display: 'flex', flexDirection: 'column', marginRight: 'auto', marginLeft: 12, - ...(ownerState.isLandscape && { - margin: '4px 0 auto', - flexDirection: 'row', - justifyContent: 'space-around', - width: '100%', - }), [`& .${dateTimePickerToolbarClasses.ampmLabel}`]: { fontSize: 17, }, -})); + variants: [ + { + props: { isLandscape: true }, + style: { + margin: '4px 0 auto', + flexDirection: 'row', + justifyContent: 'space-around', + width: '100%', + }, + }, + ], +}); /** * Demos: diff --git a/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx b/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx index cca99858f8ae..1af619f65904 100644 --- a/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx +++ b/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx @@ -58,12 +58,15 @@ const DayCalendarSkeletonDay = styled(Skeleton, { name: 'MuiDayCalendarSkeleton', slot: 'DaySkeleton', overridesResolver: (props, styles) => styles.daySkeleton, -})<{ ownerState: { day: number } }>(({ ownerState }) => ({ +})<{ ownerState: { day: number } }>({ margin: `0 ${DAY_MARGIN}px`, - ...(ownerState.day === 0 && { - visibility: 'hidden', - }), -})); + variants: [ + { + props: { day: 0 }, + style: { visibility: 'hidden' }, + }, + ], +}); DayCalendarSkeletonDay.propTypes = { // ----------------------------- Warning -------------------------------- diff --git a/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx b/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx index e3824be36907..19b45e4c99a2 100644 --- a/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx +++ b/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx @@ -35,14 +35,24 @@ const DigitalClockRoot = styled(PickerViewRoot, { name: 'MuiDigitalClock', slot: 'Root', overridesResolver: (props, styles) => styles.root, -})<{ ownerState: DigitalClockProps & { alreadyRendered: boolean } }>(({ ownerState }) => ({ +})<{ ownerState: DigitalClockProps & { alreadyRendered: boolean } }>({ overflowY: 'auto', width: '100%', '@media (prefers-reduced-motion: no-preference)': { - scrollBehavior: ownerState.alreadyRendered ? 'smooth' : 'auto', + scrollBehavior: 'auto', }, maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT, -})); + variants: [ + { + props: { alreadyRendered: true }, + style: { + '@media (prefers-reduced-motion: no-preference)': { + scrollBehavior: 'smooth', + }, + }, + }, + ], +}); const DigitalClockList = styled(MenuList, { name: 'MuiDigitalClock', diff --git a/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx b/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx index bbb4bcb1db97..daae053f66c4 100644 --- a/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx +++ b/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx @@ -47,12 +47,13 @@ const PickersMonthRoot = styled('div', { overridesResolver: (_, styles) => [styles.root], })<{ ownerState: PickersMonthProps; -}>(({ ownerState }) => ({ - flexBasis: ownerState.monthsPerRow === 3 ? '33.3%' : '25%', +}>({ display: 'flex', alignItems: 'center', justifyContent: 'center', -})); + flexBasis: '33.3%', + variants: [{ props: { monthsPerRow: 4 }, style: { flexBasis: '25%' } }], +}); const PickersMonthButton = styled('button', { name: 'MuiPickersMonth', diff --git a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClockSection.tsx b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClockSection.tsx index ced944954913..cbc6a60df7a0 100644 --- a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClockSection.tsx +++ b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClockSection.tsx @@ -53,13 +53,13 @@ const MultiSectionDigitalClockSectionRoot = styled(MenuList, { slot: 'Root', overridesResolver: (_, styles) => styles.root, })<{ ownerState: MultiSectionDigitalClockSectionProps & { alreadyRendered: boolean } }>( - ({ theme, ownerState }) => ({ + ({ theme }) => ({ maxHeight: DIGITAL_CLOCK_VIEW_HEIGHT, width: 56, padding: 0, overflow: 'hidden', '@media (prefers-reduced-motion: no-preference)': { - scrollBehavior: ownerState.alreadyRendered ? 'smooth' : 'auto', + scrollBehavior: 'auto', }, '@media (pointer: fine)': { '&:hover': { @@ -78,6 +78,16 @@ const MultiSectionDigitalClockSectionRoot = styled(MenuList, { // subtracting the height of one item, extra margin and borders to make sure the max height is correct height: 'calc(100% - 40px - 6px)', }, + variants: [ + { + props: { alreadyRendered: true }, + style: { + '@media (prefers-reduced-motion: no-preference)': { + scrollBehavior: 'smooth', + }, + }, + }, + ], }), ); diff --git a/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx b/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx index a18d69b4540f..e7bbfe369dc5 100644 --- a/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx +++ b/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx @@ -87,14 +87,19 @@ const PickersCalendarHeaderSwitchViewButton = styled(IconButton, { overridesResolver: (_, styles) => styles.switchViewButton, })<{ ownerState: PickersCalendarHeaderOwnerState; -}>(({ ownerState }) => ({ +}>({ marginRight: 'auto', - ...(ownerState.view === 'year' && { - [`.${pickersCalendarHeaderClasses.switchViewIcon}`]: { - transform: 'rotate(180deg)', + variants: [ + { + props: { view: 'year' }, + style: { + [`.${pickersCalendarHeaderClasses.switchViewIcon}`]: { + transform: 'rotate(180deg)', + }, + }, }, - }), -})); + ], +}); const PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDownIcon, { name: 'MuiPickersCalendarHeader', diff --git a/packages/x-date-pickers/src/PickersDay/PickersDay.tsx b/packages/x-date-pickers/src/PickersDay/PickersDay.tsx index b0ed7b3ac0eb..a614588756fd 100644 --- a/packages/x-date-pickers/src/PickersDay/PickersDay.tsx +++ b/packages/x-date-pickers/src/PickersDay/PickersDay.tsx @@ -127,7 +127,7 @@ const useUtilityClasses = (ownerState: PickersDayProps) => { return composeClasses(slots, getPickersDayUtilityClass, classes); }; -const styleArg = ({ theme, ownerState }: { theme: Theme; ownerState: OwnerState }) => ({ +const styleArg = ({ theme }: { theme: Theme }) => ({ ...theme.typography.caption, width: DAY_SIZE, height: DAY_SIZE, @@ -170,19 +170,28 @@ const styleArg = ({ theme, ownerState }: { theme: Theme; ownerState: OwnerState [`&.${pickersDayClasses.disabled}&.${pickersDayClasses.selected}`]: { opacity: 0.6, }, - ...(!ownerState.disableMargin && { - margin: `0 ${DAY_MARGIN}px`, - }), - ...(ownerState.outsideCurrentMonth && - ownerState.showDaysOutsideCurrentMonth && { - color: (theme.vars || theme).palette.text.secondary, - }), - ...(!ownerState.disableHighlightToday && - ownerState.today && { - [`&:not(.${pickersDayClasses.selected})`]: { - border: `1px solid ${(theme.vars || theme).palette.text.secondary}`, + variants: [ + { + props: { disableMargin: false }, + style: { + margin: `0 ${DAY_MARGIN}px`, }, - }), + }, + { + props: { outsideCurrentMonth: true, showDaysOutsideCurrentMonth: true }, + style: { + color: (theme.vars || theme).palette.text.secondary, + }, + }, + { + props: { disableHighlightToday: false, today: true }, + style: { + [`&:not(.${pickersDayClasses.selected})`]: { + border: `1px solid ${(theme.vars || theme).palette.text.secondary}`, + }, + }, + }, + ], }); const overridesResolver = ( @@ -213,8 +222,8 @@ const PickersDayFiller = styled('div', { name: 'MuiPickersDay', slot: 'Root', overridesResolver, -})<{ ownerState: OwnerState }>(({ theme, ownerState }) => ({ - ...styleArg({ theme, ownerState }), +})<{ ownerState: OwnerState }>(({ theme }) => ({ + ...styleArg({ theme }), // visibility: 'hidden' does not work here as it hides the element from screen readers as well opacity: 0, pointerEvents: 'none', diff --git a/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx b/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx index ac97bf691f5d..0937bce1cb7f 100644 --- a/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx +++ b/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx @@ -23,23 +23,33 @@ const PickersLayoutRoot = styled('div', { name: 'MuiPickersLayout', slot: 'Root', overridesResolver: (props, styles) => styles.root, -})<{ ownerState: { isLandscape: boolean } }>(({ theme, ownerState }) => ({ +})<{ ownerState: { isLandscape: boolean } }>(({ theme }) => ({ display: 'grid', gridAutoColumns: 'max-content auto max-content', gridAutoRows: 'max-content auto max-content', - [`& .${pickersLayoutClasses.toolbar}`]: ownerState.isLandscape - ? { - gridColumn: theme.direction === 'rtl' ? 3 : 1, - gridRow: '2 / 3', - } - : { gridColumn: '2 / 4', gridRow: 1 }, - [`.${pickersLayoutClasses.shortcuts}`]: ownerState.isLandscape - ? { gridColumn: '2 / 4', gridRow: 1 } - : { - gridColumn: theme.direction === 'rtl' ? 3 : 1, - gridRow: '2 / 3', - }, [`& .${pickersLayoutClasses.actionBar}`]: { gridColumn: '1 / 4', gridRow: 3 }, + variants: [ + { + props: { isLandscape: true }, + style: { + [`& .${pickersLayoutClasses.toolbar}`]: { + gridColumn: theme.direction === 'rtl' ? 3 : 1, + gridRow: '2 / 3', + }, + [`.${pickersLayoutClasses.shortcuts}`]: { gridColumn: '2 / 4', gridRow: 1 }, + }, + }, + { + props: { isLandscape: false }, + style: { + [`& .${pickersLayoutClasses.toolbar}`]: { gridColumn: '2 / 4', gridRow: 1 }, + [`& .${pickersLayoutClasses.shortcuts}`]: { + gridColumn: theme.direction === 'rtl' ? 3 : 1, + gridRow: '2 / 3', + }, + }, + }, + ], })); PickersLayoutRoot.propTypes = { diff --git a/packages/x-date-pickers/src/PickersTextField/PickersFilledInput/PickersFilledInput.tsx b/packages/x-date-pickers/src/PickersTextField/PickersFilledInput/PickersFilledInput.tsx index 95d9343c5893..e86c0556e22d 100644 --- a/packages/x-date-pickers/src/PickersTextField/PickersFilledInput/PickersFilledInput.tsx +++ b/packages/x-date-pickers/src/PickersTextField/PickersFilledInput/PickersFilledInput.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { FormControlState, useFormControl } from '@mui/material/FormControl'; import { styled, useThemeProps } from '@mui/material/styles'; +import { shouldForwardProp } from '@mui/system'; import { refType } from '@mui/utils'; import composeClasses from '@mui/utils/composeClasses'; import { @@ -23,7 +24,8 @@ const PickersFilledInputRoot = styled(PickersInputBaseRoot, { name: 'MuiPickersFilledInput', slot: 'Root', overridesResolver: (props, styles) => styles.root, -})<{ ownerState: OwnerStateType }>(({ theme, ownerState }) => { + shouldForwardProp: (prop) => shouldForwardProp(prop) && prop !== 'disableUnderline', +})<{ ownerState: OwnerStateType }>(({ theme }) => { const light = theme.palette.mode === 'light'; const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)'; const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)'; @@ -51,65 +53,85 @@ const PickersFilledInputRoot = styled(PickersInputBaseRoot, { [`&.${pickersFilledInputClasses.disabled}`]: { backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground, }, - ...(!ownerState.disableUnderline && { - '&::after': { - borderBottom: `2px solid ${ - (theme.vars || theme).palette[ownerState.color || 'primary']?.main - }`, - left: 0, - bottom: 0, - // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 - content: '""', - position: 'absolute', - right: 0, - transform: 'scaleX(0)', - transition: theme.transitions.create('transform', { - duration: theme.transitions.duration.shorter, - easing: theme.transitions.easing.easeOut, - }), - pointerEvents: 'none', // Transparent to the hover style. - }, - [`&.${pickersFilledInputClasses.focused}:after`]: { - // translateX(0) is a workaround for Safari transform scale bug - // See https://github.com/mui/material-ui/issues/31766 - transform: 'scaleX(1) translateX(0)', - }, - [`&.${pickersFilledInputClasses.error}`]: { - '&:before, &:after': { - borderBottomColor: (theme.vars || theme).palette.error.main, + variants: [ + ...Object.keys((theme.vars ?? theme).palette) + // @ts-ignore + .filter((key) => (theme.vars ?? theme).palette[key].main) + .map((color) => ({ + props: { color, disableUnderline: false }, + style: { + '&::after': { + // @ts-ignore + borderBottom: `2px solid ${(theme.vars || theme).palette[color]?.main}`, + }, + }, + })), + { + props: { disableUnderline: false }, + style: { + '&::after': { + left: 0, + bottom: 0, + // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 + content: '""', + position: 'absolute', + right: 0, + transform: 'scaleX(0)', + transition: theme.transitions.create('transform', { + duration: theme.transitions.duration.shorter, + easing: theme.transitions.easing.easeOut, + }), + pointerEvents: 'none', // Transparent to the hover style. + }, + [`&.${pickersFilledInputClasses.focused}:after`]: { + // translateX(0) is a workaround for Safari transform scale bug + // See https://github.com/mui/material-ui/issues/31766 + transform: 'scaleX(1) translateX(0)', + }, + [`&.${pickersFilledInputClasses.error}`]: { + '&:before, &:after': { + borderBottomColor: (theme.vars || theme).palette.error.main, + }, + }, + '&::before': { + borderBottom: `1px solid ${ + theme.vars + ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` + : bottomLineColor + }`, + left: 0, + bottom: 0, + // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 + content: '"\\00a0"', + position: 'absolute', + right: 0, + transition: theme.transitions.create('border-bottom-color', { + duration: theme.transitions.duration.shorter, + }), + pointerEvents: 'none', // Transparent to the hover style. + }, + [`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: + { + borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`, + }, + [`&.${pickersFilledInputClasses.disabled}:before`]: { + borderBottomStyle: 'dotted', + }, }, }, - '&::before': { - borderBottom: `1px solid ${ - theme.vars - ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` - : bottomLineColor - }`, - left: 0, - bottom: 0, - // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 - content: '"\\00a0"', - position: 'absolute', - right: 0, - transition: theme.transitions.create('border-bottom-color', { - duration: theme.transitions.duration.shorter, - }), - pointerEvents: 'none', // Transparent to the hover style. + { + props: ({ startAdornment }: OwnerStateType) => !!startAdornment, + style: { + paddingLeft: 12, + }, }, - [`&:hover:not(.${pickersFilledInputClasses.disabled}, .${pickersFilledInputClasses.error}):before`]: - { - borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`, + { + props: ({ endAdornment }: OwnerStateType) => !!endAdornment, + style: { + paddingRight: 12, }, - [`&.${pickersFilledInputClasses.disabled}:before`]: { - borderBottomStyle: 'dotted', }, - }), - ...(ownerState.startAdornment && { - paddingLeft: 12, - }), - ...(ownerState.endAdornment && { - paddingRight: 12, - }), + ], }; }); @@ -117,31 +139,47 @@ const PickersFilledSectionsContainer = styled(PickersInputBaseSectionsContainer, name: 'MuiPickersFilledInput', slot: 'sectionsContainer', overridesResolver: (props, styles) => styles.sectionsContainer, -})<{ ownerState: OwnerStateType }>(({ ownerState }) => ({ +})<{ ownerState: OwnerStateType }>({ paddingTop: 25, paddingRight: 12, paddingBottom: 8, paddingLeft: 12, - ...(ownerState.size === 'small' && { - paddingTop: 21, - paddingBottom: 4, - }), - ...(ownerState.startAdornment && { - paddingLeft: 0, - }), - ...(ownerState.endAdornment && { - paddingRight: 0, - }), - ...(ownerState.hiddenLabel && { - paddingTop: 16, - paddingBottom: 17, - }), - ...(ownerState.hiddenLabel && - ownerState.size === 'small' && { - paddingTop: 8, - paddingBottom: 9, - }), -})); + variants: [ + { + props: { size: 'small' }, + style: { + paddingTop: 21, + paddingBottom: 4, + }, + }, + { + props: ({ startAdornment }: OwnerStateType) => !!startAdornment, + style: { + paddingLeft: 0, + }, + }, + { + props: ({ endAdornment }: OwnerStateType) => !!endAdornment, + style: { + paddingRight: 0, + }, + }, + { + props: { hiddenLabel: true }, + style: { + paddingTop: 16, + paddingBottom: 17, + }, + }, + { + props: { hiddenLabel: true, size: 'small' }, + style: { + paddingTop: 8, + paddingBottom: 9, + }, + }, + ], +}); const useUtilityClasses = (ownerState: OwnerStateType) => { const { classes, disableUnderline } = ownerState; @@ -175,7 +213,13 @@ const PickersFilledInput = React.forwardRef(function PickersFilledInput( name: 'MuiPickersFilledInput', }); - const { label, autoFocus, ownerState: ownerStateProp, ...other } = props; + const { + label, + autoFocus, + disableUnderline = false, + ownerState: ownerStateProp, + ...other + } = props; const muiFormControl = useFormControl(); @@ -190,6 +234,7 @@ const PickersFilledInput = React.forwardRef(function PickersFilledInput( return ( styles.root, -})<{ ownerState: OwnerStateType }>(({ theme, ownerState }) => { +})<{ ownerState: OwnerStateType }>(({ theme }) => { const light = theme.palette.mode === 'light'; let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)'; if (theme.vars) { @@ -26,58 +26,73 @@ const PickersInputRoot = styled(PickersInputBaseRoot, { 'label + &': { marginTop: 16, }, - ...(!ownerState.disableUnderline && { - '&::after': { - background: 'red', + variants: [ + ...Object.keys((theme.vars ?? theme).palette) // @ts-ignore - borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`, - left: 0, - bottom: 0, - // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 - content: '""', - position: 'absolute', - right: 0, - transform: 'scaleX(0)', - transition: theme.transitions.create('transform', { - duration: theme.transitions.duration.shorter, - easing: theme.transitions.easing.easeOut, - }), - pointerEvents: 'none', // Transparent to the hover style. - }, - [`&.${pickersInputClasses.focused}:after`]: { - // translateX(0) is a workaround for Safari transform scale bug - // See https://github.com/mui/material-ui/issues/31766 - transform: 'scaleX(1) translateX(0)', - }, - [`&.${pickersInputClasses.error}`]: { - '&:before, &:after': { - borderBottomColor: (theme.vars || theme).palette.error.main, - }, - }, - '&::before': { - borderBottom: `1px solid ${bottomLineColor}`, - left: 0, - bottom: 0, - // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 - content: '"\\00a0"', - position: 'absolute', - right: 0, - transition: theme.transitions.create('border-bottom-color', { - duration: theme.transitions.duration.shorter, - }), - pointerEvents: 'none', // Transparent to the hover style. - }, - [`&:hover:not(.${pickersInputClasses.disabled}, .${pickersInputClasses.error}):before`]: { - borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`, - // Reset on touch devices, it doesn't add specificity - '@media (hover: none)': { - borderBottom: `1px solid ${bottomLineColor}`, + .filter((key) => (theme.vars ?? theme).palette[key].main) + .map((color) => ({ + props: { color }, + style: { + '&::after': { + // @ts-ignore + borderBottom: `2px solid ${(theme.vars || theme).palette[color].main}`, + }, + }, + })), + { + props: { disableUnderline: false }, + style: { + '&::after': { + background: 'red', + left: 0, + bottom: 0, + // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 + content: '""', + position: 'absolute', + right: 0, + transform: 'scaleX(0)', + transition: theme.transitions.create('transform', { + duration: theme.transitions.duration.shorter, + easing: theme.transitions.easing.easeOut, + }), + pointerEvents: 'none', // Transparent to the hover style. + }, + [`&.${pickersInputClasses.focused}:after`]: { + // translateX(0) is a workaround for Safari transform scale bug + // See https://github.com/mui/material-ui/issues/31766 + transform: 'scaleX(1) translateX(0)', + }, + [`&.${pickersInputClasses.error}`]: { + '&:before, &:after': { + borderBottomColor: (theme.vars || theme).palette.error.main, + }, + }, + '&::before': { + borderBottom: `1px solid ${bottomLineColor}`, + left: 0, + bottom: 0, + // Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242 + content: '"\\00a0"', + position: 'absolute', + right: 0, + transition: theme.transitions.create('border-bottom-color', { + duration: theme.transitions.duration.shorter, + }), + pointerEvents: 'none', // Transparent to the hover style. + }, + [`&:hover:not(.${pickersInputClasses.disabled}, .${pickersInputClasses.error}):before`]: { + borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`, + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + borderBottom: `1px solid ${bottomLineColor}`, + }, + }, + [`&.${pickersInputClasses.disabled}:before`]: { + borderBottomStyle: 'dotted', + }, }, }, - [`&.${pickersInputClasses.disabled}:before`]: { - borderBottomStyle: 'dotted', - }, - }), + ], }; }); @@ -113,7 +128,13 @@ const PickersInput = React.forwardRef(function PickersInput( name: 'MuiPickersInput', }); - const { label, autoFocus, ownerState: ownerStateProp, ...other } = props; + const { + label, + autoFocus, + disableUnderline = false, + ownerState: ownerStateProp, + ...other + } = props; const muiFormControl = useFormControl(); @@ -121,6 +142,7 @@ const PickersInput = React.forwardRef(function PickersInput( ...props, ...ownerStateProp, ...muiFormControl, + disableUnderline, color: muiFormControl?.color || 'primary', }; const classes = useUtilityClasses(ownerState); @@ -198,6 +220,11 @@ PickersInput.propTypes = { }), }), ]), + /** + * The props used for each component slot. + * @default {} + */ + slotProps: PropTypes.object, /** * The components used for each slot inside. * diff --git a/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx b/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx index 6d37ff718641..1ec0341917be 100644 --- a/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx +++ b/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx @@ -6,6 +6,7 @@ import useForkRef from '@mui/utils/useForkRef'; import { refType } from '@mui/utils'; import composeClasses from '@mui/utils/composeClasses'; import capitalize from '@mui/utils/capitalize'; +import { useSlotProps } from '@mui/base/utils'; import visuallyHidden from '@mui/utils/visuallyHidden'; import { pickersInputBaseClasses, @@ -26,7 +27,7 @@ export const PickersInputBaseRoot = styled('div', { name: 'MuiPickersInputBase', slot: 'Root', overridesResolver: (props, styles) => styles.root, -})<{ ownerState: OwnerStateType }>(({ theme, ownerState }) => ({ +})<{ ownerState: OwnerStateType }>(({ theme }) => ({ ...theme.typography.body1, color: (theme.vars || theme).palette.text.primary, cursor: 'text', @@ -37,16 +38,19 @@ export const PickersInputBaseRoot = styled('div', { position: 'relative', boxSizing: 'border-box', // Prevent padding issue with fullWidth. letterSpacing: `${round(0.15 / 16)}em`, - ...(ownerState.fullWidth && { - width: '100%', - }), + variants: [ + { + props: { fullWidth: true }, + style: { width: '100%' }, + }, + ], })); export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot, { name: 'MuiPickersInputBase', slot: 'SectionsContainer', overridesResolver: (props, styles) => styles.sectionsContainer, -})<{ ownerState: OwnerStateType }>(({ theme, ownerState }) => ({ +})<{ ownerState: OwnerStateType }>(({ theme }) => ({ padding: '4px 0 5px', fontFamily: theme.typography.fontFamily, fontSize: 'inherit', @@ -59,22 +63,34 @@ export const PickersInputBaseSectionsContainer = styled(PickersSectionListRoot, letterSpacing: 'inherit', // Baseline behavior width: '182px', - ...(ownerState.size === 'small' && { - paddingTop: 1, - }), ...(theme.direction === 'rtl' && { textAlign: 'right /*! @noflip */' as any }), - ...(!(ownerState.adornedStart || ownerState.focused || ownerState.filled) && { - color: 'currentColor', - ...(ownerState.label == null && - (theme.vars + variants: [ + { + props: { size: 'small' }, + style: { + paddingTop: 1, + }, + }, + { + props: { adornedStart: false, focused: false, filled: false }, + style: { + color: 'currentColor', + opacity: 0, + }, + }, + { + // Can't use the object notation because label can be null or undefined + props: ({ adornedStart, focused, filled, label }: OwnerStateType) => + !adornedStart && !focused && !filled && label == null, + style: theme.vars ? { opacity: theme.vars.opacity.inputPlaceholder, } : { opacity: theme.palette.mode === 'light' ? 0.42 : 0.5, - })), - ...(ownerState.label != null && { opacity: 0 }), - }), + }, + }, + ], })); const PickersInputBaseSection = styled(PickersSectionListSection, { @@ -185,6 +201,7 @@ const PickersInputBase = React.forwardRef(function PickersInputBase( startAdornment, renderSuffix, slots, + slotProps, contentEditable, tabIndex, onInput, @@ -247,16 +264,22 @@ const PickersInputBase = React.forwardRef(function PickersInputBase( const classes = useUtilityClasses(ownerState); const InputRoot = slots?.root || PickersInputBaseRoot; + const inputRootProps = useSlotProps({ + elementType: InputRoot, + externalSlotProps: slotProps?.root, + externalForwardedProps: other, + additionalProps: { + 'aria-invalid': muiFormControl.error, + ref: handleRootRef, + }, + className: classes.root, + ownerState, + }); + const InputSectionsContainer = slots?.input || PickersInputBaseSectionsContainer; return ( - + {startAdornment} ({ fontSize: 'inherit', })); -const OutlineLegend = styled('legend')<{ ownerState: any }>(({ ownerState, theme }) => ({ +const OutlineLegend = styled('legend')<{ ownerState: any }>(({ theme }) => ({ float: 'unset', // Fix conflict with bootstrap width: 'auto', // Fix conflict with bootstrap overflow: 'hidden', // Fix Horizontal scroll when label too long - ...(!ownerState.withLabel && { - padding: 0, - lineHeight: '11px', // sync with `height` in `legend` styles - transition: theme.transitions.create('width', { - duration: 150, - easing: theme.transitions.easing.easeOut, - }), - }), - ...(ownerState.withLabel && { - display: 'block', // Fix conflict with normalize.css and sanitize.css - padding: 0, - height: 11, // sync with `lineHeight` in `legend` styles - fontSize: '0.75em', - visibility: 'hidden', - maxWidth: 0.01, - transition: theme.transitions.create('max-width', { - duration: 50, - easing: theme.transitions.easing.easeOut, - }), - whiteSpace: 'nowrap', - '& > span': { - paddingLeft: 5, - paddingRight: 5, - display: 'inline-block', - opacity: 0, - visibility: 'visible', + variants: [ + { + props: { withLabel: false }, + style: { + padding: 0, + lineHeight: '11px', // sync with `height` in `legend` styles + transition: theme.transitions.create('width', { + duration: 150, + easing: theme.transitions.easing.easeOut, + }), + }, }, - ...(ownerState.notched && { - maxWidth: '100%', - transition: theme.transitions.create('max-width', { - duration: 100, - easing: theme.transitions.easing.easeOut, - delay: 50, - }), - }), - }), + { + props: { withLabel: true }, + style: { + display: 'block', // Fix conflict with normalize.css and sanitize.css + padding: 0, + height: 11, // sync with `lineHeight` in `legend` styles + fontSize: '0.75em', + visibility: 'hidden', + maxWidth: 0.01, + transition: theme.transitions.create('max-width', { + duration: 50, + easing: theme.transitions.easing.easeOut, + }), + whiteSpace: 'nowrap', + '& > span': { + paddingLeft: 5, + paddingRight: 5, + display: 'inline-block', + opacity: 0, + visibility: 'visible', + }, + }, + }, + { + props: { withLabel: true, notched: true }, + style: { + maxWidth: '100%', + transition: theme.transitions.create('max-width', { + duration: 100, + easing: theme.transitions.easing.easeOut, + delay: 50, + }), + }, + }, + ], })); /** diff --git a/packages/x-date-pickers/src/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.tsx b/packages/x-date-pickers/src/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.tsx index 2cca79b9691a..2dbcec6510a9 100644 --- a/packages/x-date-pickers/src/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.tsx +++ b/packages/x-date-pickers/src/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.tsx @@ -23,7 +23,7 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, { name: 'MuiPickersOutlinedInput', slot: 'Root', overridesResolver: (props, styles) => styles.root, -})<{ ownerState: OwnerStateType }>(({ theme, ownerState }) => { +})<{ ownerState: OwnerStateType }>(({ theme }) => { const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'; return { @@ -42,8 +42,6 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, { }, [`&.${pickersOutlinedInputClasses.focused} .${pickersOutlinedInputClasses.notchedOutline}`]: { borderStyle: 'solid', - // @ts-ignore - borderColor: (theme.vars || theme).palette[ownerState.color].main, borderWidth: 2, }, [`&.${pickersOutlinedInputClasses.disabled}`]: { @@ -57,6 +55,19 @@ const PickersOutlinedInputRoot = styled(PickersInputBaseRoot, { [`&.${pickersOutlinedInputClasses.error} .${pickersOutlinedInputClasses.notchedOutline}`]: { borderColor: (theme.vars || theme).palette.error.main, }, + variants: Object.keys((theme.vars ?? theme).palette) + // @ts-ignore + .filter((key) => (theme.vars ?? theme).palette[key].main) + .map((color) => ({ + props: { color }, + style: { + [`&.${pickersOutlinedInputClasses.focused}:not(.${pickersOutlinedInputClasses.error}) .${pickersOutlinedInputClasses.notchedOutline}`]: + { + // @ts-ignore + borderColor: (theme.vars || theme).palette[color].main, + }, + }, + })), }; }); @@ -64,12 +75,17 @@ const PickersOutlinedInputSectionsContainer = styled(PickersInputBaseSectionsCon name: 'MuiPickersOutlinedInput', slot: 'SectionsContainer', overridesResolver: (props, styles) => styles.sectionsContainer, -})<{ ownerState: OwnerStateType }>(({ ownerState }) => ({ +})<{ ownerState: OwnerStateType }>({ padding: '16.5px 0', - ...(ownerState.size === 'small' && { - padding: '8.5px 0', - }), -})); + variants: [ + { + props: { size: 'small' }, + style: { + padding: '8.5px 0', + }, + }, + ], +}); const useUtilityClasses = (ownerState: OwnerStateType) => { const { classes } = ownerState; @@ -207,6 +223,11 @@ PickersOutlinedInput.propTypes = { }), }), ]), + /** + * The props used for each component slot. + * @default {} + */ + slotProps: PropTypes.object, /** * The components used for each slot inside. * diff --git a/packages/x-date-pickers/src/TimeClock/Clock.tsx b/packages/x-date-pickers/src/TimeClock/Clock.tsx index 8b1562440561..23a583f9dd71 100644 --- a/packages/x-date-pickers/src/TimeClock/Clock.tsx +++ b/packages/x-date-pickers/src/TimeClock/Clock.tsx @@ -104,7 +104,7 @@ const ClockSquareMask = styled('div', { name: 'MuiClock', slot: 'SquareMask', overridesResolver: (_, styles) => styles.squareMask, -})<{ ownerState: ClockSquareMaskOwnerState }>(({ ownerState }) => ({ +})<{ ownerState: ClockSquareMaskOwnerState }>({ width: '100%', height: '100%', position: 'absolute', @@ -113,9 +113,10 @@ const ClockSquareMask = styled('div', { // Disable scroll capabilities. touchAction: 'none', userSelect: 'none', - ...(ownerState.disabled - ? {} - : { + variants: [ + { + props: { disabled: false }, + style: { '@media (pointer: fine)': { cursor: 'pointer', borderRadius: '50%', @@ -123,8 +124,10 @@ const ClockSquareMask = styled('div', { '&:active': { cursor: 'move', }, - }), -})); + }, + }, + ], +}); const ClockPin = styled('div', { name: 'MuiClock', @@ -145,7 +148,7 @@ const ClockAmButton = styled(IconButton, { name: 'MuiClock', slot: 'AmButton', overridesResolver: (_, styles) => styles.amButton, -})<{ ownerState: ClockProps }>(({ theme, ownerState }) => ({ +})<{ ownerState: ClockProps }>(({ theme }) => ({ zIndex: 1, position: 'absolute', bottom: 8, @@ -153,20 +156,25 @@ const ClockAmButton = styled(IconButton, { paddingLeft: 4, paddingRight: 4, width: CLOCK_HOUR_WIDTH, - ...(ownerState.meridiemMode === 'am' && { - backgroundColor: (theme.vars || theme).palette.primary.main, - color: (theme.vars || theme).palette.primary.contrastText, - '&:hover': { - backgroundColor: (theme.vars || theme).palette.primary.light, + variants: [ + { + props: { meridiemMode: 'am' }, + style: { + backgroundColor: (theme.vars || theme).palette.primary.main, + color: (theme.vars || theme).palette.primary.contrastText, + '&:hover': { + backgroundColor: (theme.vars || theme).palette.primary.light, + }, + }, }, - }), + ], })); const ClockPmButton = styled(IconButton, { name: 'MuiClock', slot: 'PmButton', overridesResolver: (_, styles) => styles.pmButton, -})<{ ownerState: ClockProps }>(({ theme, ownerState }) => ({ +})<{ ownerState: ClockProps }>(({ theme }) => ({ zIndex: 1, position: 'absolute', bottom: 8, @@ -174,13 +182,18 @@ const ClockPmButton = styled(IconButton, { paddingLeft: 4, paddingRight: 4, width: CLOCK_HOUR_WIDTH, - ...(ownerState.meridiemMode === 'pm' && { - backgroundColor: (theme.vars || theme).palette.primary.main, - color: (theme.vars || theme).palette.primary.contrastText, - '&:hover': { - backgroundColor: (theme.vars || theme).palette.primary.light, + variants: [ + { + props: { meridiemMode: 'pm' }, + style: { + backgroundColor: (theme.vars || theme).palette.primary.main, + color: (theme.vars || theme).palette.primary.contrastText, + '&:hover': { + backgroundColor: (theme.vars || theme).palette.primary.light, + }, + }, }, - }), + ], })); const ClockMeridiemText = styled(Typography, { @@ -212,7 +225,7 @@ export function Clock(inProps: ClockProps) selectedId, type, viewValue, - disabled, + disabled = false, readOnly, className, } = props; diff --git a/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx b/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx index 90b48c09b5ba..bab778903644 100644 --- a/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx +++ b/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx @@ -40,7 +40,7 @@ const ClockNumberRoot = styled('span', { { [`&.${clockNumberClasses.disabled}`]: styles.disabled }, { [`&.${clockNumberClasses.selected}`]: styles.selected }, ], -})<{ ownerState: ClockNumberProps }>(({ theme, ownerState }) => ({ +})<{ ownerState: ClockNumberProps }>(({ theme }) => ({ height: CLOCK_HOUR_WIDTH, width: CLOCK_HOUR_WIDTH, position: 'absolute', @@ -61,10 +61,15 @@ const ClockNumberRoot = styled('span', { pointerEvents: 'none', color: (theme.vars || theme).palette.text.disabled, }, - ...(ownerState.inner && { - ...theme.typography.body2, - color: (theme.vars || theme).palette.text.secondary, - }), + variants: [ + { + props: { inner: true }, + style: { + ...theme.typography.body2, + color: (theme.vars || theme).palette.text.secondary, + }, + }, + ], })); /** diff --git a/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx b/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx index a77c40b32736..735b228846ec 100644 --- a/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx +++ b/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx @@ -34,16 +34,21 @@ const ClockPointerRoot = styled('div', { overridesResolver: (_, styles) => styles.root, })<{ ownerState: ClockPointerProps & ClockPointerState; -}>(({ theme, ownerState }) => ({ +}>(({ theme }) => ({ width: 2, backgroundColor: (theme.vars || theme).palette.primary.main, position: 'absolute', left: 'calc(50% - 1px)', bottom: '50%', transformOrigin: 'center bottom 0px', - ...(ownerState.shouldAnimate && { - transition: theme.transitions.create(['transform', 'height']), - }), + variants: [ + { + props: { shouldAnimate: true }, + style: { + transition: theme.transitions.create(['transform', 'height']), + }, + }, + ], })); const ClockPointerThumb = styled('div', { @@ -52,7 +57,7 @@ const ClockPointerThumb = styled('div', { overridesResolver: (_, styles) => styles.thumb, })<{ ownerState: ClockPointerProps & ClockPointerState; -}>(({ theme, ownerState }) => ({ +}>(({ theme }) => ({ width: 4, height: 4, backgroundColor: (theme.vars || theme).palette.primary.contrastText, @@ -62,9 +67,14 @@ const ClockPointerThumb = styled('div', { left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`, border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${(theme.vars || theme).palette.primary.main}`, boxSizing: 'content-box', - ...(ownerState.hasSelected && { - backgroundColor: (theme.vars || theme).palette.primary.main, - }), + variants: [ + { + props: { hasSelected: true }, + style: { + backgroundColor: (theme.vars || theme).palette.primary.main, + }, + }, + ], })); /** diff --git a/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx b/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx index ba4fd2c6e61f..ff2bf30ac5fd 100644 --- a/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx +++ b/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx @@ -81,16 +81,21 @@ const TimePickerToolbarHourMinuteLabel = styled('div', { ], })<{ ownerState: TimePickerToolbarProps; -}>(({ theme, ownerState }) => ({ +}>(({ theme }) => ({ display: 'flex', justifyContent: 'flex-end', alignItems: 'flex-end', - ...(ownerState.isLandscape && { - marginTop: 'auto', - }), ...(theme.direction === 'rtl' && { flexDirection: 'row-reverse', }), + variants: [ + { + props: { isLandscape: true }, + style: { + marginTop: 'auto', + }, + }, + ], })); TimePickerToolbarHourMinuteLabel.propTypes = { @@ -117,21 +122,26 @@ const TimePickerToolbarAmPmSelection = styled('div', { ], })<{ ownerState: TimePickerToolbarProps; -}>(({ ownerState }) => ({ +}>({ display: 'flex', flexDirection: 'column', marginRight: 'auto', marginLeft: 12, - ...(ownerState.isLandscape && { - margin: '4px 0 auto', - flexDirection: 'row', - justifyContent: 'space-around', - flexBasis: '100%', - }), [`& .${timePickerToolbarClasses.ampmLabel}`]: { fontSize: 17, }, -})); + variants: [ + { + props: { isLandscape: true }, + style: { + margin: '4px 0 auto', + flexDirection: 'row', + justifyContent: 'space-around', + flexBasis: '100%', + }, + }, + ], +}); TimePickerToolbarAmPmSelection.propTypes = { // ----------------------------- Warning -------------------------------- diff --git a/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx b/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx index 8dce10be09ff..cc8248d37797 100644 --- a/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx +++ b/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx @@ -43,12 +43,13 @@ const PickersYearRoot = styled('div', { name: 'MuiPickersYear', slot: 'Root', overridesResolver: (_, styles) => [styles.root], -})<{ ownerState: PickersYearProps }>(({ ownerState }) => ({ - flexBasis: ownerState.yearsPerRow === 3 ? '33.3%' : '25%', +})<{ ownerState: PickersYearProps }>({ display: 'flex', alignItems: 'center', justifyContent: 'center', -})); + flexBasis: '33.3%', + variants: [{ props: { yearsPerRow: 4 }, style: { flexBasis: '25%' } }], +}); const PickersYearButton = styled('button', { name: 'MuiPickersYear', diff --git a/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx b/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx index 926e68a1c033..6ade141f2f38 100644 --- a/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx @@ -38,11 +38,14 @@ const PickersArrowSwitcherButton = styled(IconButton, { overridesResolver: (props, styles) => styles.button, })<{ ownerState: PickersArrowSwitcherProps; -}>(({ ownerState }) => ({ - ...(ownerState.hidden && { - visibility: 'hidden', - }), -})); +}>({ + variants: [ + { + props: { hidden: true }, + style: { visibility: 'hidden' }, + }, + ], +}); const useUtilityClasses = (ownerState: PickersArrowSwitcherOwnerState) => { const { classes } = ownerState; diff --git a/packages/x-date-pickers/src/internals/components/PickersPopper.tsx b/packages/x-date-pickers/src/internals/components/PickersPopper.tsx index 5e472471459b..6ad3bdedcdfb 100644 --- a/packages/x-date-pickers/src/internals/components/PickersPopper.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersPopper.tsx @@ -112,13 +112,19 @@ const PickersPopperPaper = styled(MuiPaper, { overridesResolver: (_, styles) => styles.paper, })<{ ownerState: PickersPopperOwnerState; -}>(({ ownerState }) => ({ +}>({ outline: 0, transformOrigin: 'top center', - ...(ownerState.placement.includes('top') && { - transformOrigin: 'bottom center', - }), -})); + variants: [ + { + props: ({ placement }: PickersPopperOwnerState) => + ['top', 'top-start', 'top-end'].includes(placement), + style: { + transformOrigin: 'bottom center', + }, + }, + ], +}); function clickedRootScrollbar(event: MouseEvent, doc: Document) { return ( diff --git a/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx b/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx index 97b41ca9b0f4..780756015029 100644 --- a/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx @@ -32,19 +32,24 @@ const PickersToolbarRoot = styled('div', { overridesResolver: (props, styles) => styles.root, })<{ ownerState: PickersToolbarProps; -}>(({ theme, ownerState }) => ({ +}>(({ theme }) => ({ display: 'flex', flexDirection: 'column', alignItems: 'flex-start', justifyContent: 'space-between', padding: theme.spacing(2, 3), - ...(ownerState.isLandscape && { - height: 'auto', - maxWidth: 160, - padding: 16, - justifyContent: 'flex-start', - flexWrap: 'wrap', - }), + variants: [ + { + props: { isLandscape: true }, + style: { + height: 'auto', + maxWidth: 160, + padding: 16, + justifyContent: 'flex-start', + flexWrap: 'wrap', + }, + }, + ], })); const PickersToolbarContent = styled('div', { @@ -53,15 +58,31 @@ const PickersToolbarContent = styled('div', { overridesResolver: (props, styles) => styles.content, })<{ ownerState: PickersToolbarProps; -}>(({ ownerState }) => ({ +}>({ display: 'flex', flexWrap: 'wrap', width: '100%', - justifyContent: ownerState.isLandscape ? 'flex-start' : 'space-between', - flexDirection: ownerState.isLandscape ? ownerState.landscapeDirection ?? 'column' : 'row', flex: 1, - alignItems: ownerState.isLandscape ? 'flex-start' : 'center', -})); + justifyContent: 'space-between', + alignItems: 'center', + flexDirection: 'row', + variants: [ + { + props: { isLandscape: true }, + style: { + justifyContent: 'flex-start', + alignItems: 'flex-start', + flexDirection: 'column', + }, + }, + { + props: { isLandscape: true, landscapeDirection: 'row' }, + style: { + flexDirection: 'row', + }, + }, + ], +}); type PickersToolbarComponent = (( props: React.PropsWithChildren> & From 2ac14fd98fabe93663297512e2b219d329b384d9 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Tue, 26 Mar 2024 08:51:29 -0400 Subject: [PATCH 020/912] [DataGrid] Add `resizeThrottleMs` prop (#12556) --- .../x/api/data-grid/data-grid-premium.json | 1 + docs/pages/x/api/data-grid/data-grid-pro.json | 1 + docs/pages/x/api/data-grid/data-grid.json | 1 + .../data-grid-premium/data-grid-premium.json | 1 + .../data-grid-pro/data-grid-pro.json | 1 + .../data-grid/data-grid/data-grid.json | 1 + .../src/DataGridPremium/DataGridPremium.tsx | 5 ++++ .../src/DataGridPro/DataGridPro.tsx | 5 ++++ .../x-data-grid/src/DataGrid/DataGrid.tsx | 5 ++++ .../src/DataGrid/useDataGridProps.ts | 1 + .../features/dimensions/useGridDimensions.ts | 8 ++++-- .../src/models/props/DataGridProps.ts | 5 ++++ packages/x-data-grid/src/utils/throttle.ts | 27 +++++++++++++++++++ 13 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 packages/x-data-grid/src/utils/throttle.ts diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index 9ce3955ee724..83f0ee534723 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -548,6 +548,7 @@ "returned": "Promise | R" } }, + "resizeThrottleMs": { "type": { "name": "number" }, "default": "60" }, "rowBufferPx": { "type": { "name": "number" }, "default": "150" }, "rowCount": { "type": { "name": "number" } }, "rowGroupingColumnMode": { diff --git a/docs/pages/x/api/data-grid/data-grid-pro.json b/docs/pages/x/api/data-grid/data-grid-pro.json index f85d38ad7148..2de559b31451 100644 --- a/docs/pages/x/api/data-grid/data-grid-pro.json +++ b/docs/pages/x/api/data-grid/data-grid-pro.json @@ -491,6 +491,7 @@ "returned": "Promise | R" } }, + "resizeThrottleMs": { "type": { "name": "number" }, "default": "60" }, "rowBufferPx": { "type": { "name": "number" }, "default": "150" }, "rowCount": { "type": { "name": "number" } }, "rowHeight": { "type": { "name": "number" }, "default": "52" }, diff --git a/docs/pages/x/api/data-grid/data-grid.json b/docs/pages/x/api/data-grid/data-grid.json index ac8d1f022003..4ca488287bf5 100644 --- a/docs/pages/x/api/data-grid/data-grid.json +++ b/docs/pages/x/api/data-grid/data-grid.json @@ -408,6 +408,7 @@ "returned": "Promise | R" } }, + "resizeThrottleMs": { "type": { "name": "number" }, "default": "60" }, "rowBufferPx": { "type": { "name": "number" }, "default": "150" }, "rowCount": { "type": { "name": "number" } }, "rowHeight": { "type": { "name": "number" }, "default": "52" }, diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index 43e271be7723..e4650258c745 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -575,6 +575,7 @@ "Promise | R": "The final values to update the row." } }, + "resizeThrottleMs": { "description": "The milliseconds throttle delay for resizing the grid." }, "rowBufferPx": { "description": "Row region in pixels to render before/after the viewport" }, "rowCount": { "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows." diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index 714f0c82153d..44babc11d794 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -521,6 +521,7 @@ "Promise | R": "The final values to update the row." } }, + "resizeThrottleMs": { "description": "The milliseconds throttle delay for resizing the grid." }, "rowBufferPx": { "description": "Row region in pixels to render before/after the viewport" }, "rowCount": { "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows." diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index 18b8f9aee4f1..957595b1a9a8 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -424,6 +424,7 @@ "Promise | R": "The final values to update the row." } }, + "resizeThrottleMs": { "description": "The milliseconds throttle delay for resizing the grid." }, "rowBufferPx": { "description": "Row region in pixels to render before/after the viewport" }, "rowCount": { "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows." diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 80010e177699..3b808b7999c8 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -883,6 +883,11 @@ DataGridPremiumRaw.propTypes = { * @returns {Promise | R} The final values to update the row. */ processRowUpdate: PropTypes.func, + /** + * The milliseconds throttle delay for resizing the grid. + * @default 60 + */ + resizeThrottleMs: PropTypes.number, /** * Row region in pixels to render before/after the viewport * @default 150 diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index 5ee1b16e5ca0..1b9dce1dbcf4 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -785,6 +785,11 @@ DataGridProRaw.propTypes = { * @returns {Promise | R} The final values to update the row. */ processRowUpdate: PropTypes.func, + /** + * The milliseconds throttle delay for resizing the grid. + * @default 60 + */ + resizeThrottleMs: PropTypes.number, /** * Row region in pixels to render before/after the viewport * @default 150 diff --git a/packages/x-data-grid/src/DataGrid/DataGrid.tsx b/packages/x-data-grid/src/DataGrid/DataGrid.tsx index 3ae35b011893..8742dd514ba6 100644 --- a/packages/x-data-grid/src/DataGrid/DataGrid.tsx +++ b/packages/x-data-grid/src/DataGrid/DataGrid.tsx @@ -652,6 +652,11 @@ DataGridRaw.propTypes = { * @returns {Promise | R} The final values to update the row. */ processRowUpdate: PropTypes.func, + /** + * The milliseconds throttle delay for resizing the grid. + * @default 60 + */ + resizeThrottleMs: PropTypes.number, /** * Row region in pixels to render before/after the viewport * @default 150 diff --git a/packages/x-data-grid/src/DataGrid/useDataGridProps.ts b/packages/x-data-grid/src/DataGrid/useDataGridProps.ts index 3423bb66f36d..89ace1f6d061 100644 --- a/packages/x-data-grid/src/DataGrid/useDataGridProps.ts +++ b/packages/x-data-grid/src/DataGrid/useDataGridProps.ts @@ -60,6 +60,7 @@ export const DATA_GRID_PROPS_DEFAULT_VALUES: DataGridPropsWithDefaultValues = { pagination: false, paginationMode: 'client', rowHeight: 52, + resizeThrottleMs: 60, pageSizeOptions: [25, 50, 100], rowSpacingType: 'margin', showCellVerticalBorder: false, diff --git a/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts b/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts index fbe44ed1036b..86c21a6195dc 100644 --- a/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts +++ b/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts @@ -1,6 +1,5 @@ import * as React from 'react'; import { - unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, @@ -14,6 +13,7 @@ import { useGridApiOptionHandler, } from '../../utils/useGridApiEventHandler'; import { useGridApiMethod } from '../../utils/useGridApiMethod'; +import { throttle } from '../../../utils/throttle'; import { useGridLogger } from '../../utils/useGridLogger'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { GridDimensions, GridDimensionsApi, GridDimensionsPrivateApi } from './gridDimensionsApi'; @@ -40,6 +40,7 @@ type RootProps = Pick< | 'autoHeight' | 'getRowHeight' | 'rowHeight' + | 'resizeThrottleMs' | 'columnHeaderHeight' >; @@ -95,7 +96,10 @@ export function useGridDimensions( const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0); const [savedSize, setSavedSize] = React.useState(); - const debouncedSetSavedSize = React.useMemo(() => debounce(setSavedSize, 60), []); + const debouncedSetSavedSize = React.useMemo( + () => throttle(setSavedSize, props.resizeThrottleMs), + [props.resizeThrottleMs], + ); const previousSize = React.useRef(); const getRootDimensions = () => apiRef.current.state.dimensions; diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index b21d37e1a123..de6ed4566803 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -142,6 +142,11 @@ export interface DataGridPropsWithDefaultValues any>(func: T, wait = 166) { + let timeout: ReturnType | undefined; + let lastArgs: Parameters; + + const later = () => { + timeout = undefined; + func(...lastArgs); + }; + + function throttled(...args: Parameters) { + lastArgs = args; + if (timeout === undefined) { + timeout = setTimeout(later, wait); + } + } + + throttled.clear = () => { + clearTimeout(timeout); + timeout = undefined; + }; + + return throttled as T & Cancelable; +} From 5e99aa1f008c2e81543404c66df38835c3d8f27b Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Tue, 26 Mar 2024 18:10:17 +0100 Subject: [PATCH 021/912] [DataGrid] Do not publish `rowEditStop` event if row has fields with errors (#11383) --- .../src/tests/rowEditing.DataGridPro.test.tsx | 58 +++++++++++++++++++ .../features/editing/useGridRowEditing.ts | 27 ++++++--- 2 files changed, 77 insertions(+), 8 deletions(-) diff --git a/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx index 6904e424877c..2f6766072825 100644 --- a/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx @@ -971,6 +971,26 @@ describe(' - Row editing', () => { expect(listener.lastCall.args[0].reason).to.equal('rowFocusOut'); }); + it(`should not publish 'rowEditStop' if field has error`, async () => { + column1Props.preProcessEditCellProps = ({ props }: GridPreProcessEditCellProps) => ({ + ...props, + error: true, + }); + render(); + const listener = spy(); + apiRef.current.subscribeEvent('rowEditStop', listener); + const cell = getCell(0, 1); + fireEvent.doubleClick(cell); + await act(() => + apiRef.current.setEditCellValue({ id: 0, field: 'currencyPair', value: 'USD GBP' }), + ); + expect(listener.callCount).to.equal(0); + + userEvent.mousePress(getCell(1, 1)); + clock.runToLast(); + expect(listener.callCount).to.equal(0); + }); + it('should call stopRowEditMode with ignoreModifications=false and no cellToFocusAfter', () => { render(); const spiedStopRowEditMode = spyApi(apiRef.current, 'stopRowEditMode'); @@ -1014,6 +1034,25 @@ describe(' - Row editing', () => { expect(listener.lastCall.args[0].reason).to.equal('escapeKeyDown'); }); + it(`should publish 'rowEditStop' even if field has error`, async () => { + column1Props.preProcessEditCellProps = ({ props }: GridPreProcessEditCellProps) => ({ + ...props, + error: true, + }); + render(); + const listener = spy(); + apiRef.current.subscribeEvent('rowEditStop', listener); + const cell = getCell(0, 1); + fireEvent.doubleClick(cell); + await act(() => + apiRef.current.setEditCellValue({ id: 0, field: 'currencyPair', value: 'USD GBP' }), + ); + expect(listener.callCount).to.equal(0); + + fireEvent.keyDown(cell.querySelector('input')!, { key: 'Escape' }); + expect(listener.lastCall.args[0].reason).to.equal('escapeKeyDown'); + }); + it('should call stopRowEditMode with ignoreModifications=true', () => { render(); const spiedStopRowEditMode = spyApi(apiRef.current, 'stopRowEditMode'); @@ -1044,6 +1083,25 @@ describe(' - Row editing', () => { expect(listener.lastCall.args[0].reason).to.equal('enterKeyDown'); }); + it(`should not publish 'rowEditStop' if field has error`, async () => { + column1Props.preProcessEditCellProps = ({ props }: GridPreProcessEditCellProps) => ({ + ...props, + error: true, + }); + render(); + const listener = spy(); + apiRef.current.subscribeEvent('rowEditStop', listener); + const cell = getCell(0, 1); + fireEvent.doubleClick(cell); + await act(() => + apiRef.current.setEditCellValue({ id: 0, field: 'currencyPair', value: 'USD GBP' }), + ); + expect(listener.callCount).to.equal(0); + + fireEvent.keyDown(cell.querySelector('input')!, { key: 'Enter' }); + expect(listener.callCount).to.equal(0); + }); + it('should call stopRowEditMode with ignoreModifications=false and cellToFocusAfter=below', () => { render(); const spiedStopRowEditMode = spyApi(apiRef.current, 'stopRowEditMode'); diff --git a/packages/x-data-grid/src/hooks/features/editing/useGridRowEditing.ts b/packages/x-data-grid/src/hooks/features/editing/useGridRowEditing.ts index 5fe365be8a4e..ce2e3d5ffd84 100644 --- a/packages/x-data-grid/src/hooks/features/editing/useGridRowEditing.ts +++ b/packages/x-data-grid/src/hooks/features/editing/useGridRowEditing.ts @@ -110,6 +110,14 @@ export const useGridRowEditing = ( [apiRef], ); + const hasFieldsWithErrors = React.useCallback( + (rowId: GridRowId) => { + const editingState = gridEditRowsStateSelector(apiRef.current.state); + return Object.values(editingState[rowId]).some((fieldProps) => fieldProps.error); + }, + [apiRef], + ); + const handleCellDoubleClick = React.useCallback>( (params, event) => { if (!params.isEditable) { @@ -159,8 +167,12 @@ export const useGridRowEditing = ( return; } + if (hasFieldsWithErrors(params.id)) { + return; + } + const rowParams = apiRef.current.getRowParams(params.id); - const newParams = { + const newParams: GridRowEditStopParams = { ...rowParams, field: params.field, reason: GridRowEditStopReasons.rowFocusOut, @@ -169,7 +181,7 @@ export const useGridRowEditing = ( } }); }, - [apiRef], + [apiRef, hasFieldsWithErrors], ); React.useEffect(() => { @@ -223,6 +235,9 @@ export const useGridRowEditing = ( } if (reason) { + if (reason !== GridRowEditStopReasons.escapeKeyDown && hasFieldsWithErrors(params.id)) { + return; + } const newParams: GridRowEditStopParams = { ...apiRef.current.getRowParams(params.id), reason, @@ -264,7 +279,7 @@ export const useGridRowEditing = ( } } }, - [apiRef], + [apiRef, hasFieldsWithErrors], ); const handleRowEditStart = React.useCallback>( @@ -487,11 +502,7 @@ export const useGridRowEditing = ( return; } - const hasSomeFieldWithError = Object.values(editingState[id]).some( - (fieldProps) => fieldProps.error, - ); - - if (hasSomeFieldWithError) { + if (hasFieldsWithErrors(id)) { prevRowModesModel.current[id].mode = GridRowModes.Edit; // Revert the mode in the rowModesModel prop back to "edit" updateRowInRowModesModel(id, { mode: GridRowModes.Edit }); From e97b715c45139689e4f98da04993d1f00c01cbe5 Mon Sep 17 00:00:00 2001 From: Rishi556 Date: Wed, 27 Mar 2024 04:51:22 -0500 Subject: [PATCH 022/912] [charts] Fix tooltip causing crash on data change (#12571) Signed-off-by: Rishi556 --- .../src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx index a2587dc0bbba..4cb6774720c1 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx @@ -17,7 +17,7 @@ function DefaultChartsItemTooltipContent Date: Wed, 27 Mar 2024 14:09:53 +0100 Subject: [PATCH 023/912] [docs] Chart title for SEO (#12545) --- docs/data/charts/getting-started/getting-started.md | 1 - docs/data/charts/overview/overview.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index 86abdd2fddfc..edf2a310d677 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -1,5 +1,4 @@ --- -title: React Chart library - Getting started productId: x-charts githubLabel: 'component: charts' packageName: '@mui/x-charts' diff --git a/docs/data/charts/overview/overview.md b/docs/data/charts/overview/overview.md index e3347418beb6..809be9b9a09c 100644 --- a/docs/data/charts/overview/overview.md +++ b/docs/data/charts/overview/overview.md @@ -1,5 +1,5 @@ --- -title: React Chart library +title: React Charts productId: x-charts githubLabel: 'component: charts' packageName: '@mui/x-charts' From 121a8ed555d2b60ace8bb627048c9afeef702ddd Mon Sep 17 00:00:00 2001 From: Josiah Hawkins <94198149+jhawkins11@users.noreply.github.com> Date: Thu, 28 Mar 2024 01:48:26 -0500 Subject: [PATCH 024/912] [DataGrid] Fix missing class name in the `GridToolbarQuickFilter` component (#12484) Co-authored-by: Rom Grk --- .../toolbar/GridToolbarQuickFilter.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx b/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx index a5ceb6edcf4b..31c0425dbd11 100644 --- a/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx +++ b/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx @@ -1,8 +1,11 @@ import * as React from 'react'; +import clsx from 'clsx'; import PropTypes from 'prop-types'; import TextField, { TextFieldProps } from '@mui/material/TextField'; import { styled } from '@mui/material/styles'; import { unstable_debounce as debounce } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; +import { getDataGridUtilityClass } from '../../constants'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { useGridSelector } from '../../hooks/utils/useGridSelector'; @@ -13,6 +16,16 @@ import { isDeepEqual } from '../../utils/utils'; type OwnerState = DataGridProcessedProps; +const useUtilityClasses = (ownerState: OwnerState) => { + const { classes } = ownerState; + + const slots = { + root: ['toolbarQuickFilter'], + }; + + return composeClasses(slots, getDataGridUtilityClass, classes); +}; + const GridToolbarQuickFilterRoot = styled(TextField, { name: 'MuiDataGrid', slot: 'ToolbarQuickFilter', @@ -74,12 +87,14 @@ export type GridToolbarQuickFilterProps = TextFieldProps & { function GridToolbarQuickFilter(props: GridToolbarQuickFilterProps) { const apiRef = useGridApiContext(); const rootProps = useGridRootProps(); + const classes = useUtilityClasses(rootProps); const quickFilterValues = useGridSelector(apiRef, gridQuickFilterValuesSelector); const { quickFilterParser = defaultSearchValueParser, quickFilterFormatter = defaultSearchValueFormatter, debounceMs = rootProps.filterDebounceMs, + className, ...other } = props; @@ -138,6 +153,7 @@ function GridToolbarQuickFilter(props: GridToolbarQuickFilterProps) { variant="standard" value={searchValue} onChange={handleSearchValueChange} + className={clsx(className, classes.root)} placeholder={apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder')} aria-label={apiRef.current.getLocaleText('toolbarQuickFilterLabel')} type="search" From dcb658239c22e58cf06f05defae2eee944379c1f Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 28 Mar 2024 11:09:48 +0200 Subject: [PATCH 025/912] [fields] Fix input refocusing after clearing a value (#12587) --- .../tests/selection.DateField.test.tsx | 2 +- .../src/internals/hooks/useField/useField.ts | 6 ++- .../DatePicker/BasicDesktopDatePicker.tsx | 1 + .../DatePicker/BasicDesktopDatePickerV6.tsx | 16 ++++++++ test/e2e/index.test.ts | 38 +++++++++++++++++-- 5 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx diff --git a/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx b/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx index 80a08a1ba58f..833bbdca1169 100644 --- a/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx +++ b/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx @@ -184,7 +184,7 @@ describe(' - Selection', () => { }); it('should select all sections with start separator', () => { - // Test with v6 input + // Test with v7 input const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `- ${adapterToUse.formats.year}`, diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useField.ts b/packages/x-date-pickers/src/internals/hooks/useField/useField.ts index e6c4ab482d38..405cdf2f9885 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useField.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useField.ts @@ -275,10 +275,12 @@ export const useField = < event.preventDefault(); onClear?.(event, ...(args as [])); clearValue(); - setSelectedSections(sectionOrder.startIndex); - if (!interactions.isFieldFocused) { + if (!interactions.isFieldFocused()) { + // setSelectedSections is called internally interactions.focusField(0); + } else { + setSelectedSections(sectionOrder.startIndex); } }); diff --git a/test/e2e/fixtures/DatePicker/BasicDesktopDatePicker.tsx b/test/e2e/fixtures/DatePicker/BasicDesktopDatePicker.tsx index 34cae29ab091..992dd6244777 100644 --- a/test/e2e/fixtures/DatePicker/BasicDesktopDatePicker.tsx +++ b/test/e2e/fixtures/DatePicker/BasicDesktopDatePicker.tsx @@ -10,6 +10,7 @@ export default function BasicDesktopDatePicker() { enableAccessibleFieldDOMStructure label="Desktop Date Picker" className="test-date-picker" + slotProps={{ field: { clearable: true } }} /> ); diff --git a/test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx b/test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx new file mode 100644 index 000000000000..f94f56265f81 --- /dev/null +++ b/test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; + +export default function BasicDesktopDatePickerV6() { + return ( + + + + ); +} diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index c0c2000ff89d..5da95c6441d9 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -563,9 +563,9 @@ async function initializeEnvironment( await page.locator(`.${pickersSectionListClasses.root}`).click(); await input.fill('02/12/2020'); - expect(await page.getByRole('button').getAttribute('aria-label')).to.equal( - 'Choose date, selected date is Feb 12, 2020', - ); + expect( + await page.getByRole('button', { name: /Choose date/ }).getAttribute('aria-label'), + ).to.equal('Choose date, selected date is Feb 12, 2020'); }); it('should allow pasting a section', async () => { @@ -612,6 +612,38 @@ async function initializeEnvironment( await monthSection.press('2'); expect(await input.inputValue()).to.equal('02/11/2022'); }); + + it('should focus the first field section after clearing a value', async () => { + await renderFixture('DatePicker/BasicDesktopDatePicker'); + + const monthSection = page.getByRole('spinbutton', { name: 'Month' }); + await monthSection.press('2'); + await page.getByRole('button', { name: 'Clear value' }).click(); + + expect(await page.evaluate(() => document.activeElement?.textContent)).to.equal('MM'); + }); + + it('should focus the first field section after clearing a value in v6 input', async () => { + await renderFixture('DatePicker/BasicDesktopDatePickerV6'); + + await page.getByRole('textbox').fill('2'); + await page.getByRole('button', { name: 'Clear value' }).click(); + + // firefox does not support document.getSelection().toString() on input elements + if (browserType.name() === 'firefox') { + expect( + await page.evaluate(() => { + return ( + document.activeElement?.tagName === 'INPUT' && + // only focused input has value set + (document.activeElement as HTMLInputElement)?.value === 'MM/DD/YYYY' + ); + }), + ).to.equal(true); + } else { + expect(await page.evaluate(() => document.getSelection()?.toString())).to.equal('MM'); + } + }); }); describe('', () => { From 8644e2a46b971890238fd675b54fb00bd13c507e Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Thu, 28 Mar 2024 11:29:23 +0200 Subject: [PATCH 026/912] [TreeView] Clean the usage of the term "item" and "node" in the internal API (#12449) --- .../headless/LogExpandedItems.js | 8 +- .../headless/LogExpandedItems.tsx | 10 +-- .../pages/x/api/tree-view/rich-tree-view.json | 6 +- .../x/api/tree-view/simple-tree-view.json | 6 +- docs/pages/x/api/tree-view/tree-item-2.json | 8 +- docs/pages/x/api/tree-view/tree-item.json | 2 +- docs/pages/x/api/tree-view/tree-view.json | 6 +- .../rich-tree-view/rich-tree-view.json | 6 +- .../simple-tree-view/simple-tree-view.json | 6 +- .../tree-view/tree-item-2/tree-item-2.json | 8 +- .../tree-view/tree-item/tree-item.json | 2 +- .../tree-view/tree-view/tree-view.json | 6 +- .../src/RichTreeView/RichTreeView.tsx | 10 +-- .../SimpleTreeView/SimpleTreeView.plugins.ts | 4 +- .../src/TreeItem/TreeItem.test.tsx | 88 +++++++++---------- .../x-tree-view/src/TreeItem/TreeItem.tsx | 8 +- .../src/TreeItem/treeItemClasses.ts | 2 +- .../src/TreeItem/useTreeItemState.ts | 18 ++-- .../src/TreeItem2Icon/TreeItem2Icon.types.ts | 8 +- .../useTreeItem2Utils/useTreeItem2Utils.tsx | 16 ++-- .../TreeViewProvider/DescendantProvider.tsx | 2 +- packages/x-tree-view/src/internals/index.ts | 4 +- .../src/internals/plugins/defaultPlugins.ts | 6 +- .../useTreeViewExpansion.ts | 18 ++-- .../useTreeViewExpansion.types.ts | 10 +-- .../useTreeViewFocus/useTreeViewFocus.ts | 68 +++++++------- .../useTreeViewFocus.types.ts | 12 +-- .../useTreeViewIcons.types.ts | 12 +-- .../useTreeViewId/useTreeViewId.types.ts | 2 +- .../plugins/useTreeViewItems/index.ts | 6 ++ .../useTreeViewItems.test.tsx} | 2 +- .../useTreeViewItems.ts} | 86 +++++++++--------- .../useTreeViewItems.types.ts} | 48 +++++----- .../plugins/useTreeViewJSXItems/index.ts | 6 ++ .../useTreeViewJSXItems.tsx} | 52 +++++------ .../useTreeViewJSXItems.types.ts | 20 +++++ .../plugins/useTreeViewJSXNodes/index.ts | 6 -- .../useTreeViewJSXNodes.types.ts | 20 ----- .../useTreeViewKeyboardNavigation.ts | 76 ++++++++-------- .../useTreeViewKeyboardNavigation.types.ts | 4 +- .../plugins/useTreeViewNodes/index.ts | 6 -- .../useTreeViewSelection.ts | 70 +++++++-------- .../useTreeViewSelection.types.ts | 12 +-- .../useTreeViewSelection.utils.ts | 14 +-- .../useTreeView/useTreeView.utils.ts | 38 ++++---- 45 files changed, 414 insertions(+), 414 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts rename packages/x-tree-view/src/internals/plugins/{useTreeViewNodes/useTreeViewNodes.test.tsx => useTreeViewItems/useTreeViewItems.test.tsx} (98%) rename packages/x-tree-view/src/internals/plugins/{useTreeViewNodes/useTreeViewNodes.ts => useTreeViewItems/useTreeViewItems.ts} (74%) rename packages/x-tree-view/src/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.ts => useTreeViewItems/useTreeViewItems.types.ts} (67%) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts rename packages/x-tree-view/src/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.tsx => useTreeViewJSXItems/useTreeViewJSXItems.tsx} (73%) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts delete mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/index.ts delete mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.ts delete mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewNodes/index.ts diff --git a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js index fbccfb57e3c2..a9b775cd40e2 100644 --- a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js +++ b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js @@ -55,12 +55,12 @@ function TreeView(inProps) { ownerState, }); - const nodesToRender = instance.getNodesToRender(); + const itemsToRender = instance.getItemsToRender(); - const renderNode = ({ children: itemChildren, ...itemProps }) => { + const renderItem = ({ children: itemChildren, ...itemProps }) => { return ( - {itemChildren?.map(renderNode)} + {itemChildren?.map(renderItem)} ); }; @@ -68,7 +68,7 @@ function TreeView(inProps) { return ( - {nodesToRender.map(renderNode)} + {itemsToRender.map(renderItem)} ); diff --git a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx index c8decec9b3ca..67d52862b7ca 100644 --- a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx +++ b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx @@ -104,15 +104,15 @@ function TreeView( ownerState, }); - const nodesToRender = instance.getNodesToRender(); + const itemsToRender = instance.getItemsToRender(); - const renderNode = ({ + const renderItem = ({ children: itemChildren, ...itemProps - }: ReturnType[number]) => { + }: ReturnType[number]) => { return ( - {itemChildren?.map(renderNode)} + {itemChildren?.map(renderItem)} ); }; @@ -120,7 +120,7 @@ function TreeView( return ( - {nodesToRender.map(renderNode)} + {itemsToRender.map(renderItem)} ); diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 181ae591f91c..bb5084be2972 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -110,17 +110,17 @@ }, { "name": "collapseIcon", - "description": "The default icon used to collapse the node.", + "description": "The default icon used to collapse the item.", "class": null }, { "name": "expandIcon", - "description": "The default icon used to expand the node.", + "description": "The default icon used to expand the item.", "class": null }, { "name": "endIcon", - "description": "The default icon displayed next to an end node.\nThis is applied to all tree nodes and can be overridden by the TreeItem `icon` slot prop.", + "description": "The default icon displayed next to an end item.\nThis is applied to all tree items and can be overridden by the TreeItem `icon` slot prop.", "class": null } ], diff --git a/docs/pages/x/api/tree-view/simple-tree-view.json b/docs/pages/x/api/tree-view/simple-tree-view.json index 5957aad77056..0a4bd4f7b2da 100644 --- a/docs/pages/x/api/tree-view/simple-tree-view.json +++ b/docs/pages/x/api/tree-view/simple-tree-view.json @@ -75,17 +75,17 @@ }, { "name": "collapseIcon", - "description": "The default icon used to collapse the node.", + "description": "The default icon used to collapse the item.", "class": null }, { "name": "expandIcon", - "description": "The default icon used to expand the node.", + "description": "The default icon used to expand the item.", "class": null }, { "name": "endIcon", - "description": "The default icon displayed next to an end node.\nThis is applied to all tree nodes and can be overridden by the TreeItem `icon` slot prop.", + "description": "The default icon displayed next to an end item.\nThis is applied to all tree items and can be overridden by the TreeItem `icon` slot prop.", "class": null } ], diff --git a/docs/pages/x/api/tree-view/tree-item-2.json b/docs/pages/x/api/tree-view/tree-item-2.json index 82e77380feb4..e15c84a4b0ef 100644 --- a/docs/pages/x/api/tree-view/tree-item-2.json +++ b/docs/pages/x/api/tree-view/tree-item-2.json @@ -50,12 +50,12 @@ "default": "TreeItem2Label", "class": "MuiTreeItem2-label" }, - { "name": "collapseIcon", "description": "The icon used to collapse the node.", "class": null }, - { "name": "expandIcon", "description": "The icon used to expand the node.", "class": null }, - { "name": "endIcon", "description": "The icon displayed next to an end node.", "class": null }, + { "name": "collapseIcon", "description": "The icon used to collapse the item.", "class": null }, + { "name": "expandIcon", "description": "The icon used to expand the item.", "class": null }, + { "name": "endIcon", "description": "The icon displayed next to an end item.", "class": null }, { "name": "icon", - "description": "The icon to display next to the tree node's label.", + "description": "The icon to display next to the tree item's label.", "class": null } ], diff --git a/docs/pages/x/api/tree-view/tree-item.json b/docs/pages/x/api/tree-view/tree-item.json index e51cc365b7d3..58a3c04e4ff8 100644 --- a/docs/pages/x/api/tree-view/tree-item.json +++ b/docs/pages/x/api/tree-view/tree-item.json @@ -74,7 +74,7 @@ { "key": "iconContainer", "className": "MuiTreeItem-iconContainer", - "description": "Styles applied to the tree node icon.", + "description": "Styles applied to the tree item icon.", "isGlobal": false }, { diff --git a/docs/pages/x/api/tree-view/tree-view.json b/docs/pages/x/api/tree-view/tree-view.json index fae8965650e9..28823f6d6bf7 100644 --- a/docs/pages/x/api/tree-view/tree-view.json +++ b/docs/pages/x/api/tree-view/tree-view.json @@ -75,17 +75,17 @@ }, { "name": "collapseIcon", - "description": "The default icon used to collapse the node.", + "description": "The default icon used to collapse the item.", "class": null }, { "name": "expandIcon", - "description": "The default icon used to expand the node.", + "description": "The default icon used to expand the item.", "class": null }, { "name": "endIcon", - "description": "The default icon displayed next to an end node.\nThis is applied to all tree nodes and can be overridden by the TreeItem `icon` slot prop.", + "description": "The default icon displayed next to an end item.\nThis is applied to all tree items and can be overridden by the TreeItem `icon` slot prop.", "class": null } ], diff --git a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json index 14b108942357..4f113ec528dd 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json @@ -88,9 +88,9 @@ }, "classDescriptions": {}, "slotDescriptions": { - "collapseIcon": "The default icon used to collapse the node.", - "endIcon": "The default icon displayed next to an end node. This is applied to all tree nodes and can be overridden by the TreeItem icon slot prop.", - "expandIcon": "The default icon used to expand the node.", + "collapseIcon": "The default icon used to collapse the item.", + "endIcon": "The default icon displayed next to an end item. This is applied to all tree items and can be overridden by the TreeItem icon slot prop.", + "expandIcon": "The default icon used to expand the item.", "item": "Custom component for the item.", "root": "Element rendered at the root." } diff --git a/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json b/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json index 24f8592c31a0..4a7aca190f6e 100644 --- a/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json +++ b/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json @@ -74,9 +74,9 @@ }, "classDescriptions": {}, "slotDescriptions": { - "collapseIcon": "The default icon used to collapse the node.", - "endIcon": "The default icon displayed next to an end node. This is applied to all tree nodes and can be overridden by the TreeItem icon slot prop.", - "expandIcon": "The default icon used to expand the node.", + "collapseIcon": "The default icon used to collapse the item.", + "endIcon": "The default icon displayed next to an end item. This is applied to all tree items and can be overridden by the TreeItem icon slot prop.", + "expandIcon": "The default icon used to expand the item.", "root": "Element rendered at the root." } } diff --git a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json index 2278abc442be..43ff882ed936 100644 --- a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json +++ b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json @@ -36,12 +36,12 @@ } }, "slotDescriptions": { - "collapseIcon": "The icon used to collapse the node.", + "collapseIcon": "The icon used to collapse the item.", "content": "The component that renders the content of the item. (e.g.: everything related to this item, not to its children).", - "endIcon": "The icon displayed next to an end node.", - "expandIcon": "The icon used to expand the node.", + "endIcon": "The icon displayed next to an end item.", + "expandIcon": "The icon used to expand the item.", "groupTransition": "The component that renders the children of the item.", - "icon": "The icon to display next to the tree node's label.", + "icon": "The icon to display next to the tree item's label.", "iconContainer": "The component that renders the icon.", "label": "The component that renders the item label.", "root": "The component that renders the root." diff --git a/docs/translations/api-docs/tree-view/tree-item/tree-item.json b/docs/translations/api-docs/tree-view/tree-item/tree-item.json index e1cf3bc28949..edf4ebca118f 100644 --- a/docs/translations/api-docs/tree-view/tree-item/tree-item.json +++ b/docs/translations/api-docs/tree-view/tree-item/tree-item.json @@ -42,7 +42,7 @@ }, "iconContainer": { "description": "Styles applied to {{nodeName}}.", - "nodeName": "the tree node icon" + "nodeName": "the tree item icon" }, "label": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the label element" }, "root": { "description": "Styles applied to the root element." }, diff --git a/docs/translations/api-docs/tree-view/tree-view/tree-view.json b/docs/translations/api-docs/tree-view/tree-view/tree-view.json index c6d01a54bd44..d96dc4b910ff 100644 --- a/docs/translations/api-docs/tree-view/tree-view/tree-view.json +++ b/docs/translations/api-docs/tree-view/tree-view/tree-view.json @@ -74,9 +74,9 @@ }, "classDescriptions": {}, "slotDescriptions": { - "collapseIcon": "The default icon used to collapse the node.", - "endIcon": "The default icon displayed next to an end node. This is applied to all tree nodes and can be overridden by the TreeItem icon slot prop.", - "expandIcon": "The default icon used to expand the node.", + "collapseIcon": "The default icon used to collapse the item.", + "endIcon": "The default icon displayed next to an end item. This is applied to all tree items and can be overridden by the TreeItem icon slot prop.", + "expandIcon": "The default icon used to expand the item.", "root": "Element rendered at the root." } } diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index 051e56a30c5d..f0d469068892 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -112,14 +112,14 @@ const RichTreeView = React.forwardRef(function RichTreeView< ownerState: props as RichTreeViewProps, }); - const nodesToRender = instance.getNodesToRender(); + const itemsToRender = instance.getItemsToRender(); - const renderNode = ({ + const renderItem = ({ label, itemId, id, children, - }: ReturnType[number]) => { + }: ReturnType[number]) => { return ( - {children?.map(renderNode)} + {children?.map(renderItem)} ); }; return ( - {nodesToRender.map(renderNode)} + {itemsToRender.map(renderItem)} ); }) as TreeViewComponent; diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.plugins.ts b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.plugins.ts index b239a326ff95..7d2cabef636f 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.plugins.ts +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.plugins.ts @@ -4,12 +4,12 @@ import { DefaultTreeViewPluginSlotProps, DefaultTreeViewPluginSlots, } from '../internals/plugins/defaultPlugins'; -import { useTreeViewJSXNodes } from '../internals/plugins/useTreeViewJSXNodes'; +import { useTreeViewJSXItems } from '../internals/plugins/useTreeViewJSXItems'; import { ConvertPluginsIntoSignatures } from '../internals/models'; export const SIMPLE_TREE_VIEW_PLUGINS = [ ...DEFAULT_TREE_VIEW_PLUGINS, - useTreeViewJSXNodes, + useTreeViewJSXItems, ] as const; export type SimpleTreeViewPlugins = ConvertPluginsIntoSignatures; diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 92ee6764f4ed..4b1fe9226b92 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -12,11 +12,11 @@ import { describeConformance } from 'test/utils/describeConformance'; const TEST_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue = { instance: { - isNodeExpandable: () => false, - isNodeExpanded: () => false, - isNodeFocused: () => false, - isNodeSelected: () => false, - isNodeDisabled: (itemId: string | null): itemId is string => !!itemId, + isItemExpandable: () => false, + isItemExpanded: () => false, + isItemFocused: () => false, + isItemSelected: () => false, + isItemDisabled: (itemId: string | null): itemId is string => !!itemId, getTreeItemId: () => '', mapFirstCharFromJSX: () => () => {}, canItemBeTabbed: () => false, @@ -43,18 +43,18 @@ describe('', () => { describeConformance(, () => ({ classes, inheritComponent: 'li', - wrapMount: (mount) => (node: React.ReactNode) => { + wrapMount: (mount) => (item: React.ReactNode) => { const wrapper = mount( - {node} + {item} , ); return wrapper.childAt(0); }, - render: (node) => { + render: (item) => { return render( - {node} + {item} , ); }, @@ -403,7 +403,7 @@ describe('', () => { }); describe('when an item receives focus', () => { - it('should focus the first node if none of the nodes are selected before the tree receives focus', () => { + it('should focus the first item if none of the items are selected before the tree receives focus', () => { const { getByTestId, queryAllByRole } = render( @@ -441,7 +441,7 @@ describe('', () => { expect(getByTestId('two')).toHaveFocus(); }); - it('should work when focused node is removed', () => { + it('should work when focused item is removed', () => { let removeActiveItem; // a TreeItem which can remove from the tree by calling `removeActiveItem` function ControlledTreeItem(props) { @@ -480,7 +480,7 @@ describe('', () => { describe('Navigation', () => { describe('right arrow interaction', () => { - it('should open the node and not move the focus if focus is on a closed node', () => { + it('should open the item and not move the focus if focus is on a closed item', () => { const { getByTestId } = render( @@ -500,7 +500,7 @@ describe('', () => { expect(getByTestId('one')).toHaveFocus(); }); - it('should move focus to the first child if focus is on an open node', () => { + it('should move focus to the first child if focus is on an open item', () => { const { getByTestId } = render( @@ -562,7 +562,7 @@ describe('', () => { expect(getByTestId('one')).toHaveFocus(); }); - it("should move focus to the item's parent item if focus is on a child node that is an end item", () => { + it("should move focus to the item's parent item if focus is on a child item that is an end item", () => { const { getByTestId } = render( @@ -584,7 +584,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-expanded', 'true'); }); - it("should move focus to the node's parent node if focus is on a child node that is closed", () => { + it("should move focus to the item's parent item if focus is on a child item that is closed", () => { const { getByTestId } = render( @@ -609,7 +609,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-expanded', 'true'); }); - it('should do nothing if focus is on a root node that is closed', () => { + it('should do nothing if focus is on a root item that is closed', () => { const { getByTestId } = render( @@ -627,7 +627,7 @@ describe('', () => { expect(getByTestId('one')).toHaveFocus(); }); - it('should do nothing if focus is on a root node that is an end node', () => { + it('should do nothing if focus is on a root item that is an end item', () => { const { getByTestId } = render( @@ -644,7 +644,7 @@ describe('', () => { }); describe('down arrow interaction', () => { - it('moves focus to a sibling node', () => { + it('moves focus to a sibling item', () => { const { getByTestId } = render( @@ -745,7 +745,7 @@ describe('', () => { }); describe('up arrow interaction', () => { - it('moves focus to a sibling node', () => { + it('moves focus to a sibling item', () => { const { getByTestId } = render( @@ -811,7 +811,7 @@ describe('', () => { }); describe('home key interaction', () => { - it('moves focus to the first node in the tree', () => { + it('moves focus to the first item in the tree', () => { const { getByTestId } = render( @@ -834,7 +834,7 @@ describe('', () => { }); describe('end key interaction', () => { - it('moves focus to the last node in the tree without expanded items', () => { + it('moves focus to the last item in the tree without expanded items', () => { const { getByTestId } = render( @@ -855,7 +855,7 @@ describe('', () => { expect(getByTestId('four')).toHaveFocus(); }); - it('moves focus to the last node in the tree with expanded items', () => { + it('moves focus to the last item in the tree with expanded items', () => { const { getByTestId } = render( @@ -882,7 +882,7 @@ describe('', () => { }); describe('type-ahead functionality', () => { - it('moves focus to the next node with a name that starts with the typed character', () => { + it('moves focus to the next item with a name that starts with the typed character', () => { const { getByTestId } = render( @@ -911,7 +911,7 @@ describe('', () => { expect(getByTestId('one')).toHaveFocus(); }); - it('moves focus to the next node with the same starting character', () => { + it('moves focus to the next item with the same starting character', () => { const { getByTestId } = render( @@ -1048,7 +1048,7 @@ describe('', () => { describe('Expansion', () => { describe('enter key interaction', () => { - it('expands a node with children', () => { + it('expands an item with children', () => { const { getByTestId } = render( @@ -1068,7 +1068,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-expanded', 'true'); }); - it('collapses a node with children', () => { + it('collapses an item with children', () => { const { getByTestId } = render( @@ -1094,7 +1094,7 @@ describe('', () => { describe('Single Selection', () => { describe('keyboard', () => { - it('should select a node when space is pressed', () => { + it('should select an item when space is pressed', () => { const { getByTestId } = render( @@ -1112,7 +1112,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); }); - it('should not deselect a node when space is pressed on a selected node', () => { + it('should not deselect an item when space is pressed on a selected item', () => { const { getByTestId } = render( @@ -1131,7 +1131,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); }); - it('should not select a node when space is pressed and disableSelection', () => { + it('should not select an node when space is pressed and disableSelection', () => { const { getByTestId } = render( @@ -1146,7 +1146,7 @@ describe('', () => { expect(getByTestId('one')).not.to.have.attribute('aria-selected'); }); - it('should select a node when Enter is pressed and the node is not selected', () => { + it('should select an item when Enter is pressed and the item is not selected', () => { const { getByTestId } = render( @@ -1161,7 +1161,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected'); }); - it('should not un-select a node when Enter is pressed and the node is selected', () => { + it('should not un-select an item when Enter is pressed and the item is selected', () => { const { getByTestId } = render( @@ -1178,7 +1178,7 @@ describe('', () => { }); describe('mouse', () => { - it('should select a node when click', () => { + it('should select an item when click', () => { const { getByText, getByTestId } = render( @@ -1190,7 +1190,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); }); - it('should not deselect a node when clicking a selected node', () => { + it('should not deselect an item when clicking a selected item', () => { const { getByText, getByTestId } = render( @@ -1202,7 +1202,7 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); }); - it('should not select a node when click and disableSelection', () => { + it('should not select an item when click and disableSelection', () => { const { getByText, getByTestId } = render( @@ -1217,8 +1217,8 @@ describe('', () => { describe('Multi Selection', () => { describe('deselection', () => { - describe('mouse behavior when multiple nodes are selected', () => { - it('clicking a selected node holding ctrl should deselect the node', () => { + describe('mouse behavior when multiple items are selected', () => { + it('clicking a selected item holding ctrl should deselect the item', () => { const { getByText, getByTestId } = render( @@ -1233,7 +1233,7 @@ describe('', () => { expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); }); - it('clicking a selected node holding meta should deselect the node', () => { + it('clicking a selected item holding meta should deselect the item', () => { const { getByText, getByTestId } = render( @@ -1249,8 +1249,8 @@ describe('', () => { }); }); - describe('mouse behavior when one node is selected', () => { - it('clicking a selected node shout not deselect the node', () => { + describe('mouse behavior when one item is selected', () => { + it('clicking a selected item shout not deselect the item', () => { const { getByText, getByTestId } = render( @@ -1798,7 +1798,7 @@ describe('', () => { expect(getByTestId('one')).not.to.have.attribute('aria-selected'); }); - it('should prevent node triggering start of range selection', () => { + it('should prevent item triggering start of range selection', () => { const { getByText, getByTestId } = render( @@ -1816,7 +1816,7 @@ describe('', () => { expect(getByTestId('four')).to.have.attribute('aria-selected', 'false'); }); - it('should prevent node being selected as part of range selection', () => { + it('should prevent item being selected as part of range selection', () => { const { getByText, getByTestId } = render( @@ -1834,7 +1834,7 @@ describe('', () => { expect(getByTestId('four')).to.have.attribute('aria-selected', 'true'); }); - it('should prevent node triggering end of range selection', () => { + it('should prevent item triggering end of range selection', () => { const { getByText, getByTestId } = render( @@ -1870,7 +1870,7 @@ describe('', () => { expect(getByTestId('one')).not.to.have.attribute('aria-selected'); }); - it('should not prevent next node being range selected by keyboard', () => { + it('should not prevent next item being range selected by keyboard', () => { const { getByTestId } = render( @@ -1910,7 +1910,7 @@ describe('', () => { }); describe('`disabledItemsFocusable={false}`', () => { - it('should select the next non disabled node by keyboard + arrow down', () => { + it('should select the next non disabled item by keyboard + arrow down', () => { const { getByTestId } = render( diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index bfa635fd4f3c..7dd7ba75dcf9 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -201,10 +201,10 @@ export const TreeItem = React.forwardRef(function TreeItem( return Boolean(reactChildren); }; const expandable = isExpandable(children); - const expanded = instance.isNodeExpanded(itemId); - const focused = instance.isNodeFocused(itemId); - const selected = instance.isNodeSelected(itemId); - const disabled = instance.isNodeDisabled(itemId); + const expanded = instance.isItemExpanded(itemId); + const focused = instance.isItemFocused(itemId); + const selected = instance.isItemSelected(itemId); + const disabled = instance.isItemDisabled(itemId); const ownerState: TreeItemOwnerState = { ...props, diff --git a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts index bbbd77f44ccb..b5cab9b9719d 100644 --- a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts +++ b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts @@ -16,7 +16,7 @@ export interface TreeItemClasses { focused: string; /** State class applied to the element when disabled. */ disabled: string; - /** Styles applied to the tree node icon. */ + /** Styles applied to the tree item icon. */ iconContainer: string; /** Styles applied to the label element. */ label: string; diff --git a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts index 41085c010988..0c2442d3ec15 100644 --- a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts +++ b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts @@ -8,11 +8,11 @@ export function useTreeItemState(itemId: string) { selection: { multiSelect }, } = useTreeViewContext(); - const expandable = instance.isNodeExpandable(itemId); - const expanded = instance.isNodeExpanded(itemId); - const focused = instance.isNodeFocused(itemId); - const selected = instance.isNodeSelected(itemId); - const disabled = instance.isNodeDisabled(itemId); + const expandable = instance.isItemExpandable(itemId); + const expanded = instance.isItemExpanded(itemId); + const focused = instance.isItemFocused(itemId); + const selected = instance.isItemSelected(itemId); + const disabled = instance.isItemDisabled(itemId); const handleExpansion = (event: React.MouseEvent) => { if (!disabled) { @@ -23,8 +23,8 @@ export function useTreeItemState(itemId: string) { const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey); // If already expanded and trying to toggle selection don't close - if (expandable && !(multiple && instance.isNodeExpanded(itemId))) { - instance.toggleNodeExpansion(event, itemId); + if (expandable && !(multiple && instance.isItemExpanded(itemId))) { + instance.toggleItemExpansion(event, itemId); } } }; @@ -41,10 +41,10 @@ export function useTreeItemState(itemId: string) { if (event.shiftKey) { instance.selectRange(event, { end: itemId }); } else { - instance.selectNode(event, itemId, true); + instance.selectItem(event, itemId, true); } } else { - instance.selectNode(event, itemId); + instance.selectItem(event, itemId); } } }; diff --git a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts index e3af78d0820d..eca8d8da6012 100644 --- a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts +++ b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts @@ -4,19 +4,19 @@ import { UseTreeItem2Status } from '../useTreeItem2'; export interface TreeItem2IconSlots { /** - * The icon used to collapse the node. + * The icon used to collapse the item. */ collapseIcon?: React.ElementType; /** - * The icon used to expand the node. + * The icon used to expand the item. */ expandIcon?: React.ElementType; /** - * The icon displayed next to an end node. + * The icon displayed next to an end item. */ endIcon?: React.ElementType; /** - * The icon to display next to the tree node's label. + * The icon to display next to the tree item's label. */ icon?: React.ElementType; } diff --git a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx index 020f82748e12..87ed49fff4dc 100644 --- a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx +++ b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx @@ -27,10 +27,10 @@ export const useTreeItem2Utils = ({ const status: UseTreeItem2Status = { expandable: Boolean(Array.isArray(children) ? children.length : children), - expanded: instance.isNodeExpanded(itemId), - focused: instance.isNodeFocused(itemId), - selected: instance.isNodeSelected(itemId), - disabled: instance.isNodeDisabled(itemId), + expanded: instance.isItemExpanded(itemId), + focused: instance.isItemFocused(itemId), + selected: instance.isItemSelected(itemId), + disabled: instance.isItemDisabled(itemId), }; const handleExpansion = (event: React.MouseEvent) => { @@ -45,8 +45,8 @@ export const useTreeItem2Utils = ({ const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey); // If already expanded and trying to toggle selection don't close - if (status.expandable && !(multiple && instance.isNodeExpanded(itemId))) { - instance.toggleNodeExpansion(event, itemId); + if (status.expandable && !(multiple && instance.isItemExpanded(itemId))) { + instance.toggleItemExpansion(event, itemId); } }; @@ -65,10 +65,10 @@ export const useTreeItem2Utils = ({ if (event.shiftKey) { instance.selectRange(event, { end: itemId }); } else { - instance.selectNode(event, itemId, true); + instance.selectItem(event, itemId, true); } } else { - instance.selectNode(event, itemId); + instance.selectItem(event, itemId); } }; diff --git a/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx b/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx index f7cf84eb6670..7e145beaeac9 100644 --- a/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx +++ b/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx @@ -50,7 +50,7 @@ const noop = () => {}; * We use this for focus management, keyboard navigation, and typeahead * functionality for some components. * - * The hook accepts the element node + * The hook accepts the element item * * Our main goals with this are: * 1) maximum composability, diff --git a/packages/x-tree-view/src/internals/index.ts b/packages/x-tree-view/src/internals/index.ts index 9ae35c05e9d7..13f393a2a829 100644 --- a/packages/x-tree-view/src/internals/index.ts +++ b/packages/x-tree-view/src/internals/index.ts @@ -16,7 +16,7 @@ export type { UseTreeViewFocusSignature } from './plugins/useTreeViewFocus'; export type { UseTreeViewKeyboardNavigationSignature } from './plugins/useTreeViewKeyboardNavigation'; export type { UseTreeViewIdSignature } from './plugins/useTreeViewId'; export type { UseTreeViewIconsSignature } from './plugins/useTreeViewIcons'; -export type { UseTreeViewNodesSignature } from './plugins/useTreeViewNodes'; -export type { UseTreeViewJSXNodesSignature } from './plugins/useTreeViewJSXNodes'; +export type { UseTreeViewItemsSignature } from './plugins/useTreeViewItems'; +export type { UseTreeViewJSXItemsSignature } from './plugins/useTreeViewJSXItems'; export { extractPluginParamsFromProps } from './utils/extractPluginParamsFromProps'; diff --git a/packages/x-tree-view/src/internals/plugins/defaultPlugins.ts b/packages/x-tree-view/src/internals/plugins/defaultPlugins.ts index c0c92e6bff0d..f737c5dcc8c9 100644 --- a/packages/x-tree-view/src/internals/plugins/defaultPlugins.ts +++ b/packages/x-tree-view/src/internals/plugins/defaultPlugins.ts @@ -1,5 +1,5 @@ import { useTreeViewId, UseTreeViewIdParameters } from './useTreeViewId'; -import { useTreeViewNodes, UseTreeViewNodesParameters } from './useTreeViewNodes'; +import { useTreeViewItems, UseTreeViewItemsParameters } from './useTreeViewItems'; import { useTreeViewExpansion, UseTreeViewExpansionParameters } from './useTreeViewExpansion'; import { useTreeViewSelection, UseTreeViewSelectionParameters } from './useTreeViewSelection'; import { useTreeViewFocus, UseTreeViewFocusParameters } from './useTreeViewFocus'; @@ -9,7 +9,7 @@ import { ConvertPluginsIntoSignatures, MergePluginsProperty } from '../models'; export const DEFAULT_TREE_VIEW_PLUGINS = [ useTreeViewId, - useTreeViewNodes, + useTreeViewItems, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, @@ -29,7 +29,7 @@ export type DefaultTreeViewPluginSlotProps = MergePluginsProperty< // We can't infer this type from the plugin, otherwise we would lose the generics. export interface DefaultTreeViewPluginParameters extends UseTreeViewIdParameters, - UseTreeViewNodesParameters, + UseTreeViewItemsParameters, UseTreeViewExpansionParameters, UseTreeViewFocusParameters, UseTreeViewSelectionParameters, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts index c97d903ed116..7fa1d771b5a4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts @@ -14,7 +14,7 @@ export const useTreeViewExpansion: TreeViewPlugin models.expandedItems.setControlledValue(value); }; - const isNodeExpanded = React.useCallback( + const isItemExpanded = React.useCallback( (itemId: string) => { return Array.isArray(models.expandedItems.value) ? models.expandedItems.value.indexOf(itemId) !== -1 @@ -23,12 +23,12 @@ export const useTreeViewExpansion: TreeViewPlugin [models.expandedItems.value], ); - const isNodeExpandable = React.useCallback( + const isItemExpandable = React.useCallback( (itemId: string) => !!instance.getNode(itemId)?.expandable, [instance], ); - const toggleNodeExpansion = useEventCallback( + const toggleItemExpansion = useEventCallback( (event: React.SyntheticEvent, itemId: string | null) => { if (itemId == null) { return; @@ -56,7 +56,7 @@ export const useTreeViewExpansion: TreeViewPlugin const siblings = instance.getChildrenIds(node.parentId); const diff = siblings.filter( - (child) => instance.isNodeExpandable(child) && !instance.isNodeExpanded(child), + (child) => instance.isItemExpandable(child) && !instance.isItemExpanded(child), ); const newExpanded = models.expandedItems.value.concat(diff); @@ -73,9 +73,9 @@ export const useTreeViewExpansion: TreeViewPlugin }; populateInstance(instance, { - isNodeExpanded, - isNodeExpandable, - toggleNodeExpansion, + isItemExpanded, + isItemExpandable, + toggleItemExpansion, expandAllSiblings, }); }; @@ -86,11 +86,11 @@ useTreeViewExpansion.models = { }, }; -const DEFAULT_EXPANDED_NODES: string[] = []; +const DEFAULT_EXPANDED_ITEMS: string[] = []; useTreeViewExpansion.getDefaultizedParams = (params) => ({ ...params, - defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_NODES, + defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_ITEMS, }); useTreeViewExpansion.params = { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts index 1a66b9dd86fd..9f261541492a 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts @@ -1,11 +1,11 @@ import * as React from 'react'; import { DefaultizedProps, TreeViewPluginSignature } from '../../models'; -import { UseTreeViewNodesSignature } from '../useTreeViewNodes'; +import { UseTreeViewItemsSignature } from '../useTreeViewItems'; export interface UseTreeViewExpansionInstance { - isNodeExpanded: (itemId: string) => boolean; - isNodeExpandable: (itemId: string) => boolean; - toggleNodeExpansion: (event: React.SyntheticEvent, value: string) => void; + isItemExpanded: (itemId: string) => boolean; + isItemExpandable: (itemId: string) => boolean; + toggleItemExpansion: (event: React.SyntheticEvent, value: string) => void; expandAllSiblings: (event: React.KeyboardEvent, itemId: string) => void; } @@ -50,5 +50,5 @@ export type UseTreeViewExpansionSignature = TreeViewPluginSignature<{ defaultizedParams: UseTreeViewExpansionDefaultizedParameters; instance: UseTreeViewExpansionInstance; modelNames: 'expandedItems'; - dependantPlugins: [UseTreeViewNodesSignature]; + dependantPlugins: [UseTreeViewItemsSignature]; }>; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 72c756902d67..eab87b06ba78 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -14,7 +14,7 @@ const useTabbableItemId = ( ) => { const isItemVisible = (itemId: string) => { const node = instance.getNode(itemId); - return node && (node.parentId == null || instance.isNodeExpanded(node.parentId)); + return node && (node.parentId == null || instance.isItemExpanded(node.parentId)); }; let tabbableItemId: string | null | undefined; @@ -43,9 +43,9 @@ export const useTreeViewFocus: TreeViewPlugin = ({ const tabbableItemId = useTabbableItemId(instance, models.selectedItems.value); const setFocusedItemId = useEventCallback((itemId: React.SetStateAction) => { - const cleanItemId = typeof itemId === 'function' ? itemId(state.focusedNodeId) : itemId; - if (state.focusedNodeId !== cleanItemId) { - setState((prevState) => ({ ...prevState, focusedNodeId: cleanItemId })); + const cleanItemId = typeof itemId === 'function' ? itemId(state.focusedItemId) : itemId; + if (state.focusedItemId !== cleanItemId) { + setState((prevState) => ({ ...prevState, focusedItemId: cleanItemId })); } }); @@ -56,14 +56,14 @@ export const useTreeViewFocus: TreeViewPlugin = ({ [rootRef], ); - const isNodeFocused = React.useCallback( - (itemId: string) => state.focusedNodeId === itemId && isTreeViewFocused(), - [state.focusedNodeId, isTreeViewFocused], + const isItemFocused = React.useCallback( + (itemId: string) => state.focusedItemId === itemId && isTreeViewFocused(), + [state.focusedItemId, isTreeViewFocused], ); - const isNodeVisible = (itemId: string) => { + const isItemVisible = (itemId: string) => { const node = instance.getNode(itemId); - return node && (node.parentId == null || instance.isNodeExpanded(node.parentId)); + return node && (node.parentId == null || instance.isItemExpanded(node.parentId)); }; const innerFocusItem = (event: React.SyntheticEvent | null, itemId: string) => { @@ -79,37 +79,37 @@ export const useTreeViewFocus: TreeViewPlugin = ({ } }; - const focusItem = useEventCallback((event: React.SyntheticEvent, nodeId: string) => { - // If we receive a nodeId, and it is visible, the focus will be set to it - if (isNodeVisible(nodeId)) { - innerFocusItem(event, nodeId); + const focusItem = useEventCallback((event: React.SyntheticEvent, itemId: string) => { + // If we receive an itemId, and it is visible, the focus will be set to it + if (isItemVisible(itemId)) { + innerFocusItem(event, itemId); } }); - const focusDefaultNode = useEventCallback((event: React.SyntheticEvent | null) => { - let nodeToFocusId: string | null | undefined; + const focusDefaultItem = useEventCallback((event: React.SyntheticEvent | null) => { + let itemToFocusId: string | null | undefined; if (Array.isArray(models.selectedItems.value)) { - nodeToFocusId = models.selectedItems.value.find(isNodeVisible); - } else if (models.selectedItems.value != null && isNodeVisible(models.selectedItems.value)) { - nodeToFocusId = models.selectedItems.value; + itemToFocusId = models.selectedItems.value.find(isItemVisible); + } else if (models.selectedItems.value != null && isItemVisible(models.selectedItems.value)) { + itemToFocusId = models.selectedItems.value; } - if (nodeToFocusId == null) { - nodeToFocusId = instance.getNavigableChildrenIds(null)[0]; + if (itemToFocusId == null) { + itemToFocusId = instance.getNavigableChildrenIds(null)[0]; } - innerFocusItem(event, nodeToFocusId); + innerFocusItem(event, itemToFocusId); }); const removeFocusedItem = useEventCallback(() => { - if (state.focusedNodeId == null) { + if (state.focusedItemId == null) { return; } - const node = instance.getNode(state.focusedNodeId); + const node = instance.getNode(state.focusedItemId); if (node) { const itemElement = document.getElementById( - instance.getTreeItemId(state.focusedNodeId, node.idAttribute), + instance.getTreeItemId(state.focusedItemId, node.idAttribute), ); if (itemElement) { itemElement.blur(); @@ -122,10 +122,10 @@ export const useTreeViewFocus: TreeViewPlugin = ({ const canItemBeTabbed = (itemId: string) => itemId === tabbableItemId; populateInstance(instance, { - isNodeFocused, + isItemFocused, canItemBeTabbed, focusItem, - focusDefaultNode, + focusDefaultItem, removeFocusedItem, }); @@ -133,9 +133,9 @@ export const useTreeViewFocus: TreeViewPlugin = ({ focusItem, }); - useInstanceEventHandler(instance, 'removeNode', ({ id }) => { - if (state.focusedNodeId === id) { - instance.focusDefaultNode(null); + useInstanceEventHandler(instance, 'removeItem', ({ id }) => { + if (state.focusedItemId === id) { + instance.focusDefaultItem(null); } }); @@ -144,13 +144,13 @@ export const useTreeViewFocus: TreeViewPlugin = ({ otherHandlers.onFocus?.(event); // if the event bubbled (which is React specific) we don't want to steal focus if (event.target === event.currentTarget) { - instance.focusDefaultNode(event); + instance.focusDefaultItem(event); } }; - const focusedNode = instance.getNode(state.focusedNodeId!); - const activeDescendant = focusedNode - ? instance.getTreeItemId(focusedNode.id, focusedNode.idAttribute) + const focusedItem = instance.getNode(state.focusedItemId!); + const activeDescendant = focusedItem + ? instance.getTreeItemId(focusedItem.id, focusedItem.idAttribute) : null; return { @@ -161,7 +161,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ }; }; -useTreeViewFocus.getInitialState = () => ({ focusedNodeId: null }); +useTreeViewFocus.getInitialState = () => ({ focusedItemId: null }); useTreeViewFocus.params = { onItemFocus: true, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts index 2b9fe5f6f1e6..1a5e571f1317 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts @@ -1,15 +1,15 @@ import * as React from 'react'; import { TreeViewPluginSignature } from '../../models'; import { UseTreeViewIdSignature } from '../useTreeViewId/useTreeViewId.types'; -import type { UseTreeViewNodesSignature } from '../useTreeViewNodes'; +import type { UseTreeViewItemsSignature } from '../useTreeViewItems'; import type { UseTreeViewSelectionSignature } from '../useTreeViewSelection'; import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion'; export interface UseTreeViewFocusInstance { - isNodeFocused: (itemId: string) => boolean; + isItemFocused: (itemId: string) => boolean; canItemBeTabbed: (itemId: string) => boolean; - focusItem: (event: React.SyntheticEvent, nodeId: string) => void; - focusDefaultNode: (event: React.SyntheticEvent | null) => void; + focusItem: (event: React.SyntheticEvent, itemId: string) => void; + focusDefaultItem: (event: React.SyntheticEvent | null) => void; removeFocusedItem: () => void; } @@ -28,7 +28,7 @@ export interface UseTreeViewFocusParameters { export type UseTreeViewFocusDefaultizedParameters = UseTreeViewFocusParameters; export interface UseTreeViewFocusState { - focusedNodeId: string | null; + focusedItemId: string | null; } export type UseTreeViewFocusSignature = TreeViewPluginSignature<{ @@ -39,7 +39,7 @@ export type UseTreeViewFocusSignature = TreeViewPluginSignature<{ state: UseTreeViewFocusState; dependantPlugins: [ UseTreeViewIdSignature, - UseTreeViewNodesSignature, + UseTreeViewItemsSignature, UseTreeViewSelectionSignature, UseTreeViewExpansionSignature, ]; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts index 8090beb113c3..0ceb50b8fe3e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { SlotComponentProps } from '@mui/base/utils'; import { TreeViewPluginSignature } from '../../models'; -import { UseTreeViewNodesSignature } from '../useTreeViewNodes'; +import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewSelectionSignature } from '../useTreeViewSelection'; export interface UseTreeViewIconsParameters {} @@ -10,16 +10,16 @@ export type UseTreeViewIconsDefaultizedParameters = UseTreeViewIconsParameters; interface UseTreeViewIconsSlots { /** - * The default icon used to collapse the node. + * The default icon used to collapse the item. */ collapseIcon?: React.ElementType; /** - * The default icon used to expand the node. + * The default icon used to expand the item. */ expandIcon?: React.ElementType; /** - * The default icon displayed next to an end node. - * This is applied to all tree nodes and can be overridden by the TreeItem `icon` slot prop. + * The default icon displayed next to an end item. + * This is applied to all tree items and can be overridden by the TreeItem `icon` slot prop. */ endIcon?: React.ElementType; } @@ -43,5 +43,5 @@ export type UseTreeViewIconsSignature = TreeViewPluginSignature<{ contextValue: UseTreeViewIconsContextValue; slots: UseTreeViewIconsSlots; slotProps: UseTreeViewIconsSlotProps; - dependantPlugins: [UseTreeViewNodesSignature, UseTreeViewSelectionSignature]; + dependantPlugins: [UseTreeViewItemsSignature, UseTreeViewSelectionSignature]; }>; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts index e7b84528bfe4..649405e2bb67 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts @@ -15,7 +15,7 @@ export interface UseTreeViewIdParameters { export type UseTreeViewIdDefaultizedParameters = UseTreeViewIdParameters; export interface UseTreeViewIdState { - focusedNodeId: string | null; + focusedItemId: string | null; } export type UseTreeViewIdSignature = TreeViewPluginSignature<{ diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts new file mode 100644 index 000000000000..63c1a5d694ce --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts @@ -0,0 +1,6 @@ +export { useTreeViewItems } from './useTreeViewItems'; +export type { + UseTreeViewItemsSignature, + UseTreeViewItemsParameters, + UseTreeViewItemsDefaultizedParameters, +} from './useTreeViewItems.types'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx similarity index 98% rename from packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.test.tsx rename to packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx index 28f3e2b1f398..e1f098e05799 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx @@ -5,7 +5,7 @@ import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem } from '@mui/x-tree-view/TreeItem'; -describe('useTreeViewNodes', () => { +describe('useTreeViewItems', () => { const { render } = createRenderer(); it('should throw an error when two items have the same ID (items prop approach)', function test() { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts similarity index 74% rename from packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts rename to packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 01f133f5b9c6..045e6e849065 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -2,25 +2,25 @@ import * as React from 'react'; import { TreeViewPlugin } from '../../models'; import { populateInstance, populatePublicAPI } from '../../useTreeView/useTreeView.utils'; import { - UseTreeViewNodesSignature, - UseTreeViewNodesDefaultizedParameters, + UseTreeViewItemsSignature, + UseTreeViewItemsDefaultizedParameters, TreeViewNodeMap, TreeViewItemIdAndChildren, - UseTreeViewNodesState, + UseTreeViewItemsState, TreeViewItemMap, -} from './useTreeViewNodes.types'; +} from './useTreeViewItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { TreeViewBaseItem } from '../../../models'; -const updateNodesState = ({ +const updateItemsState = ({ items, isItemDisabled, getItemLabel, getItemId, }: Pick< - UseTreeViewNodesDefaultizedParameters, + UseTreeViewItemsDefaultizedParameters, 'items' | 'isItemDisabled' | 'getItemLabel' | 'getItemId' ->): UseTreeViewNodesState['nodes'] => { +>): UseTreeViewItemsState['items'] => { const nodeMap: TreeViewNodeMap = {}; const itemMap: TreeViewItemMap = {}; @@ -91,7 +91,7 @@ const updateNodesState = ({ }; }; -export const useTreeViewNodes: TreeViewPlugin = ({ +export const useTreeViewItems: TreeViewPlugin = ({ instance, publicAPI, params, @@ -99,35 +99,35 @@ export const useTreeViewNodes: TreeViewPlugin = ({ setState, }) => { const getNode = React.useCallback( - (itemId: string) => state.nodes.nodeMap[itemId], - [state.nodes.nodeMap], + (itemId: string) => state.items.nodeMap[itemId], + [state.items.nodeMap], ); const getItem = React.useCallback( - (itemId: string) => state.nodes.itemMap[itemId], - [state.nodes.itemMap], + (itemId: string) => state.items.itemMap[itemId], + [state.items.itemMap], ); - const isNodeDisabled = React.useCallback( + const isItemDisabled = React.useCallback( (itemId: string | null): itemId is string => { if (itemId == null) { return false; } - let item = instance.getNode(itemId); + let node = instance.getNode(itemId); - // This can be called before the item has been added to the node map. - if (!item) { + // This can be called before the item has been added to the item map. + if (!node) { return false; } - if (item.disabled) { + if (node.disabled) { return true; } - while (item.parentId != null) { - item = instance.getNode(item.parentId); - if (item.disabled) { + while (node.parentId != null) { + node = instance.getNode(node.parentId); + if (node.disabled) { return true; } } @@ -139,18 +139,18 @@ export const useTreeViewNodes: TreeViewPlugin = ({ const getChildrenIds = React.useCallback( (itemId: string | null) => - Object.values(state.nodes.nodeMap) + Object.values(state.items.nodeMap) .filter((item) => item.parentId === itemId) .sort((a, b) => a.index - b.index) .map((child) => child.id), - [state.nodes.nodeMap], + [state.items.nodeMap], ); const getNavigableChildrenIds = (itemId: string | null) => { let childrenIds = instance.getChildrenIds(itemId); if (!params.disabledItemsFocusable) { - childrenIds = childrenIds.filter((item) => !instance.isNodeDisabled(item)); + childrenIds = childrenIds.filter((item) => !instance.isItemDisabled(item)); } return childrenIds; }; @@ -168,20 +168,20 @@ export const useTreeViewNodes: TreeViewPlugin = ({ } setState((prevState) => { - const newState = updateNodesState({ + const newState = updateItemsState({ items: params.items, isItemDisabled: params.isItemDisabled, getItemId: params.getItemId, getItemLabel: params.getItemLabel, }); - Object.values(prevState.nodes.nodeMap).forEach((node) => { - if (!newState.nodeMap[node.id]) { - publishTreeViewEvent(instance, 'removeNode', { id: node.id }); + Object.values(prevState.items.nodeMap).forEach((item) => { + if (!newState.nodeMap[item.id]) { + publishTreeViewEvent(instance, 'removeItem', { id: item.id }); } }); - return { ...prevState, nodes: newState }; + return { ...prevState, items: newState }; }); }, [ instance, @@ -192,35 +192,35 @@ export const useTreeViewNodes: TreeViewPlugin = ({ params.getItemLabel, ]); - const getNodesToRender = () => { + const getItemsToRender = () => { const getPropsFromItemId = ({ id, children, - }: TreeViewItemIdAndChildren): ReturnType[number] => { - const node = state.nodes.nodeMap[id]; + }: TreeViewItemIdAndChildren): ReturnType[number] => { + const item = state.items.nodeMap[id]; return { - label: node.label!, - itemId: node.id, - id: node.idAttribute, + label: item.label!, + itemId: item.id, + id: item.idAttribute, children: children?.map(getPropsFromItemId), }; }; - return state.nodes.nodeTree.map(getPropsFromItemId); + return state.items.nodeTree.map(getPropsFromItemId); }; - populateInstance(instance, { + populateInstance(instance, { getNode, getItem, - getNodesToRender, + getItemsToRender, getChildrenIds, getNavigableChildrenIds, - isNodeDisabled, + isItemDisabled, preventItemUpdates, areItemUpdatesPrevented, }); - populatePublicAPI(publicAPI, { + populatePublicAPI(publicAPI, { getItem, }); @@ -229,8 +229,8 @@ export const useTreeViewNodes: TreeViewPlugin = ({ }; }; -useTreeViewNodes.getInitialState = (params) => ({ - nodes: updateNodesState({ +useTreeViewItems.getInitialState = (params) => ({ + items: updateItemsState({ items: params.items, isItemDisabled: params.isItemDisabled, getItemId: params.getItemId, @@ -238,12 +238,12 @@ useTreeViewNodes.getInitialState = (params) => ({ }), }); -useTreeViewNodes.getDefaultizedParams = (params) => ({ +useTreeViewItems.getDefaultizedParams = (params) => ({ ...params, disabledItemsFocusable: params.disabledItemsFocusable ?? false, }); -useTreeViewNodes.params = { +useTreeViewItems.params = { disabledItemsFocusable: true, items: true, isItemDisabled: true, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts similarity index 67% rename from packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts rename to packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 352cf93605ff..37e704219cab 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -1,20 +1,20 @@ import { TreeViewNode, DefaultizedProps, TreeViewPluginSignature } from '../../models'; import { TreeViewItemId } from '../../../models'; -interface TreeViewNodeProps { +interface TreeViewItemProps { label: string; itemId: string; id: string | undefined; - children?: TreeViewNodeProps[]; + children?: TreeViewItemProps[]; } -export interface UseTreeViewNodesInstance { +export interface UseTreeViewItemsInstance { getNode: (itemId: string) => TreeViewNode; getItem: (itemId: string) => R; - getNodesToRender: () => TreeViewNodeProps[]; + getItemsToRender: () => TreeViewItemProps[]; getChildrenIds: (itemId: string | null) => string[]; getNavigableChildrenIds: (itemId: string | null) => string[]; - isNodeDisabled: (itemId: string | null) => itemId is string; + isItemDisabled: (itemId: string | null) => itemId is string; /** * Freeze any future update to the state based on the `items` prop. * This is useful when `useTreeViewJSXNodes` is used to avoid having conflicting sources of truth. @@ -28,10 +28,10 @@ export interface UseTreeViewNodesInstance { areItemUpdatesPrevented: () => boolean; } -export interface UseTreeViewNodesPublicAPI - extends Pick, 'getItem'> {} +export interface UseTreeViewItemsPublicAPI + extends Pick, 'getItem'> {} -export interface UseTreeViewNodesParameters { +export interface UseTreeViewItemsParameters { /** * If `true`, will allow focus on disabled items. * @default false @@ -65,13 +65,13 @@ export interface UseTreeViewNodesParameters { getItemId?: (item: R) => TreeViewItemId; } -export type UseTreeViewNodesDefaultizedParameters = DefaultizedProps< - UseTreeViewNodesParameters, +export type UseTreeViewItemsDefaultizedParameters = DefaultizedProps< + UseTreeViewItemsParameters, 'disabledItemsFocusable' >; -interface UseTreeViewNodesEventLookup { - removeNode: { +interface UseTreeViewItemsEventLookup { + removeItem: { params: { id: string }; }; } @@ -81,25 +81,25 @@ export interface TreeViewItemIdAndChildren { children?: TreeViewItemIdAndChildren[]; } -export interface UseTreeViewNodesState { - nodes: { +export interface UseTreeViewItemsState { + items: { nodeTree: TreeViewItemIdAndChildren[]; nodeMap: TreeViewNodeMap; itemMap: TreeViewItemMap; }; } -interface UseTreeViewNodesContextValue - extends Pick, 'disabledItemsFocusable'> {} +interface UseTreeViewItemsContextValue + extends Pick, 'disabledItemsFocusable'> {} -export type UseTreeViewNodesSignature = TreeViewPluginSignature<{ - params: UseTreeViewNodesParameters; - defaultizedParams: UseTreeViewNodesDefaultizedParameters; - instance: UseTreeViewNodesInstance; - publicAPI: UseTreeViewNodesPublicAPI; - events: UseTreeViewNodesEventLookup; - state: UseTreeViewNodesState; - contextValue: UseTreeViewNodesContextValue; +export type UseTreeViewItemsSignature = TreeViewPluginSignature<{ + params: UseTreeViewItemsParameters; + defaultizedParams: UseTreeViewItemsDefaultizedParameters; + instance: UseTreeViewItemsInstance; + publicAPI: UseTreeViewItemsPublicAPI; + events: UseTreeViewItemsEventLookup; + state: UseTreeViewItemsState; + contextValue: UseTreeViewItemsContextValue; }>; export type TreeViewNodeMap = { [itemId: string]: TreeViewNode }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts new file mode 100644 index 000000000000..1eff39d296b7 --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts @@ -0,0 +1,6 @@ +export { useTreeViewJSXItems } from './useTreeViewJSXItems'; +export type { + UseTreeViewJSXItemsSignature, + UseTreeViewItemsParameters, + UseTreeViewItemsDefaultizedParameters, +} from './useTreeViewJSXItems.types'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx similarity index 73% rename from packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx rename to packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index 1ad50070711e..30101b6c9451 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -3,7 +3,7 @@ import useEventCallback from '@mui/utils/useEventCallback'; import useForkRef from '@mui/utils/useForkRef'; import { TreeViewItemPlugin, TreeViewNode, TreeViewPlugin } from '../../models'; import { populateInstance } from '../../useTreeView/useTreeView.utils'; -import { UseTreeViewJSXNodesSignature } from './useTreeViewJSXNodes.types'; +import { UseTreeViewJSXItemsSignature } from './useTreeViewJSXItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext'; import { @@ -14,52 +14,52 @@ import { import type { TreeItemProps } from '../../../TreeItem'; import type { TreeItem2Props } from '../../../TreeItem2'; -export const useTreeViewJSXNodes: TreeViewPlugin = ({ +export const useTreeViewJSXItems: TreeViewPlugin = ({ instance, setState, }) => { instance.preventItemUpdates(); - const insertJSXNode = useEventCallback((node: TreeViewNode) => { + const insertJSXItem = useEventCallback((item: TreeViewNode) => { setState((prevState) => { - if (prevState.nodes.nodeMap[node.id] != null) { + if (prevState.items.nodeMap[item.id] != null) { throw new Error( [ 'MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', - `Tow items were provided with the same id in the \`items\` prop: "${node.id}"`, + `Tow items were provided with the same id in the \`items\` prop: "${item.id}"`, ].join('\n'), ); } return { ...prevState, - nodes: { - ...prevState.nodes, - nodeMap: { ...prevState.nodes.nodeMap, [node.id]: node }, + items: { + ...prevState.items, + nodeMap: { ...prevState.items.nodeMap, [item.id]: item }, // For `SimpleTreeView`, we don't have a proper `item` object, so we create a very basic one. - itemMap: { ...prevState.nodes.itemMap, [node.id]: { id: node.id, label: node.label } }, + itemMap: { ...prevState.items.itemMap, [item.id]: { id: item.id, label: item.label } }, }, }; }); }); - const removeJSXNode = useEventCallback((itemId: string) => { + const removeJSXItem = useEventCallback((itemId: string) => { setState((prevState) => { - const newNodeMap = { ...prevState.nodes.nodeMap }; - const newItemMap = { ...prevState.nodes.itemMap }; + const newNodeMap = { ...prevState.items.nodeMap }; + const newItemMap = { ...prevState.items.itemMap }; delete newNodeMap[itemId]; delete newItemMap[itemId]; return { ...prevState, - nodes: { - ...prevState.nodes, + items: { + ...prevState.items, nodeMap: newNodeMap, itemMap: newItemMap, }, }; }); - publishTreeViewEvent(instance, 'removeNode', { id: itemId }); + publishTreeViewEvent(instance, 'removeItem', { id: itemId }); }); const mapFirstCharFromJSX = useEventCallback((itemId: string, firstChar: string) => { @@ -77,21 +77,21 @@ export const useTreeViewJSXNodes: TreeViewPlugin = }; }); - populateInstance(instance, { - insertJSXNode, - removeJSXNode, + populateInstance(instance, { + insertJSXItem, + removeJSXItem, mapFirstCharFromJSX, }); }; -const useTreeViewJSXNodesItemPlugin: TreeViewItemPlugin = ({ +const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin = ({ props, rootRef, contentRef, }) => { const { children, disabled = false, label, itemId, id } = props; - const { instance } = useTreeViewContext<[UseTreeViewJSXNodesSignature]>(); + const { instance } = useTreeViewContext<[UseTreeViewJSXItemsSignature]>(); const isExpandable = (reactChildren: React.ReactNode) => { if (Array.isArray(reactChildren)) { @@ -119,9 +119,9 @@ const useTreeViewJSXNodesItemPlugin: TreeViewItemPlugin { - // On the first render a node's index will be -1. We want to wait for the real index. + // On the first render a item's index will be -1. We want to wait for the real index. if (index !== -1) { - instance.insertJSXNode({ + instance.insertJSXItem({ id: itemId, idAttribute: id, index, @@ -130,7 +130,7 @@ const useTreeViewJSXNodesItemPlugin: TreeViewItemPlugin instance.removeJSXNode(itemId); + return () => instance.removeJSXItem(itemId); } return undefined; @@ -152,10 +152,10 @@ const useTreeViewJSXNodesItemPlugin: TreeViewItemPlugin ( +useTreeViewJSXItems.wrapItem = ({ children, itemId }) => ( {children} ); -useTreeViewJSXNodes.params = {}; +useTreeViewJSXItems.params = {}; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts new file mode 100644 index 000000000000..c219453ac6da --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts @@ -0,0 +1,20 @@ +import { TreeViewNode, TreeViewPluginSignature } from '../../models'; +import { UseTreeViewItemsSignature } from '../useTreeViewItems'; +import { UseTreeViewKeyboardNavigationSignature } from '../useTreeViewKeyboardNavigation'; + +export interface UseTreeViewItemsInstance { + insertJSXItem: (item: TreeViewNode) => void; + removeJSXItem: (itemId: string) => void; + mapFirstCharFromJSX: (itemId: string, firstChar: string) => () => void; +} + +export interface UseTreeViewItemsParameters {} + +export interface UseTreeViewItemsDefaultizedParameters {} + +export type UseTreeViewJSXItemsSignature = TreeViewPluginSignature<{ + params: UseTreeViewItemsParameters; + defaultizedParams: UseTreeViewItemsDefaultizedParameters; + instance: UseTreeViewItemsInstance; + dependantPlugins: [UseTreeViewItemsSignature, UseTreeViewKeyboardNavigationSignature]; +}>; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/index.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/index.ts deleted file mode 100644 index 2aeb78d6ca7a..000000000000 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { useTreeViewJSXNodes } from './useTreeViewJSXNodes'; -export type { - UseTreeViewJSXNodesSignature, - UseTreeViewNodesParameters, - UseTreeViewNodesDefaultizedParameters, -} from './useTreeViewJSXNodes.types'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.ts deleted file mode 100644 index 7567e90b10c4..000000000000 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { TreeViewNode, TreeViewPluginSignature } from '../../models'; -import { UseTreeViewNodesSignature } from '../useTreeViewNodes'; -import { UseTreeViewKeyboardNavigationSignature } from '../useTreeViewKeyboardNavigation'; - -export interface UseTreeViewNodesInstance { - insertJSXNode: (node: TreeViewNode) => void; - removeJSXNode: (itemId: string) => void; - mapFirstCharFromJSX: (itemId: string, firstChar: string) => () => void; -} - -export interface UseTreeViewNodesParameters {} - -export interface UseTreeViewNodesDefaultizedParameters {} - -export type UseTreeViewJSXNodesSignature = TreeViewPluginSignature<{ - params: UseTreeViewNodesParameters; - defaultizedParams: UseTreeViewNodesDefaultizedParameters; - instance: UseTreeViewNodesInstance; - dependantPlugins: [UseTreeViewNodesSignature, UseTreeViewKeyboardNavigationSignature]; -}>; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index 344cc4a5532b..42f487890461 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -3,10 +3,10 @@ import { useTheme } from '@mui/material/styles'; import useEventCallback from '@mui/utils/useEventCallback'; import { TreeViewNode, TreeViewPlugin } from '../../models'; import { - getFirstNode, - getLastNode, - getNextNode, - getPreviousNode, + getFirstItem, + getLastItem, + getNextItem, + getPreviousItem, populateInstance, } from '../../useTreeView/useTreeView.utils'; import { @@ -52,9 +52,9 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< newFirstCharMap[node.id] = node.label!.substring(0, 1).toLowerCase(); }; - Object.values(state.nodes.nodeMap).forEach(processItem); + Object.values(state.items.nodeMap).forEach(processItem); firstCharMap.current = newFirstCharMap; - }, [state.nodes.nodeMap, params.getItemId, instance]); + }, [state.items.nodeMap, params.getItemId, instance]); const getFirstMatchingItem = (itemId: string, firstChar: string) => { let start: number; @@ -66,10 +66,10 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // This really only works since the ids are strings Object.keys(firstCharMap.current).forEach((mapItemId) => { const map = instance.getNode(mapItemId); - const visible = map.parentId ? instance.isNodeExpanded(map.parentId) : true; + const visible = map.parentId ? instance.isItemExpanded(map.parentId) : true; const shouldBeSkipped = params.disabledItemsFocusable ? false - : instance.isNodeDisabled(mapItemId); + : instance.isItemDisabled(mapItemId); if (visible && !shouldBeSkipped) { firstCharIds.push(mapItemId); @@ -100,10 +100,10 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< }; const canToggleItemSelection = (itemId: string) => - !params.disableSelection && !instance.isNodeDisabled(itemId); + !params.disableSelection && !instance.isItemDisabled(itemId); const canToggleItemExpansion = (itemId: string) => { - return !instance.isNodeDisabled(itemId) && instance.isNodeExpandable(itemId); + return !instance.isItemDisabled(itemId) && instance.isItemExpandable(itemId); }; // ARIA specification: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/#keyboardinteraction @@ -124,31 +124,31 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // eslint-disable-next-line default-case switch (true) { - // Select the node when pressing "Space" + // Select the item when pressing "Space" case key === ' ' && canToggleItemSelection(itemId): { event.preventDefault(); if (params.multiSelect && event.shiftKey) { instance.selectRange(event, { end: itemId }); } else if (params.multiSelect) { - instance.selectNode(event, itemId, true); + instance.selectItem(event, itemId, true); } else { - instance.selectNode(event, itemId); + instance.selectItem(event, itemId); } break; } - // If the focused node has children, we expand it. - // If the focused node has no children, we select it. + // If the focused item has children, we expand it. + // If the focused item has no children, we select it. case key === 'Enter': { if (canToggleItemExpansion(itemId)) { - instance.toggleNodeExpansion(event, itemId); + instance.toggleItemExpansion(event, itemId); event.preventDefault(); } else if (canToggleItemSelection(itemId)) { if (params.multiSelect) { event.preventDefault(); - instance.selectNode(event, itemId, true); - } else if (!instance.isNodeSelected(itemId)) { - instance.selectNode(event, itemId); + instance.selectItem(event, itemId, true); + } else if (!instance.isItemSelected(itemId)) { + instance.selectItem(event, itemId); event.preventDefault(); } } @@ -158,7 +158,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focus the next focusable item case key === 'ArrowDown': { - const nextItem = getNextNode(instance, itemId); + const nextItem = getNextItem(instance, itemId); if (nextItem) { event.preventDefault(); instance.focusItem(event, nextItem); @@ -182,7 +182,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the previous focusable item case key === 'ArrowUp': { - const previousItem = getPreviousNode(instance, itemId); + const previousItem = getPreviousItem(instance, itemId); if (previousItem) { event.preventDefault(); instance.focusItem(event, previousItem); @@ -207,14 +207,14 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // If the focused item is expanded, we move the focus to its first child // If the focused item is collapsed and has children, we expand it case (key === 'ArrowRight' && !isRTL) || (key === 'ArrowLeft' && isRTL): { - if (instance.isNodeExpanded(itemId)) { - const nextNodeId = getNextNode(instance, itemId); - if (nextNodeId) { - instance.focusItem(event, nextNodeId); + if (instance.isItemExpanded(itemId)) { + const nextItemId = getNextItem(instance, itemId); + if (nextItemId) { + instance.focusItem(event, nextItemId); event.preventDefault(); } } else if (canToggleItemExpansion(itemId)) { - instance.toggleNodeExpansion(event, itemId); + instance.toggleItemExpansion(event, itemId); event.preventDefault(); } @@ -224,8 +224,8 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // If the focused item is expanded, we collapse it // If the focused item is collapsed and has a parent, we move the focus to this parent case (key === 'ArrowLeft' && !isRTL) || (key === 'ArrowRight' && isRTL): { - if (canToggleItemExpansion(itemId) && instance.isNodeExpanded(itemId)) { - instance.toggleNodeExpansion(event, itemId); + if (canToggleItemExpansion(itemId) && instance.isItemExpanded(itemId)) { + instance.toggleItemExpansion(event, itemId); event.preventDefault(); } else { const parent = instance.getNode(itemId).parentId; @@ -238,12 +238,12 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< break; } - // Focuses the first node in the tree + // Focuses the first item in the tree case key === 'Home': { - instance.focusItem(event, getFirstNode(instance)); + instance.focusItem(event, getFirstItem(instance)); // Multi select behavior when pressing Ctrl + Shift + Home - // Selects the focused node and all nodes up to the first node. + // Selects the focused item and all items up to the first item. if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) { instance.rangeSelectToFirst(event, itemId); } @@ -254,7 +254,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the last item in the tree case key === 'End': { - instance.focusItem(event, getLastNode(instance)); + instance.focusItem(event, getLastItem(instance)); // Multi select behavior when pressing Ctrl + Shirt + End // Selects the focused item and all the items down to the last item. @@ -274,11 +274,11 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< } // Multi select behavior when pressing Ctrl + a - // Selects all the nodes + // Selects all the items case key === 'a' && ctrlPressed && params.multiSelect && !params.disableSelection: { instance.selectRange(event, { - start: getFirstNode(instance), - end: getLastNode(instance), + start: getFirstItem(instance), + end: getLastItem(instance), }); event.preventDefault(); break; @@ -287,9 +287,9 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Type-ahead // TODO: Support typing multiple characters case !ctrlPressed && !event.shiftKey && isPrintableCharacter(key): { - const matchingNode = getFirstMatchingItem(itemId, key); - if (matchingNode != null) { - instance.focusItem(event, matchingNode); + const matchingItem = getFirstMatchingItem(itemId, key); + if (matchingItem != null) { + instance.focusItem(event, matchingItem); event.preventDefault(); } break; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts index 729b8a875c47..053eeaaf43e6 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { TreeViewPluginSignature } from '../../models'; -import { UseTreeViewNodesSignature } from '../useTreeViewNodes'; +import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewSelectionSignature } from '../useTreeViewSelection'; import { UseTreeViewFocusSignature } from '../useTreeViewFocus'; import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion'; @@ -17,7 +17,7 @@ export interface UseTreeViewKeyboardNavigationInstance { export type UseTreeViewKeyboardNavigationSignature = TreeViewPluginSignature<{ instance: UseTreeViewKeyboardNavigationInstance; dependantPlugins: [ - UseTreeViewNodesSignature, + UseTreeViewItemsSignature, UseTreeViewSelectionSignature, UseTreeViewFocusSignature, UseTreeViewExpansionSignature, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/index.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/index.ts deleted file mode 100644 index 35b6c06d11a6..000000000000 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewNodes/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { useTreeViewNodes } from './useTreeViewNodes'; -export type { - UseTreeViewNodesSignature, - UseTreeViewNodesParameters, - UseTreeViewNodesDefaultizedParameters, -} from './useTreeViewNodes.types'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts index c382816220cb..28a570228c6e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts @@ -2,9 +2,9 @@ import * as React from 'react'; import { TreeViewPlugin, TreeViewItemRange } from '../../models'; import { populateInstance, - getNextNode, - getFirstNode, - getLastNode, + getNextItem, + getFirstItem, + getLastItem, } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewSelectionSignature } from './useTreeViewSelection.types'; import { findOrderInTremauxTree } from './useTreeViewSelection.utils'; @@ -14,7 +14,7 @@ export const useTreeViewSelection: TreeViewPlugin params, models, }) => { - const lastSelectedNode = React.useRef(null); + const lastSelectedItem = React.useRef(null); const lastSelectionWasRange = React.useRef(false); const currentRangeSelection = React.useRef([]); @@ -25,7 +25,7 @@ export const useTreeViewSelection: TreeViewPlugin if (params.onItemSelectionToggle) { if (params.multiSelect) { const addedItems = (newSelectedItems as string[]).filter( - (itemId) => !instance.isNodeSelected(itemId), + (itemId) => !instance.isItemSelected(itemId), ); const removedItems = (models.selectedItems.value as string[]).filter( (itemId) => !(newSelectedItems as string[]).includes(itemId), @@ -55,12 +55,12 @@ export const useTreeViewSelection: TreeViewPlugin models.selectedItems.setControlledValue(newSelectedItems); }; - const isNodeSelected = (itemId: string) => + const isItemSelected = (itemId: string) => Array.isArray(models.selectedItems.value) ? models.selectedItems.value.indexOf(itemId) !== -1 : models.selectedItems.value === itemId; - const selectNode = (event: React.SyntheticEvent, itemId: string, multiple = false) => { + const selectItem = (event: React.SyntheticEvent, itemId: string, multiple = false) => { if (params.disableSelection) { return; } @@ -80,28 +80,28 @@ export const useTreeViewSelection: TreeViewPlugin const newSelected = params.multiSelect ? [itemId] : itemId; setSelectedItems(event, newSelected); } - lastSelectedNode.current = itemId; + lastSelectedItem.current = itemId; lastSelectionWasRange.current = false; currentRangeSelection.current = []; }; - const getNodesInRange = (nodeAId: string, nodeBId: string) => { - const [first, last] = findOrderInTremauxTree(instance, nodeAId, nodeBId); - const nodes = [first]; + const getItemsInRange = (itemAId: string, itemBId: string) => { + const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId); + const items = [first]; let current = first; while (current !== last) { - current = getNextNode(instance, current)!; - nodes.push(current); + current = getNextItem(instance, current)!; + items.push(current); } - return nodes; + return items; }; - const handleRangeArrowSelect = (event: React.SyntheticEvent, nodes: TreeViewItemRange) => { + const handleRangeArrowSelect = (event: React.SyntheticEvent, items: TreeViewItemRange) => { let base = (models.selectedItems.value as string[]).slice(); - const { start, next, current } = nodes; + const { start, next, current } = items; if (!next || !current) { return; @@ -130,29 +130,29 @@ export const useTreeViewSelection: TreeViewPlugin const handleRangeSelect = ( event: React.SyntheticEvent, - nodes: { start: string; end: string }, + items: { start: string; end: string }, ) => { let base = (models.selectedItems.value as string[]).slice(); - const { start, end } = nodes; - // If last selection was a range selection ignore nodes that were selected. + const { start, end } = items; + // If last selection was a range selection ignore items that were selected. if (lastSelectionWasRange.current) { base = base.filter((id) => currentRangeSelection.current.indexOf(id) === -1); } - let range = getNodesInRange(start, end); - range = range.filter((node) => !instance.isNodeDisabled(node)); + let range = getItemsInRange(start, end); + range = range.filter((item) => !instance.isItemDisabled(item)); currentRangeSelection.current = range; let newSelected = base.concat(range); newSelected = newSelected.filter((id, i) => newSelected.indexOf(id) === i); setSelectedItems(event, newSelected); }; - const selectRange = (event: React.SyntheticEvent, nodes: TreeViewItemRange, stacked = false) => { + const selectRange = (event: React.SyntheticEvent, items: TreeViewItemRange, stacked = false) => { if (params.disableSelection) { return; } - const { start = lastSelectedNode.current, end, current } = nodes; + const { start = lastSelectedItem.current, end, current } = items; if (stacked) { handleRangeArrowSelect(event, { start, next: end, current }); } else if (start != null && end != null) { @@ -162,34 +162,34 @@ export const useTreeViewSelection: TreeViewPlugin }; const rangeSelectToFirst = (event: React.KeyboardEvent, itemId: string) => { - if (!lastSelectedNode.current) { - lastSelectedNode.current = itemId; + if (!lastSelectedItem.current) { + lastSelectedItem.current = itemId; } - const start = lastSelectionWasRange.current ? lastSelectedNode.current : itemId; + const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId; instance.selectRange(event, { start, - end: getFirstNode(instance), + end: getFirstItem(instance), }); }; const rangeSelectToLast = (event: React.KeyboardEvent, itemId: string) => { - if (!lastSelectedNode.current) { - lastSelectedNode.current = itemId; + if (!lastSelectedItem.current) { + lastSelectedItem.current = itemId; } - const start = lastSelectionWasRange.current ? lastSelectedNode.current : itemId; + const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId; instance.selectRange(event, { start, - end: getLastNode(instance), + end: getLastItem(instance), }); }; populateInstance(instance, { - isNodeSelected, - selectNode, + isItemSelected, + selectItem, selectRange, rangeSelectToLast, rangeSelectToFirst, @@ -213,14 +213,14 @@ useTreeViewSelection.models = { }, }; -const DEFAULT_SELECTED_NODES: string[] = []; +const DEFAULT_SELECTED_ITEMS: string[] = []; useTreeViewSelection.getDefaultizedParams = (params) => ({ ...params, disableSelection: params.disableSelection ?? false, multiSelect: params.multiSelect ?? false, defaultSelectedItems: - params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_NODES : null), + params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_ITEMS : null), }); useTreeViewSelection.params = { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts index 37d6324909ce..474a7b8f82e4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts @@ -1,12 +1,12 @@ import * as React from 'react'; import type { DefaultizedProps, TreeViewItemRange, TreeViewPluginSignature } from '../../models'; -import { UseTreeViewNodesSignature } from '../useTreeViewNodes'; +import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion'; export interface UseTreeViewSelectionInstance { - isNodeSelected: (itemId: string) => boolean; - selectNode: (event: React.SyntheticEvent, itemId: string, multiple?: boolean) => void; - selectRange: (event: React.SyntheticEvent, nodes: TreeViewItemRange, stacked?: boolean) => void; + isItemSelected: (itemId: string) => boolean; + selectItem: (event: React.SyntheticEvent, itemId: string, multiple?: boolean) => void; + selectRange: (event: React.SyntheticEvent, items: TreeViewItemRange, stacked?: boolean) => void; rangeSelectToFirst: (event: React.KeyboardEvent, itemId: string) => void; rangeSelectToLast: (event: React.KeyboardEvent, itemId: string) => void; } @@ -76,8 +76,8 @@ export type UseTreeViewSelectionSignature = TreeViewPluginSignature<{ contextValue: UseTreeViewSelectionContextValue; modelNames: 'selectedItems'; dependantPlugins: [ - UseTreeViewNodesSignature, + UseTreeViewItemsSignature, UseTreeViewExpansionSignature, - UseTreeViewNodesSignature, + UseTreeViewItemsSignature, ]; }>; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts index 7bfd556d6ba9..48553f5c6471 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts @@ -1,22 +1,22 @@ import { TreeViewInstance } from '../../models'; -import { UseTreeViewNodesSignature } from '../useTreeViewNodes'; +import { UseTreeViewItemsSignature } from '../useTreeViewItems'; /** * This is used to determine the start and end of a selection range so - * we can get the nodes between the two border nodes. + * we can get the items between the two border items. * - * It finds the nodes' common ancestor using + * It finds the items' common ancestor using * a naive implementation of a lowest common ancestor algorithm * (https://en.wikipedia.org/wiki/Lowest_common_ancestor). - * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB - * so we can compare their indexes to work out which node comes first in a depth first search. + * Then compares the ancestor's 2 children that are ancestors of itemA and ItemB + * so we can compare their indexes to work out which item comes first in a depth first search. * (https://en.wikipedia.org/wiki/Depth-first_search) * - * Another way to put it is which node is shallower in a trémaux tree + * Another way to put it is which item is shallower in a trémaux tree * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree */ export const findOrderInTremauxTree = ( - instance: TreeViewInstance<[UseTreeViewNodesSignature]>, + instance: TreeViewInstance<[UseTreeViewItemsSignature]>, nodeAId: string, nodeBId: string, ) => { diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts index 6e374cb568bb..8e8bffed2986 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts @@ -5,23 +5,23 @@ import { TreeViewUsedPublicAPI, } from '../models'; import type { UseTreeViewExpansionSignature } from '../plugins/useTreeViewExpansion'; -import type { UseTreeViewNodesSignature } from '../plugins/useTreeViewNodes'; +import type { UseTreeViewItemsSignature } from '../plugins/useTreeViewItems'; -export const getPreviousNode = ( - instance: TreeViewInstance<[UseTreeViewNodesSignature, UseTreeViewExpansionSignature]>, +export const getPreviousItem = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, itemId: string, ) => { - const item = instance.getNode(itemId); - const siblings = instance.getNavigableChildrenIds(item.parentId); + const node = instance.getNode(itemId); + const siblings = instance.getNavigableChildrenIds(node.parentId); const itemIndex = siblings.indexOf(itemId); if (itemIndex === 0) { - return item.parentId; + return node.parentId; } let currentItem: string = siblings[itemIndex - 1]; while ( - instance.isNodeExpanded(currentItem) && + instance.isItemExpanded(currentItem) && instance.getNavigableChildrenIds(currentItem).length > 0 ) { currentItem = instance.getNavigableChildrenIds(currentItem).pop()!; @@ -30,44 +30,44 @@ export const getPreviousNode = ( return currentItem; }; -export const getNextNode = ( - instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewNodesSignature]>, +export const getNextItem = ( + instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewItemsSignature]>, itemId: string, ) => { // If expanded get first child - if (instance.isNodeExpanded(itemId) && instance.getNavigableChildrenIds(itemId).length > 0) { + if (instance.isItemExpanded(itemId) && instance.getNavigableChildrenIds(itemId).length > 0) { return instance.getNavigableChildrenIds(itemId)[0]; } - let item = instance.getNode(itemId); - while (item != null) { + let node = instance.getNode(itemId); + while (node != null) { // Try to get next sibling - const siblings = instance.getNavigableChildrenIds(item.parentId); - const nextSibling = siblings[siblings.indexOf(item.id) + 1]; + const siblings = instance.getNavigableChildrenIds(node.parentId); + const nextSibling = siblings[siblings.indexOf(node.id) + 1]; if (nextSibling) { return nextSibling; } // If the sibling does not exist, go up a level to the parent and try again. - item = instance.getNode(item.parentId!); + node = instance.getNode(node.parentId!); } return null; }; -export const getLastNode = ( - instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewNodesSignature]>, +export const getLastItem = ( + instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewItemsSignature]>, ) => { let lastItem = instance.getNavigableChildrenIds(null).pop()!; - while (instance.isNodeExpanded(lastItem)) { + while (instance.isItemExpanded(lastItem)) { lastItem = instance.getNavigableChildrenIds(lastItem).pop()!; } return lastItem; }; -export const getFirstNode = (instance: TreeViewInstance<[UseTreeViewNodesSignature]>) => +export const getFirstItem = (instance: TreeViewInstance<[UseTreeViewItemsSignature]>) => instance.getNavigableChildrenIds(null)[0]; export const populateInstance = ( From 3341a1ac6c2383d79aeb54ad1d383865798070ee Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 28 Mar 2024 11:46:45 +0100 Subject: [PATCH 027/912] [fields] Fix placeholder override (#12589) --- .../tests/field.DesktopDatePicker.test.tsx | 53 +++++++++++++++++++ .../hooks/useField/useField.types.ts | 1 + .../hooks/useField/useFieldV6TextField.ts | 36 +++++++++---- 3 files changed, 80 insertions(+), 10 deletions(-) diff --git a/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx b/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx index 44097f0832b1..e485c71da98f 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx @@ -100,6 +100,59 @@ describe(' - Field', () => { }); }); + describe('slots: field', () => { + const { render, clock } = createPickerRenderer({ + clock: 'fake', + clockConfig: new Date('2018-01-01T10:05:05.000'), + }); + const { renderWithProps } = buildFieldInteractions({ + clock, + render, + Component: DesktopDatePicker, + }); + + it('should allow to override the placeholder (v6 only)', () => { + renderWithProps({ + enableAccessibleFieldDOMStructure: false, + slotProps: { + field: { + // @ts-ignore + placeholder: 'Custom placeholder', + }, + }, + }); + + const input = getTextbox(); + expectFieldPlaceholderV6(input, 'Custom placeholder'); + }); + }); + + describe('slots: textField', () => { + const { render, clock } = createPickerRenderer({ + clock: 'fake', + clockConfig: new Date('2018-01-01T10:05:05.000'), + }); + const { renderWithProps } = buildFieldInteractions({ + clock, + render, + Component: DesktopDatePicker, + }); + + it('should allow to override the placeholder (v6 only)', () => { + renderWithProps({ + enableAccessibleFieldDOMStructure: false, + slotProps: { + textField: { + placeholder: 'Custom placeholder', + }, + }, + }); + + const input = getTextbox(); + expectFieldPlaceholderV6(input, 'Custom placeholder'); + }); + }); + describeAdapters('Timezone', DesktopDatePicker, ({ adapter, renderWithProps }) => { it('should clear the selected section when all sections are completed when using timezones', () => { const v7Response = renderWithProps( diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts b/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts index 4d82ca28b4ad..d60d89b6efc0 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts @@ -170,6 +170,7 @@ export interface UseFieldV6ForwardedProps { onClick?: React.MouseEventHandler; onFocus?: () => void; onPaste?: React.ClipboardEventHandler; + placeholder?: string; } interface UseFieldV6AdditionalProps diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts index 6c666fa22ddd..4f8c89d11f41 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts @@ -80,7 +80,14 @@ export const useFieldV6TextField: UseFieldTextField = (params) => { const focusTimeoutRef = React.useRef>(); const { - forwardedProps: { onFocus, onClick, onPaste, onBlur, inputRef: inputRefProp }, + forwardedProps: { + onFocus, + onClick, + onPaste, + onBlur, + inputRef: inputRefProp, + placeholder: inPlaceholder, + }, internalProps: { readOnly = false }, parsedSelectedSections, activeSectionIndex, @@ -381,15 +388,24 @@ export const useFieldV6TextField: UseFieldTextField = (params) => { applyCharacterEditing({ keyPressed, sectionIndex: activeSectionIndex }); }); - const placeholder = React.useMemo( - () => - fieldValueManager.getV6InputValueFromSections( - getSectionsFromValue(valueManager.emptyValue), - localizedDigits, - isRTL, - ), - [fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRTL], - ); + const placeholder = React.useMemo(() => { + if (inPlaceholder) { + return inPlaceholder; + } + + return fieldValueManager.getV6InputValueFromSections( + getSectionsFromValue(valueManager.emptyValue), + localizedDigits, + isRTL, + ); + }, [ + inPlaceholder, + fieldValueManager, + getSectionsFromValue, + valueManager.emptyValue, + localizedDigits, + isRTL, + ]); const valueStr = React.useMemo( () => From 2a405a8df6d6843c42ebd22c2df23088efd51e64 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 28 Mar 2024 16:12:20 +0200 Subject: [PATCH 028/912] [DateRangePicker] Fix selection behavior with single input field when readonly (#12593) --- .../tests/DesktopDateRangePicker.test.tsx | 29 ++++++++++++ .../hooks/useEnrichedRangePickerFieldProps.ts | 2 +- .../hooks/useField/useFieldV6TextField.ts | 1 - ...ReadonlyDesktopDateRangePickerSingleV6.tsx | 16 +++++++ ...ReadonlyDesktopDateRangePickerSingleV7.tsx | 17 +++++++ test/e2e/index.test.ts | 46 +++++++++++++++++++ 6 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV6.tsx create mode 100644 test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV7.tsx diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx index d0238aae4a5e..0fef25da00a6 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx @@ -5,12 +5,14 @@ import { screen, fireEvent, userEvent, act, getByRole } from '@mui-internal/test import { createTheme, ThemeProvider } from '@mui/material/styles'; import { DesktopDateRangePicker } from '@mui/x-date-pickers-pro/DesktopDateRangePicker'; import { DateRange, LocalizationProvider } from '@mui/x-date-pickers-pro'; +import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; import { createPickerRenderer, adapterToUse, AdapterClassToUse, openPicker, getFieldSectionsContainer, + getTextbox, } from 'test/utils/pickers'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -87,6 +89,33 @@ describe('', () => { expect(screen.queryByText('Fim')).not.to.equal(null); }); + describe('Field slot: SingleInputDateRangeField', () => { + it('should add focused class to the field when it is focused', () => { + // test v7 behavior + const response = render( + , + ); + + const sectionsContainer = getFieldSectionsContainer(); + act(() => sectionsContainer.focus()); + + expect(sectionsContainer.parentElement).to.have.class('Mui-focused'); + + response.unmount(); + + // test v6 behavior + render(); + + const input = getTextbox(); + act(() => input.focus()); + + expect(input.parentElement).to.have.class('Mui-focused'); + }); + }); + describe('Component slot: Popper', () => { it('should forward onClick and onTouchStart', () => { const handleClick = spy(); diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts b/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts index cba1ca9319b0..c9f7d22249b0 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts +++ b/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts @@ -431,7 +431,7 @@ const useSingleInputFieldSlotProps = < ref: anchorRef, ...fieldProps?.InputProps, }, - focused: open, + focused: open ? true : undefined, ...(labelId != null && { id: labelId }), ...(wrapperVariant === 'mobile' && { readOnly: true }), // registering `onClick` listener on the root element as well to correctly handle cases where user is clicking on `label` diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts index 4f8c89d11f41..5547dc9a047a 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts @@ -196,7 +196,6 @@ export const useFieldV6TextField: UseFieldTextField = (params) => { const syncSelectionFromDOM = () => { if (readOnly) { - setSelectedSections(null); return; } const browserStartIndex = inputRef.current!.selectionStart ?? 0; diff --git a/test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV6.tsx b/test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV6.tsx new file mode 100644 index 000000000000..816f5326c378 --- /dev/null +++ b/test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV6.tsx @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; + +export default function ReadonlyDesktopDateRangePickerSingleV6() { + return ( + + + + ); +} diff --git a/test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV7.tsx b/test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV7.tsx new file mode 100644 index 000000000000..766693016800 --- /dev/null +++ b/test/e2e/fixtures/DatePicker/ReadonlyDesktopDateRangePickerSingleV7.tsx @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; +import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; + +export default function ReadonlyDesktopDateRangePickerSingleV7() { + return ( + + + + ); +} diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index 5da95c6441d9..97357460b867 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -803,6 +803,52 @@ async function initializeEnvironment( await page.waitForSelector('[role="tooltip"]', { state: 'detached' }); }); + + it('should have the same selection process when "readOnly" with single input v7 field', async () => { + // firefox in CI is not happy with this test + if (browserType.name() === 'firefox') { + return; + } + + await renderFixture('DatePicker/ReadonlyDesktopDateRangePickerSingleV7'); + + await page.locator(`.${pickersSectionListClasses.root}`).first().click(); + + // assert that the tooltip has been opened + await page.waitForSelector('[role="tooltip"]', { state: 'attached' }); + + await page.getByRole('gridcell', { name: '11' }).first().click(); + await page.getByRole('gridcell', { name: '13' }).first().click(); + + // assert that the tooltip closes after selection is complete + await page.waitForSelector('[role="tooltip"]', { state: 'detached' }); + + expect(await page.getByRole('textbox', { includeHidden: true }).inputValue()).to.equal( + '04/11/2022 – 04/13/2022', + ); + }); + + it('should have the same selection process when "readOnly" with single input v6 field', async () => { + // firefox in CI is not happy with this test + if (browserType.name() === 'firefox') { + return; + } + + await renderFixture('DatePicker/ReadonlyDesktopDateRangePickerSingleV6'); + + await page.getByRole('textbox').click(); + + // assert that the tooltip has been opened + await page.waitForSelector('[role="tooltip"]', { state: 'attached' }); + + await page.getByRole('gridcell', { name: '11' }).first().click(); + await page.getByRole('gridcell', { name: '13' }).first().click(); + + // assert that the tooltip closes after selection is complete + await page.waitForSelector('[role="tooltip"]', { state: 'detached' }); + + expect(await page.getByRole('textbox').inputValue()).to.equal('04/11/2022 – 04/13/2022'); + }); }); }); }); From 774ef0f98b5e2b74499a63aad879efbafd52c372 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 28 Mar 2024 19:39:07 +0500 Subject: [PATCH 029/912] [docs] Improve codemod related documentation (#12582) --- .../migration-data-grid-v6.md | 6 ++-- .../migration-pickers-v6.md | 8 +++-- packages/x-codemod/README.md | 34 +++++++++---------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 3ed538523b73..30679a6217f1 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -57,12 +57,14 @@ You can run `v7.0.0/data-grid/preset-safe` targeting only Data Grid or `v7.0.0/p You can either run it on a specific file, folder, or your entire codebase when choosing the `` argument. + + ```bash // Data Grid specific -npx @mui/x-codemod v7.0.0/data-grid/preset-safe +npx @mui/x-codemod@latest v7.0.0/data-grid/preset-safe // Target other MUI X components as well -npx @mui/x-codemod v7.0.0/preset-safe +npx @mui/x-codemod@latest v7.0.0/preset-safe ``` :::info diff --git a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md index 456e79dc53d4..035c24bfb82f 100644 --- a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md +++ b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md @@ -52,12 +52,14 @@ The `preset-safe` codemod will automatically adjust the bulk of your code to acc You can either run it on a specific file, folder, or your entire codebase when choosing the `` argument. + + ```bash // Date and Time Pickers specific -npx @mui/x-codemod v7.0.0/pickers/preset-safe +npx @mui/x-codemod@latest v7.0.0/pickers/preset-safe // Target Data Grid as well -npx @mui/x-codemod v7.0.0/preset-safe +npx @mui/x-codemod@latest v7.0.0/preset-safe ``` :::info @@ -105,7 +107,7 @@ And are removed from the v7. If not already done, this modification can be handled by the codemod ```bash -npx @mui/x-codemod v7.0.0/pickers/ +npx @mui/x-codemod@latest v7.0.0/pickers/ ``` Take a look at [the RFC](https://github.com/mui/material-ui/issues/33416) for more information. diff --git a/packages/x-codemod/README.md b/packages/x-codemod/README.md index 3a9ac6e08276..5b9c53d476d4 100644 --- a/packages/x-codemod/README.md +++ b/packages/x-codemod/README.md @@ -13,7 +13,7 @@ This repository contains a collection of codemod scripts based for use with ```bash -npx @mui/x-codemod +npx @mui/x-codemod@latest Applies a `@mui/x-codemod` to the specified paths @@ -29,8 +29,8 @@ Options: --jscodeshift Pass options directly to jscodeshift [array] Examples: - npx @mui/x-codemod v6.0.0/preset-safe src - npx @mui/x-codemod v6.0.0/component-rename-prop src -- + npx @mui/x-codemod@latest v7.0.0/preset-safe src + npx @mui/x-codemod@latest v6.0.0/component-rename-prop src -- --component=DataGrid --from=prop --to=newProp ``` @@ -40,9 +40,9 @@ To pass more options directly to jscodeshift, use `--jscodeshift=...`. For examp ```bash // single option -npx @mui/x-codemod --jscodeshift=--run-in-band +npx @mui/x-codemod@latest --jscodeshift=--run-in-band // multiple options -npx @mui/x-codemod --jscodeshift=--cpus=1 --jscodeshift=--print --jscodeshift=--dry --jscodeshift=--verbose=2 +npx @mui/x-codemod@latest --jscodeshift=--cpus=1 --jscodeshift=--print --jscodeshift=--dry --jscodeshift=--verbose=2 ``` See all available options [here](https://github.com/facebook/jscodeshift#usage-cli). @@ -53,7 +53,7 @@ Options to [recast](https://github.com/benjamn/recast)'s printer can be provided through jscodeshift's `printOptions` command line argument ```bash -npx @mui/x-codemod --jscodeshift="--printOptions='{\"quote\":\"double\"}'" +npx @mui/x-codemod@latest --jscodeshift="--printOptions='{\"quote\":\"double\"}'" ``` ## v7.0.0 @@ -66,7 +66,7 @@ It runs codemods for both Data Grid and Date and Time Pickers packages. To run codemods for a specific package, refer to the respective section. ```bash -npx @mui/x-codemod v7.0.0/preset-safe +npx @mui/x-codemod@latest v7.0.0/preset-safe ``` The corresponding sub-sections are listed below @@ -82,7 +82,7 @@ The corresponding sub-sections are listed below The `preset-safe` codemods for pickers. ```bash -npx @mui/x-codemod v7.0.0/pickers/preset-safe +npx @mui/x-codemod@latest v7.0.0/pickers/preset-safe ``` The list includes these transformers @@ -108,7 +108,7 @@ This change only affects Date and Time Picker components. ``` ```bash -npx @mui/x-codemod v7.0.0/pickers/rename-components-to-slots +npx @mui/x-codemod@latest v7.0.0/pickers/rename-components-to-slots ``` #### `rename-default-calendar-month-to-reference-date` @@ -121,7 +121,7 @@ Replace the `defaultCalendarMonth` prop with the `referenceDate` prop. ``` ```bash -npx @mui/x-codemod v7.0.0/pickers/rename-default-calendar-month-to-reference-date +npx @mui/x-codemod@latest v7.0.0/pickers/rename-default-calendar-month-to-reference-date ``` #### `rename-day-picker-classes` @@ -134,7 +134,7 @@ Rename the `dayPickerClasses` variable to `dayCalendarClasses`. ``` ```bash -npx @mui/x-codemod v7.0.0/pickers/rename-day-picker-classes +npx @mui/x-codemod@latest v7.0.0/pickers/rename-day-picker-classes ``` #### `rename-slots-types` @@ -149,7 +149,7 @@ Replace types suffix `SlotsComponent` by `Slots` and `SlotsComponentsProps` by ` ``` ```bash -npx @mui/x-codemod v7.0.0/pickers/rename-slots-types +npx @mui/x-codemod@latest v7.0.0/pickers/rename-slots-types ``` ### Data Grid codemods @@ -159,7 +159,7 @@ npx @mui/x-codemod v7.0.0/pickers/rename-slots-types The `preset-safe` codemods for data grid. ```bash -npx @mui/x-codemod v7.0.0/data-grid/preset-safe +npx @mui/x-codemod@latest v7.0.0/data-grid/preset-safe ``` The list includes these transformers @@ -184,7 +184,7 @@ This change only affects Data Grid components. ``` ```bash -npx @mui/x-codemod v7.0.0/data-grid/rename-components-to-slots +npx @mui/x-codemod@latest v7.0.0/data-grid/rename-components-to-slots ``` #### `rename-cell-selection-props` @@ -203,7 +203,7 @@ Rename props related to `cellSelection` feature. ``` ```bash -npx @mui/x-codemod v7.0.0/data-grid/rename-cell-selection-props +npx @mui/x-codemod@latest v7.0.0/data-grid/rename-cell-selection-props ``` #### `remove-stabilized-v7-experimentalFeatures` @@ -222,7 +222,7 @@ Remove feature flags for stabilized `experimentalFeatures`. ``` ```bash -npx @mui/x-codemod@next v7.0.0/data-grid/remove-stabilized-experimentalFeatures +npx @mui/x-codemod@latest v7.0.0/data-grid/remove-stabilized-experimentalFeatures ``` ### Tree View codemods @@ -232,7 +232,7 @@ npx @mui/x-codemod@next v7.0.0/data-grid/remove-stabilized-experimentalFeatures The `preset-safe` codemods for tree view. ```bash -npx @mui/x-codemod v7.0.0/tree-view/preset-safe +npx @mui/x-codemod@latest v7.0.0/tree-view/preset-safe ``` The list includes these transformers From 91c4e2c7fa498d4fbb5f33f42fbeca6aeb107b62 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:05:32 +0100 Subject: [PATCH 030/912] v7.1.0 (#12588) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Flavien DELANGLE Co-authored-by: Lukas Co-authored-by: Bilal Shafi --- CHANGELOG.md | 71 +++++++++++++++++++++ package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 6 +- packages/x-data-grid-pro/package.json | 4 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 4 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 10 files changed, 84 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e885ff6e1e0f..20431eaeb0da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,77 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.1.0 + +_Mar 28, 2024_ + +We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨: + +- 🚀 Add `resizeThrottleMs` prop (#12556) @romgrk +- 🌍 Improve Chinese (Hong Kong) (zh-HK) and Italian (it-IT) locale on the Pickers +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@7.1.0` + +- [DataGrid] Add `resizeThrottleMs` prop (#12556) @romgrk +- [DataGrid] Do not publish `rowEditStop` event if row has fields with errors (#11383) @cherniavskii +- [DataGrid] Fix bug in suspense (#12553) @romgrk +- [DataGrid] Fix missing class name in the `GridToolbarQuickFilter` component (#12484) @jhawkins11 + +#### `@mui/x-data-grid-pro@7.1.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.1.0`. + +#### `@mui/x-data-grid-premium@7.1.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.1.0`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.1.0` + +- [fields] Fix placeholder override (#12589) @flaviendelangle +- [l10n] Improve Chinese (Hong Kong) (zh-HK) locale (#12547) @samchiu90 +- [l10n] Improve Italian (it-IT) locale (#12549) @antomanc +- [pickers] Prepare compatibility with `@mui/zero-runtime` (stop using `ownerState` in `styled`) (#12003) @flaviendelangle + +#### `@mui/x-date-pickers-pro@7.1.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.1.0`, plus: + +- [DateRangePicker] Fix selection behavior with single input field when `readOnly` (#12593) @LukasTy + +### Charts + +#### `@mui/x-charts@7.1.0` + +- [charts] Fix tooltip causing crash on data change (#12571) @Rishi556 + +### Tree View + +#### `@mui/x-tree-view@7.1.0` + +- [TreeView] Do not use outdated version of the state to compute new label first char in `RichTreeView` (#12512) @flaviendelangle + +### Docs + +- [docs] Add example to add a second icon next to the field's opening button (#12524) @flaviendelangle +- [docs] Add missing note to Data Grid migration guide (#12557) @romgrk +- [docs] Fix Charts title for SEO (#12545) @oliviertassinari +- [docs] Fix small typo (#12558) @diogoparente +- [docs] Improve codemod related documentation (#12582) @MBilalShafi +- [docs] Reduce noise in migration docs side navigation (#12552) @cherniavskii +- [docs] Sync static images from core repository (#12525) @LukasTy + +### Core + +- [core] Fix `l10n` script on Windows (#12550) @LukasTy +- [core] Include `DateTimeRangePicker` tag in `releaseChangelog` (#12526) @LukasTy +- [core] Upgrade monorepo (#12536) @cherniavskii + ## v7.0.0 _Mar 22, 2024_ diff --git a/package.json b/package.json index e0d3d46d991b..59865fcf1ee8 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.0.0", + "version": "7.1.0", "private": true, "scripts": { "start": "yarn && yarn docs:dev", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 0dac51e3288b..10834c1fb58b 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.0.0", + "version": "7.1.0", "description": "The community edition of the charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 0d1d90500c68..b08bfd399600 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -34,7 +34,7 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@mui/base": "^5.0.0-beta.40", - "@mui/x-data-grid-premium": "7.0.0", + "@mui/x-data-grid-premium": "7.1.0", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 48ebefe940c2..2885218e39a5 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.0.0", + "version": "7.1.0", "description": "The Premium plan edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.0.0", - "@mui/x-data-grid-pro": "7.0.0", + "@mui/x-data-grid": "7.1.0", + "@mui/x-data-grid-pro": "7.1.0", "@mui/x-license": "7.0.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 24b27a4ebb19..0fca8b43f4c4 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.0.0", + "version": "7.1.0", "description": "The Pro plan edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,7 +45,7 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.0.0", + "@mui/x-data-grid": "7.1.0", "@mui/x-license": "7.0.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 00b3f3c8a3d8..6dac6546e666 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.0.0", + "version": "7.1.0", "description": "The community edition of the data grid component (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index effd9cda07e0..e3a1e0c95196 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.0.0", + "version": "7.1.0", "description": "The commercial edition of the date picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,7 +45,7 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-date-pickers": "7.0.0", + "@mui/x-date-pickers": "7.1.0", "@mui/x-license": "7.0.0", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 7746d0ab63b6..4e7f731b8319 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.0.0", + "version": "7.1.0", "description": "The community edition of the date picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 0e99bd3721ff..3e742b593dba 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.0.0", + "version": "7.1.0", "description": "The community edition of the tree view components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From b591c46fed735fa39b6ddba2d0a6ea4c1c4cba33 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Thu, 28 Mar 2024 19:53:51 +0100 Subject: [PATCH 031/912] [charts] Fix `ticInterval` usage for y-axis (#12592) --- packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index 440f95913839..e74ad4ab9cca 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -68,6 +68,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { slotProps, tickPlacement, tickLabelPlacement, + tickInterval, } = defaultizedProps; const theme = useTheme(); @@ -83,6 +84,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { valueFormatter, tickPlacement, tickLabelPlacement, + tickInterval, }); const positionSign = position === 'right' ? 1 : -1; From 7e2d2ece8ff55fc9f2c18c801268e36f3ddd4783 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 29 Mar 2024 10:38:25 +0200 Subject: [PATCH 032/912] [core] Remove explicit `express` package (#12602) --- docs/package.json | 1 - yarn.lock | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index 3f427728648f..ec7054e9d6f9 100644 --- a/docs/package.json +++ b/docs/package.json @@ -57,7 +57,6 @@ "dayjs": "^1.11.10", "doctrine": "^3.0.0", "exceljs": "^4.4.0", - "express": "^4.18.3", "fg-loadcss": "^3.1.0", "fs-extra": "^11.2.0", "lodash": "^4.17.21", diff --git a/yarn.lock b/yarn.lock index 423740868a85..cf72918bf0d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7280,7 +7280,7 @@ exponential-backoff@^3.1.1: resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== -express@^4.16.4, express@^4.18.3: +express@^4.16.4: version "4.18.3" resolved "https://registry.yarnpkg.com/express/-/express-4.18.3.tgz#6870746f3ff904dee1819b82e4b51509afffb0d4" integrity sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw== From 28da4cade4bd0c470b1d88c1eb7118e1fb3a8f50 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 29 Mar 2024 11:59:09 +0100 Subject: [PATCH 033/912] [docs] Move data grid interfaces to standard API page layout (#12016) Co-authored-by: Andrew Cherniavskyi --- .../x/api/data-grid/grid-actions-col-def.js | 27 +- .../x/api/data-grid/grid-actions-col-def.json | 99 ++++ .../x/api/data-grid/grid-actions-col-def.md | 71 --- .../data-grid/grid-aggregation-function.js | 27 +- .../data-grid/grid-aggregation-function.json | 33 ++ .../data-grid/grid-aggregation-function.md | 29 -- docs/pages/x/api/data-grid/grid-api.js | 27 +- docs/pages/x/api/data-grid/grid-api.json | 493 ++++++++++++++++++ docs/pages/x/api/data-grid/grid-api.md | 149 ------ .../pages/x/api/data-grid/grid-cell-params.js | 27 +- .../x/api/data-grid/grid-cell-params.json | 21 + .../pages/x/api/data-grid/grid-cell-params.md | 29 -- docs/pages/x/api/data-grid/grid-col-def.js | 27 +- docs/pages/x/api/data-grid/grid-col-def.json | 93 ++++ docs/pages/x/api/data-grid/grid-col-def.md | 70 --- .../api/data-grid/grid-csv-export-options.js | 27 +- .../data-grid/grid-csv-export-options.json | 21 + .../api/data-grid/grid-csv-export-options.md | 35 -- .../data-grid/grid-excel-export-options.js | 27 +- .../data-grid/grid-excel-export-options.json | 47 ++ .../data-grid/grid-excel-export-options.md | 34 -- .../api/data-grid/grid-export-state-params.js | 27 +- .../data-grid/grid-export-state-params.json | 12 + .../api/data-grid/grid-export-state-params.md | 28 - .../pages/x/api/data-grid/grid-filter-item.js | 27 +- .../x/api/data-grid/grid-filter-item.json | 15 + .../pages/x/api/data-grid/grid-filter-item.md | 31 -- .../x/api/data-grid/grid-filter-model.js | 27 +- .../x/api/data-grid/grid-filter-model.json | 22 + .../x/api/data-grid/grid-filter-model.md | 32 -- .../x/api/data-grid/grid-filter-operator.js | 27 +- .../x/api/data-grid/grid-filter-operator.json | 24 + .../x/api/data-grid/grid-filter-operator.md | 35 -- .../data-grid/grid-print-export-options.js | 27 +- .../data-grid/grid-print-export-options.json | 23 + .../data-grid/grid-print-export-options.md | 37 -- .../data-grid/grid-row-class-name-params.js | 27 +- .../data-grid/grid-row-class-name-params.json | 17 + .../data-grid/grid-row-class-name-params.md | 33 -- docs/pages/x/api/data-grid/grid-row-params.js | 27 +- .../x/api/data-grid/grid-row-params.json | 14 + docs/pages/x/api/data-grid/grid-row-params.md | 30 -- .../api/data-grid/grid-row-spacing-params.js | 27 +- .../data-grid/grid-row-spacing-params.json | 16 + .../api/data-grid/grid-row-spacing-params.md | 32 -- .../data-grid/grid-single-select-col-def.js | 27 +- .../data-grid/grid-single-select-col-def.json | 104 ++++ .../data-grid/grid-single-select-col-def.md | 73 --- .../api/buildInterfacesDocumentation.ts | 237 +++++---- docs/scripts/api/utils.ts | 6 +- .../modules/components/InterfaceApiPage.js | 184 +++++++ .../data-grid/grid-actions-col-def.json | 95 ++++ .../data-grid/grid-aggregation-function.json | 23 + .../api-docs/data-grid/grid-api.json | 257 +++++++++ .../api-docs/data-grid/grid-cell-params.json | 18 + .../api-docs/data-grid/grid-col-def.json | 94 ++++ .../data-grid/grid-csv-export-options.json | 25 + .../data-grid/grid-excel-export-options.json | 32 ++ .../data-grid/grid-export-state-params.json | 8 + .../api-docs/data-grid/grid-filter-item.json | 13 + .../api-docs/data-grid/grid-filter-model.json | 16 + .../data-grid/grid-filter-operator.json | 25 + .../data-grid/grid-print-export-options.json | 29 ++ .../data-grid/grid-row-class-name-params.json | 13 + .../api-docs/data-grid/grid-row-params.json | 8 + .../data-grid/grid-row-spacing-params.json | 12 + .../data-grid/grid-single-select-col-def.json | 101 ++++ 67 files changed, 2499 insertions(+), 931 deletions(-) create mode 100644 docs/pages/x/api/data-grid/grid-actions-col-def.json delete mode 100644 docs/pages/x/api/data-grid/grid-actions-col-def.md create mode 100644 docs/pages/x/api/data-grid/grid-aggregation-function.json delete mode 100644 docs/pages/x/api/data-grid/grid-aggregation-function.md create mode 100644 docs/pages/x/api/data-grid/grid-api.json delete mode 100644 docs/pages/x/api/data-grid/grid-api.md create mode 100644 docs/pages/x/api/data-grid/grid-cell-params.json delete mode 100644 docs/pages/x/api/data-grid/grid-cell-params.md create mode 100644 docs/pages/x/api/data-grid/grid-col-def.json delete mode 100644 docs/pages/x/api/data-grid/grid-col-def.md create mode 100644 docs/pages/x/api/data-grid/grid-csv-export-options.json delete mode 100644 docs/pages/x/api/data-grid/grid-csv-export-options.md create mode 100644 docs/pages/x/api/data-grid/grid-excel-export-options.json delete mode 100644 docs/pages/x/api/data-grid/grid-excel-export-options.md create mode 100644 docs/pages/x/api/data-grid/grid-export-state-params.json delete mode 100644 docs/pages/x/api/data-grid/grid-export-state-params.md create mode 100644 docs/pages/x/api/data-grid/grid-filter-item.json delete mode 100644 docs/pages/x/api/data-grid/grid-filter-item.md create mode 100644 docs/pages/x/api/data-grid/grid-filter-model.json delete mode 100644 docs/pages/x/api/data-grid/grid-filter-model.md create mode 100644 docs/pages/x/api/data-grid/grid-filter-operator.json delete mode 100644 docs/pages/x/api/data-grid/grid-filter-operator.md create mode 100644 docs/pages/x/api/data-grid/grid-print-export-options.json delete mode 100644 docs/pages/x/api/data-grid/grid-print-export-options.md create mode 100644 docs/pages/x/api/data-grid/grid-row-class-name-params.json delete mode 100644 docs/pages/x/api/data-grid/grid-row-class-name-params.md create mode 100644 docs/pages/x/api/data-grid/grid-row-params.json delete mode 100644 docs/pages/x/api/data-grid/grid-row-params.md create mode 100644 docs/pages/x/api/data-grid/grid-row-spacing-params.json delete mode 100644 docs/pages/x/api/data-grid/grid-row-spacing-params.md create mode 100644 docs/pages/x/api/data-grid/grid-single-select-col-def.json delete mode 100644 docs/pages/x/api/data-grid/grid-single-select-col-def.md create mode 100644 docs/src/modules/components/InterfaceApiPage.js create mode 100644 docs/translations/api-docs/data-grid/grid-actions-col-def.json create mode 100644 docs/translations/api-docs/data-grid/grid-aggregation-function.json create mode 100644 docs/translations/api-docs/data-grid/grid-api.json create mode 100644 docs/translations/api-docs/data-grid/grid-cell-params.json create mode 100644 docs/translations/api-docs/data-grid/grid-col-def.json create mode 100644 docs/translations/api-docs/data-grid/grid-csv-export-options.json create mode 100644 docs/translations/api-docs/data-grid/grid-excel-export-options.json create mode 100644 docs/translations/api-docs/data-grid/grid-export-state-params.json create mode 100644 docs/translations/api-docs/data-grid/grid-filter-item.json create mode 100644 docs/translations/api-docs/data-grid/grid-filter-model.json create mode 100644 docs/translations/api-docs/data-grid/grid-filter-operator.json create mode 100644 docs/translations/api-docs/data-grid/grid-print-export-options.json create mode 100644 docs/translations/api-docs/data-grid/grid-row-class-name-params.json create mode 100644 docs/translations/api-docs/data-grid/grid-row-params.json create mode 100644 docs/translations/api-docs/data-grid/grid-row-spacing-params.json create mode 100644 docs/translations/api-docs/data-grid/grid-single-select-col-def.json diff --git a/docs/pages/x/api/data-grid/grid-actions-col-def.js b/docs/pages/x/api/data-grid/grid-actions-col-def.js index 7ca29be5152e..94781bd89118 100644 --- a/docs/pages/x/api/data-grid/grid-actions-col-def.js +++ b/docs/pages/x/api/data-grid/grid-actions-col-def.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-actions-col-def.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-actions-col-def.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-actions-col-def.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-actions-col-def.json b/docs/pages/x/api/data-grid/grid-actions-col-def.json new file mode 100644 index 000000000000..ca909eb5cbaa --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-actions-col-def.json @@ -0,0 +1,99 @@ +{ + "name": "GridActionsColDef", + "imports": [ + "import { GridActionsColDef } from '@mui/x-data-grid-premium'", + "import { GridActionsColDef } from '@mui/x-data-grid-pro'", + "import { GridActionsColDef } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "field": { "type": { "description": "string" }, "required": true }, + "getActions": { + "type": { + "description": "(params: GridRowParams<R>) => React.ReactElement<GridActionsCellItemProps>[]" + }, + "required": true + }, + "type": { "type": { "description": "'actions'" }, "default": "'actions'", "required": true }, + "aggregable": { + "type": { "description": "boolean" }, + "default": "true", + "isPremiumPlan": true + }, + "align": { "type": { "description": "GridAlignment" } }, + "availableAggregationFunctions": { + "type": { "description": "string[]" }, + "isPremiumPlan": true + }, + "cellClassName": { "type": { "description": "GridCellClassNamePropType<R, V>" } }, + "colSpan": { + "type": { "description": "number | GridColSpanFn<R, V, F>" }, + "default": "1" + }, + "description": { "type": { "description": "string" } }, + "disableColumnMenu": { "type": { "description": "boolean" }, "default": "false" }, + "disableExport": { "type": { "description": "boolean" }, "default": "false" }, + "disableReorder": { "type": { "description": "boolean" }, "default": "false" }, + "display": { "type": { "description": "'text' | 'flex'" } }, + "editable": { "type": { "description": "boolean" }, "default": "false" }, + "filterable": { "type": { "description": "boolean" }, "default": "true" }, + "filterOperators": { "type": { "description": "GridFilterOperator<R, V, F>[]" } }, + "flex": { "type": { "description": "number" } }, + "getApplyQuickFilterFn": { "type": { "description": "GetApplyQuickFilterFn<R, V>" } }, + "getSortComparator": { + "type": { + "description": "(sortDirection: GridSortDirection) => GridComparatorFn<V> | undefined" + } + }, + "groupable": { "type": { "description": "boolean" }, "default": "true" }, + "groupingValueGetter": { + "type": { "description": "GridGroupingValueGetter<R>" }, + "isPremiumPlan": true + }, + "headerAlign": { "type": { "description": "GridAlignment" } }, + "headerClassName": { "type": { "description": "GridColumnHeaderClassNamePropType" } }, + "headerName": { "type": { "description": "string" } }, + "hideable": { "type": { "description": "boolean" }, "default": "true" }, + "hideSortIcons": { "type": { "description": "boolean" }, "default": "false" }, + "maxWidth": { "type": { "description": "number" }, "default": "Infinity" }, + "minWidth": { "type": { "description": "number" }, "default": "50" }, + "pastedValueParser": { + "type": { "description": "GridPastedValueParser<R, V, F>" }, + "isPremiumPlan": true + }, + "pinnable": { "type": { "description": "boolean" }, "default": "true" }, + "preProcessEditCellProps": { + "type": { + "description": "(params: GridPreProcessEditCellProps) => GridEditCellProps | Promise<GridEditCellProps>" + } + }, + "renderCell": { + "type": { + "description": "(params: GridRenderCellParams<R, V, F>) => React.ReactNode" + } + }, + "renderEditCell": { + "type": { + "description": "(params: GridRenderEditCellParams<R, V, F>) => React.ReactNode" + } + }, + "renderHeader": { + "type": { + "description": "(params: GridColumnHeaderParams<R, V, F>) => React.ReactNode" + } + }, + "renderHeaderFilter": { + "type": { "description": "(params: GridRenderHeaderFilterProps) => React.ReactNode" }, + "isProPlan": true + }, + "resizable": { "type": { "description": "boolean" }, "default": "true" }, + "sortable": { "type": { "description": "boolean" }, "default": "true" }, + "sortComparator": { "type": { "description": "GridComparatorFn<V>" } }, + "sortingOrder": { "type": { "description": "GridSortDirection[]" } }, + "valueFormatter": { "type": { "description": "GridValueFormatter<R, V, F>" } }, + "valueGetter": { "type": { "description": "GridValueGetter<R, V, F>" } }, + "valueParser": { "type": { "description": "GridValueParser<R, V, F>" } }, + "valueSetter": { "type": { "description": "GridValueSetter<R, V, F>" } }, + "width": { "type": { "description": "number" }, "default": "100" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-actions-col-def.md b/docs/pages/x/api/data-grid/grid-actions-col-def.md deleted file mode 100644 index e1f9daf908f4..000000000000 --- a/docs/pages/x/api/data-grid/grid-actions-col-def.md +++ /dev/null @@ -1,71 +0,0 @@ -# GridActionsColDef Interface - -

Column Definition interface used for columns with the `actions` type.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Special column properties](/x/react-data-grid/column-definition/#special-properties) - -::: - -## Import - -```js -import { GridActionsColDef } from '@mui/x-data-grid-premium'; -// or -import { GridActionsColDef } from '@mui/x-data-grid-pro'; -// or -import { GridActionsColDef } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| aggregable? [](/x/introduction/licensing/#premium-plan) | boolean | true | If `true`, the cells of the column can be aggregated based. | -| align? | GridAlignment | | Allows to align the column values in cells. | -| availableAggregationFunctions? [](/x/introduction/licensing/#premium-plan) | string[] | | Limit the aggregation function usable on this column.
By default, the column will have all the aggregation functions that are compatible with its type. | -| cellClassName? | GridCellClassNamePropType<R, V> | | Class name that will be added in cells for that column. | -| colSpan? | number \| GridColSpanFn<R, V, F> | 1 | Number of columns a cell should span. | -| description? | string | | The description of the column rendered as tooltip if the column header name is not fully displayed. | -| disableColumnMenu? | boolean | false | If `true`, the column menu is disabled for this column. | -| disableExport? | boolean | false | If `true`, this column will not be included in exports. | -| disableReorder? | boolean | false | If `true`, this column cannot be reordered. | -| display? | 'text' \| 'flex' | | Display mode for the cell:
- 'text': For text-based cells (default)
- 'flex': For cells with HTMLElement children | -| editable? | boolean | false | If `true`, the cells of the column are editable. | -| field | string | | The column identifier. It's used to map with GridRowModel values. | -| filterable? | boolean | true | If `true`, the column is filterable. | -| filterOperators? | GridFilterOperator<R, V, F>[] | | Allows setting the filter operators for this column. | -| flex? | number | | If set, it indicates that a column has fluid width. Range [0, ∞). | -| getActions | (params: GridRowParams<R>) => React.ReactElement<GridActionsCellItemProps>[] | | Function that returns the actions to be shown. | -| getApplyQuickFilterFn? | GetApplyQuickFilterFn<R, V> | | The callback that generates a filtering function for a given quick filter value.
This function can return `null` to skip filtering for this value and column. | -| getSortComparator? | (sortDirection: GridSortDirection) => GridComparatorFn<V> \| undefined | | Allows to use a different comparator function depending on the sort direction.
Takes precedence over `sortComparator`. | -| groupable? | boolean | true | If `true`, the rows can be grouped based on this column values (pro-plan only).
Only available in DataGridPremium. | -| groupingValueGetter? [](/x/introduction/licensing/#premium-plan) | GridGroupingValueGetter<R> | | Function that transforms a complex cell value into a key that be used for grouping the rows. | -| headerAlign? | GridAlignment | | Header cell element alignment. | -| headerClassName? | GridColumnHeaderClassNamePropType | | Class name that will be added in the column header cell. | -| headerName? | string | | The title of the column rendered in the column header cell. | -| hideable? | boolean | true | If `false`, removes the buttons for hiding this column. | -| hideSortIcons? | boolean | false | Toggle the visibility of the sort icons. | -| maxWidth? | number | Infinity | Sets the maximum width of a column. | -| minWidth? | number | 50 | Sets the minimum width of a column. | -| pastedValueParser? [](/x/introduction/licensing/#premium-plan) | GridPastedValueParser<R, V, F> | | Function that takes the clipboard-pasted value and converts it to a value used internally. | -| pinnable? | boolean | true | If `false`, the menu items for column pinning menu will not be rendered.
Only available in DataGridPro. | -| preProcessEditCellProps? | (params: GridPreProcessEditCellProps) => GridEditCellProps \| Promise<GridEditCellProps> | | Callback fired when the edit props of the cell changes.
It allows to process the props that saved into the state. | -| renderCell? | (params: GridRenderCellParams<R, V, F>) => React.ReactNode | | Allows to override the component rendered as cell for this column. | -| renderEditCell? | (params: GridRenderEditCellParams<R, V, F>) => React.ReactNode | | Allows to override the component rendered in edit cell mode for this column. | -| renderHeader? | (params: GridColumnHeaderParams<R, V, F>) => React.ReactNode | | Allows to render a component in the column header cell. | -| renderHeaderFilter? [](/x/introduction/licensing/#pro-plan) | (params: GridRenderHeaderFilterProps) => React.ReactNode | | Allows to render a component in the column header filter cell. | -| resizable? | boolean | true | If `true`, the column is resizable. | -| sortable? | boolean | true | If `true`, the column is sortable. | -| sortComparator? | GridComparatorFn<V> | | A comparator function used to sort rows. | -| sortingOrder? | GridSortDirection[] | | The order of the sorting sequence. | -| type | 'actions' | 'actions' | The type of the column. | -| valueFormatter? | GridValueFormatter<R, V, F> | | Function that allows to apply a formatter before rendering its value. | -| valueGetter? | GridValueGetter<R, V, F> | | Function that allows to get a specific data instead of field to render in the cell. | -| valueParser? | GridValueParser<R, V, F> | | Function that takes the user-entered value and converts it to a value used internally. | -| valueSetter? | GridValueSetter<R, V, F> | | Function that allows to customize how the entered value is stored in the row.
It only works with cell/row editing. | -| width? | number | 100 | Set the width of the column. | diff --git a/docs/pages/x/api/data-grid/grid-aggregation-function.js b/docs/pages/x/api/data-grid/grid-aggregation-function.js index c2255c2117ca..3cf533597da1 100644 --- a/docs/pages/x/api/data-grid/grid-aggregation-function.js +++ b/docs/pages/x/api/data-grid/grid-aggregation-function.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-aggregation-function.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-aggregation-function.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-aggregation-function.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-aggregation-function.json b/docs/pages/x/api/data-grid/grid-aggregation-function.json new file mode 100644 index 000000000000..e4209cf783dd --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-aggregation-function.json @@ -0,0 +1,33 @@ +{ + "name": "GridAggregationFunction", + "imports": ["import { GridAggregationFunction } from '@mui/x-data-grid-premium'"], + "demos": "", + "properties": { + "apply": { + "type": { + "description": "(params: GridAggregationParams<V>) => AV | null | undefined" + }, + "required": true, + "isPremiumPlan": true + }, + "columnTypes": { "type": { "description": "string[]" }, "isPremiumPlan": true }, + "getCellValue": { + "type": { "description": "(params: GridAggregationGetCellValueParams) => V" }, + "isPremiumPlan": true + }, + "hasCellUnit": { + "type": { "description": "boolean" }, + "default": "`true`", + "isPremiumPlan": true + }, + "label": { + "type": { "description": "string" }, + "default": "`apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)})`", + "isPremiumPlan": true + }, + "valueFormatter": { + "type": { "description": "(params: GridValueFormatterParams<AV>) => FAV" }, + "isPremiumPlan": true + } + } +} diff --git a/docs/pages/x/api/data-grid/grid-aggregation-function.md b/docs/pages/x/api/data-grid/grid-aggregation-function.md deleted file mode 100644 index 6500040e6dda..000000000000 --- a/docs/pages/x/api/data-grid/grid-aggregation-function.md +++ /dev/null @@ -1,29 +0,0 @@ -# GridAggregationFunction Interface - -

Grid aggregation function definition interface.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Aggregation functions](/x/react-data-grid/aggregation/#aggregation-functions) - -::: - -## Import - -```js -import { GridAggregationFunction } from '@mui/x-data-grid-premium'; -``` - -## Properties - -| Name | Type | Default | Description | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| apply [](/x/introduction/licensing/#premium-plan) | (params: GridAggregationParams<V>) => AV \| null \| undefined | | Function that takes the current cell values and generates the aggregated value. | -| columnTypes? [](/x/introduction/licensing/#premium-plan) | string[] | | Column types supported by this aggregation function.
If not defined, all types are supported (in most cases this property should be defined). | -| getCellValue? [](/x/introduction/licensing/#premium-plan) | (params: GridAggregationGetCellValueParams) => V | | Function that allows to transform the value of the cell passed to the aggregation function applier.
Useful for aggregating data from multiple row fields. | -| hasCellUnit? [](/x/introduction/licensing/#premium-plan) | boolean | `true` | Indicates if the aggregated value have the same unit as the cells used to generate it.
It can be used to apply a custom cell renderer only if the aggregated value has the same unit. | -| label? [](/x/introduction/licensing/#premium-plan) | string | `apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)})` | Label of the aggregation function.
Will be used to add a label on the footer of the grouping column when this aggregation function is the only one being used. | -| valueFormatter? [](/x/introduction/licensing/#premium-plan) | (params: GridValueFormatterParams<AV>) => FAV | | Function that allows to apply a formatter to the aggregated value.
If not defined, the grid will use the formatter of the column. | diff --git a/docs/pages/x/api/data-grid/grid-api.js b/docs/pages/x/api/data-grid/grid-api.js index 3ec62f326b40..b79184bd8dcb 100644 --- a/docs/pages/x/api/data-grid/grid-api.js +++ b/docs/pages/x/api/data-grid/grid-api.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-api.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-api.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-api.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-api.json b/docs/pages/x/api/data-grid/grid-api.json new file mode 100644 index 000000000000..4acb3f3986bb --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-api.json @@ -0,0 +1,493 @@ +{ + "name": "GridApi", + "imports": [ + "import { GridApi } from '@mui/x-data-grid-premium'", + "import { GridApi } from '@mui/x-data-grid-pro'", + "import { GridApi } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "addRowGroupingCriteria": { + "type": { + "description": "(groupingCriteriaField: string, groupingIndex?: number) => void" + }, + "required": true, + "isPremiumPlan": true + }, + "applySorting": { "type": { "description": "() => void" }, "required": true }, + "autosizeColumns": { + "type": { "description": "(options?: GridAutosizeOptions) => Promise<void>" }, + "required": true + }, + "deleteFilterItem": { + "type": { "description": "(item: GridFilterItem) => void" }, + "required": true + }, + "exportDataAsCsv": { + "type": { "description": "(options?: GridCsvExportOptions) => void" }, + "required": true + }, + "exportDataAsExcel": { + "type": { "description": "(options?: GridExcelExportOptions) => Promise<void>" }, + "required": true, + "isPremiumPlan": true + }, + "exportDataAsPrint": { + "type": { "description": "(options?: GridPrintExportOptions) => void" }, + "required": true + }, + "exportState": { + "type": { "description": "(params?: GridExportStateParams) => InitialState" }, + "required": true + }, + "forceUpdate": { "type": { "description": "() => void" }, "required": true }, + "getAllColumns": { "type": { "description": "() => GridStateColDef[]" }, "required": true }, + "getAllGroupDetails": { + "type": { "description": "() => GridColumnGroupLookup" }, + "required": true + }, + "getAllRowIds": { "type": { "description": "() => GridRowId[]" }, "required": true }, + "getCellElement": { + "type": { "description": "(id: GridRowId, field: string) => HTMLDivElement | null" }, + "required": true + }, + "getCellMode": { + "type": { "description": "(id: GridRowId, field: string) => GridCellMode" }, + "required": true + }, + "getCellParams": { + "type": { + "description": "<R extends GridValidRowModel = any, V = unknown, F = V, N extends GridTreeNode = GridTreeNode>(id: GridRowId, field: string) => GridCellParams<R, V, F, N>" + }, + "required": true + }, + "getCellSelectionModel": { + "type": { "description": "() => GridCellSelectionModel" }, + "required": true, + "isPremiumPlan": true + }, + "getCellValue": { + "type": { + "description": "<V extends any = any>(id: GridRowId, field: string) => V" + }, + "required": true + }, + "getColumn": { + "type": { "description": "(field: string) => GridStateColDef" }, + "required": true + }, + "getColumnGroupPath": { + "type": { "description": "(field: string) => GridColumnGroup['groupId'][]" }, + "required": true + }, + "getColumnHeaderElement": { + "type": { "description": "(field: string) => HTMLDivElement | null" }, + "required": true + }, + "getColumnHeaderParams": { + "type": { "description": "(field: string) => GridColumnHeaderParams" }, + "required": true + }, + "getColumnIndex": { + "type": { "description": "(field: string, useVisibleColumns?: boolean) => number" }, + "required": true + }, + "getColumnIndexRelativeToVisibleColumns": { + "type": { "description": "(field: string) => number" }, + "required": true + }, + "getColumnPosition": { + "type": { "description": "(field: string) => number" }, + "required": true + }, + "getDataAsCsv": { + "type": { "description": "(options?: GridCsvExportOptions) => string" }, + "required": true + }, + "getDataAsExcel": { + "type": { + "description": "(options?: GridExcelExportOptions) => Promise<Excel.Workbook> | null" + }, + "required": true, + "isPremiumPlan": true + }, + "getExpandedDetailPanels": { + "type": { "description": "() => GridRowId[]" }, + "required": true, + "isProPlan": true + }, + "getLocaleText": { + "type": { + "description": "<T extends GridTranslationKeys>(key: T) => GridLocaleText[T]" + }, + "required": true + }, + "getPinnedColumns": { + "type": { "description": "() => GridPinnedColumnFields" }, + "required": true, + "isProPlan": true + }, + "getRootDimensions": { "type": { "description": "() => GridDimensions" }, "required": true }, + "getRow": { + "type": { + "description": "<R extends GridValidRowModel = any>(id: GridRowId) => R | null" + }, + "required": true + }, + "getRowElement": { + "type": { "description": "(id: GridRowId) => HTMLDivElement | null" }, + "required": true + }, + "getRowGroupChildren": { + "type": { "description": "(params: GridRowGroupChildrenGetterParams) => GridRowId[]" }, + "required": true, + "isProPlan": true + }, + "getRowId": { + "type": { + "description": "<R extends GridValidRowModel = any>(row: R) => GridRowId" + }, + "required": true + }, + "getRowIdFromRowIndex": { + "type": { "description": "(index: number) => GridRowId" }, + "required": true + }, + "getRowIndexRelativeToVisibleRows": { + "type": { "description": "(id: GridRowId) => number" }, + "required": true + }, + "getRowMode": { + "type": { "description": "(id: GridRowId) => GridRowMode" }, + "required": true + }, + "getRowModels": { + "type": { "description": "() => Map<GridRowId, GridRowModel>" }, + "required": true + }, + "getRowNode": { + "type": { "description": "<N extends GridTreeNode>(id: GridRowId) => N | null" }, + "required": true + }, + "getRowParams": { + "type": { "description": "(id: GridRowId) => GridRowParams" }, + "required": true + }, + "getRowsCount": { "type": { "description": "() => number" }, "required": true }, + "getRowWithUpdatedValues": { + "type": { "description": "(id: GridRowId, field: string) => GridRowModel" }, + "required": true + }, + "getScrollPosition": { + "type": { "description": "() => GridScrollParams" }, + "required": true + }, + "getSelectedCellsAsArray": { + "type": { "description": "() => GridCellCoordinates[]" }, + "required": true, + "isPremiumPlan": true + }, + "getSelectedRows": { + "type": { "description": "() => Map<GridRowId, GridRowModel>" }, + "required": true + }, + "getSortedRowIds": { "type": { "description": "() => GridRowId[]" }, "required": true }, + "getSortedRows": { "type": { "description": "() => GridRowModel[]" }, "required": true }, + "getSortModel": { "type": { "description": "() => GridSortModel" }, "required": true }, + "getVisibleColumns": { + "type": { "description": "() => GridStateColDef[]" }, + "required": true + }, + "hideColumnMenu": { "type": { "description": "() => void" }, "required": true }, + "hideFilterPanel": { "type": { "description": "() => void" }, "required": true }, + "hideHeaderFilterMenu": { "type": { "description": "() => void" }, "required": true }, + "hidePreferences": { "type": { "description": "() => void" }, "required": true }, + "ignoreDiacritics": { + "type": { "description": "DataGridProcessedProps['ignoreDiacritics']" }, + "required": true + }, + "isCellEditable": { + "type": { "description": "(params: GridCellParams) => boolean" }, + "required": true + }, + "isCellSelected": { + "type": { "description": "(id: GridRowId, field: GridColDef['field']) => boolean" }, + "required": true, + "isPremiumPlan": true + }, + "isColumnPinned": { + "type": { "description": "(field: string) => GridPinnedColumnPosition | false" }, + "required": true, + "isProPlan": true + }, + "isRowSelectable": { + "type": { "description": "(id: GridRowId) => boolean" }, + "required": true + }, + "isRowSelected": { + "type": { "description": "(id: GridRowId) => boolean" }, + "required": true + }, + "pinColumn": { + "type": { "description": "(field: string, side: GridPinnedColumnPosition) => void" }, + "required": true, + "isProPlan": true + }, + "publishEvent": { "type": { "description": "GridEventPublisher" }, "required": true }, + "removeRowGroupingCriteria": { + "type": { "description": "(groupingCriteriaField: string) => void" }, + "required": true, + "isPremiumPlan": true + }, + "resetRowHeights": { "type": { "description": "() => void" }, "required": true }, + "resize": { "type": { "description": "() => void" }, "required": true }, + "restoreState": { + "type": { "description": "(stateToRestore: InitialState) => void" }, + "required": true + }, + "scroll": { + "type": { "description": "(params: Partial<GridScrollParams>) => void" }, + "required": true + }, + "scrollToIndexes": { + "type": { "description": "(params: Partial<GridCellIndexCoordinates>) => boolean" }, + "required": true + }, + "selectCellRange": { + "type": { + "description": "(start: GridCellCoordinates, end: GridCellCoordinates, keepOtherSelected?: boolean) => void" + }, + "required": true, + "isPremiumPlan": true + }, + "selectRow": { + "type": { + "description": "(id: GridRowId, isSelected?: boolean, resetSelection?: boolean) => void" + }, + "required": true + }, + "selectRowRange": { + "type": { + "description": "(range: { startId: GridRowId; endId: GridRowId }, isSelected?: boolean, resetSelection?: boolean) => void" + }, + "required": true, + "isProPlan": true + }, + "selectRows": { + "type": { + "description": "(ids: GridRowId[], isSelected?: boolean, resetSelection?: boolean) => void" + }, + "required": true, + "isProPlan": true + }, + "setAggregationModel": { + "type": { "description": "(model: GridAggregationModel) => void" }, + "required": true, + "isPremiumPlan": true + }, + "setCellFocus": { + "type": { "description": "(id: GridRowId, field: string) => void" }, + "required": true + }, + "setCellSelectionModel": { + "type": { "description": "(newModel: GridCellSelectionModel) => void" }, + "required": true, + "isPremiumPlan": true + }, + "setColumnHeaderFilterFocus": { + "type": { "description": "(field: string, event?: MuiBaseEvent) => void" }, + "required": true + }, + "setColumnHeaderFocus": { + "type": { "description": "(field: string, event?: MuiBaseEvent) => void" }, + "required": true + }, + "setColumnIndex": { + "type": { "description": "(field: string, targetIndexPosition: number) => void" }, + "required": true, + "isProPlan": true + }, + "setColumnVisibility": { + "type": { "description": "(field: string, isVisible: boolean) => void" }, + "required": true + }, + "setColumnVisibilityModel": { + "type": { "description": "(model: GridColumnVisibilityModel) => void" }, + "required": true + }, + "setColumnWidth": { + "type": { "description": "(field: string, width: number) => void" }, + "required": true + }, + "setDensity": { + "type": { "description": "(density: GridDensity) => void" }, + "required": true + }, + "setEditCellValue": { + "type": { + "description": "(params: GridEditCellValueParams, event?: MuiBaseEvent) => Promise<boolean> | void" + }, + "required": true + }, + "setExpandedDetailPanels": { + "type": { "description": "(ids: GridRowId[]) => void" }, + "required": true, + "isProPlan": true + }, + "setFilterLogicOperator": { + "type": { "description": "(operator: GridLogicOperator) => void" }, + "required": true + }, + "setFilterModel": { + "type": { + "description": "(model: GridFilterModel, reason?: GridControlledStateReasonLookup['filter']) => void" + }, + "required": true + }, + "setPage": { "type": { "description": "(page: number) => void" }, "required": true }, + "setPageSize": { "type": { "description": "(pageSize: number) => void" }, "required": true }, + "setPaginationModel": { + "type": { "description": "(model: GridPaginationModel) => void" }, + "required": true + }, + "setPinnedColumns": { + "type": { "description": "(pinnedColumns: GridPinnedColumnFields) => void" }, + "required": true, + "isProPlan": true + }, + "setQuickFilterValues": { + "type": { "description": "(values: any[]) => void" }, + "required": true + }, + "setRowChildrenExpansion": { + "type": { "description": "(id: GridRowId, isExpanded: boolean) => void" }, + "required": true, + "isProPlan": true + }, + "setRowCount": { "type": { "description": "(rowCount: number) => void" }, "required": true }, + "setRowGroupingCriteriaIndex": { + "type": { + "description": "(groupingCriteriaField: string, groupingIndex: number) => void" + }, + "required": true, + "isPremiumPlan": true + }, + "setRowGroupingModel": { + "type": { "description": "(model: GridRowGroupingModel) => void" }, + "required": true, + "isPremiumPlan": true + }, + "setRowIndex": { + "type": { "description": "(rowId: GridRowId, targetIndex: number) => void" }, + "required": true, + "isProPlan": true + }, + "setRows": { "type": { "description": "(rows: GridRowModel[]) => void" }, "required": true }, + "setRowSelectionModel": { + "type": { "description": "(rowIds: GridRowId[]) => void" }, + "required": true + }, + "setSortModel": { + "type": { "description": "(model: GridSortModel) => void" }, + "required": true + }, + "showColumnMenu": { "type": { "description": "(field: string) => void" }, "required": true }, + "showFilterPanel": { + "type": { + "description": "(targetColumnField?: string, panelId?: string, labelId?: string) => void" + }, + "required": true + }, + "showHeaderFilterMenu": { + "type": { "description": "(field: GridColDef['field']) => void" }, + "required": true + }, + "showPreferences": { + "type": { + "description": "(newValue: GridPreferencePanelsValue, panelId?: string, labelId?: string) => void" + }, + "required": true + }, + "sortColumn": { + "type": { + "description": "(field: GridColDef['field'], direction?: GridSortDirection, allowMultipleSorting?: boolean) => void" + }, + "required": true + }, + "startCellEditMode": { + "type": { "description": "(params: GridStartCellEditModeParams) => void" }, + "required": true + }, + "startHeaderFilterEditMode": { + "type": { "description": "(field: GridColDef['field']) => void" }, + "required": true + }, + "startRowEditMode": { + "type": { "description": "(params: GridStartRowEditModeParams) => void" }, + "required": true + }, + "state": { "type": { "description": "State" }, "required": true }, + "stopCellEditMode": { + "type": { "description": "(params: GridStopCellEditModeParams) => void" }, + "required": true + }, + "stopHeaderFilterEditMode": { "type": { "description": "() => void" }, "required": true }, + "stopRowEditMode": { + "type": { "description": "(params: GridStopRowEditModeParams) => void" }, + "required": true + }, + "subscribeEvent": { + "type": { + "description": "<E extends GridEvents>(event: E, handler: GridEventListener<E>, options?: EventListenerOptions) => () => void" + }, + "required": true + }, + "toggleColumnMenu": { + "type": { "description": "(field: string) => void" }, + "required": true + }, + "toggleDetailPanel": { + "type": { "description": "(id: GridRowId) => void" }, + "required": true, + "isProPlan": true + }, + "unpinColumn": { + "type": { "description": "(field: string) => void" }, + "required": true, + "isProPlan": true + }, + "unstable_replaceRows": { + "type": { "description": "(firstRowToReplace: number, newRows: GridRowModel[]) => void" }, + "required": true + }, + "unstable_setColumnVirtualization": { + "type": { "description": "(enabled: boolean) => void" }, + "required": true + }, + "unstable_setPinnedRows": { + "type": { "description": "(pinnedRows?: GridPinnedRowsProp) => void" }, + "required": true, + "isProPlan": true + }, + "unstable_setVirtualization": { + "type": { "description": "(enabled: boolean) => void" }, + "required": true + }, + "updateColumns": { + "type": { "description": "(cols: GridColDef[]) => void" }, + "required": true + }, + "updateRows": { + "type": { "description": "(updates: GridRowModelUpdate[]) => void" }, + "required": true + }, + "upsertFilterItem": { + "type": { "description": "(item: GridFilterItem) => void" }, + "required": true + }, + "upsertFilterItems": { + "type": { "description": "(items: GridFilterItem[]) => void" }, + "required": true + } + } +} diff --git a/docs/pages/x/api/data-grid/grid-api.md b/docs/pages/x/api/data-grid/grid-api.md deleted file mode 100644 index cf6a2bdbf7de..000000000000 --- a/docs/pages/x/api/data-grid/grid-api.md +++ /dev/null @@ -1,149 +0,0 @@ -# GridApi Interface - -

The full grid API.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [API object](/x/react-data-grid/api-object/) - -::: - -## Import - -```js -import { GridApi } from '@mui/x-data-grid-premium'; -// or -import { GridApi } from '@mui/x-data-grid-pro'; -// or -import { GridApi } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Description | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| addRowGroupingCriteria [](/x/introduction/licensing/#premium-plan) | (groupingCriteriaField: string, groupingIndex?: number) => void | Adds the field to the row grouping model. | -| applySorting | () => void | Applies the current sort model to the rows. | -| autosizeColumns | (options?: GridAutosizeOptions) => Promise<void> | Auto-size the columns of the grid based on the cells' content and the space available. | -| deleteFilterItem | (item: GridFilterItem) => void | Deletes a [GridFilterItem](/x/api/data-grid/grid-filter-item/). | -| exportDataAsCsv | (options?: GridCsvExportOptions) => void | Downloads and exports a CSV of the grid's data. | -| exportDataAsExcel [](/x/introduction/licensing/#premium-plan) | (options?: GridExcelExportOptions) => Promise<void> | Downloads and exports an Excel file of the grid's data. | -| exportDataAsPrint | (options?: GridPrintExportOptions) => void | Print the grid's data. | -| exportState | (params?: GridExportStateParams) => InitialState | Generates a serializable object containing the exportable parts of the DataGrid state.
These values can then be passed to the `initialState` prop or injected using the `restoreState` method. | -| forceUpdate | () => void | Forces the grid to rerender. It's often used after a state update. | -| getAllColumns | () => GridStateColDef[] | Returns an array of [GridColDef](/x/api/data-grid/grid-col-def/) containing all the column definitions. | -| getAllGroupDetails | () => GridColumnGroupLookup | Returns the column group lookup. | -| getAllRowIds | () => GridRowId[] | Gets the list of row ids. | -| getCellElement | (id: GridRowId, field: string) => HTMLDivElement \| null | Gets the underlying DOM element for a cell at the given `id` and `field`. | -| getCellMode | (id: GridRowId, field: string) => GridCellMode | Gets the mode of a cell. | -| getCellParams | <R extends GridValidRowModel = any, V = unknown, F = V, N extends GridTreeNode = GridTreeNode>(id: GridRowId, field: string) => GridCellParams<R, V, F, N> | Gets the [GridCellParams](/x/api/data-grid/grid-cell-params/) object that is passed as argument in events. | -| getCellSelectionModel [](/x/introduction/licensing/#premium-plan) | () => GridCellSelectionModel | Returns an object containing the selection state of the cells.
The keys of the object correpond to the row IDs.
The value of each key is another object whose keys are the fields and values are the selection state. | -| getCellValue | <V extends any = any>(id: GridRowId, field: string) => V | Gets the value of a cell at the given `id` and `field`. | -| getColumn | (field: string) => GridStateColDef | Returns the [GridColDef](/x/api/data-grid/grid-col-def/) for the given `field`. | -| getColumnGroupPath | (field: string) => GridColumnGroup['groupId'][] | Returns the id of the groups leading to the requested column.
The array is ordered by increasing depth (the last element is the direct parent of the column). | -| getColumnHeaderElement | (field: string) => HTMLDivElement \| null | Gets the underlying DOM element for the column header with the given `field`. | -| getColumnHeaderParams | (field: string) => GridColumnHeaderParams | Gets the GridColumnHeaderParams object that is passed as argument in events. | -| getColumnIndex | (field: string, useVisibleColumns?: boolean) => number | Returns the index position of a column. By default, only the visible columns are considered.
Pass `false` to `useVisibleColumns` to consider all columns. | -| getColumnIndexRelativeToVisibleColumns | (field: string) => number | Gets the index of a column relative to the columns that are reachable by scroll. | -| getColumnPosition | (field: string) => number | Returns the left-position of a column relative to the inner border of the grid. | -| getDataAsCsv | (options?: GridCsvExportOptions) => string | Returns the grid data as a CSV string.
This method is used internally by `exportDataAsCsv`. | -| getDataAsExcel [](/x/introduction/licensing/#premium-plan) | (options?: GridExcelExportOptions) => Promise<Excel.Workbook> \| null | Returns the grid data as an exceljs workbook.
This method is used internally by `exportDataAsExcel`. | -| getExpandedDetailPanels [](/x/introduction/licensing/#pro-plan) | () => GridRowId[] | Returns the rows whose detail panel is open. | -| getLocaleText | <T extends GridTranslationKeys>(key: T) => GridLocaleText[T] | Returns the translation for the `key`. | -| getPinnedColumns [](/x/introduction/licensing/#pro-plan) | () => GridPinnedColumnFields | Returns which columns are pinned. | -| getRootDimensions | () => GridDimensions | Returns the dimensions of the grid | -| getRow | <R extends GridValidRowModel = any>(id: GridRowId) => R \| null | Gets the row data with a given id. | -| getRowElement | (id: GridRowId) => HTMLDivElement \| null | Gets the underlying DOM element for a row at the given `id`. | -| getRowGroupChildren [](/x/introduction/licensing/#pro-plan) | (params: GridRowGroupChildrenGetterParams) => GridRowId[] | Gets the rows of a grouping criteria.
Only contains the rows provided to the grid, not the rows automatically generated by it. | -| getRowId | <R extends GridValidRowModel = any>(row: R) => GridRowId | Gets the ID of a row given its data. | -| getRowIdFromRowIndex | (index: number) => GridRowId | Gets the `GridRowId` of a row at a specific index.
The index is based on the sorted but unfiltered row list. | -| getRowIndexRelativeToVisibleRows | (id: GridRowId) => number | Gets the index of a row relative to the rows that are reachable by scroll. | -| getRowMode | (id: GridRowId) => GridRowMode | Gets the mode of a row. | -| getRowModels | () => Map<GridRowId, GridRowModel> | Gets the full set of rows as Map<GridRowId, GridRowModel>. | -| getRowNode | <N extends GridTreeNode>(id: GridRowId) => N \| null | Gets the row node from the internal tree structure. | -| getRowParams | (id: GridRowId) => GridRowParams | Gets the [GridRowParams](/x/api/data-grid/grid-row-params/) object that is passed as argument in events. | -| getRowsCount | () => number | Gets the total number of rows in the grid. | -| getRowWithUpdatedValues | (id: GridRowId, field: string) => GridRowModel | Returns the row with the values that were set by editing the cells.
In row editing, `field` is ignored and all fields are considered. | -| getScrollPosition | () => GridScrollParams | Returns the current scroll position. | -| getSelectedCellsAsArray [](/x/introduction/licensing/#premium-plan) | () => GridCellCoordinates[] | Returns an array containing only the selected cells.
Each item is an object with the ID and field of the cell. | -| getSelectedRows | () => Map<GridRowId, GridRowModel> | Returns an array of the selected rows. | -| getSortedRowIds | () => GridRowId[] | Returns all row ids sorted according to the active sort model. | -| getSortedRows | () => GridRowModel[] | Returns all rows sorted according to the active sort model. | -| getSortModel | () => GridSortModel | Returns the sort model currently applied to the grid. | -| getVisibleColumns | () => GridStateColDef[] | Returns the currently visible columns. | -| hideColumnMenu | () => void | Hides the column menu that is open. | -| hideFilterPanel | () => void | Hides the filter panel. | -| hideHeaderFilterMenu | () => void | Hides the header filter menu. | -| hidePreferences | () => void | Hides the preferences panel. | -| ignoreDiacritics | DataGridProcessedProps['ignoreDiacritics'] | Returns the value of the `ignoreDiacritics` prop. | -| isCellEditable | (params: GridCellParams) => boolean | Controls if a cell is editable. | -| isCellSelected [](/x/introduction/licensing/#premium-plan) | (id: GridRowId, field: GridColDef['field']) => boolean | Determines if a cell is selected or not. | -| isColumnPinned [](/x/introduction/licensing/#pro-plan) | (field: string) => GridPinnedColumnPosition \| false | Returns which side a column is pinned to. | -| isRowSelectable | (id: GridRowId) => boolean | Determines if a row can be selected or not. | -| isRowSelected | (id: GridRowId) => boolean | Determines if a row is selected or not. | -| pinColumn [](/x/introduction/licensing/#pro-plan) | (field: string, side: GridPinnedColumnPosition) => void | Pins a column to the left or right side of the grid. | -| publishEvent | GridEventPublisher | Emits an event. | -| removeRowGroupingCriteria [](/x/introduction/licensing/#premium-plan) | (groupingCriteriaField: string) => void | Remove the field from the row grouping model. | -| resetRowHeights | () => void | Forces the recalculation of the heights of all rows. | -| resize | () => void | Triggers a resize of the component and recalculation of width and height. | -| restoreState | (stateToRestore: InitialState) => void | Inject the given values into the state of the DataGrid. | -| scroll | (params: Partial<GridScrollParams>) => void | Triggers the viewport to scroll to the given positions (in pixels). | -| scrollToIndexes | (params: Partial<GridCellIndexCoordinates>) => boolean | Triggers the viewport to scroll to the cell at indexes given by `params`.
Returns `true` if the grid had to scroll to reach the target. | -| selectCellRange [](/x/introduction/licensing/#premium-plan) | (start: GridCellCoordinates, end: GridCellCoordinates, keepOtherSelected?: boolean) => void | Selects all cells that are inside the range given by `start` and `end` coordinates. | -| selectRow | (id: GridRowId, isSelected?: boolean, resetSelection?: boolean) => void | Change the selection state of a row. | -| selectRowRange [](/x/introduction/licensing/#pro-plan) | (range: { startId: GridRowId; endId: GridRowId }, isSelected?: boolean, resetSelection?: boolean) => void | Change the selection state of all the selectable rows in a range. | -| selectRows [](/x/introduction/licensing/#pro-plan) | (ids: GridRowId[], isSelected?: boolean, resetSelection?: boolean) => void | Change the selection state of multiple rows. | -| setAggregationModel [](/x/introduction/licensing/#premium-plan) | (model: GridAggregationModel) => void | Sets the aggregation model to the one given by `model`. | -| setCellFocus | (id: GridRowId, field: string) => void | Sets the focus to the cell at the given `id` and `field`. | -| setCellSelectionModel [](/x/introduction/licensing/#premium-plan) | (newModel: GridCellSelectionModel) => void | Updates the selected cells to be those passed to the `newModel` argument.
Any cell already selected will be unselected. | -| setColumnHeaderFilterFocus | (field: string, event?: MuiBaseEvent) => void | Sets the focus to the column header filter at the given `field`. | -| setColumnHeaderFocus | (field: string, event?: MuiBaseEvent) => void | Sets the focus to the column header at the given `field`. | -| setColumnIndex [](/x/introduction/licensing/#pro-plan) | (field: string, targetIndexPosition: number) => void | Moves a column from its original position to the position given by `targetIndexPosition`. | -| setColumnVisibility | (field: string, isVisible: boolean) => void | Changes the visibility of the column referred by `field`. | -| setColumnVisibilityModel | (model: GridColumnVisibilityModel) => void | Sets the column visibility model to the one given by `model`. | -| setColumnWidth | (field: string, width: number) => void | Updates the width of a column. | -| setDensity | (density: GridDensity) => void | Sets the density of the grid. | -| setEditCellValue | (params: GridEditCellValueParams, event?: MuiBaseEvent) => Promise<boolean> \| void | Sets the value of the edit cell.
Commonly used inside the edit cell component. | -| setExpandedDetailPanels [](/x/introduction/licensing/#pro-plan) | (ids: GridRowId[]) => void | Changes which rows to expand the detail panel. | -| setFilterLogicOperator | (operator: GridLogicOperator) => void | Changes the GridLogicOperator used to connect the filters. | -| setFilterModel | (model: GridFilterModel, reason?: GridControlledStateReasonLookup['filter']) => void | Sets the filter model to the one given by `model`. | -| setPage | (page: number) => void | Sets the displayed page to the value given by `page`. | -| setPageSize | (pageSize: number) => void | Sets the number of displayed rows to the value given by `pageSize`. | -| setPaginationModel | (model: GridPaginationModel) => void | Sets the `paginationModel` to a new value. | -| setPinnedColumns [](/x/introduction/licensing/#pro-plan) | (pinnedColumns: GridPinnedColumnFields) => void | Changes the pinned columns. | -| setQuickFilterValues | (values: any[]) => void | Set the quick filter values to the one given by `values` | -| setRowChildrenExpansion [](/x/introduction/licensing/#pro-plan) | (id: GridRowId, isExpanded: boolean) => void | Expand or collapse a row children. | -| setRowCount | (rowCount: number) => void | Sets the `rowCount` to a new value. | -| setRowGroupingCriteriaIndex [](/x/introduction/licensing/#premium-plan) | (groupingCriteriaField: string, groupingIndex: number) => void | Sets the grouping index of a grouping criteria. | -| setRowGroupingModel [](/x/introduction/licensing/#premium-plan) | (model: GridRowGroupingModel) => void | Sets the columns to use as grouping criteria. | -| setRowIndex [](/x/introduction/licensing/#pro-plan) | (rowId: GridRowId, targetIndex: number) => void | Moves a row from its original position to the position given by `targetIndex`. | -| setRows | (rows: GridRowModel[]) => void | Sets a new set of rows. | -| setRowSelectionModel | (rowIds: GridRowId[]) => void | Updates the selected rows to be those passed to the `rowIds` argument.
Any row already selected will be unselected. | -| setSortModel | (model: GridSortModel) => void | Updates the sort model and triggers the sorting of rows. | -| showColumnMenu | (field: string) => void | Display the column menu under the `field` column. | -| showFilterPanel | (targetColumnField?: string, panelId?: string, labelId?: string) => void | Shows the filter panel. If `targetColumnField` is given, a filter for this field is also added. | -| showHeaderFilterMenu | (field: GridColDef['field']) => void | Opens the header filter menu for the given field. | -| showPreferences | (newValue: GridPreferencePanelsValue, panelId?: string, labelId?: string) => void | Displays the preferences panel. The `newValue` argument controls the content of the panel. | -| sortColumn | (field: GridColDef['field'], direction?: GridSortDirection, allowMultipleSorting?: boolean) => void | Sorts a column. | -| startCellEditMode | (params: GridStartCellEditModeParams) => void | Puts the cell corresponding to the given row id and field into edit mode. | -| startHeaderFilterEditMode | (field: GridColDef['field']) => void | Puts the cell corresponding to the given row id and field into edit mode. | -| startRowEditMode | (params: GridStartRowEditModeParams) => void | Puts the row corresponding to the given id into edit mode. | -| state | State | Property that contains the whole state of the grid. | -| stopCellEditMode | (params: GridStopCellEditModeParams) => void | Puts the cell corresponding to the given row id and field into view mode and updates the original row with the new value stored.
If `params.ignoreModifications` is `true` it will discard the modifications made. | -| stopHeaderFilterEditMode | () => void | Stops the edit mode for the current field. | -| stopRowEditMode | (params: GridStopRowEditModeParams) => void | Puts the row corresponding to the given id and into view mode and updates the original row with the new values stored.
If `params.ignoreModifications` is `true` it will discard the modifications made. | -| subscribeEvent | <E extends GridEvents>(event: E, handler: GridEventListener<E>, options?: EventListenerOptions) => () => void | Registers a handler for an event. | -| toggleColumnMenu | (field: string) => void | Toggles the column menu under the `field` column. | -| toggleDetailPanel [](/x/introduction/licensing/#pro-plan) | (id: GridRowId) => void | Expands or collapses the detail panel of a row. | -| unpinColumn [](/x/introduction/licensing/#pro-plan) | (field: string) => void | Unpins a column. | -| unstable_replaceRows | (firstRowToReplace: number, newRows: GridRowModel[]) => void | Replace a set of rows with new rows. | -| unstable_setColumnVirtualization | (enabled: boolean) => void | Enable/disable column virtualization. | -| unstable_setPinnedRows [](/x/introduction/licensing/#pro-plan) | (pinnedRows?: GridPinnedRowsProp) => void | Changes the pinned rows. | -| unstable_setVirtualization | (enabled: boolean) => void | Enable/disable virtualization. | -| updateColumns | (cols: GridColDef[]) => void | Updates the definition of multiple columns at the same time. | -| updateRows | (updates: GridRowModelUpdate[]) => void | Allows to update, insert and delete rows. | -| upsertFilterItem | (item: GridFilterItem) => void | Updates or inserts a [GridFilterItem](/x/api/data-grid/grid-filter-item/). | -| upsertFilterItems | (items: GridFilterItem[]) => void | Updates or inserts many [GridFilterItem](/x/api/data-grid/grid-filter-item/). | diff --git a/docs/pages/x/api/data-grid/grid-cell-params.js b/docs/pages/x/api/data-grid/grid-cell-params.js index aa00cd536832..cd53f73a76ff 100644 --- a/docs/pages/x/api/data-grid/grid-cell-params.js +++ b/docs/pages/x/api/data-grid/grid-cell-params.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-cell-params.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-cell-params.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-cell-params.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-cell-params.json b/docs/pages/x/api/data-grid/grid-cell-params.json new file mode 100644 index 000000000000..ff6ddfd6dd02 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-cell-params.json @@ -0,0 +1,21 @@ +{ + "name": "GridCellParams", + "imports": [ + "import { GridCellParams } from '@mui/x-data-grid-premium'", + "import { GridCellParams } from '@mui/x-data-grid-pro'", + "import { GridCellParams } from '@mui/x-data-grid'" + ], + "properties": { + "cellMode": { "type": { "description": "GridCellMode" }, "required": true }, + "colDef": { "type": { "description": "GridStateColDef" }, "required": true }, + "field": { "type": { "description": "string" }, "required": true }, + "hasFocus": { "type": { "description": "boolean" }, "required": true }, + "id": { "type": { "description": "GridRowId" }, "required": true }, + "row": { "type": { "description": "GridRowModel<R>" }, "required": true }, + "rowNode": { "type": { "description": "N" }, "required": true }, + "tabIndex": { "type": { "description": "0 | -1" }, "required": true }, + "formattedValue": { "type": { "description": "F | undefined" } }, + "isEditable": { "type": { "description": "boolean" } }, + "value": { "type": { "description": "V | undefined" } } + } +} diff --git a/docs/pages/x/api/data-grid/grid-cell-params.md b/docs/pages/x/api/data-grid/grid-cell-params.md deleted file mode 100644 index abafc29de75f..000000000000 --- a/docs/pages/x/api/data-grid/grid-cell-params.md +++ /dev/null @@ -1,29 +0,0 @@ -# GridCellParams Interface - -

Object passed as parameter in the column GridColDef cell renderer.

- -## Import - -```js -import { GridCellParams } from '@mui/x-data-grid-premium'; -// or -import { GridCellParams } from '@mui/x-data-grid-pro'; -// or -import { GridCellParams } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Description | -| :----------------------------------------------------------------------------------------------- | :--------------------------------------------------- | :---------------------------------------------------------------------------------------------------- | -| cellMode | GridCellMode | The mode of the cell. | -| colDef | GridStateColDef | The column of the row that the current cell belongs to. | -| field | string | The column field of the cell that triggered the event. | -| formattedValue? | F \| undefined | The cell value formatted with the column valueFormatter. | -| hasFocus | boolean | If true, the cell is the active element. | -| id | GridRowId | The grid row id. | -| isEditable? | boolean | If true, the cell is editable. | -| row | GridRowModel<R> | The row model of the row that the current cell belongs to. | -| rowNode | N | The node of the row that the current cell belongs to. | -| tabIndex | 0 \| -1 | the tabIndex value. | -| value? | V \| undefined | The cell value.
If the column has `valueGetter`, use `params.row` to directly access the fields. | diff --git a/docs/pages/x/api/data-grid/grid-col-def.js b/docs/pages/x/api/data-grid/grid-col-def.js index 01c423562290..ffdbb477ddcb 100644 --- a/docs/pages/x/api/data-grid/grid-col-def.js +++ b/docs/pages/x/api/data-grid/grid-col-def.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-col-def.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-col-def.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-col-def.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-col-def.json b/docs/pages/x/api/data-grid/grid-col-def.json new file mode 100644 index 000000000000..6173cc8c314e --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-col-def.json @@ -0,0 +1,93 @@ +{ + "name": "GridColDef", + "imports": [ + "import { GridColDef } from '@mui/x-data-grid-premium'", + "import { GridColDef } from '@mui/x-data-grid-pro'", + "import { GridColDef } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "field": { "type": { "description": "string" }, "required": true }, + "aggregable": { + "type": { "description": "boolean" }, + "default": "true", + "isPremiumPlan": true + }, + "align": { "type": { "description": "GridAlignment" } }, + "availableAggregationFunctions": { + "type": { "description": "string[]" }, + "isPremiumPlan": true + }, + "cellClassName": { "type": { "description": "GridCellClassNamePropType<R, V>" } }, + "colSpan": { + "type": { "description": "number | GridColSpanFn<R, V, F>" }, + "default": "1" + }, + "description": { "type": { "description": "string" } }, + "disableColumnMenu": { "type": { "description": "boolean" }, "default": "false" }, + "disableExport": { "type": { "description": "boolean" }, "default": "false" }, + "disableReorder": { "type": { "description": "boolean" }, "default": "false" }, + "display": { "type": { "description": "'text' | 'flex'" } }, + "editable": { "type": { "description": "boolean" }, "default": "false" }, + "filterable": { "type": { "description": "boolean" }, "default": "true" }, + "filterOperators": { "type": { "description": "GridFilterOperator<R, V, F>[]" } }, + "flex": { "type": { "description": "number" } }, + "getApplyQuickFilterFn": { "type": { "description": "GetApplyQuickFilterFn<R, V>" } }, + "getSortComparator": { + "type": { + "description": "(sortDirection: GridSortDirection) => GridComparatorFn<V> | undefined" + } + }, + "groupable": { "type": { "description": "boolean" }, "default": "true" }, + "groupingValueGetter": { + "type": { "description": "GridGroupingValueGetter<R>" }, + "isPremiumPlan": true + }, + "headerAlign": { "type": { "description": "GridAlignment" } }, + "headerClassName": { "type": { "description": "GridColumnHeaderClassNamePropType" } }, + "headerName": { "type": { "description": "string" } }, + "hideable": { "type": { "description": "boolean" }, "default": "true" }, + "hideSortIcons": { "type": { "description": "boolean" }, "default": "false" }, + "maxWidth": { "type": { "description": "number" }, "default": "Infinity" }, + "minWidth": { "type": { "description": "number" }, "default": "50" }, + "pastedValueParser": { + "type": { "description": "GridPastedValueParser<R, V, F>" }, + "isPremiumPlan": true + }, + "pinnable": { "type": { "description": "boolean" }, "default": "true" }, + "preProcessEditCellProps": { + "type": { + "description": "(params: GridPreProcessEditCellProps) => GridEditCellProps | Promise<GridEditCellProps>" + } + }, + "renderCell": { + "type": { + "description": "(params: GridRenderCellParams<R, V, F>) => React.ReactNode" + } + }, + "renderEditCell": { + "type": { + "description": "(params: GridRenderEditCellParams<R, V, F>) => React.ReactNode" + } + }, + "renderHeader": { + "type": { + "description": "(params: GridColumnHeaderParams<R, V, F>) => React.ReactNode" + } + }, + "renderHeaderFilter": { + "type": { "description": "(params: GridRenderHeaderFilterProps) => React.ReactNode" }, + "isProPlan": true + }, + "resizable": { "type": { "description": "boolean" }, "default": "true" }, + "sortable": { "type": { "description": "boolean" }, "default": "true" }, + "sortComparator": { "type": { "description": "GridComparatorFn<V>" } }, + "sortingOrder": { "type": { "description": "GridSortDirection[]" } }, + "type": { "type": { "description": "GridColType" }, "default": "'singleSelect'" }, + "valueFormatter": { "type": { "description": "GridValueFormatter<R, V, F>" } }, + "valueGetter": { "type": { "description": "GridValueGetter<R, V, F>" } }, + "valueParser": { "type": { "description": "GridValueParser<R, V, F>" } }, + "valueSetter": { "type": { "description": "GridValueSetter<R, V, F>" } }, + "width": { "type": { "description": "number" }, "default": "100" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-col-def.md b/docs/pages/x/api/data-grid/grid-col-def.md deleted file mode 100644 index b8927910ff2e..000000000000 --- a/docs/pages/x/api/data-grid/grid-col-def.md +++ /dev/null @@ -1,70 +0,0 @@ -# GridColDef Interface - -

Column Definition interface.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Column definition](/x/react-data-grid/column-definition/) - -::: - -## Import - -```js -import { GridColDef } from '@mui/x-data-grid-premium'; -// or -import { GridColDef } from '@mui/x-data-grid-pro'; -// or -import { GridColDef } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| aggregable? [](/x/introduction/licensing/#premium-plan) | boolean | true | If `true`, the cells of the column can be aggregated based. | -| align? | GridAlignment | | Allows to align the column values in cells. | -| availableAggregationFunctions? [](/x/introduction/licensing/#premium-plan) | string[] | | Limit the aggregation function usable on this column.
By default, the column will have all the aggregation functions that are compatible with its type. | -| cellClassName? | GridCellClassNamePropType<R, V> | | Class name that will be added in cells for that column. | -| colSpan? | number \| GridColSpanFn<R, V, F> | 1 | Number of columns a cell should span. | -| description? | string | | The description of the column rendered as tooltip if the column header name is not fully displayed. | -| disableColumnMenu? | boolean | false | If `true`, the column menu is disabled for this column. | -| disableExport? | boolean | false | If `true`, this column will not be included in exports. | -| disableReorder? | boolean | false | If `true`, this column cannot be reordered. | -| display? | 'text' \| 'flex' | | Display mode for the cell:
- 'text': For text-based cells (default)
- 'flex': For cells with HTMLElement children | -| editable? | boolean | false | If `true`, the cells of the column are editable. | -| field | string | | The column identifier. It's used to map with GridRowModel values. | -| filterable? | boolean | true | If `true`, the column is filterable. | -| filterOperators? | GridFilterOperator<R, V, F>[] | | Allows setting the filter operators for this column. | -| flex? | number | | If set, it indicates that a column has fluid width. Range [0, ∞). | -| getApplyQuickFilterFn? | GetApplyQuickFilterFn<R, V> | | The callback that generates a filtering function for a given quick filter value.
This function can return `null` to skip filtering for this value and column. | -| getSortComparator? | (sortDirection: GridSortDirection) => GridComparatorFn<V> \| undefined | | Allows to use a different comparator function depending on the sort direction.
Takes precedence over `sortComparator`. | -| groupable? | boolean | true | If `true`, the rows can be grouped based on this column values (pro-plan only).
Only available in DataGridPremium. | -| groupingValueGetter? [](/x/introduction/licensing/#premium-plan) | GridGroupingValueGetter<R> | | Function that transforms a complex cell value into a key that be used for grouping the rows. | -| headerAlign? | GridAlignment | | Header cell element alignment. | -| headerClassName? | GridColumnHeaderClassNamePropType | | Class name that will be added in the column header cell. | -| headerName? | string | | The title of the column rendered in the column header cell. | -| hideable? | boolean | true | If `false`, removes the buttons for hiding this column. | -| hideSortIcons? | boolean | false | Toggle the visibility of the sort icons. | -| maxWidth? | number | Infinity | Sets the maximum width of a column. | -| minWidth? | number | 50 | Sets the minimum width of a column. | -| pastedValueParser? [](/x/introduction/licensing/#premium-plan) | GridPastedValueParser<R, V, F> | | Function that takes the clipboard-pasted value and converts it to a value used internally. | -| pinnable? | boolean | true | If `false`, the menu items for column pinning menu will not be rendered.
Only available in DataGridPro. | -| preProcessEditCellProps? | (params: GridPreProcessEditCellProps) => GridEditCellProps \| Promise<GridEditCellProps> | | Callback fired when the edit props of the cell changes.
It allows to process the props that saved into the state. | -| renderCell? | (params: GridRenderCellParams<R, V, F>) => React.ReactNode | | Allows to override the component rendered as cell for this column. | -| renderEditCell? | (params: GridRenderEditCellParams<R, V, F>) => React.ReactNode | | Allows to override the component rendered in edit cell mode for this column. | -| renderHeader? | (params: GridColumnHeaderParams<R, V, F>) => React.ReactNode | | Allows to render a component in the column header cell. | -| renderHeaderFilter? [](/x/introduction/licensing/#pro-plan) | (params: GridRenderHeaderFilterProps) => React.ReactNode | | Allows to render a component in the column header filter cell. | -| resizable? | boolean | true | If `true`, the column is resizable. | -| sortable? | boolean | true | If `true`, the column is sortable. | -| sortComparator? | GridComparatorFn<V> | | A comparator function used to sort rows. | -| sortingOrder? | GridSortDirection[] | | The order of the sorting sequence. | -| type? | GridColType | 'singleSelect' | The type of the column. | -| valueFormatter? | GridValueFormatter<R, V, F> | | Function that allows to apply a formatter before rendering its value. | -| valueGetter? | GridValueGetter<R, V, F> | | Function that allows to get a specific data instead of field to render in the cell. | -| valueParser? | GridValueParser<R, V, F> | | Function that takes the user-entered value and converts it to a value used internally. | -| valueSetter? | GridValueSetter<R, V, F> | | Function that allows to customize how the entered value is stored in the row.
It only works with cell/row editing. | -| width? | number | 100 | Set the width of the column. | diff --git a/docs/pages/x/api/data-grid/grid-csv-export-options.js b/docs/pages/x/api/data-grid/grid-csv-export-options.js index 606363051651..782c8b7cbb96 100644 --- a/docs/pages/x/api/data-grid/grid-csv-export-options.js +++ b/docs/pages/x/api/data-grid/grid-csv-export-options.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-csv-export-options.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-csv-export-options.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-csv-export-options.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-csv-export-options.json b/docs/pages/x/api/data-grid/grid-csv-export-options.json new file mode 100644 index 000000000000..c8ec2874beb7 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-csv-export-options.json @@ -0,0 +1,21 @@ +{ + "name": "GridCsvExportOptions", + "imports": [ + "import { GridCsvExportOptions } from '@mui/x-data-grid-premium'", + "import { GridCsvExportOptions } from '@mui/x-data-grid-pro'", + "import { GridCsvExportOptions } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "allColumns": { "type": { "description": "boolean" }, "default": "false" }, + "delimiter": { "type": { "description": "string" }, "default": "','" }, + "fields": { "type": { "description": "string[]" } }, + "fileName": { "type": { "description": "string" }, "default": "`document.title`" }, + "getRowsToExport": { + "type": { "description": "(params: GridCsvGetRowsToExportParams) => GridRowId[]" } + }, + "includeColumnGroupsHeaders": { "type": { "description": "boolean" }, "default": "true" }, + "includeHeaders": { "type": { "description": "boolean" }, "default": "true" }, + "utf8WithBom": { "type": { "description": "boolean" }, "default": "false" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-csv-export-options.md b/docs/pages/x/api/data-grid/grid-csv-export-options.md deleted file mode 100644 index e862ab57a9b3..000000000000 --- a/docs/pages/x/api/data-grid/grid-csv-export-options.md +++ /dev/null @@ -1,35 +0,0 @@ -# GridCsvExportOptions Interface - -

The options to apply on the CSV export.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [CSV export](/x/react-data-grid/export/#csv-export) - -::: - -## Import - -```js -import { GridCsvExportOptions } from '@mui/x-data-grid-premium'; -// or -import { GridCsvExportOptions } from '@mui/x-data-grid-pro'; -// or -import { GridCsvExportOptions } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :----------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allColumns? | boolean | false | If `true`, the hidden columns will also be exported. | -| delimiter? | string | ',' | The character used to separate fields. | -| fields? | string[] | | The columns exported.
This should only be used if you want to restrict the columns exports. | -| fileName? | string | `document.title` | The string used as the file name. | -| getRowsToExport? | (params: GridCsvGetRowsToExportParams) => GridRowId[] | | Function that returns the list of row ids to export on the order they should be exported. | -| includeColumnGroupsHeaders? | boolean | true | If `true`, the CSV will include the column groups. | -| includeHeaders? | boolean | true | If `true`, the CSV will include the column headers and column groups.
Use `includeColumnGroupsHeaders` to control whether the column groups are included. | -| utf8WithBom? | boolean | false | If `true`, the UTF-8 Byte Order Mark (BOM) prefixes the exported file.
This can allow Excel to automatically detect file encoding as UTF-8. | diff --git a/docs/pages/x/api/data-grid/grid-excel-export-options.js b/docs/pages/x/api/data-grid/grid-excel-export-options.js index 8807a36df2fe..53b29b9b03b6 100644 --- a/docs/pages/x/api/data-grid/grid-excel-export-options.js +++ b/docs/pages/x/api/data-grid/grid-excel-export-options.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-excel-export-options.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-excel-export-options.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-excel-export-options.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-excel-export-options.json b/docs/pages/x/api/data-grid/grid-excel-export-options.json new file mode 100644 index 000000000000..8df7897c3fd4 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-excel-export-options.json @@ -0,0 +1,47 @@ +{ + "name": "GridExcelExportOptions", + "imports": ["import { GridExcelExportOptions } from '@mui/x-data-grid-premium'"], + "demos": "", + "properties": { + "allColumns": { + "type": { "description": "boolean" }, + "default": "false", + "isPremiumPlan": true + }, + "columnsStyles": { "type": { "description": "ColumnsStylesInterface" }, "isPremiumPlan": true }, + "exceljsPostProcess": { + "type": { + "description": "(processInput: GridExceljsProcessInput) => Promise<void>" + }, + "isPremiumPlan": true + }, + "exceljsPreProcess": { + "type": { + "description": "(processInput: GridExceljsProcessInput) => Promise<void>" + }, + "isPremiumPlan": true + }, + "fields": { "type": { "description": "string[]" }, "isPremiumPlan": true }, + "fileName": { + "type": { "description": "string" }, + "default": "`document.title`", + "isPremiumPlan": true + }, + "getRowsToExport": { + "type": { "description": "(params: GridGetRowsToExportParams<Api>) => GridRowId[]" }, + "isPremiumPlan": true + }, + "includeColumnGroupsHeaders": { + "type": { "description": "boolean" }, + "default": "true", + "isPremiumPlan": true + }, + "includeHeaders": { + "type": { "description": "boolean" }, + "default": "true", + "isPremiumPlan": true + }, + "valueOptionsSheetName": { "type": { "description": "string" }, "isPremiumPlan": true }, + "worker": { "type": { "description": "() => Worker" }, "isPremiumPlan": true } + } +} diff --git a/docs/pages/x/api/data-grid/grid-excel-export-options.md b/docs/pages/x/api/data-grid/grid-excel-export-options.md deleted file mode 100644 index ee4f465bcffa..000000000000 --- a/docs/pages/x/api/data-grid/grid-excel-export-options.md +++ /dev/null @@ -1,34 +0,0 @@ -# GridExcelExportOptions Interface - -

The options to apply on the Excel export.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Excel export](/x/react-data-grid/export/#excel-export) - -::: - -## Import - -```js -import { GridExcelExportOptions } from '@mui/x-data-grid-premium'; -``` - -## Properties - -| Name | Type | Default | Description | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- | :------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allColumns? [](/x/introduction/licensing/#premium-plan) | boolean | false | If `true`, the hidden columns will also be exported. | -| columnsStyles? [](/x/introduction/licensing/#premium-plan) | ColumnsStylesInterface | | Object mapping column field to Exceljs style | -| exceljsPostProcess? [](/x/introduction/licensing/#premium-plan) | (processInput: GridExceljsProcessInput) => Promise<void> | | Method called after adding the rows to the workbook.
Not supported when `worker` is set.
To use with web workers, use the option in `setupExcelExportWebWorker`. | -| exceljsPreProcess? [](/x/introduction/licensing/#premium-plan) | (processInput: GridExceljsProcessInput) => Promise<void> | | Method called before adding the rows to the workbook.
Not supported when `worker` is set.
To use with web workers, use the option in `setupExcelExportWebWorker`. | -| fields? [](/x/introduction/licensing/#premium-plan) | string[] | | The columns exported.
This should only be used if you want to restrict the columns exports. | -| fileName? [](/x/introduction/licensing/#premium-plan) | string | `document.title` | The string used as the file name. | -| getRowsToExport? [](/x/introduction/licensing/#premium-plan) | (params: GridGetRowsToExportParams<Api>) => GridRowId[] | | Function that returns the list of row ids to export on the order they should be exported. | -| includeColumnGroupsHeaders? [](/x/introduction/licensing/#premium-plan) | boolean | true | If `true`, the headers of the column groups will be added into the file. | -| includeHeaders? [](/x/introduction/licensing/#premium-plan) | boolean | true | If `true`, the first row of the file will include the headers of the grid. | -| valueOptionsSheetName? [](/x/introduction/licensing/#premium-plan) | string | | Name given to the worksheet containing the columns valueOptions.
valueOptions are added to this worksheet if they are provided as an array. | -| worker? [](/x/introduction/licensing/#premium-plan) | () => Worker | | Function to return the Worker instance to be called. | diff --git a/docs/pages/x/api/data-grid/grid-export-state-params.js b/docs/pages/x/api/data-grid/grid-export-state-params.js index e1f093bdb24e..2aed47dee2a5 100644 --- a/docs/pages/x/api/data-grid/grid-export-state-params.js +++ b/docs/pages/x/api/data-grid/grid-export-state-params.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-export-state-params.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-export-state-params.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-export-state-params.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-export-state-params.json b/docs/pages/x/api/data-grid/grid-export-state-params.json new file mode 100644 index 000000000000..5c34d3ef7b1d --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-export-state-params.json @@ -0,0 +1,12 @@ +{ + "name": "GridExportStateParams", + "imports": [ + "import { GridExportStateParams } from '@mui/x-data-grid-premium'", + "import { GridExportStateParams } from '@mui/x-data-grid-pro'", + "import { GridExportStateParams } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "exportOnlyDirtyModels": { "type": { "description": "boolean" }, "default": "false" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-export-state-params.md b/docs/pages/x/api/data-grid/grid-export-state-params.md deleted file mode 100644 index 7ac92feb158d..000000000000 --- a/docs/pages/x/api/data-grid/grid-export-state-params.md +++ /dev/null @@ -1,28 +0,0 @@ -# GridExportStateParams Interface - -

Object passed as parameter in the `exportState()` grid API method.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Restore state with `apiRef`](/x/react-data-grid/state/#restore-the-state-with-apiref) - -::: - -## Import - -```js -import { GridExportStateParams } from '@mui/x-data-grid-premium'; -// or -import { GridExportStateParams } from '@mui/x-data-grid-pro'; -// or -import { GridExportStateParams } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :------------------------------------------------------------------------------------------------------ | :------------------------------------- | :-------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| exportOnlyDirtyModels? | boolean | false | By default, the grid exports all the models.
You can switch this property to `true` to only exports models that are either controlled, initialized or modified.
For instance, with this property, if you don't control or initialize the `filterModel` and you did not apply any filter, the model won't be exported.
Note that the column dimensions are not a model. The grid only exports the dimensions of the modified columns even when `exportOnlyDirtyModels` is false. | diff --git a/docs/pages/x/api/data-grid/grid-filter-item.js b/docs/pages/x/api/data-grid/grid-filter-item.js index 0e496ac37ad7..de27ba795f3f 100644 --- a/docs/pages/x/api/data-grid/grid-filter-item.js +++ b/docs/pages/x/api/data-grid/grid-filter-item.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-filter-item.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-filter-item.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-filter-item.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-filter-item.json b/docs/pages/x/api/data-grid/grid-filter-item.json new file mode 100644 index 000000000000..85bb43343309 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-filter-item.json @@ -0,0 +1,15 @@ +{ + "name": "GridFilterItem", + "imports": [ + "import { GridFilterItem } from '@mui/x-data-grid-premium'", + "import { GridFilterItem } from '@mui/x-data-grid-pro'", + "import { GridFilterItem } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "field": { "type": { "description": "string" }, "required": true }, + "operator": { "type": { "description": "string" }, "required": true }, + "id": { "type": { "description": "number | string" } }, + "value": { "type": { "description": "any" } } + } +} diff --git a/docs/pages/x/api/data-grid/grid-filter-item.md b/docs/pages/x/api/data-grid/grid-filter-item.md deleted file mode 100644 index 0f9ccd97bfd7..000000000000 --- a/docs/pages/x/api/data-grid/grid-filter-item.md +++ /dev/null @@ -1,31 +0,0 @@ -# GridFilterItem Interface - -

Filter item definition interface.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Custom filter operator](/x/react-data-grid/filtering/customization/#create-a-custom-operator) - -::: - -## Import - -```js -import { GridFilterItem } from '@mui/x-data-grid-premium'; -// or -import { GridFilterItem } from '@mui/x-data-grid-pro'; -// or -import { GridFilterItem } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Description | -| :-------------------------------------------------------------------------------------- | :---------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | -| field | string | The column from which we want to filter the rows. | -| id? | number \| string | Must be unique.
Only useful when the model contains several items. | -| operator | string | The name of the operator we want to apply. | -| value? | any | The filtering value.
The operator filtering function will decide for each row if the row values is correct compared to this value. | diff --git a/docs/pages/x/api/data-grid/grid-filter-model.js b/docs/pages/x/api/data-grid/grid-filter-model.js index 4e4fb6f1cfe4..391130de7831 100644 --- a/docs/pages/x/api/data-grid/grid-filter-model.js +++ b/docs/pages/x/api/data-grid/grid-filter-model.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-filter-model.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-filter-model.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-filter-model.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-filter-model.json b/docs/pages/x/api/data-grid/grid-filter-model.json new file mode 100644 index 000000000000..c67155f35a6b --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-filter-model.json @@ -0,0 +1,22 @@ +{ + "name": "GridFilterModel", + "imports": [ + "import { GridFilterModel } from '@mui/x-data-grid-premium'", + "import { GridFilterModel } from '@mui/x-data-grid-pro'", + "import { GridFilterModel } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "items": { "type": { "description": "GridFilterItem[]" }, "default": "[]", "required": true }, + "logicOperator": { + "type": { "description": "GridLogicOperator" }, + "default": "`GridLogicOperator.And`" + }, + "quickFilterExcludeHiddenColumns": { "type": { "description": "boolean" }, "default": "true" }, + "quickFilterLogicOperator": { + "type": { "description": "GridLogicOperator" }, + "default": "`GridLogicOperator.And`" + }, + "quickFilterValues": { "type": { "description": "any[]" }, "default": "`[]`" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-filter-model.md b/docs/pages/x/api/data-grid/grid-filter-model.md deleted file mode 100644 index 621d3039abc6..000000000000 --- a/docs/pages/x/api/data-grid/grid-filter-model.md +++ /dev/null @@ -1,32 +0,0 @@ -# GridFilterModel Interface - -

Model describing the filters to apply to the grid.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Pass filters to the grid](/x/react-data-grid/filtering/#pass-filters-to-the-data-grid) - -::: - -## Import - -```js -import { GridFilterModel } from '@mui/x-data-grid-premium'; -// or -import { GridFilterModel } from '@mui/x-data-grid-pro'; -// or -import { GridFilterModel } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :---------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :-------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | -| items | GridFilterItem[] | [] | | -| logicOperator? | GridLogicOperator | `GridLogicOperator.And` | - `GridLogicOperator.And`: the row must pass all the filter items.
- `GridLogicOperator.Or`: the row must pass at least on filter item. | -| quickFilterExcludeHiddenColumns? | boolean | true | If `false`, the quick filter will also consider cell values from hidden columns. | -| quickFilterLogicOperator? | GridLogicOperator | `GridLogicOperator.And` | - `GridLogicOperator.And`: the row must pass all the values.
- `GridLogicOperator.Or`: the row must pass at least one value. | -| quickFilterValues? | any[] | `[]` | values used to quick filter rows | diff --git a/docs/pages/x/api/data-grid/grid-filter-operator.js b/docs/pages/x/api/data-grid/grid-filter-operator.js index 6f8a94320880..a9e1bb931eb7 100644 --- a/docs/pages/x/api/data-grid/grid-filter-operator.js +++ b/docs/pages/x/api/data-grid/grid-filter-operator.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-filter-operator.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-filter-operator.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-filter-operator.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-filter-operator.json b/docs/pages/x/api/data-grid/grid-filter-operator.json new file mode 100644 index 000000000000..bde12a0cc644 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-filter-operator.json @@ -0,0 +1,24 @@ +{ + "name": "GridFilterOperator", + "imports": [ + "import { GridFilterOperator } from '@mui/x-data-grid-premium'", + "import { GridFilterOperator } from '@mui/x-data-grid-pro'", + "import { GridFilterOperator } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "getApplyFilterFn": { + "type": { "description": "GetApplyFilterFn<R, V, F>" }, + "required": true + }, + "value": { "type": { "description": "string" }, "required": true }, + "getValueAsString": { + "type": { "description": "(value: GridFilterItem['value']) => string" } + }, + "headerLabel": { "type": { "description": "string" } }, + "InputComponent": { "type": { "description": "React.JSXElementConstructor<any>" } }, + "InputComponentProps": { "type": { "description": "Record<string, any>" } }, + "label": { "type": { "description": "string" } }, + "requiresFilterValue": { "type": { "description": "boolean" }, "default": "true" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-filter-operator.md b/docs/pages/x/api/data-grid/grid-filter-operator.md deleted file mode 100644 index 9cdcdb86d29c..000000000000 --- a/docs/pages/x/api/data-grid/grid-filter-operator.md +++ /dev/null @@ -1,35 +0,0 @@ -# GridFilterOperator Interface - -

Filter operator definition interface.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Custom filter operator](/x/react-data-grid/filtering/customization/#create-a-custom-operator) - -::: - -## Import - -```js -import { GridFilterOperator } from '@mui/x-data-grid-premium'; -// or -import { GridFilterOperator } from '@mui/x-data-grid-pro'; -// or -import { GridFilterOperator } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :---------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------- | :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| getApplyFilterFn | GetApplyFilterFn<R, V, F> | | The callback that generates a filtering function for a given filter item and column.
This function can return `null` to skip filtering for this item and column. | -| getValueAsString? | (value: GridFilterItem['value']) => string | | Converts the value of a filter item to a human-readable form. | -| headerLabel? | string | | The label of the filter shown in header filter row. | -| InputComponent? | React.JSXElementConstructor<any> | | The input component to render in the filter panel for this filter operator. | -| InputComponentProps? | Record<string, any> | | The props to pass to the input component in the filter panel for this filter operator. | -| label? | string | | The label of the filter operator. | -| requiresFilterValue? | boolean | true | If `false`, filter operator doesn't require user-entered value to work.
Usually should be set to `false` for filter operators that don't have `InputComponent` (for example `isEmpty`) | -| value | string | | The name of the filter operator.
It will be matched with the `operator` property of the filter items. | diff --git a/docs/pages/x/api/data-grid/grid-print-export-options.js b/docs/pages/x/api/data-grid/grid-print-export-options.js index bf0ba5f8800d..60999a722589 100644 --- a/docs/pages/x/api/data-grid/grid-print-export-options.js +++ b/docs/pages/x/api/data-grid/grid-print-export-options.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-print-export-options.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-print-export-options.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-print-export-options.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-print-export-options.json b/docs/pages/x/api/data-grid/grid-print-export-options.json new file mode 100644 index 000000000000..6d19c1df3ffc --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-print-export-options.json @@ -0,0 +1,23 @@ +{ + "name": "GridPrintExportOptions", + "imports": [ + "import { GridPrintExportOptions } from '@mui/x-data-grid-premium'", + "import { GridPrintExportOptions } from '@mui/x-data-grid-pro'", + "import { GridPrintExportOptions } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "allColumns": { "type": { "description": "boolean" }, "default": "false" }, + "bodyClassName": { "type": { "description": "string" } }, + "copyStyles": { "type": { "description": "boolean" }, "default": "true" }, + "fields": { "type": { "description": "string[]" } }, + "fileName": { "type": { "description": "string" }, "default": "The title of the page." }, + "getRowsToExport": { + "type": { "description": "(params: GridPrintGetRowsToExportParams) => GridRowId[]" } + }, + "hideFooter": { "type": { "description": "boolean" }, "default": "false" }, + "hideToolbar": { "type": { "description": "boolean" }, "default": "false" }, + "includeCheckboxes": { "type": { "description": "boolean" }, "default": "false" }, + "pageStyle": { "type": { "description": "string | Function" } } + } +} diff --git a/docs/pages/x/api/data-grid/grid-print-export-options.md b/docs/pages/x/api/data-grid/grid-print-export-options.md deleted file mode 100644 index 2106c9ec94a1..000000000000 --- a/docs/pages/x/api/data-grid/grid-print-export-options.md +++ /dev/null @@ -1,37 +0,0 @@ -# GridPrintExportOptions Interface - -

The options to apply on the Print export.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Print export](/x/react-data-grid/export/#print-export) - -::: - -## Import - -```js -import { GridPrintExportOptions } from '@mui/x-data-grid-premium'; -// or -import { GridPrintExportOptions } from '@mui/x-data-grid-pro'; -// or -import { GridPrintExportOptions } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :-------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | -| allColumns? | boolean | false | If `true`, the hidden columns will also be exported. | -| bodyClassName? | string | | One or more classes passed to the print window. | -| copyStyles? | boolean | true | If `false`, all <style> and <link type="stylesheet" /> tags from the <head> will not be copied
to the print window. | -| fields? | string[] | | The columns exported.
This should only be used if you want to restrict the columns exports. | -| fileName? | string | The title of the page. | The value to be used as the print window title. | -| getRowsToExport? | (params: GridPrintGetRowsToExportParams) => GridRowId[] | | Function that returns the list of row ids to export in the order they should be exported. | -| hideFooter? | boolean | false | If `true`, the footer is removed for when printing. | -| hideToolbar? | boolean | false | If `true`, the toolbar is removed for when printing. | -| includeCheckboxes? | boolean | false | If `true`, the selection checkboxes will be included when printing. | -| pageStyle? | string \| Function | | Provide Print specific styles to the print window. | diff --git a/docs/pages/x/api/data-grid/grid-row-class-name-params.js b/docs/pages/x/api/data-grid/grid-row-class-name-params.js index 02f1a861f343..5fac145126d2 100644 --- a/docs/pages/x/api/data-grid/grid-row-class-name-params.js +++ b/docs/pages/x/api/data-grid/grid-row-class-name-params.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-row-class-name-params.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-row-class-name-params.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-row-class-name-params.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-row-class-name-params.json b/docs/pages/x/api/data-grid/grid-row-class-name-params.json new file mode 100644 index 000000000000..a465debda6d7 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-row-class-name-params.json @@ -0,0 +1,17 @@ +{ + "name": "GridRowClassNameParams", + "imports": [ + "import { GridRowClassNameParams } from '@mui/x-data-grid-premium'", + "import { GridRowClassNameParams } from '@mui/x-data-grid-pro'", + "import { GridRowClassNameParams } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "columns": { "type": { "description": "GridColDef[]" }, "required": true }, + "id": { "type": { "description": "GridRowId" }, "required": true }, + "indexRelativeToCurrentPage": { "type": { "description": "number" }, "required": true }, + "isFirstVisible": { "type": { "description": "boolean" }, "required": true }, + "isLastVisible": { "type": { "description": "boolean" }, "required": true }, + "row": { "type": { "description": "R" }, "required": true } + } +} diff --git a/docs/pages/x/api/data-grid/grid-row-class-name-params.md b/docs/pages/x/api/data-grid/grid-row-class-name-params.md deleted file mode 100644 index 9016971bce36..000000000000 --- a/docs/pages/x/api/data-grid/grid-row-class-name-params.md +++ /dev/null @@ -1,33 +0,0 @@ -# GridRowClassNameParams Interface - -

Object passed as parameter in the row `getRowClassName` callback prop.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Styling rows](/x/react-data-grid/style/#styling-rows) - -::: - -## Import - -```js -import { GridRowClassNameParams } from '@mui/x-data-grid-premium'; -// or -import { GridRowClassNameParams } from '@mui/x-data-grid-pro'; -// or -import { GridRowClassNameParams } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Description | -| :-------------------------------------------------------- | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------- | -| columns | GridColDef[] | All grid columns. | -| id | GridRowId | The grid row id. | -| indexRelativeToCurrentPage | number | Index of the row in the current page.
If the pagination is disabled, it will be the index relative to all filtered rows. | -| isFirstVisible | boolean | Whether this row is the first visible or not. | -| isLastVisible | boolean | Whether this row is the last visible or not. | -| row | R | The row model of the row that the current cell belongs to. | diff --git a/docs/pages/x/api/data-grid/grid-row-params.js b/docs/pages/x/api/data-grid/grid-row-params.js index e963d9494bf6..9742086b972e 100644 --- a/docs/pages/x/api/data-grid/grid-row-params.js +++ b/docs/pages/x/api/data-grid/grid-row-params.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-row-params.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-row-params.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-row-params.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-row-params.json b/docs/pages/x/api/data-grid/grid-row-params.json new file mode 100644 index 000000000000..1231121600c4 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-row-params.json @@ -0,0 +1,14 @@ +{ + "name": "GridRowParams", + "imports": [ + "import { GridRowParams } from '@mui/x-data-grid-premium'", + "import { GridRowParams } from '@mui/x-data-grid-pro'", + "import { GridRowParams } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "columns": { "type": { "description": "GridColDef[]" }, "required": true }, + "id": { "type": { "description": "GridRowId" }, "required": true }, + "row": { "type": { "description": "R" }, "required": true } + } +} diff --git a/docs/pages/x/api/data-grid/grid-row-params.md b/docs/pages/x/api/data-grid/grid-row-params.md deleted file mode 100644 index f6ed198f4ae2..000000000000 --- a/docs/pages/x/api/data-grid/grid-row-params.md +++ /dev/null @@ -1,30 +0,0 @@ -# GridRowParams Interface - -

Object passed as parameter in the row callbacks.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Master detail](/x/react-data-grid/master-detail/) - -::: - -## Import - -```js -import { GridRowParams } from '@mui/x-data-grid-premium'; -// or -import { GridRowParams } from '@mui/x-data-grid-pro'; -// or -import { GridRowParams } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Description | -| :------------------------------------- | :------------------------------------------ | :--------------------------------------------------------- | -| columns | GridColDef[] | All grid columns. | -| id | GridRowId | The grid row id. | -| row | R | The row model of the row that the current cell belongs to. | diff --git a/docs/pages/x/api/data-grid/grid-row-spacing-params.js b/docs/pages/x/api/data-grid/grid-row-spacing-params.js index 4e3be6c53759..2547f839fc7f 100644 --- a/docs/pages/x/api/data-grid/grid-row-spacing-params.js +++ b/docs/pages/x/api/data-grid/grid-row-spacing-params.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-row-spacing-params.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-row-spacing-params.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-row-spacing-params.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-row-spacing-params.json b/docs/pages/x/api/data-grid/grid-row-spacing-params.json new file mode 100644 index 000000000000..72cd33c599de --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-row-spacing-params.json @@ -0,0 +1,16 @@ +{ + "name": "GridRowSpacingParams", + "imports": [ + "import { GridRowSpacingParams } from '@mui/x-data-grid-premium'", + "import { GridRowSpacingParams } from '@mui/x-data-grid-pro'", + "import { GridRowSpacingParams } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "id": { "type": { "description": "GridRowId" }, "required": true }, + "indexRelativeToCurrentPage": { "type": { "description": "number" }, "required": true }, + "isFirstVisible": { "type": { "description": "boolean" }, "required": true }, + "isLastVisible": { "type": { "description": "boolean" }, "required": true }, + "model": { "type": { "description": "R" }, "required": true } + } +} diff --git a/docs/pages/x/api/data-grid/grid-row-spacing-params.md b/docs/pages/x/api/data-grid/grid-row-spacing-params.md deleted file mode 100644 index e62d1975949a..000000000000 --- a/docs/pages/x/api/data-grid/grid-row-spacing-params.md +++ /dev/null @@ -1,32 +0,0 @@ -# GridRowSpacingParams Interface - -

Object passed as parameter in the row `getRowSpacing` callback prop.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Row spacing](/x/react-data-grid/row-height/#row-spacing) - -::: - -## Import - -```js -import { GridRowSpacingParams } from '@mui/x-data-grid-premium'; -// or -import { GridRowSpacingParams } from '@mui/x-data-grid-pro'; -// or -import { GridRowSpacingParams } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Description | -| :-------------------------------------------------------- | :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- | -| id | GridRowId | The row id. | -| indexRelativeToCurrentPage | number | Index of the row in the current page.
If the pagination is disabled, it will be the index relative to all filtered rows. | -| isFirstVisible | boolean | Whether this row is the first visible or not. | -| isLastVisible | boolean | Whether this row is the last visible or not. | -| model | R | The row model. | diff --git a/docs/pages/x/api/data-grid/grid-single-select-col-def.js b/docs/pages/x/api/data-grid/grid-single-select-col-def.js index bb9fedb9b879..77a3ef72e58e 100644 --- a/docs/pages/x/api/data-grid/grid-single-select-col-def.js +++ b/docs/pages/x/api/data-grid/grid-single-select-col-def.js @@ -1,7 +1,26 @@ import * as React from 'react'; -import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; -import * as pageProps from './grid-single-select-col-def.md?muiMarkdown'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './grid-single-select-col-def.json'; -export default function Page() { - return ; +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); } + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/data-grid/', + false, + /\.\/grid-single-select-col-def.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/data-grid/grid-single-select-col-def.json b/docs/pages/x/api/data-grid/grid-single-select-col-def.json new file mode 100644 index 000000000000..2e62dcbf36e9 --- /dev/null +++ b/docs/pages/x/api/data-grid/grid-single-select-col-def.json @@ -0,0 +1,104 @@ +{ + "name": "GridSingleSelectColDef", + "imports": [ + "import { GridSingleSelectColDef } from '@mui/x-data-grid-premium'", + "import { GridSingleSelectColDef } from '@mui/x-data-grid-pro'", + "import { GridSingleSelectColDef } from '@mui/x-data-grid'" + ], + "demos": "", + "properties": { + "field": { "type": { "description": "string" }, "required": true }, + "type": { + "type": { "description": "'singleSelect'" }, + "default": "'singleSelect'", + "required": true + }, + "aggregable": { + "type": { "description": "boolean" }, + "default": "true", + "isPremiumPlan": true + }, + "align": { "type": { "description": "GridAlignment" } }, + "availableAggregationFunctions": { + "type": { "description": "string[]" }, + "isPremiumPlan": true + }, + "cellClassName": { "type": { "description": "GridCellClassNamePropType<R, V>" } }, + "colSpan": { + "type": { "description": "number | GridColSpanFn<R, V, F>" }, + "default": "1" + }, + "description": { "type": { "description": "string" } }, + "disableColumnMenu": { "type": { "description": "boolean" }, "default": "false" }, + "disableExport": { "type": { "description": "boolean" }, "default": "false" }, + "disableReorder": { "type": { "description": "boolean" }, "default": "false" }, + "display": { "type": { "description": "'text' | 'flex'" } }, + "editable": { "type": { "description": "boolean" }, "default": "false" }, + "filterable": { "type": { "description": "boolean" }, "default": "true" }, + "filterOperators": { "type": { "description": "GridFilterOperator<R, V, F>[]" } }, + "flex": { "type": { "description": "number" } }, + "getApplyQuickFilterFn": { "type": { "description": "GetApplyQuickFilterFn<R, V>" } }, + "getOptionLabel": { "type": { "description": "(value: ValueOptions) => string" } }, + "getOptionValue": { "type": { "description": "(value: ValueOptions) => any" } }, + "getSortComparator": { + "type": { + "description": "(sortDirection: GridSortDirection) => GridComparatorFn<V> | undefined" + } + }, + "groupable": { "type": { "description": "boolean" }, "default": "true" }, + "groupingValueGetter": { + "type": { "description": "GridGroupingValueGetter<R>" }, + "isPremiumPlan": true + }, + "headerAlign": { "type": { "description": "GridAlignment" } }, + "headerClassName": { "type": { "description": "GridColumnHeaderClassNamePropType" } }, + "headerName": { "type": { "description": "string" } }, + "hideable": { "type": { "description": "boolean" }, "default": "true" }, + "hideSortIcons": { "type": { "description": "boolean" }, "default": "false" }, + "maxWidth": { "type": { "description": "number" }, "default": "Infinity" }, + "minWidth": { "type": { "description": "number" }, "default": "50" }, + "pastedValueParser": { + "type": { "description": "GridPastedValueParser<R, V, F>" }, + "isPremiumPlan": true + }, + "pinnable": { "type": { "description": "boolean" }, "default": "true" }, + "preProcessEditCellProps": { + "type": { + "description": "(params: GridPreProcessEditCellProps) => GridEditCellProps | Promise<GridEditCellProps>" + } + }, + "renderCell": { + "type": { + "description": "(params: GridRenderCellParams<R, V, F>) => React.ReactNode" + } + }, + "renderEditCell": { + "type": { + "description": "(params: GridRenderEditCellParams<R, V, F>) => React.ReactNode" + } + }, + "renderHeader": { + "type": { + "description": "(params: GridColumnHeaderParams<R, V, F>) => React.ReactNode" + } + }, + "renderHeaderFilter": { + "type": { "description": "(params: GridRenderHeaderFilterProps) => React.ReactNode" }, + "isProPlan": true + }, + "resizable": { "type": { "description": "boolean" }, "default": "true" }, + "sortable": { "type": { "description": "boolean" }, "default": "true" }, + "sortComparator": { "type": { "description": "GridComparatorFn<V>" } }, + "sortingOrder": { "type": { "description": "GridSortDirection[]" } }, + "valueFormatter": { "type": { "description": "GridValueFormatter<R, V, F>" } }, + "valueGetter": { "type": { "description": "GridValueGetter<R, V, F>" } }, + "valueOptions": { + "type": { + "description": "Array<ValueOptions> | ((params: GridValueOptionsParams<R>) => Array<ValueOptions>)" + } + }, + "valueParser": { "type": { "description": "GridValueParser<R, V, F>" } }, + "valueSetter": { "type": { "description": "GridValueSetter<R, V, F>" } }, + "width": { "type": { "description": "number" }, "default": "100" } + } +} diff --git a/docs/pages/x/api/data-grid/grid-single-select-col-def.md b/docs/pages/x/api/data-grid/grid-single-select-col-def.md deleted file mode 100644 index b42076119a95..000000000000 --- a/docs/pages/x/api/data-grid/grid-single-select-col-def.md +++ /dev/null @@ -1,73 +0,0 @@ -# GridSingleSelectColDef Interface - -

Column Definition interface used for columns with the `singleSelect` type.

- -## Demos - -:::info -For examples and details on the usage, check the following pages: - -- [Special column properties](/x/react-data-grid/column-definition/#special-properties) - -::: - -## Import - -```js -import { GridSingleSelectColDef } from '@mui/x-data-grid-premium'; -// or -import { GridSingleSelectColDef } from '@mui/x-data-grid-pro'; -// or -import { GridSingleSelectColDef } from '@mui/x-data-grid'; -``` - -## Properties - -| Name | Type | Default | Description | -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| aggregable? [](/x/introduction/licensing/#premium-plan) | boolean | true | If `true`, the cells of the column can be aggregated based. | -| align? | GridAlignment | | Allows to align the column values in cells. | -| availableAggregationFunctions? [](/x/introduction/licensing/#premium-plan) | string[] | | Limit the aggregation function usable on this column.
By default, the column will have all the aggregation functions that are compatible with its type. | -| cellClassName? | GridCellClassNamePropType<R, V> | | Class name that will be added in cells for that column. | -| colSpan? | number \| GridColSpanFn<R, V, F> | 1 | Number of columns a cell should span. | -| description? | string | | The description of the column rendered as tooltip if the column header name is not fully displayed. | -| disableColumnMenu? | boolean | false | If `true`, the column menu is disabled for this column. | -| disableExport? | boolean | false | If `true`, this column will not be included in exports. | -| disableReorder? | boolean | false | If `true`, this column cannot be reordered. | -| display? | 'text' \| 'flex' | | Display mode for the cell:
- 'text': For text-based cells (default)
- 'flex': For cells with HTMLElement children | -| editable? | boolean | false | If `true`, the cells of the column are editable. | -| field | string | | The column identifier. It's used to map with GridRowModel values. | -| filterable? | boolean | true | If `true`, the column is filterable. | -| filterOperators? | GridFilterOperator<R, V, F>[] | | Allows setting the filter operators for this column. | -| flex? | number | | If set, it indicates that a column has fluid width. Range [0, ∞). | -| getApplyQuickFilterFn? | GetApplyQuickFilterFn<R, V> | | The callback that generates a filtering function for a given quick filter value.
This function can return `null` to skip filtering for this value and column. | -| getOptionLabel? | (value: ValueOptions) => string | | Used to determine the label displayed for a given value option. | -| getOptionValue? | (value: ValueOptions) => any | | Used to determine the value used for a value option. | -| getSortComparator? | (sortDirection: GridSortDirection) => GridComparatorFn<V> \| undefined | | Allows to use a different comparator function depending on the sort direction.
Takes precedence over `sortComparator`. | -| groupable? | boolean | true | If `true`, the rows can be grouped based on this column values (pro-plan only).
Only available in DataGridPremium. | -| groupingValueGetter? [](/x/introduction/licensing/#premium-plan) | GridGroupingValueGetter<R> | | Function that transforms a complex cell value into a key that be used for grouping the rows. | -| headerAlign? | GridAlignment | | Header cell element alignment. | -| headerClassName? | GridColumnHeaderClassNamePropType | | Class name that will be added in the column header cell. | -| headerName? | string | | The title of the column rendered in the column header cell. | -| hideable? | boolean | true | If `false`, removes the buttons for hiding this column. | -| hideSortIcons? | boolean | false | Toggle the visibility of the sort icons. | -| maxWidth? | number | Infinity | Sets the maximum width of a column. | -| minWidth? | number | 50 | Sets the minimum width of a column. | -| pastedValueParser? [](/x/introduction/licensing/#premium-plan) | GridPastedValueParser<R, V, F> | | Function that takes the clipboard-pasted value and converts it to a value used internally. | -| pinnable? | boolean | true | If `false`, the menu items for column pinning menu will not be rendered.
Only available in DataGridPro. | -| preProcessEditCellProps? | (params: GridPreProcessEditCellProps) => GridEditCellProps \| Promise<GridEditCellProps> | | Callback fired when the edit props of the cell changes.
It allows to process the props that saved into the state. | -| renderCell? | (params: GridRenderCellParams<R, V, F>) => React.ReactNode | | Allows to override the component rendered as cell for this column. | -| renderEditCell? | (params: GridRenderEditCellParams<R, V, F>) => React.ReactNode | | Allows to override the component rendered in edit cell mode for this column. | -| renderHeader? | (params: GridColumnHeaderParams<R, V, F>) => React.ReactNode | | Allows to render a component in the column header cell. | -| renderHeaderFilter? [](/x/introduction/licensing/#pro-plan) | (params: GridRenderHeaderFilterProps) => React.ReactNode | | Allows to render a component in the column header filter cell. | -| resizable? | boolean | true | If `true`, the column is resizable. | -| sortable? | boolean | true | If `true`, the column is sortable. | -| sortComparator? | GridComparatorFn<V> | | A comparator function used to sort rows. | -| sortingOrder? | GridSortDirection[] | | The order of the sorting sequence. | -| type | 'singleSelect' | 'singleSelect' | The type of the column. | -| valueFormatter? | GridValueFormatter<R, V, F> | | Function that allows to apply a formatter before rendering its value. | -| valueGetter? | GridValueGetter<R, V, F> | | Function that allows to get a specific data instead of field to render in the cell. | -| valueOptions? | Array<ValueOptions> \| ((params: GridValueOptionsParams<R>) => Array<ValueOptions>) | | To be used in combination with `type: 'singleSelect'`. This is an array (or a function returning an array) of the possible cell values and labels. | -| valueParser? | GridValueParser<R, V, F> | | Function that takes the user-entered value and converts it to a value used internally. | -| valueSetter? | GridValueSetter<R, V, F> | | Function that allows to customize how the entered value is stored in the row.
It only works with cell/row editing. | -| width? | number | 100 | Set the width of the column. | diff --git a/docs/scripts/api/buildInterfacesDocumentation.ts b/docs/scripts/api/buildInterfacesDocumentation.ts index fe5d16a3bf28..e994cba656c0 100644 --- a/docs/scripts/api/buildInterfacesDocumentation.ts +++ b/docs/scripts/api/buildInterfacesDocumentation.ts @@ -1,10 +1,9 @@ import * as ts from 'typescript'; -import * as prettier from 'prettier'; +import { EOL } from 'os'; import kebabCase from 'lodash/kebabCase'; import path from 'path'; import { renderMarkdown } from '@mui/monorepo/packages/markdown'; import { - escapeCell, getSymbolDescription, getSymbolJSDocTags, linkify, @@ -12,6 +11,7 @@ import { writePrettifiedFile, resolveExportSpecifier, DocumentedInterfaces, + escapeCell, } from './utils'; import { XTypeScriptProjects, @@ -31,7 +31,7 @@ interface ParsedProperty { name: string; description: string; tags: { [tagName: string]: ts.JSDocTagInfo }; - isOptional: boolean; + required: boolean; typeStr: string; /** * Name of the projects on which the interface has this property @@ -39,6 +39,10 @@ interface ParsedProperty { projects: XProjectNames[]; } +const translationPagesDirectory = 'docs/translations/api-docs/data-grid'; +const importTranslationPagesDirectory = 'docsx/translations/api-docs/data-grid'; +const apiPagesDirectory = path.join(process.cwd(), `docs/pages/x/api/data-grid`); + const GRID_API_INTERFACES_WITH_DEDICATED_PAGES = [ 'GridCellSelectionApi', 'GridColumnPinningApi', @@ -93,7 +97,7 @@ const parseProperty = async ( name: propertySymbol.name, description: getSymbolDescription(propertySymbol, project), tags: getSymbolJSDocTags(propertySymbol), - isOptional: !!propertySymbol.declarations?.find(ts.isPropertySignature)?.questionToken, + required: !propertySymbol.declarations?.find(ts.isPropertySignature)?.questionToken, typeStr: await stringifySymbol(propertySymbol, project), projects: [project.name], }); @@ -173,123 +177,55 @@ const parseInterfaceSymbol = async ( return parsedInterface; }; -function generateMarkdownFromProperties( - object: ParsedObject, - documentedInterfaces: DocumentedInterfaces, -) { - const hasDefaultValue = object.properties.some((property) => { - return property.tags.default; - }); - - const headers = hasDefaultValue - ? ` -| Name | Type | Default | Description | -|:-----|:-----|:--------|:------------|` - : ` -| Name | Type | Description | -|:-----|:-----|:------------|`; - - let text = `${headers}\n`; - - object.properties.forEach((property) => { - const defaultValue = property.tags.default?.text?.[0].text; - - let planImg: string; - if (property.projects.includes('x-data-grid')) { - planImg = ''; - } else if (property.projects.includes('x-data-grid-pro')) { - planImg = - ' [](/x/introduction/licensing/#pro-plan)'; - } else if (property.projects.includes('x-data-grid-premium')) { - planImg = - ' [](/x/introduction/licensing/#premium-plan)'; - } else { - throw new Error(`No valid plan found for ${property.name} property in ${object.name}`); - } - - const formattedName = property.isOptional - ? `${property.name}?${planImg}` - : `${property.name}${planImg}`; - - const formattedType = `${escapeCell(property.typeStr)}`; - - const formattedDefaultValue = - defaultValue == null ? '' : `${escapeCell(defaultValue)}`; - - const formattedDescription = escapeCell( - linkify(property.description, documentedInterfaces, 'markdown'), - ); - - if (hasDefaultValue) { - text += `| ${formattedName} | ${formattedType} | ${formattedDefaultValue} | ${formattedDescription} |\n`; - } else { - text += `| ${formattedName} | ${formattedType} | ${formattedDescription} |\n`; - } - }); - - return text; +function getPlanLevel(property: ParsedProperty) { + if (property.projects.includes('x-data-grid')) { + return ''; + } + if (property.projects.includes('x-data-grid-pro')) { + return 'pro'; + } + if (property.projects.includes('x-data-grid-premium')) { + return 'premium'; + } + throw new Error(`No valid plan found for ${property.name} property`); } -async function generateImportStatement(objects: ParsedObject[], projects: XTypeScriptProjects) { - let imports = '```js\n'; +function getDefaultValue(property: ParsedProperty) { + const defaultValue = property.tags.default?.text?.[0].text; + if (defaultValue === undefined) { + return defaultValue; + } + return escapeCell(defaultValue); +} +function generateImportStatement(object: ParsedObject, projects: XTypeScriptProjects) { const projectImports = Array.from(projects.values()) .map((project) => { - const objectsInProject = objects.filter((object) => { - return !!project.exports[object.name]; - }); - - if (objectsInProject.length === 0) { + if (!project.exports[object.name]) { return null; } - return `import {${objectsInProject.map((object) => object.name)}} from '@mui/${ - project.name - }'`; + return `import { ${object.name} } from '@mui/${project.name}'`; }) .filter((el): el is string => !!el) // Display the imports from the pro packages above imports from the community packages .sort((a, b) => b.length - a.length); - - imports += await prettier.format(projectImports.join('\n// or\n'), { - singleQuote: true, - semi: false, - trailingComma: 'none', - parser: 'typescript', - }); - imports += '\n```'; - - return imports; + return projectImports; } -async function generateMarkdown( - object: ParsedObject, - projects: XTypeScriptProjects, - documentedInterfaces: DocumentedInterfaces, -) { - const demos = object.tags.demos; - const description = linkify(object.description, documentedInterfaces, 'html'); - const imports = await generateImportStatement([object], projects); - - let text = `# ${object.name} Interface\n`; - text += `

${description}

\n\n`; - - if (demos && demos.text && demos.text.length > 0) { - text += '## Demos\n\n'; - text += ':::info\n'; - text += 'For examples and details on the usage, check the following pages:\n\n'; - demos.text.forEach((demoLink) => { - text += demoLink.text; - }); - text += '\n\n:::\n\n'; +function extractDemos(tagInfo: ts.JSDocTagInfo): { demos?: string } { + if (!tagInfo || !tagInfo.text) { + return {}; } + const demos = tagInfo.text + .map(({ text }) => text.matchAll(/\[(.*)\]\((.*)\)/g).next().value) + .map(([, text, url]) => `
  • ${text}
  • `); - text += '## Import\n\n'; - text += `${imports}\n\n`; - text += '## Properties\n\n'; - text += `${generateMarkdownFromProperties(object, documentedInterfaces)}`; + if (demos.length === 0) { + return {}; + } - return text; + return { demos: `
      ${demos.join('\n')}
    ` }; } interface BuildInterfacesDocumentationOptions { @@ -356,26 +292,99 @@ export default async function buildInterfacesDocumentation( // eslint-disable-next-line no-console console.log('Built JSON file for', parsedInterface.name); } else { + const content = { + name: parsedInterface.name, + imports: generateImportStatement(parsedInterface, projects), + ...extractDemos(parsedInterface.tags.demos), + properties: {}, + }; + + const translations = { + interfaceDescription: renderMarkdown( + linkify(escapeCell(parsedInterface.description || ''), documentedInterfaces, 'html'), + ), + propertiesDescriptions: {}, + }; + + parsedInterface.properties + .map((property) => ({ + name: property.name, + description: renderMarkdown( + linkify(escapeCell(property.description), documentedInterfaces, 'html'), + ), + type: { description: escapeCell(property.typeStr) }, + default: getDefaultValue(property), + planLevel: getPlanLevel(property), + required: property.required, + })) + .sort((a, b) => { + if ((a.required && b.required) || (!a.required && !b.required)) { + return a.name.localeCompare(b.name); + } + if (a.required) { + return -1; + } + return 1; + }) + .forEach(({ name, description, type, default: defaultValue, required, planLevel }) => { + content.properties[name] = { type }; + if (defaultValue) { + content.properties[name].default = defaultValue; + } + if (required) { + content.properties[name].required = required; + } + if (planLevel === 'pro') { + content.properties[name].isProPlan = true; + } + if (planLevel === 'premium') { + content.properties[name].isPremiumPlan = true; + } + translations.propertiesDescriptions[name] = { description }; + }); + // eslint-disable-next-line no-await-in-loop - const markdown = await generateMarkdown(parsedInterface, projects, documentedInterfaces); + await writePrettifiedFile( + path.resolve(apiPagesDirectory, `${slug}.json`), + JSON.stringify(content), + project, + ); + // eslint-disable-next-line no-await-in-loop await writePrettifiedFile( - path.resolve(apiPagesFolder, project.documentationFolderName, `${slug}.md`), - markdown, + path.resolve(translationPagesDirectory, `${slug}.json`), + JSON.stringify(translations), project, ); // eslint-disable-next-line no-await-in-loop await writePrettifiedFile( - path.resolve(apiPagesFolder, project.documentationFolderName, `${slug}.js`), + path.resolve(apiPagesDirectory, `${slug}.js`), `import * as React from 'react'; - import MarkdownDocs from '@mui/monorepo/docs/src/modules/components/MarkdownDocs'; - import * as pageProps from './${slug}.md?muiMarkdown'; - - export default function Page() { - return ; + import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; + import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; + import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; + import jsonPageContent from './${slug}.json'; + + export default function Page(props) { + const { descriptions, pageContent } = props; + return ; } - `, + + Page.getInitialProps = () => { + const req = require.context( + '${importTranslationPagesDirectory}/', + false, + /\\.\\/${slug}.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; + }; + `.replace(/\r?\n/g, EOL), project, ); diff --git a/docs/scripts/api/utils.ts b/docs/scripts/api/utils.ts index ddb5f560a1fa..7f060a3805e5 100644 --- a/docs/scripts/api/utils.ts +++ b/docs/scripts/api/utils.ts @@ -26,11 +26,7 @@ export function getJsdocDefaultValue(jsdoc: Annotation) { } export function escapeCell(value: string) { - return value - .replace(//g, '>') - .replace(/\|/g, '\\|') - .replace(/\r?\n/g, '
    '); + return value.replace(//g, '>').replace(/\r?\n/g, '
    '); } export const formatType = async (rawType: string) => { diff --git a/docs/src/modules/components/InterfaceApiPage.js b/docs/src/modules/components/InterfaceApiPage.js new file mode 100644 index 000000000000..a2b02e6f8291 --- /dev/null +++ b/docs/src/modules/components/InterfaceApiPage.js @@ -0,0 +1,184 @@ +/* eslint-disable react/no-danger */ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { exactProp } from '@mui/utils'; +import Typography from '@mui/material/Typography'; +import Alert from '@mui/material/Alert'; +import VerifiedRoundedIcon from '@mui/icons-material/VerifiedRounded'; +import { alpha } from '@mui/material/styles'; +import { useTranslate, useUserLanguage } from 'docs/src/modules/utils/i18n'; +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import MarkdownElement from 'docs/src/modules/components/MarkdownElement'; +import AppLayoutDocs from 'docs/src/modules/components/AppLayoutDocs'; +import PropertiesSection from 'docs/src/modules/components/ApiPage/sections/PropertiesSection'; +import { DEFAULT_API_LAYOUT_STORAGE_KEYS } from 'docs/src/modules/components/ApiPage/sections/ToggleDisplayOption'; + +export function getTranslatedHeader(t, header) { + const translations = { + demos: t('api-docs.demos'), + import: t('api-docs.import'), + }; + + // TODO Drop runtime type-checking once we type-check this file + if (!translations.hasOwnProperty(header)) { + throw new TypeError( + `Unable to translate header '${header}'. Did you mean one of '${Object.keys( + translations, + ).join("', '")}'`, + ); + } + + return translations[header] || header; +} + +function Heading(props) { + const { hash, level: Level = 'h2' } = props; + const t = useTranslate(); + + return ( + + {getTranslatedHeader(t, hash)} + + + + + + + ); +} + +Heading.propTypes = { + hash: PropTypes.string.isRequired, + level: PropTypes.string, +}; + +export default function ApiPage(props) { + const { + descriptions, + pageContent, + defaultLayout = 'expanded', + layoutStorageKey = DEFAULT_API_LAYOUT_STORAGE_KEYS, + } = props; + const t = useTranslate(); + const userLanguage = useUserLanguage(); + + const { demos, filename = '', properties } = pageContent; + + const { componentDescription, propertiesDescriptions, interfaceDescription } = + descriptions[userLanguage]; + const description = t('api-docs.pageDescription').replace(/{{name}}/, pageContent.name); + + // Prefer linking the .tsx or .d.ts for the "Edit this page" link. + const apiSourceLocation = filename.replace('.js', '.d.ts'); + + return ( + + +

    {pageContent.name} API

    + + + {demos && ( + } + sx={[ + (theme) => ({ + mt: 1.5, + pt: 1, + px: 2, + pb: 0, + fontSize: theme.typography.pxToRem(16), + backgroundColor: (theme.vars || theme).palette.success[50], + borderColor: (theme.vars || theme).palette.success[100], + '& * p': { + mb: 1, + }, + '& * a': { + fontWeight: theme.typography.fontWeightMedium, + color: (theme.vars || theme).palette.success[900], + textDecorationColor: alpha(theme.palette.success[600], 0.3), + }, + ...theme.applyDarkStyles({ + '& * a': { + color: (theme.vars || theme).palette.success[100], + textDecorationColor: alpha(theme.palette.success[100], 0.3), + }, + backgroundColor: alpha(theme.palette.success[700], 0.15), + borderColor: alpha(theme.palette.success[600], 0.3), + }), + }), + ]} + > + For examples and details on the usage, check the following pages:

    + ${demos}`, + }} + /> +
    + )} + + + + {componentDescription ? ( + +
    +
    + +
    + ) : null} + +
    + + + + + +
    + ); +} + +ApiPage.propTypes = { + defaultLayout: PropTypes.oneOf(['collapsed', 'expanded', 'table']), + descriptions: PropTypes.object.isRequired, + layoutStorageKey: PropTypes.shape({ + props: PropTypes.string, + }), + pageContent: PropTypes.object.isRequired, +}; + +if (process.env.NODE_ENV !== 'production') { + ApiPage.propTypes = exactProp(ApiPage.propTypes); +} diff --git a/docs/translations/api-docs/data-grid/grid-actions-col-def.json b/docs/translations/api-docs/data-grid/grid-actions-col-def.json new file mode 100644 index 000000000000..087bee3376cc --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-actions-col-def.json @@ -0,0 +1,95 @@ +{ + "interfaceDescription": "Column Definition interface used for columns with the actions type.", + "propertiesDescriptions": { + "field": { + "description": "The column identifier. It's used to map with GridRowModel values." + }, + "getActions": { "description": "Function that returns the actions to be shown." }, + "type": { "description": "The type of the column." }, + "aggregable": { + "description": "If true, the cells of the column can be aggregated based." + }, + "align": { "description": "Allows to align the column values in cells." }, + "availableAggregationFunctions": { + "description": "Limit the aggregation function usable on this column.
    By default, the column will have all the aggregation functions that are compatible with its type." + }, + "cellClassName": { "description": "Class name that will be added in cells for that column." }, + "colSpan": { "description": "Number of columns a cell should span." }, + "description": { + "description": "The description of the column rendered as tooltip if the column header name is not fully displayed." + }, + "disableColumnMenu": { + "description": "If true, the column menu is disabled for this column." + }, + "disableExport": { + "description": "If true, this column will not be included in exports." + }, + "disableReorder": { "description": "If true, this column cannot be reordered." }, + "display": { + "description": "Display mode for the cell:
    - 'text': For text-based cells (default)
    - 'flex': For cells with HTMLElement children" + }, + "editable": { "description": "If true, the cells of the column are editable." }, + "filterable": { "description": "If true, the column is filterable." }, + "filterOperators": { "description": "Allows setting the filter operators for this column." }, + "flex": { "description": "If set, it indicates that a column has fluid width. Range [0, ∞)." }, + "getApplyQuickFilterFn": { + "description": "The callback that generates a filtering function for a given quick filter value.
    This function can return null to skip filtering for this value and column." + }, + "getSortComparator": { + "description": "Allows to use a different comparator function depending on the sort direction.
    Takes precedence over sortComparator." + }, + "groupable": { + "description": "If true, the rows can be grouped based on this column values (pro-plan only).
    Only available in DataGridPremium." + }, + "groupingValueGetter": { + "description": "Function that transforms a complex cell value into a key that be used for grouping the rows." + }, + "headerAlign": { "description": "Header cell element alignment." }, + "headerClassName": { + "description": "Class name that will be added in the column header cell." + }, + "headerName": { "description": "The title of the column rendered in the column header cell." }, + "hideable": { + "description": "If false, removes the buttons for hiding this column." + }, + "hideSortIcons": { "description": "Toggle the visibility of the sort icons." }, + "maxWidth": { "description": "Sets the maximum width of a column." }, + "minWidth": { "description": "Sets the minimum width of a column." }, + "pastedValueParser": { + "description": "Function that takes the clipboard-pasted value and converts it to a value used internally." + }, + "pinnable": { + "description": "If false, the menu items for column pinning menu will not be rendered.
    Only available in DataGridPro." + }, + "preProcessEditCellProps": { + "description": "Callback fired when the edit props of the cell changes.
    It allows to process the props that saved into the state." + }, + "renderCell": { + "description": "Allows to override the component rendered as cell for this column." + }, + "renderEditCell": { + "description": "Allows to override the component rendered in edit cell mode for this column." + }, + "renderHeader": { "description": "Allows to render a component in the column header cell." }, + "renderHeaderFilter": { + "description": "Allows to render a component in the column header filter cell." + }, + "resizable": { "description": "If true, the column is resizable." }, + "sortable": { "description": "If true, the column is sortable." }, + "sortComparator": { "description": "A comparator function used to sort rows." }, + "sortingOrder": { "description": "The order of the sorting sequence." }, + "valueFormatter": { + "description": "Function that allows to apply a formatter before rendering its value." + }, + "valueGetter": { + "description": "Function that allows to get a specific data instead of field to render in the cell." + }, + "valueParser": { + "description": "Function that takes the user-entered value and converts it to a value used internally." + }, + "valueSetter": { + "description": "Function that allows to customize how the entered value is stored in the row.
    It only works with cell/row editing." + }, + "width": { "description": "Set the width of the column." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-aggregation-function.json b/docs/translations/api-docs/data-grid/grid-aggregation-function.json new file mode 100644 index 000000000000..4a5bee820d1e --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-aggregation-function.json @@ -0,0 +1,23 @@ +{ + "interfaceDescription": "Grid aggregation function definition interface.", + "propertiesDescriptions": { + "apply": { + "description": "Function that takes the current cell values and generates the aggregated value." + }, + "columnTypes": { + "description": "Column types supported by this aggregation function.
    If not defined, all types are supported (in most cases this property should be defined)." + }, + "getCellValue": { + "description": "Function that allows to transform the value of the cell passed to the aggregation function applier.
    Useful for aggregating data from multiple row fields." + }, + "hasCellUnit": { + "description": "Indicates if the aggregated value have the same unit as the cells used to generate it.
    It can be used to apply a custom cell renderer only if the aggregated value has the same unit." + }, + "label": { + "description": "Label of the aggregation function.
    Will be used to add a label on the footer of the grouping column when this aggregation function is the only one being used." + }, + "valueFormatter": { + "description": "Function that allows to apply a formatter to the aggregated value.
    If not defined, the grid will use the formatter of the column." + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-api.json b/docs/translations/api-docs/data-grid/grid-api.json new file mode 100644 index 000000000000..ba27c6f79b3a --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-api.json @@ -0,0 +1,257 @@ +{ + "interfaceDescription": "The full grid API.", + "propertiesDescriptions": { + "addRowGroupingCriteria": { "description": "Adds the field to the row grouping model." }, + "applySorting": { "description": "Applies the current sort model to the rows." }, + "autosizeColumns": { + "description": "Auto-size the columns of the grid based on the cells' content and the space available." + }, + "deleteFilterItem": { + "description": "Deletes a GridFilterItem." + }, + "exportDataAsCsv": { "description": "Downloads and exports a CSV of the grid's data." }, + "exportDataAsExcel": { + "description": "Downloads and exports an Excel file of the grid's data." + }, + "exportDataAsPrint": { "description": "Print the grid's data." }, + "exportState": { + "description": "Generates a serializable object containing the exportable parts of the DataGrid state.
    These values can then be passed to the initialState prop or injected using the restoreState method." + }, + "forceUpdate": { + "description": "Forces the grid to rerender. It's often used after a state update." + }, + "getAllColumns": { + "description": "Returns an array of GridColDef containing all the column definitions." + }, + "getAllGroupDetails": { "description": "Returns the column group lookup." }, + "getAllRowIds": { "description": "Gets the list of row ids." }, + "getCellElement": { + "description": "Gets the underlying DOM element for a cell at the given id and field." + }, + "getCellMode": { "description": "Gets the mode of a cell." }, + "getCellParams": { + "description": "Gets the GridCellParams object that is passed as argument in events." + }, + "getCellSelectionModel": { + "description": "Returns an object containing the selection state of the cells.
    The keys of the object correpond to the row IDs.
    The value of each key is another object whose keys are the fields and values are the selection state." + }, + "getCellValue": { + "description": "Gets the value of a cell at the given id and field." + }, + "getColumn": { + "description": "Returns the GridColDef for the given field." + }, + "getColumnGroupPath": { + "description": "Returns the id of the groups leading to the requested column.
    The array is ordered by increasing depth (the last element is the direct parent of the column)." + }, + "getColumnHeaderElement": { + "description": "Gets the underlying DOM element for the column header with the given field." + }, + "getColumnHeaderParams": { + "description": "Gets the GridColumnHeaderParams object that is passed as argument in events." + }, + "getColumnIndex": { + "description": "Returns the index position of a column. By default, only the visible columns are considered.
    Pass false to useVisibleColumns to consider all columns." + }, + "getColumnIndexRelativeToVisibleColumns": { + "description": "Gets the index of a column relative to the columns that are reachable by scroll." + }, + "getColumnPosition": { + "description": "Returns the left-position of a column relative to the inner border of the grid." + }, + "getDataAsCsv": { + "description": "Returns the grid data as a CSV string.
    This method is used internally by exportDataAsCsv." + }, + "getDataAsExcel": { + "description": "Returns the grid data as an exceljs workbook.
    This method is used internally by exportDataAsExcel." + }, + "getExpandedDetailPanels": { "description": "Returns the rows whose detail panel is open." }, + "getLocaleText": { "description": "Returns the translation for the key." }, + "getPinnedColumns": { "description": "Returns which columns are pinned." }, + "getRootDimensions": { "description": "Returns the dimensions of the grid" }, + "getRow": { "description": "Gets the row data with a given id." }, + "getRowElement": { + "description": "Gets the underlying DOM element for a row at the given id." + }, + "getRowGroupChildren": { + "description": "Gets the rows of a grouping criteria.
    Only contains the rows provided to the grid, not the rows automatically generated by it." + }, + "getRowId": { "description": "Gets the ID of a row given its data." }, + "getRowIdFromRowIndex": { + "description": "Gets the GridRowId of a row at a specific index.
    The index is based on the sorted but unfiltered row list." + }, + "getRowIndexRelativeToVisibleRows": { + "description": "Gets the index of a row relative to the rows that are reachable by scroll." + }, + "getRowMode": { "description": "Gets the mode of a row." }, + "getRowModels": { + "description": "Gets the full set of rows as Map<GridRowId, GridRowModel>." + }, + "getRowNode": { "description": "Gets the row node from the internal tree structure." }, + "getRowParams": { + "description": "Gets the GridRowParams object that is passed as argument in events." + }, + "getRowsCount": { "description": "Gets the total number of rows in the grid." }, + "getRowWithUpdatedValues": { + "description": "Returns the row with the values that were set by editing the cells.
    In row editing, field is ignored and all fields are considered." + }, + "getScrollPosition": { "description": "Returns the current scroll position." }, + "getSelectedCellsAsArray": { + "description": "Returns an array containing only the selected cells.
    Each item is an object with the ID and field of the cell." + }, + "getSelectedRows": { "description": "Returns an array of the selected rows." }, + "getSortedRowIds": { + "description": "Returns all row ids sorted according to the active sort model." + }, + "getSortedRows": { + "description": "Returns all rows sorted according to the active sort model." + }, + "getSortModel": { "description": "Returns the sort model currently applied to the grid." }, + "getVisibleColumns": { "description": "Returns the currently visible columns." }, + "hideColumnMenu": { "description": "Hides the column menu that is open." }, + "hideFilterPanel": { "description": "Hides the filter panel." }, + "hideHeaderFilterMenu": { "description": "Hides the header filter menu." }, + "hidePreferences": { "description": "Hides the preferences panel." }, + "ignoreDiacritics": { + "description": "Returns the value of the ignoreDiacritics prop." + }, + "isCellEditable": { "description": "Controls if a cell is editable." }, + "isCellSelected": { "description": "Determines if a cell is selected or not." }, + "isColumnPinned": { "description": "Returns which side a column is pinned to." }, + "isRowSelectable": { "description": "Determines if a row can be selected or not." }, + "isRowSelected": { "description": "Determines if a row is selected or not." }, + "pinColumn": { "description": "Pins a column to the left or right side of the grid." }, + "publishEvent": { "description": "Emits an event." }, + "removeRowGroupingCriteria": { "description": "Remove the field from the row grouping model." }, + "resetRowHeights": { "description": "Forces the recalculation of the heights of all rows." }, + "resize": { + "description": "Triggers a resize of the component and recalculation of width and height." + }, + "restoreState": { "description": "Inject the given values into the state of the DataGrid." }, + "scroll": { + "description": "Triggers the viewport to scroll to the given positions (in pixels)." + }, + "scrollToIndexes": { + "description": "Triggers the viewport to scroll to the cell at indexes given by params.
    Returns true if the grid had to scroll to reach the target." + }, + "selectCellRange": { + "description": "Selects all cells that are inside the range given by start and end coordinates." + }, + "selectRow": { "description": "Change the selection state of a row." }, + "selectRowRange": { + "description": "Change the selection state of all the selectable rows in a range." + }, + "selectRows": { "description": "Change the selection state of multiple rows." }, + "setAggregationModel": { + "description": "Sets the aggregation model to the one given by model." + }, + "setCellFocus": { + "description": "Sets the focus to the cell at the given id and field." + }, + "setCellSelectionModel": { + "description": "Updates the selected cells to be those passed to the newModel argument.
    Any cell already selected will be unselected." + }, + "setColumnHeaderFilterFocus": { + "description": "Sets the focus to the column header filter at the given field." + }, + "setColumnHeaderFocus": { + "description": "Sets the focus to the column header at the given field." + }, + "setColumnIndex": { + "description": "Moves a column from its original position to the position given by targetIndexPosition." + }, + "setColumnVisibility": { + "description": "Changes the visibility of the column referred by field." + }, + "setColumnVisibilityModel": { + "description": "Sets the column visibility model to the one given by model." + }, + "setColumnWidth": { "description": "Updates the width of a column." }, + "setDensity": { "description": "Sets the density of the grid." }, + "setEditCellValue": { + "description": "Sets the value of the edit cell.
    Commonly used inside the edit cell component." + }, + "setExpandedDetailPanels": { "description": "Changes which rows to expand the detail panel." }, + "setFilterLogicOperator": { + "description": "Changes the GridLogicOperator used to connect the filters." + }, + "setFilterModel": { + "description": "Sets the filter model to the one given by model." + }, + "setPage": { + "description": "Sets the displayed page to the value given by page." + }, + "setPageSize": { + "description": "Sets the number of displayed rows to the value given by pageSize." + }, + "setPaginationModel": { + "description": "Sets the paginationModel to a new value." + }, + "setPinnedColumns": { "description": "Changes the pinned columns." }, + "setQuickFilterValues": { + "description": "Set the quick filter values to the one given by values" + }, + "setRowChildrenExpansion": { "description": "Expand or collapse a row children." }, + "setRowCount": { "description": "Sets the rowCount to a new value." }, + "setRowGroupingCriteriaIndex": { + "description": "Sets the grouping index of a grouping criteria." + }, + "setRowGroupingModel": { "description": "Sets the columns to use as grouping criteria." }, + "setRowIndex": { + "description": "Moves a row from its original position to the position given by targetIndex." + }, + "setRows": { "description": "Sets a new set of rows." }, + "setRowSelectionModel": { + "description": "Updates the selected rows to be those passed to the rowIds argument.
    Any row already selected will be unselected." + }, + "setSortModel": { "description": "Updates the sort model and triggers the sorting of rows." }, + "showColumnMenu": { + "description": "Display the column menu under the field column." + }, + "showFilterPanel": { + "description": "Shows the filter panel. If targetColumnField is given, a filter for this field is also added." + }, + "showHeaderFilterMenu": { "description": "Opens the header filter menu for the given field." }, + "showPreferences": { + "description": "Displays the preferences panel. The newValue argument controls the content of the panel." + }, + "sortColumn": { "description": "Sorts a column." }, + "startCellEditMode": { + "description": "Puts the cell corresponding to the given row id and field into edit mode." + }, + "startHeaderFilterEditMode": { + "description": "Puts the cell corresponding to the given row id and field into edit mode." + }, + "startRowEditMode": { + "description": "Puts the row corresponding to the given id into edit mode." + }, + "state": { "description": "Property that contains the whole state of the grid." }, + "stopCellEditMode": { + "description": "Puts the cell corresponding to the given row id and field into view mode and updates the original row with the new value stored.
    If params.ignoreModifications is true it will discard the modifications made." + }, + "stopHeaderFilterEditMode": { "description": "Stops the edit mode for the current field." }, + "stopRowEditMode": { + "description": "Puts the row corresponding to the given id and into view mode and updates the original row with the new values stored.
    If params.ignoreModifications is true it will discard the modifications made." + }, + "subscribeEvent": { "description": "Registers a handler for an event." }, + "toggleColumnMenu": { + "description": "Toggles the column menu under the field column." + }, + "toggleDetailPanel": { "description": "Expands or collapses the detail panel of a row." }, + "unpinColumn": { "description": "Unpins a column." }, + "unstable_replaceRows": { "description": "Replace a set of rows with new rows." }, + "unstable_setColumnVirtualization": { "description": "Enable/disable column virtualization." }, + "unstable_setPinnedRows": { "description": "Changes the pinned rows." }, + "unstable_setVirtualization": { "description": "Enable/disable virtualization." }, + "updateColumns": { + "description": "Updates the definition of multiple columns at the same time." + }, + "updateRows": { "description": "Allows to update, insert and delete rows." }, + "upsertFilterItem": { + "description": "Updates or inserts a GridFilterItem." + }, + "upsertFilterItems": { + "description": "Updates or inserts many GridFilterItem." + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-cell-params.json b/docs/translations/api-docs/data-grid/grid-cell-params.json new file mode 100644 index 000000000000..39d3bbcc3661 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-cell-params.json @@ -0,0 +1,18 @@ +{ + "interfaceDescription": "Object passed as parameter in the column GridColDef cell renderer.", + "propertiesDescriptions": { + "cellMode": { "description": "The mode of the cell." }, + "colDef": { "description": "The column of the row that the current cell belongs to." }, + "field": { "description": "The column field of the cell that triggered the event." }, + "hasFocus": { "description": "If true, the cell is the active element." }, + "id": { "description": "The grid row id." }, + "row": { "description": "The row model of the row that the current cell belongs to." }, + "rowNode": { "description": "The node of the row that the current cell belongs to." }, + "tabIndex": { "description": "the tabIndex value." }, + "formattedValue": { "description": "The cell value formatted with the column valueFormatter." }, + "isEditable": { "description": "If true, the cell is editable." }, + "value": { + "description": "The cell value.
    If the column has valueGetter, use params.row to directly access the fields." + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-col-def.json b/docs/translations/api-docs/data-grid/grid-col-def.json new file mode 100644 index 000000000000..15b648e0809e --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-col-def.json @@ -0,0 +1,94 @@ +{ + "interfaceDescription": "Column Definition interface.", + "propertiesDescriptions": { + "field": { + "description": "The column identifier. It's used to map with GridRowModel values." + }, + "aggregable": { + "description": "If true, the cells of the column can be aggregated based." + }, + "align": { "description": "Allows to align the column values in cells." }, + "availableAggregationFunctions": { + "description": "Limit the aggregation function usable on this column.
    By default, the column will have all the aggregation functions that are compatible with its type." + }, + "cellClassName": { "description": "Class name that will be added in cells for that column." }, + "colSpan": { "description": "Number of columns a cell should span." }, + "description": { + "description": "The description of the column rendered as tooltip if the column header name is not fully displayed." + }, + "disableColumnMenu": { + "description": "If true, the column menu is disabled for this column." + }, + "disableExport": { + "description": "If true, this column will not be included in exports." + }, + "disableReorder": { "description": "If true, this column cannot be reordered." }, + "display": { + "description": "Display mode for the cell:
    - 'text': For text-based cells (default)
    - 'flex': For cells with HTMLElement children" + }, + "editable": { "description": "If true, the cells of the column are editable." }, + "filterable": { "description": "If true, the column is filterable." }, + "filterOperators": { "description": "Allows setting the filter operators for this column." }, + "flex": { "description": "If set, it indicates that a column has fluid width. Range [0, ∞)." }, + "getApplyQuickFilterFn": { + "description": "The callback that generates a filtering function for a given quick filter value.
    This function can return null to skip filtering for this value and column." + }, + "getSortComparator": { + "description": "Allows to use a different comparator function depending on the sort direction.
    Takes precedence over sortComparator." + }, + "groupable": { + "description": "If true, the rows can be grouped based on this column values (pro-plan only).
    Only available in DataGridPremium." + }, + "groupingValueGetter": { + "description": "Function that transforms a complex cell value into a key that be used for grouping the rows." + }, + "headerAlign": { "description": "Header cell element alignment." }, + "headerClassName": { + "description": "Class name that will be added in the column header cell." + }, + "headerName": { "description": "The title of the column rendered in the column header cell." }, + "hideable": { + "description": "If false, removes the buttons for hiding this column." + }, + "hideSortIcons": { "description": "Toggle the visibility of the sort icons." }, + "maxWidth": { "description": "Sets the maximum width of a column." }, + "minWidth": { "description": "Sets the minimum width of a column." }, + "pastedValueParser": { + "description": "Function that takes the clipboard-pasted value and converts it to a value used internally." + }, + "pinnable": { + "description": "If false, the menu items for column pinning menu will not be rendered.
    Only available in DataGridPro." + }, + "preProcessEditCellProps": { + "description": "Callback fired when the edit props of the cell changes.
    It allows to process the props that saved into the state." + }, + "renderCell": { + "description": "Allows to override the component rendered as cell for this column." + }, + "renderEditCell": { + "description": "Allows to override the component rendered in edit cell mode for this column." + }, + "renderHeader": { "description": "Allows to render a component in the column header cell." }, + "renderHeaderFilter": { + "description": "Allows to render a component in the column header filter cell." + }, + "resizable": { "description": "If true, the column is resizable." }, + "sortable": { "description": "If true, the column is sortable." }, + "sortComparator": { "description": "A comparator function used to sort rows." }, + "sortingOrder": { "description": "The order of the sorting sequence." }, + "type": { "description": "The type of the column." }, + "valueFormatter": { + "description": "Function that allows to apply a formatter before rendering its value." + }, + "valueGetter": { + "description": "Function that allows to get a specific data instead of field to render in the cell." + }, + "valueParser": { + "description": "Function that takes the user-entered value and converts it to a value used internally." + }, + "valueSetter": { + "description": "Function that allows to customize how the entered value is stored in the row.
    It only works with cell/row editing." + }, + "width": { "description": "Set the width of the column." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-csv-export-options.json b/docs/translations/api-docs/data-grid/grid-csv-export-options.json new file mode 100644 index 000000000000..dfcea88f04e0 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-csv-export-options.json @@ -0,0 +1,25 @@ +{ + "interfaceDescription": "The options to apply on the CSV export.", + "propertiesDescriptions": { + "allColumns": { + "description": "If true, the hidden columns will also be exported." + }, + "delimiter": { "description": "The character used to separate fields." }, + "fields": { + "description": "The columns exported.
    This should only be used if you want to restrict the columns exports." + }, + "fileName": { "description": "The string used as the file name." }, + "getRowsToExport": { + "description": "Function that returns the list of row ids to export on the order they should be exported." + }, + "includeColumnGroupsHeaders": { + "description": "If true, the CSV will include the column groups." + }, + "includeHeaders": { + "description": "If true, the CSV will include the column headers and column groups.
    Use includeColumnGroupsHeaders to control whether the column groups are included." + }, + "utf8WithBom": { + "description": "If true, the UTF-8 Byte Order Mark (BOM) prefixes the exported file.
    This can allow Excel to automatically detect file encoding as UTF-8." + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-excel-export-options.json b/docs/translations/api-docs/data-grid/grid-excel-export-options.json new file mode 100644 index 000000000000..f05570b1eaff --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-excel-export-options.json @@ -0,0 +1,32 @@ +{ + "interfaceDescription": "The options to apply on the Excel export.", + "propertiesDescriptions": { + "allColumns": { + "description": "If true, the hidden columns will also be exported." + }, + "columnsStyles": { "description": "Object mapping column field to Exceljs style" }, + "exceljsPostProcess": { + "description": "Method called after adding the rows to the workbook.
    Not supported when worker is set.
    To use with web workers, use the option in setupExcelExportWebWorker." + }, + "exceljsPreProcess": { + "description": "Method called before adding the rows to the workbook.
    Not supported when worker is set.
    To use with web workers, use the option in setupExcelExportWebWorker." + }, + "fields": { + "description": "The columns exported.
    This should only be used if you want to restrict the columns exports." + }, + "fileName": { "description": "The string used as the file name." }, + "getRowsToExport": { + "description": "Function that returns the list of row ids to export on the order they should be exported." + }, + "includeColumnGroupsHeaders": { + "description": "If true, the headers of the column groups will be added into the file." + }, + "includeHeaders": { + "description": "If true, the first row of the file will include the headers of the grid." + }, + "valueOptionsSheetName": { + "description": "Name given to the worksheet containing the columns valueOptions.
    valueOptions are added to this worksheet if they are provided as an array." + }, + "worker": { "description": "Function to return the Worker instance to be called." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-export-state-params.json b/docs/translations/api-docs/data-grid/grid-export-state-params.json new file mode 100644 index 000000000000..752dbbf77893 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-export-state-params.json @@ -0,0 +1,8 @@ +{ + "interfaceDescription": "Object passed as parameter in the exportState() grid API method.", + "propertiesDescriptions": { + "exportOnlyDirtyModels": { + "description": "By default, the grid exports all the models.
    You can switch this property to true to only exports models that are either controlled, initialized or modified.
    For instance, with this property, if you don't control or initialize the filterModel and you did not apply any filter, the model won't be exported.
    Note that the column dimensions are not a model. The grid only exports the dimensions of the modified columns even when exportOnlyDirtyModels is false." + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-filter-item.json b/docs/translations/api-docs/data-grid/grid-filter-item.json new file mode 100644 index 000000000000..68a0d9cafdd1 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-filter-item.json @@ -0,0 +1,13 @@ +{ + "interfaceDescription": "Filter item definition interface.", + "propertiesDescriptions": { + "field": { "description": "The column from which we want to filter the rows." }, + "operator": { "description": "The name of the operator we want to apply." }, + "id": { + "description": "Must be unique.
    Only useful when the model contains several items." + }, + "value": { + "description": "The filtering value.
    The operator filtering function will decide for each row if the row values is correct compared to this value." + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-filter-model.json b/docs/translations/api-docs/data-grid/grid-filter-model.json new file mode 100644 index 000000000000..32f3d45af480 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-filter-model.json @@ -0,0 +1,16 @@ +{ + "interfaceDescription": "Model describing the filters to apply to the grid.", + "propertiesDescriptions": { + "items": { "description": "" }, + "logicOperator": { + "description": "- GridLogicOperator.And: the row must pass all the filter items.
    - GridLogicOperator.Or: the row must pass at least on filter item." + }, + "quickFilterExcludeHiddenColumns": { + "description": "If false, the quick filter will also consider cell values from hidden columns." + }, + "quickFilterLogicOperator": { + "description": "- GridLogicOperator.And: the row must pass all the values.
    - GridLogicOperator.Or: the row must pass at least one value." + }, + "quickFilterValues": { "description": "values used to quick filter rows" } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-filter-operator.json b/docs/translations/api-docs/data-grid/grid-filter-operator.json new file mode 100644 index 000000000000..38d966ab5a97 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-filter-operator.json @@ -0,0 +1,25 @@ +{ + "interfaceDescription": "Filter operator definition interface.", + "propertiesDescriptions": { + "getApplyFilterFn": { + "description": "The callback that generates a filtering function for a given filter item and column.
    This function can return null to skip filtering for this item and column." + }, + "value": { + "description": "The name of the filter operator.
    It will be matched with the operator property of the filter items." + }, + "getValueAsString": { + "description": "Converts the value of a filter item to a human-readable form." + }, + "headerLabel": { "description": "The label of the filter shown in header filter row." }, + "InputComponent": { + "description": "The input component to render in the filter panel for this filter operator." + }, + "InputComponentProps": { + "description": "The props to pass to the input component in the filter panel for this filter operator." + }, + "label": { "description": "The label of the filter operator." }, + "requiresFilterValue": { + "description": "If false, filter operator doesn't require user-entered value to work.
    Usually should be set to false for filter operators that don't have InputComponent (for example isEmpty)" + } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-print-export-options.json b/docs/translations/api-docs/data-grid/grid-print-export-options.json new file mode 100644 index 000000000000..cee7cee030e4 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-print-export-options.json @@ -0,0 +1,29 @@ +{ + "interfaceDescription": "The options to apply on the Print export.", + "propertiesDescriptions": { + "allColumns": { + "description": "If true, the hidden columns will also be exported." + }, + "bodyClassName": { "description": "One or more classes passed to the print window." }, + "copyStyles": { + "description": "If false, all <style> and <link type="stylesheet" /> tags from the <head> will not be copied
    to the print window." + }, + "fields": { + "description": "The columns exported.
    This should only be used if you want to restrict the columns exports." + }, + "fileName": { "description": "The value to be used as the print window title." }, + "getRowsToExport": { + "description": "Function that returns the list of row ids to export in the order they should be exported." + }, + "hideFooter": { + "description": "If true, the footer is removed for when printing." + }, + "hideToolbar": { + "description": "If true, the toolbar is removed for when printing." + }, + "includeCheckboxes": { + "description": "If true, the selection checkboxes will be included when printing." + }, + "pageStyle": { "description": "Provide Print specific styles to the print window." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-row-class-name-params.json b/docs/translations/api-docs/data-grid/grid-row-class-name-params.json new file mode 100644 index 000000000000..e3f7e4f1b6ed --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-row-class-name-params.json @@ -0,0 +1,13 @@ +{ + "interfaceDescription": "Object passed as parameter in the row getRowClassName callback prop.", + "propertiesDescriptions": { + "columns": { "description": "All grid columns." }, + "id": { "description": "The grid row id." }, + "indexRelativeToCurrentPage": { + "description": "Index of the row in the current page.
    If the pagination is disabled, it will be the index relative to all filtered rows." + }, + "isFirstVisible": { "description": "Whether this row is the first visible or not." }, + "isLastVisible": { "description": "Whether this row is the last visible or not." }, + "row": { "description": "The row model of the row that the current cell belongs to." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-row-params.json b/docs/translations/api-docs/data-grid/grid-row-params.json new file mode 100644 index 000000000000..b50741df1a32 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-row-params.json @@ -0,0 +1,8 @@ +{ + "interfaceDescription": "Object passed as parameter in the row callbacks.", + "propertiesDescriptions": { + "columns": { "description": "All grid columns." }, + "id": { "description": "The grid row id." }, + "row": { "description": "The row model of the row that the current cell belongs to." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-row-spacing-params.json b/docs/translations/api-docs/data-grid/grid-row-spacing-params.json new file mode 100644 index 000000000000..d2b53254082b --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-row-spacing-params.json @@ -0,0 +1,12 @@ +{ + "interfaceDescription": "Object passed as parameter in the row getRowSpacing callback prop.", + "propertiesDescriptions": { + "id": { "description": "The row id." }, + "indexRelativeToCurrentPage": { + "description": "Index of the row in the current page.
    If the pagination is disabled, it will be the index relative to all filtered rows." + }, + "isFirstVisible": { "description": "Whether this row is the first visible or not." }, + "isLastVisible": { "description": "Whether this row is the last visible or not." }, + "model": { "description": "The row model." } + } +} diff --git a/docs/translations/api-docs/data-grid/grid-single-select-col-def.json b/docs/translations/api-docs/data-grid/grid-single-select-col-def.json new file mode 100644 index 000000000000..fdd0720fd1a2 --- /dev/null +++ b/docs/translations/api-docs/data-grid/grid-single-select-col-def.json @@ -0,0 +1,101 @@ +{ + "interfaceDescription": "Column Definition interface used for columns with the singleSelect type.", + "propertiesDescriptions": { + "field": { + "description": "The column identifier. It's used to map with GridRowModel values." + }, + "type": { "description": "The type of the column." }, + "aggregable": { + "description": "If true, the cells of the column can be aggregated based." + }, + "align": { "description": "Allows to align the column values in cells." }, + "availableAggregationFunctions": { + "description": "Limit the aggregation function usable on this column.
    By default, the column will have all the aggregation functions that are compatible with its type." + }, + "cellClassName": { "description": "Class name that will be added in cells for that column." }, + "colSpan": { "description": "Number of columns a cell should span." }, + "description": { + "description": "The description of the column rendered as tooltip if the column header name is not fully displayed." + }, + "disableColumnMenu": { + "description": "If true, the column menu is disabled for this column." + }, + "disableExport": { + "description": "If true, this column will not be included in exports." + }, + "disableReorder": { "description": "If true, this column cannot be reordered." }, + "display": { + "description": "Display mode for the cell:
    - 'text': For text-based cells (default)
    - 'flex': For cells with HTMLElement children" + }, + "editable": { "description": "If true, the cells of the column are editable." }, + "filterable": { "description": "If true, the column is filterable." }, + "filterOperators": { "description": "Allows setting the filter operators for this column." }, + "flex": { "description": "If set, it indicates that a column has fluid width. Range [0, ∞)." }, + "getApplyQuickFilterFn": { + "description": "The callback that generates a filtering function for a given quick filter value.
    This function can return null to skip filtering for this value and column." + }, + "getOptionLabel": { + "description": "Used to determine the label displayed for a given value option." + }, + "getOptionValue": { "description": "Used to determine the value used for a value option." }, + "getSortComparator": { + "description": "Allows to use a different comparator function depending on the sort direction.
    Takes precedence over sortComparator." + }, + "groupable": { + "description": "If true, the rows can be grouped based on this column values (pro-plan only).
    Only available in DataGridPremium." + }, + "groupingValueGetter": { + "description": "Function that transforms a complex cell value into a key that be used for grouping the rows." + }, + "headerAlign": { "description": "Header cell element alignment." }, + "headerClassName": { + "description": "Class name that will be added in the column header cell." + }, + "headerName": { "description": "The title of the column rendered in the column header cell." }, + "hideable": { + "description": "If false, removes the buttons for hiding this column." + }, + "hideSortIcons": { "description": "Toggle the visibility of the sort icons." }, + "maxWidth": { "description": "Sets the maximum width of a column." }, + "minWidth": { "description": "Sets the minimum width of a column." }, + "pastedValueParser": { + "description": "Function that takes the clipboard-pasted value and converts it to a value used internally." + }, + "pinnable": { + "description": "If false, the menu items for column pinning menu will not be rendered.
    Only available in DataGridPro." + }, + "preProcessEditCellProps": { + "description": "Callback fired when the edit props of the cell changes.
    It allows to process the props that saved into the state." + }, + "renderCell": { + "description": "Allows to override the component rendered as cell for this column." + }, + "renderEditCell": { + "description": "Allows to override the component rendered in edit cell mode for this column." + }, + "renderHeader": { "description": "Allows to render a component in the column header cell." }, + "renderHeaderFilter": { + "description": "Allows to render a component in the column header filter cell." + }, + "resizable": { "description": "If true, the column is resizable." }, + "sortable": { "description": "If true, the column is sortable." }, + "sortComparator": { "description": "A comparator function used to sort rows." }, + "sortingOrder": { "description": "The order of the sorting sequence." }, + "valueFormatter": { + "description": "Function that allows to apply a formatter before rendering its value." + }, + "valueGetter": { + "description": "Function that allows to get a specific data instead of field to render in the cell." + }, + "valueOptions": { + "description": "To be used in combination with type: 'singleSelect'. This is an array (or a function returning an array) of the possible cell values and labels." + }, + "valueParser": { + "description": "Function that takes the user-entered value and converts it to a value used internally." + }, + "valueSetter": { + "description": "Function that allows to customize how the entered value is stored in the row.
    It only works with cell/row editing." + }, + "width": { "description": "Set the width of the column." } + } +} From fdaafd163b030b36b5fce82e8396b44a422f01dc Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 29 Mar 2024 14:06:49 +0200 Subject: [PATCH 034/912] [DateTimeRangePicker] Fix selection on same day (#12604) --- .../tests/DesktopDateTimeRangePicker.test.tsx | 35 +++++++++++++++++-- .../utils/date-range-manager.test.ts | 9 +++++ .../src/internals/utils/date-range-manager.ts | 2 +- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx index 793d2a6682d9..d487a34c78de 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx @@ -1,7 +1,13 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen } from '@mui-internal/test-utils'; -import { createPickerRenderer, adapterToUse } from 'test/utils/pickers'; +import { screen, userEvent } from '@mui-internal/test-utils'; +import { + createPickerRenderer, + adapterToUse, + openPicker, + getFieldSectionsContainer, + expectFieldValueV7, +} from 'test/utils/pickers'; import { DesktopDateTimeRangePicker } from '../DesktopDateTimeRangePicker'; describe('', () => { @@ -10,6 +16,31 @@ describe('', () => { clockConfig: new Date(2018, 0, 10, 10, 16, 0), }); + describe('value selection', () => { + it('should allow to select range within the same day', () => { + render(); + + openPicker({ type: 'date-time-range', variant: 'desktop', initialFocus: 'start' }); + + // select start date range + userEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); + userEvent.mousePress(screen.getByRole('option', { name: '4 hours' })); + userEvent.mousePress(screen.getByRole('option', { name: '5 minutes' })); + userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + + // select end date range on the same day + userEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); + userEvent.mousePress(screen.getByRole('option', { name: '5 hours' })); + userEvent.mousePress(screen.getByRole('option', { name: '10 minutes' })); + userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + + const startSectionsContainer = getFieldSectionsContainer(0); + const endSectionsContainer = getFieldSectionsContainer(1); + expect(expectFieldValueV7(startSectionsContainer, '01/11/2018 04:05 PM')); + expect(expectFieldValueV7(endSectionsContainer, '01/11/2018 05:10 PM')); + }); + }); + describe('disabled dates', () => { it('should respect the "disablePast" prop', () => { render(); diff --git a/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.test.ts b/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.test.ts index 2cfd3857d3f9..1b49f7b99c60 100644 --- a/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.test.ts +++ b/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.test.ts @@ -4,6 +4,7 @@ import { calculateRangeChange, calculateRangePreview } from './date-range-manage import { DateRange } from '../../models'; const start2018 = adapterToUse.date('2018-01-01'); +const start2018At4PM = adapterToUse.date('2018-01-01T16:00:00'); const mid2018 = adapterToUse.date('2018-07-01'); const end2019 = adapterToUse.date('2019-01-01'); @@ -88,6 +89,14 @@ describe('date-range-manager', () => { allowRangeFlip: true, expectedNextSelection: 'end' as const, }, + { + range: [start2018At4PM, null], + rangePosition: 'end' as const, + newDate: start2018, + expectedRange: [start2018At4PM, start2018], + allowRangeFlip: false, + expectedNextSelection: 'start' as const, + }, ].forEach( ({ range, rangePosition, newDate, expectedRange, allowRangeFlip, expectedNextSelection }) => { it(`calculateRangeChange should return ${expectedRange} when selecting ${rangePosition} of ${range} with user input ${newDate}`, () => { diff --git a/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.ts b/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.ts index bc3eb99ca75c..94d5d02e0eb0 100644 --- a/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.ts +++ b/packages/x-date-pickers-pro/src/internals/utils/date-range-manager.ts @@ -53,7 +53,7 @@ export function calculateRangeChange({ const truthyResult: CalculateRangeChangeResponse = allowRangeFlip ? { nextSelection: 'end', newRange: [selectedDate, start!] } : { nextSelection: 'end', newRange: [selectedDate, null] }; - return Boolean(start) && utils.isBefore(selectedDate!, start!) + return Boolean(start) && utils.isBeforeDay(selectedDate!, start!) ? truthyResult : { nextSelection: 'start', newRange: [start, selectedDate] }; } From 81c84523addd8c77e6a798de2c08b8365db1483f Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 29 Mar 2024 13:43:13 +0100 Subject: [PATCH 035/912] =?UTF-8?q?[docs]=20Match=20IE=2011=20spacing=20wi?= =?UTF-8?q?th=20Material=C2=A0UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 +++--- .../migration/migration-charts-v6/migration-charts-v6.md | 6 +++--- .../migration-data-grid-v6/migration-data-grid-v6.md | 6 +++--- .../migration/migration-pickers-v6/migration-pickers-v6.md | 6 +++--- .../migration-tree-view-v6/migration-tree-view-v6.md | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20431eaeb0da..8fc6680381a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -530,13 +530,13 @@ We'd like to offer a big thanks to the 10 contributors who made this release pos - 🎁 Introduce a new DOM structure for the field components that provides a better accessibility - 🚀 Simplify Data Grid DOM structure for improved performance (#12013) @romgrk -- 🕥 The support for IE11 has been removed (#12151) @flaviendelangle +- 🕥 The support for IE 11 has been removed (#12151) @flaviendelangle - 🐞 Bugfixes - 📚 Documentation improvements ### Breaking changes -- The support for IE11 has been removed from all MUI X packages. The `legacy` bundle that used to support old browsers like IE11 is no longer included. +- The support for IE 11 has been removed from all MUI X packages. The `legacy` bundle that used to support old browsers like IE 11 is no longer included. ### Data Grid @@ -641,7 +641,7 @@ These components are no longer exported from `@mui/x-charts`: ### Tree View / `@mui/x-tree-view@7.0.0-beta.4` -- [TreeView] Stop using custom `findIndex` to support IE11 (#12129) @flaviendelangle +- [TreeView] Stop using custom `findIndex` to support IE 11 (#12129) @flaviendelangle ### Docs diff --git a/docs/data/migration/migration-charts-v6/migration-charts-v6.md b/docs/data/migration/migration-charts-v6/migration-charts-v6.md index e274f55159cb..aab269714266 100644 --- a/docs/data/migration/migration-charts-v6/migration-charts-v6.md +++ b/docs/data/migration/migration-charts-v6/migration-charts-v6.md @@ -34,11 +34,11 @@ These changes were done for consistency, improved stability and to make room for ### Drop the legacy bundle -The support for IE11 has been removed from all MUI X packages. -The `legacy` bundle that used to support old browsers like IE11 is no longer included. +The support for IE 11 has been removed from all MUI X packages. +The `legacy` bundle that used to support old browsers like IE 11 is no longer included. :::info -If you need support for IE11, you will need to keep using the latest version of the `v6` release. +If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: ### Renaming diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 30679a6217f1..79eebfc473ff 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -99,11 +99,11 @@ Below are described the steps you need to make to migrate from v6 to v7. ### Drop the legacy bundle -The support for IE11 has been removed from all MUI X packages. -The `legacy` bundle that used to support old browsers like IE11 is no longer included. +The support for IE 11 has been removed from all MUI X packages. +The `legacy` bundle that used to support old browsers like IE 11 is no longer included. :::info -If you need support for IE11, you will need to keep using the latest version of the `v6` release. +If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: ### DOM changes diff --git a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md index 035c24bfb82f..e8c8cf78dd5e 100644 --- a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md +++ b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md @@ -88,11 +88,11 @@ Feel free to [open an issue](https://github.com/mui/mui-x/issues/new/choose) for ## Drop the legacy bundle -The support for IE11 has been removed from all MUI X packages. -The `legacy` bundle that used to support old browsers like IE11 is no longer included. +The support for IE 11 has been removed from all MUI X packages. +The `legacy` bundle that used to support old browsers like IE 11 is no longer included. :::info -If you need support for IE11, you will need to keep using the latest version of the `v6` release. +If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: ## Component slots diff --git a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md index ba4f3df4b112..1a468abb2633 100644 --- a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md +++ b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md @@ -33,11 +33,11 @@ These changes were done for consistency, improved stability and to make room for ### Drop the legacy bundle -The support for IE11 has been removed from all MUI X packages. -The `legacy` bundle that used to support old browsers like IE11 is no longer included. +The support for IE 11 has been removed from all MUI X packages. +The `legacy` bundle that used to support old browsers like IE 11 is no longer included. :::info -If you need support for IE11, you will need to keep using the latest version of the `v6` release. +If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: ### ✅ Rename `nodeId` to `itemId` From 608bb36cd5727cde7b800d5d8852286873aa41cd Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 29 Mar 2024 13:48:53 +0100 Subject: [PATCH 036/912] [docs] Fix formatting and typo on migration guide --- .../migration-data-grid-v6.md | 72 ++++++++++--------- .../migration-pickers-v6.md | 11 +-- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 79eebfc473ff..328ada32ec59 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -18,8 +18,10 @@ In `package.json`, change the version of the data grid package to `^7.0.0`. ```diff -"@mui/x-data-grid": "6.x.x", +"@mui/x-data-grid": "^7.0.0", + -"@mui/x-data-grid-pro": "6.x.x", +"@mui/x-data-grid-pro": "^7.0.0", + -"@mui/x-data-grid-premium": "6.x.x", +"@mui/x-data-grid-premium": "^7.0.0", ``` @@ -166,8 +168,8 @@ Here's the list of affected features, column definition flags and props to disab Some selectors now require passing `instanceId` as a second argument: ```diff -- gridColumnFieldsSelector(apiRef.current.state); -+ gridColumnFieldsSelector(apiRef.current.state, apiRef.current.instanceId); +-gridColumnFieldsSelector(apiRef.current.state); ++gridColumnFieldsSelector(apiRef.current.state, apiRef.current.instanceId); ``` However, it's preferable to pass the `apiRef` as the first argument instead: @@ -205,9 +207,9 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) - The type `GridPinnedPosition` has been renamed to `GridPinnedColumnPosition`. -- The column grouping API methods `getColumnGroupPath` and `getAllGroupDetails` are not anymore prefixed with `unstable_`. +- The column grouping API methods `getColumnGroupPath` and `getAllGroupDetails` are no longer prefixed with `unstable_`. -- The column grouping selectors `gridFocusColumnGroupHeaderSelector` and `gridTabIndexColumnGroupHeaderSelector` are not anymore prefixed with `unstable_`. +- The column grouping selectors `gridFocusColumnGroupHeaderSelector` and `gridTabIndexColumnGroupHeaderSelector` are no longer prefixed with `unstable_`. - The columns management component has been redesigned and the component is extracted from the `ColumnsPanel` which now only serves as a wrapper to display the component over the headers as a panel. As a result, a new slot `columnsManagement`, and corresponding prop `slotProps.columnsManagement` have been introduced. The props corresponding to the columns management component which were previously passed to the prop `slotProps.columnsPanel` should now be passed to `slotProps.columnsManagement`. `slotProps.columnsPanel` could still be used to override props corresponding to the `Panel` component used in `ColumnsPanel` which uses [`Popper`](/material-ui/react-popper/) component under the hood. @@ -228,83 +230,83 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) - The signature of `GridColDef['valueGetter']` has been changed for performance reasons: ```diff - - valueGetter: ({ value, row }) => value, - + valueGetter: (value, row, column, apiRef) => value, + -valueGetter: ({ value, row }) => value, + +valueGetter: (value, row, column, apiRef) => value, ``` The `GridValueGetterParams` interface has been removed: ```diff - - const customValueGetter = (params: GridValueGetterParams) => params.row.budget; - + const customValueGetter: GridValueGetterFn = (value, row) => row.budget; + -const customValueGetter = (params: GridValueGetterParams) => params.row.budget; + +const customValueGetter: GridValueGetterFn = (value, row) => row.budget; ``` - The signature of `GridColDef['valueFormatter']` has been changed for performance reasons: ```diff - - valueFormatter: ({ value }) => value, - + valueFormatter: (value, row, column, apiRef) => value, + -valueFormatter: ({ value }) => value, + + alueFormatter: (value, row, column, apiRef) => value, ``` The `GridValueFormatterParams` interface has been removed: ```diff - - const gridDateFormatter = ({ value, field, id }: GridValueFormatterParams) => value.toLocaleDateString(); - + const gridDateFormatter: GridValueFormatter = (value: Date) => value.toLocaleDateString(); + -const gridDateFormatter = ({ value, field, id }: GridValueFormatterParams) => value.toLocaleDateString(); + +const gridDateFormatter: GridValueFormatter = (value: Date) => value.toLocaleDateString(); ``` - The signature of `GridColDef['valueSetter']` has been changed for performance reasons: ```diff - - valueSetter: (params) => { - - const [firstName, lastName] = params.value!.toString().split(' '); - - return { ...params.row, firstName, lastName }; - - } - + valueSetter: (value, row) => { - + const [firstName, lastName] = value!.toString().split(' '); - + return { ...row, firstName, lastName }; + -valueSetter: (params) => { + - const [firstName, lastName] = params.value!.toString().split(' '); + - return { ...params.row, firstName, lastName }; + -} + +valueSetter: (value, row) => { + + const [firstName, lastName] = value!.toString().split(' '); + + return { ...row, firstName, lastName }; +} ``` The `GridValueSetterParams` interface has been removed: ```diff - - const setFullName = (params: GridValueSetterParams) => { - - const [firstName, lastName] = params.value!.toString().split(' '); - - return { ...params.row, firstName, lastName }; - - }; - + const setFullName: GridValueSetter = (value, row) => { - + const [firstName, lastName] = value!.toString().split(' '); - + return { ...row, firstName, lastName }; - + } + -const setFullName = (params: GridValueSetterParams) => { + - const [firstName, lastName] = params.value!.toString().split(' '); + - return { ...params.row, firstName, lastName }; + -}; + +const setFullName: GridValueSetter = (value, row) => { + + const [firstName, lastName] = value!.toString().split(' '); + + return { ...row, firstName, lastName }; + +} ``` - The signature of `GridColDef['valueParser']` has been changed for performance reasons: ```diff - - valueParser: (value, params: GridCellParams) => value.toLowerCase(), - + valueParser: (value, row, column, apiRef) => value.toLowerCase(), + -valueParser: (value, params: GridCellParams) => value.toLowerCase(), + +valueParser: (value, row, column, apiRef) => value.toLowerCase(), ``` - The signature of `GridColDef['colSpan']` has been changed for performance reasons: ```diff - - colSpan: ({ row, field, value }: GridCellParams) => (row.id === 'total' ? 2 : 1), - + colSpan: (value, row, column, apiRef) => (row.id === 'total' ? 2 : 1), + -colSpan: ({ row, field, value }: GridCellParams) => (row.id === 'total' ? 2 : 1), + +colSpan: (value, row, column, apiRef) => (row.id === 'total' ? 2 : 1), ``` - The signature of `GridColDef['pastedValueParser']` has been changed for performance reasons: ```diff - - pastedValueParser: (value, params) => new Date(value), - + pastedValueParser: (value, row, column, apiRef) => new Date(value), + -pastedValueParser: (value, params) => new Date(value), + +pastedValueParser: (value, row, column, apiRef) => new Date(value), ``` - The signature of `GridColDef['groupingValueGetter']` has been changed for performance reasons: ```diff - - groupingValueGetter: (params) => params.value.name, - + groupingValueGetter: (value: { name: string }) => value.name, + -groupingValueGetter: (params) => params.value.name, + +groupingValueGetter: (value: { name: string }) => value.name, ``` ### Density diff --git a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md index e8c8cf78dd5e..eac5ac7a0046 100644 --- a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md +++ b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md @@ -294,7 +294,7 @@ To keep the same behavior, you can replace it by `hasLeadingZerosInFormat` ### Headless fields :::success -The following breaking changes only impacts you if you are using hooks like `useDateField` to build a custom UI. +The following breaking changes only impact you if you are using hooks like `useDateField` to build a custom UI. If you are just using the regular field components, then you can safely skip this section. ::: @@ -304,9 +304,9 @@ If you are just using the regular field components, then you can safely skip thi The field hooks now only receive the props instead of an object containing both the props and the `inputRef`. ```diff -- const { inputRef, ...otherProps } = props -- const fieldResponse = useDateField({ props: otherProps, inputRef }); -+ const fieldResponse = useDateField(props); +-const { inputRef, ...otherProps } = props +-const fieldResponse = useDateField({ props: otherProps, inputRef }); ++const fieldResponse = useDateField(props); ``` If you are using a multi input range field hook, the same applies to `startInputRef` and `endInputRef` params @@ -408,7 +408,8 @@ When building a custom UI, you are most-likely only supporting one DOM structure function MyCustomField(props) { const fieldResponse = useDateField({ ...props, -+ // If you only support one DOM structure, we advise you to hardcode it here to avoid unwanted switches in your application ++ // If you only support one DOM structure, we advise you to hardcode it ++ // here to avoid unwanted switches in your application. + enableAccessibleFieldDOMStructure: false, }); From 96d2b5b3f713374919bf5655f4d66f679280c5b7 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 29 Mar 2024 14:05:35 +0100 Subject: [PATCH 037/912] [docs] Fix formatting in changelog --- .../migration-tree-view-v6.md | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md index 1a468abb2633..4a368c1dc098 100644 --- a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md +++ b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md @@ -46,28 +46,27 @@ The required `nodeId` prop used by the `TreeItem` has been renamed to `itemId` f ```diff -- -+ +- ++ ``` The same change has been applied to the and `ContentComponent` prop: ```diff - const CustomContent = React.forwardRef((props, ref) => { + const CustomContent = React.forwardRef((props, ref) => { - const id = props.nodeId; + const id = props.itemId; + // Render some UI + }); - // Render some UI - }); - - function App() { - return ( - - - - ) - } + function App() { + return ( + + + + ) + } ``` ### ✅ Use `SimpleTreeView` instead of `TreeView` @@ -305,8 +304,8 @@ you need to use the new `groupTransition` slot on this component: itemId="1" label="Item 1" - TransitionComponent={Fade} -+ slots={{ groupTransition: Fade }} - TransitionProps={{ timeout: 600 }} ++ slots={{ groupTransition: Fade }} + slotProps={{ groupTransition: { timeout: 600 } }} />
    From 7a3a8892970135d4f41951379ac5dbc58ae9fc25 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Fri, 29 Mar 2024 14:40:58 +0100 Subject: [PATCH 038/912] [Tree View] Create pro package (#12240) --- .codesandbox/ci.json | 3 +- .eslintrc.js | 2 + babel.config.js | 1 + docs/babel.config.js | 1 + docs/scripts/createXTypeScriptProjects.ts | 22 +++++- packages/x-charts/package.json | 2 +- packages/x-data-grid-premium/README.md | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/README.md | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/README.md | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/README.md | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/README.md | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view-pro/LICENSE | 11 +++ packages/x-tree-view-pro/README.md | 26 +++++++ packages/x-tree-view-pro/package.json | 70 +++++++++++++++++++ packages/x-tree-view-pro/src/index.ts | 1 + packages/x-tree-view-pro/tsconfig.build.json | 19 +++++ packages/x-tree-view-pro/tsconfig.json | 13 ++++ packages/x-tree-view/README.md | 2 +- packages/x-tree-view/package.json | 2 +- .../treeViewSettings/getComponentInfo.ts | 2 +- tsconfig.json | 2 + webpackBaseConfig.js | 1 + 27 files changed, 184 insertions(+), 16 deletions(-) create mode 100644 packages/x-tree-view-pro/LICENSE create mode 100644 packages/x-tree-view-pro/README.md create mode 100644 packages/x-tree-view-pro/package.json create mode 100644 packages/x-tree-view-pro/src/index.ts create mode 100644 packages/x-tree-view-pro/tsconfig.build.json create mode 100644 packages/x-tree-view-pro/tsconfig.json diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json index e08318b0ba92..cadf03b4f49f 100644 --- a/.codesandbox/ci.json +++ b/.codesandbox/ci.json @@ -22,7 +22,8 @@ "@mui/x-date-pickers": "packages/x-date-pickers/build", "@mui/x-date-pickers-pro": "packages/x-date-pickers-pro/build", "@mui/x-charts": "packages/x-charts/build", - "@mui/x-tree-view": "packages/x-tree-view/build" + "@mui/x-tree-view": "packages/x-tree-view/build", + "@mui/x-tree-view-pro": "packages/x-tree-view-pro/build" }, "sandboxes": ["/bug-reproductions/x-data-grid"], "silent": true diff --git a/.eslintrc.js b/.eslintrc.js index 99d1462f8f7d..c2de50d965d7 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -163,6 +163,8 @@ module.exports = { buildPackageRestrictedImports('@mui/x-data-grid-generator', 'x-data-grid-generator'), buildPackageRestrictedImports('@mui/x-pickers', 'x-pickers'), buildPackageRestrictedImports('@mui/x-pickers-pro', 'x-pickers-pro'), + buildPackageRestrictedImports('@mui/x-tree-view', 'x-tree-view'), + buildPackageRestrictedImports('@mui/x-tree-view-pro', 'x-tree-view-pro'), buildPackageRestrictedImports('@mui/x-license', 'x-license'), ], }; diff --git a/babel.config.js b/babel.config.js index e57e327f19ee..cffee2bfde9e 100644 --- a/babel.config.js +++ b/babel.config.js @@ -16,6 +16,7 @@ const defaultAlias = { '@mui/x-date-pickers-pro': resolveAliasPath('./packages/x-date-pickers-pro/src'), '@mui/x-charts': resolveAliasPath('./packages/x-charts/src'), '@mui/x-tree-view': resolveAliasPath('./packages/x-tree-view/src'), + '@mui/x-tree-view-pro': resolveAliasPath('./packages/x-tree-view-pro/src'), '@mui/material-nextjs': '@mui/monorepo/packages/mui-material-nextjs/src', '@mui-internal/api-docs-builder': resolveAliasPath( './node_modules/@mui/monorepo/packages/api-docs-builder', diff --git a/docs/babel.config.js b/docs/babel.config.js index 4523a10447b1..939795a4f573 100644 --- a/docs/babel.config.js +++ b/docs/babel.config.js @@ -10,6 +10,7 @@ const alias = { '@mui/x-date-pickers-pro': '../packages/x-date-pickers-pro/src', '@mui/x-charts': '../packages/x-charts/src', '@mui/x-tree-view': '../packages/x-tree-view/src', + '@mui/x-tree-view-pro': '../packages/x-tree-view-pro/src', '@mui/x-license': '../packages/x-license/src', '@mui/docs': '../node_modules/@mui/monorepo/packages/mui-docs/src', '@mui/monorepo': '../node_modules/@mui/monorepo', diff --git a/docs/scripts/createXTypeScriptProjects.ts b/docs/scripts/createXTypeScriptProjects.ts index b5bc86f9850a..a997d7689b42 100644 --- a/docs/scripts/createXTypeScriptProjects.ts +++ b/docs/scripts/createXTypeScriptProjects.ts @@ -37,7 +37,8 @@ export type XProjectNames = | 'x-date-pickers' | 'x-date-pickers-pro' | 'x-charts' - | 'x-tree-view'; + | 'x-tree-view' + | 'x-tree-view-pro'; export type XTypeScriptProjects = Map; @@ -264,5 +265,24 @@ export const createXTypeScriptProjects = () => { }), ); + // TODO x-tree-view-pro uncomment when making the package public + // projects.set( + // 'x-tree-view-pro', + // createXTypeScriptProject({ + // name: 'x-tree-view-pro', + // rootPath: path.join(workspaceRoot, 'packages/x-tree-view-pro'), + // entryPointPath: 'src/index.ts', + // documentationFolderName: 'tree-view', + // getComponentsWithPropTypes: getComponentPaths({ + // folders: ['src'], + // includeUnstableComponents: true, + // }), + // getComponentsWithApiDoc: getComponentPaths({ + // folders: ['src'], + // includeUnstableComponents: true, + // }), + // }), + // ); + return projects; }; diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 10834c1fb58b..2538e1072853 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-charts", "version": "7.1.0", - "description": "The community edition of the charts components (MUI X).", + "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", "license": "MIT", diff --git a/packages/x-data-grid-premium/README.md b/packages/x-data-grid-premium/README.md index 34036ebef3d5..c8527da8ec8b 100644 --- a/packages/x-data-grid-premium/README.md +++ b/packages/x-data-grid-premium/README.md @@ -1,6 +1,6 @@ # MUI X Data Grid Premium -This package is the Premium plan edition of the data grid component. +This package is the Premium plan edition of the Data Grid components. It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. ## Installation diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 2885218e39a5..21a3a670cd7b 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-data-grid-premium", "version": "7.1.0", - "description": "The Premium plan edition of the data grid component (MUI X).", + "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", "license": "SEE LICENSE IN LICENSE", diff --git a/packages/x-data-grid-pro/README.md b/packages/x-data-grid-pro/README.md index 5f3ae959ca01..25a3704effd4 100644 --- a/packages/x-data-grid-pro/README.md +++ b/packages/x-data-grid-pro/README.md @@ -1,6 +1,6 @@ # MUI X Data Grid Pro -This package is the Pro plan edition of the data grid component. +This package is the Pro plan edition of the Data Grid component. It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. ## Installation diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 0fca8b43f4c4..cb657f877a22 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-data-grid-pro", "version": "7.1.0", - "description": "The Pro plan edition of the data grid component (MUI X).", + "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", "license": "SEE LICENSE IN LICENSE", diff --git a/packages/x-data-grid/README.md b/packages/x-data-grid/README.md index ceb7180a626f..25de6af92b19 100644 --- a/packages/x-data-grid/README.md +++ b/packages/x-data-grid/README.md @@ -1,6 +1,6 @@ # MUI X Data Grid -This package is the Community plan edition of the data grid component. +This package is the Community plan edition of the Data Grid components. It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. ## Installation diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 6dac6546e666..328047af2423 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-data-grid", "version": "7.1.0", - "description": "The community edition of the data grid component (MUI X).", + "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", "license": "MIT", diff --git a/packages/x-date-pickers-pro/README.md b/packages/x-date-pickers-pro/README.md index cfd0faf15fa0..8a5f497bc1aa 100644 --- a/packages/x-date-pickers-pro/README.md +++ b/packages/x-date-pickers-pro/README.md @@ -1,6 +1,6 @@ # MUI X Date Pickers Pro -This package is the commercial edition of the date and time picker components. +This package is the Pro plan edition of the Date and Time Picker Components. It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. ## Installation diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index e3a1e0c95196..d19dd4687345 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-date-pickers-pro", "version": "7.1.0", - "description": "The commercial edition of the date picker components (MUI X).", + "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", "license": "SEE LICENSE IN LICENSE", diff --git a/packages/x-date-pickers/README.md b/packages/x-date-pickers/README.md index 1bbd97b61731..aa2376eac454 100644 --- a/packages/x-date-pickers/README.md +++ b/packages/x-date-pickers/README.md @@ -1,6 +1,6 @@ # MUI X Date Pickers -This package is the community edition of the date and time picker components. +This package is the Community plan edition of the Date and Time Picker components. It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. ## Installation diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 4e7f731b8319..4a02d63182b3 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-date-pickers", "version": "7.1.0", - "description": "The community edition of the date picker components (MUI X).", + "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", "license": "MIT", diff --git a/packages/x-tree-view-pro/LICENSE b/packages/x-tree-view-pro/LICENSE new file mode 100644 index 000000000000..bda47bde6547 --- /dev/null +++ b/packages/x-tree-view-pro/LICENSE @@ -0,0 +1,11 @@ +Commercial License + +Copyright (c) 2020 Material-UI SAS + +MUI X Pro (https://mui.com/pricing/) is commercial software. You MUST agree to the +End User License Agreement (EULA: https://mui.com/r/x-license-eula) to be able to +use the software. + +This means that you either need to purchase a commercial license at +https://mui.com/r/x-get-license?scope=pro or be eligible for the Evaluation (trial) +licenses detailed at https://mui.com/r/x-license-trial. diff --git a/packages/x-tree-view-pro/README.md b/packages/x-tree-view-pro/README.md new file mode 100644 index 000000000000..7f48bdf17d35 --- /dev/null +++ b/packages/x-tree-view-pro/README.md @@ -0,0 +1,26 @@ +# MUI X Tree View + +This package is the Pro plan edition of the Tree View components. +It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. + +## Installation + +Install the package in your project directory with: + +```bash +npm install @mui/x-tree-view-pro +``` + +This component has the following peer dependencies that you will need to install as well. + +```json +"peerDependencies": { + "@mui/material": "^5.15.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" +}, +``` + +## Documentation + +Visit [https://mui.com/x/react-tree-view/](https://mui.com/x/react-tree-view/) to view the full documentation. diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json new file mode 100644 index 000000000000..1f463cbdd531 --- /dev/null +++ b/packages/x-tree-view-pro/package.json @@ -0,0 +1,70 @@ +{ + "name": "@mui/x-tree-view-pro", + "version": "7.0.1", + "private": true, + "description": "The Pro plan edition of the Tree View components (MUI X).", + "author": "MUI Team", + "main": "src/index.ts", + "license": "SEE LICENSE IN LICENSE", + "bugs": { + "url": "https://github.com/mui/mui-x/issues" + }, + "homepage": "https://mui.com/x/react-tree-view/", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "sideEffects": false, + "publishConfig": { + "access": "public" + }, + "keywords": [ + "react", + "react-component", + "mui", + "mui-x", + "material-ui", + "material design", + "treeview" + ], + "scripts": { + "typescript": "tsc -p tsconfig.json", + "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", + "prebuild": "rimraf build tsconfig.build.tsbuildinfo" + }, + "repository": { + "type": "git", + "url": "https://github.com/mui/mui-x.git", + "directory": "packages/x-tree-view-pro" + }, + "dependencies": { + "@babel/runtime": "^7.24.0", + "@mui/base": "^5.0.0-beta.40", + "@mui/system": "^5.15.14", + "@mui/utils": "^5.15.14", + "@mui/x-license": "7.0.0", + "@mui/x-tree-view-pro": "7.0.1", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "setupFiles": [ + "/src/setupTests.js" + ], + "engines": { + "node": ">=14.0.0" + } +} diff --git a/packages/x-tree-view-pro/src/index.ts b/packages/x-tree-view-pro/src/index.ts new file mode 100644 index 000000000000..a6b680db412a --- /dev/null +++ b/packages/x-tree-view-pro/src/index.ts @@ -0,0 +1 @@ +export * from '@mui/x-tree-view'; diff --git a/packages/x-tree-view-pro/tsconfig.build.json b/packages/x-tree-view-pro/tsconfig.build.json new file mode 100644 index 000000000000..58dc0f54afd0 --- /dev/null +++ b/packages/x-tree-view-pro/tsconfig.build.json @@ -0,0 +1,19 @@ +{ + // This config is for emitting declarations (.d.ts) only + // Actual .ts source files are transpiled via babel + "extends": "./tsconfig.json", + "compilerOptions": { + "composite": true, + "declaration": true, + "noEmit": false, + "emitDeclarationOnly": true, + "outDir": "build", + "rootDir": "./src" + }, + "references": [ + { "path": "../x-tree-view/tsconfig.build.json" }, + { "path": "../x-license/tsconfig.build.json" } + ], + "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*", "src/tests/**/*"] +} diff --git a/packages/x-tree-view-pro/tsconfig.json b/packages/x-tree-view-pro/tsconfig.json new file mode 100644 index 000000000000..b615deabf797 --- /dev/null +++ b/packages/x-tree-view-pro/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["react", "mocha", "node"], + "noImplicitAny": false + }, + "include": [ + "src/**/*", + "../../test/utils/addChaiAssertions.ts", + "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", + "../../node_modules/@mui/material/themeCssVarsAugmentation" + ] +} diff --git a/packages/x-tree-view/README.md b/packages/x-tree-view/README.md index 370fb4971362..567adb406dfb 100644 --- a/packages/x-tree-view/README.md +++ b/packages/x-tree-view/README.md @@ -1,6 +1,6 @@ # MUI X Tree View -This package is the community edition of the tree view components. +This package is the Community plan edition of the Tree View components. It's part of [MUI X](https://mui.com/x/), an open-core extension of MUI Core, with advanced components. ## Installation diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 3e742b593dba..00f469bfc5f3 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,7 +1,7 @@ { "name": "@mui/x-tree-view", "version": "7.1.0", - "description": "The community edition of the tree view components (MUI X).", + "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", "license": "MIT", diff --git a/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts b/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts index a26a5287af44..395c5ed62822 100644 --- a/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts +++ b/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts @@ -75,7 +75,7 @@ export function getComponentImports(name: string, filename: string) { const reExportPackage = [rootImportPath]; - // TODO: uncomment when releasing the pro package + // TODO x-tree-view-pro uncomment when making the package public // if (rootImportPath === '@mui/x-tree-view') { // reExportPackage.push('@mui/x-tree-view-pro'); // } diff --git a/tsconfig.json b/tsconfig.json index 941074723d1c..60fb7c569b55 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,6 +24,8 @@ "@mui/x-charts/*": ["./packages/x-charts/src/*"], "@mui/x-tree-view": ["./packages/x-tree-view/src"], "@mui/x-tree-view/*": ["./packages/x-tree-view/src/*"], + "@mui/x-tree-view-pro": ["./packages/x-tree-view-pro/src"], + "@mui/x-tree-view-pro/*": ["./packages/x-tree-view-pro/src/*"], "@mui/x-license": ["./packages/x-license/src"], "@mui/x-license/*": ["./packages/x-license/src/*"], "@mui-internal/test-utils": ["./node_modules/@mui/monorepo/packages/test-utils/src"], diff --git a/webpackBaseConfig.js b/webpackBaseConfig.js index 6549bda5c809..d881a90743e7 100644 --- a/webpackBaseConfig.js +++ b/webpackBaseConfig.js @@ -16,6 +16,7 @@ module.exports = { '@mui/x-date-pickers-pro': path.resolve(__dirname, './packages/x-date-pickers-pro/src'), '@mui/x-charts': path.resolve(__dirname, './packages/x-charts/src'), '@mui/x-tree-view': path.resolve(__dirname, './packages/x-tree-view/src'), + '@mui/x-tree-view-pro': path.resolve(__dirname, './packages/x-tree-view-pro/src'), '@mui/x-license': path.resolve(__dirname, './packages/x-license/src'), '@mui/material-nextjs': path.resolve( __dirname, From 5cbb05649f55f0eb53662dcdd398020ca8ad93aa Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 29 Mar 2024 10:31:28 -0400 Subject: [PATCH 039/912] [DataGrid] Fix RTL mode (#12583) --- .../virtualization/GridTopContainer.tsx | 1 + .../virtualization/useGridVirtualScroller.tsx | 19 ++++- .../data-grid/DataGridRTLVirtualization.js | 80 +++++++++++++++++++ test/regressions/index.js | 35 ++++++-- 4 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 test/regressions/data-grid/DataGridRTLVirtualization.js diff --git a/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx b/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx index 03873c05f560..88603b41c344 100644 --- a/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx @@ -21,6 +21,7 @@ const Element = styled('div')({ zIndex: 5, bottom: 0, left: 0, + right: 0, height: 1, width: 'var(--DataGrid-rowWidth)', backgroundColor: 'var(--DataGrid-rowBorderColor)', diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx index 8ed66d64e1ae..2fc1b43d1f09 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx @@ -67,6 +67,7 @@ const EMPTY_SCROLL_POSITION = { top: 0, left: 0 }; export const EMPTY_DETAIL_PANELS = Object.freeze(new Map()); const createScrollCache = ( + mode: 'ltr' | 'rtl', rowBufferPx: number, columnBufferPx: number, verticalBuffer: number, @@ -74,6 +75,7 @@ const createScrollCache = ( ) => ({ direction: ScrollDirection.NONE, buffer: bufferForDirection( + mode, ScrollDirection.NONE, rowBufferPx, columnBufferPx, @@ -139,6 +141,7 @@ export const useGridVirtualScroller = () => { const frozenContext = React.useRef(undefined); const scrollCache = useLazyRef(() => createScrollCache( + theme.direction, rootProps.rowBufferPx, rootProps.columnBufferPx, dimensions.rowHeight * 15, @@ -243,6 +246,7 @@ export const useGridVirtualScroller = () => { scrollCache.direction = direction; scrollCache.buffer = bufferForDirection( + theme.direction, direction, rootProps.rowBufferPx, rootProps.columnBufferPx, @@ -938,7 +942,7 @@ export function computeOffsetLeft( factor * (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0); - return left; + return Math.abs(left); } function directionForDelta(dx: number, dy: number) { @@ -963,12 +967,25 @@ function directionForDelta(dx: number, dy: number) { } function bufferForDirection( + mode: 'ltr' | 'rtl', direction: ScrollDirection, rowBufferPx: number, columnBufferPx: number, verticalBuffer: number, horizontalBuffer: number, ) { + if (mode === 'rtl') { + switch (direction) { + case ScrollDirection.LEFT: + direction = ScrollDirection.RIGHT; + break; + case ScrollDirection.RIGHT: + direction = ScrollDirection.LEFT; + break; + default: + } + } + switch (direction) { case ScrollDirection.NONE: return { diff --git a/test/regressions/data-grid/DataGridRTLVirtualization.js b/test/regressions/data-grid/DataGridRTLVirtualization.js new file mode 100644 index 000000000000..9920f1036ada --- /dev/null +++ b/test/regressions/data-grid/DataGridRTLVirtualization.js @@ -0,0 +1,80 @@ +import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import { useGridApiRef, DataGrid } from '@mui/x-data-grid'; +import { arSD } from '@mui/x-data-grid/locales'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'data-grid-rtl-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); + +const columns = [ + { + field: 'id', + headerName: 'تعريف', + width: 150, + }, + { + field: 'name', + headerName: 'اسم', + width: 150, + }, + { + field: 'age', + headerName: 'عمر', + valueGetter: (value) => `${value} سنوات`, + width: 150, + }, + { + field: 'occupation', + headerName: 'المهنة', + width: 150, + }, + { + field: 'gender', + headerName: 'جنس', + width: 150, + }, +]; + +const rows = [ + { id: 1, name: 'سارہ', age: 35, occupation: 'معلم', gender: 'أنثى' }, + { id: 2, name: 'زید', age: 42, occupation: 'مهندس', gender: 'ذكر' }, + { id: 3, name: 'علی', age: 33, occupation: 'محاسب', gender: 'ذكر' }, + { id: 4, name: 'فاطمہ', age: 25, occupation: 'معلم', gender: 'أنثى' }, + { id: 5, name: 'ایندریو', age: 65, occupation: 'مهندس', gender: 'ذكر' }, +]; + +export default function DataGridRTLVirtualization() { + const apiRef = useGridApiRef(); + const existingTheme = useTheme(); + const theme = React.useMemo( + () => + createTheme({}, arSD, existingTheme, { + direction: 'rtl', + }), + [existingTheme], + ); + React.useEffect(() => { + Promise.resolve().then(() => { + const scroller = apiRef.current.rootElementRef.current.querySelector( + '.MuiDataGrid-virtualScroller', + ); + scroller.scrollLeft = -Math.abs(scroller.scrollWidth - scroller.clientWidth); + }); + }, [apiRef]); + return ( + + +
    + +
    +
    +
    + ); +} diff --git a/test/regressions/index.js b/test/regressions/index.js index 2c621503bd03..c66587dd075b 100644 --- a/test/regressions/index.js +++ b/test/regressions/index.js @@ -56,31 +56,50 @@ function excludeTest(suite, name) { }); } +const tests = []; + // Also use some of the demos to avoid code duplication. const requireDocs = require.context('docsx/data', true, /\.js$/); -const tests = requireDocs.keys().reduce((res, path) => { +requireDocs.keys().forEach((path) => { const [name, ...suiteArray] = path.replace('./', '').replace('.js', '').split('/').reverse(); const suite = `docs-${suiteArray.reverse().join('-')}`; if (excludeTest(suite, name)) { - return res; + return; } // TODO: Why does webpack include a key for the absolute and relative path? // We just want the relative path if (!path.startsWith('./')) { - return res; + return; } - res.push({ + tests.push({ path, suite, name, case: requireDocs(path).default, }); +}); + +const requireRegressions = require.context('./data-grid', true, /\.js$/); +requireRegressions.keys().forEach((path) => { + // "./DataGridRTLVirtualization.js" + // "test/regressions/data-grid/DataGridRTLVirtualization.js" + if (!path.startsWith('./')) { + return; + } + + const name = path.replace('./', '').replace('.js', ''); + const suite = `test-regressions-data-grid`; - return res; -}, []); + tests.push({ + path, + suite, + name, + case: requireRegressions(path).default, + }); +}); clock.restore(); @@ -130,7 +149,9 @@ function App() { return null; } - const isDataGridTest = path.indexOf('/docs-data-grid') === 0; + const isDataGridTest = + path.indexOf('/docs-data-grid') === 0 || + path.indexOf('test-regressions-data-grid') !== -1; return ( Date: Fri, 29 Mar 2024 16:56:02 +0200 Subject: [PATCH 040/912] [core] Bump monorepo (#12608) --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 59865fcf1ee8..4313c40a232e 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@mnajdova/enzyme-adapter-react-18": "^0.2.0", "@mui/icons-material": "^5.15.14", "@mui/material": "^5.15.14", - "@mui/monorepo": "https://github.com/mui/material-ui.git#master", + "@mui/monorepo": "https://github.com/mui/material-ui.git#next", "@mui/utils": "^5.15.14", "@next/eslint-plugin-next": "14.0.4", "@octokit/plugin-retry": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index cf72918bf0d4..bcc36cc35cc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2016,9 +2016,9 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/monorepo@https://github.com/mui/material-ui.git#master": - version "5.15.14" - resolved "https://github.com/mui/material-ui.git#39fe215ce8bb1ed215e9a274f63b979714876e61" +"@mui/monorepo@https://github.com/mui/material-ui.git#next": + version "6.0.0-alpha.0" + resolved "https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266" dependencies: "@googleapis/sheets" "^5.0.5" "@netlify/functions" "^2.6.0" From 50d6b0fcdca8aea123aac272c5857ce6105daa3b Mon Sep 17 00:00:00 2001 From: "ms.safari" <30653927+misafari@users.noreply.github.com> Date: Tue, 2 Apr 2024 03:48:34 -0400 Subject: [PATCH 041/912] [l10n] Improve Persian (fa-IR) locale (#12632) Signed-off-by: ms.safari <30653927+misafari@users.noreply.github.com> Co-authored-by: Lukas --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/faIR.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 30db1a184762..458f563e77d9 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -171,7 +171,7 @@ "languageTag": "fa-IR", "importName": "faIR", "localeName": "Persian", - "missingKeysCount": 14, + "missingKeysCount": 8, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/faIR.ts" }, diff --git a/packages/x-date-pickers/src/locales/faIR.ts b/packages/x-date-pickers/src/locales/faIR.ts index af88184b909d..7f76f3fd6846 100644 --- a/packages/x-date-pickers/src/locales/faIR.ts +++ b/packages/x-date-pickers/src/locales/faIR.ts @@ -84,13 +84,13 @@ const faIRPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', + year: 'سال', + month: 'ماه', + day: 'روز', // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', + hours: 'ساعت ها', + minutes: 'دقیقه ها', + seconds: 'ثانیه ها', // meridiem: 'Meridiem', // Common From fec89a8a67bf9ed6d9eb09a98e3224341fb60448 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 2 Apr 2024 10:07:13 +0200 Subject: [PATCH 042/912] [core] Introduce `describeTreeView` to run test on `SimpleTreeView` and `RichTreeView`, using `TreeItem` and `TreeItem2` + migrate expansion tests (#12428) --- .../SimpleTreeView/SimpleTreeView.test.tsx | 85 ----- .../src/TreeItem/TreeItem.test.tsx | 12 - .../src/internals/models/plugin.ts | 4 +- .../useTreeViewExpansion.test.tsx | 304 ++++++++++++++++++ .../useTreeView/useTreeViewModels.ts | 2 +- .../describeTreeView/describeTreeView.tsx | 235 ++++++++++++++ .../describeTreeView.types.ts | 84 +++++ .../utils/tree-view/describeTreeView/index.ts | 1 + 8 files changed, 627 insertions(+), 100 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx create mode 100644 test/utils/tree-view/describeTreeView/describeTreeView.tsx create mode 100644 test/utils/tree-view/describeTreeView/describeTreeView.types.ts create mode 100644 test/utils/tree-view/describeTreeView/index.ts diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx index ee134b0e87a2..6891bdc740b0 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx @@ -22,20 +22,6 @@ describe('', () => { })); describe('warnings', () => { - it('should warn when switching from controlled to uncontrolled of the expandedItems prop', () => { - const { setProps } = render( - - - , - ); - - expect(() => { - setProps({ expandedItems: undefined }); - }).toErrorDev( - 'MUI X: A component is changing the controlled expandedItems state of TreeView to be uncontrolled.', - ); - }); - it('should warn when switching from controlled to uncontrolled of the selectedItems prop', () => { const { setProps } = render( @@ -159,41 +145,6 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected'); }); - it('should be able to be controlled with the expandedItems prop', () => { - function MyComponent() { - const [expandedState, setExpandedState] = React.useState([]); - const onExpandedItemsChange = (event, items) => { - setExpandedState(items); - }; - return ( - - - - - - ); - } - - const { getByTestId, getByText } = render(); - - expect(getByTestId('one')).to.have.attribute('aria-expanded', 'false'); - - fireEvent.click(getByText('one')); - act(() => { - getByTestId('one').focus(); - }); - - expect(getByTestId('one')).to.have.attribute('aria-expanded', 'true'); - - fireEvent.click(getByText('one')); - - expect(getByTestId('one')).to.have.attribute('aria-expanded', 'false'); - - fireEvent.keyDown(getByTestId('one'), { key: '*' }); - - expect(getByTestId('one')).to.have.attribute('aria-expanded', 'true'); - }); - it('should be able to be controlled with the selectedItems prop and singleSelect', () => { function MyComponent() { const [selectedState, setSelectedState] = React.useState(null); @@ -362,42 +313,6 @@ describe('', () => { }); }); - describe('onExpandedItemsChange', () => { - it('should be called when a parent item label is clicked', () => { - const onExpandedItemsChange = spy(); - - const { getByText } = render( - - - - - , - ); - - fireEvent.click(getByText('outer')); - - expect(onExpandedItemsChange.callCount).to.equal(1); - expect(onExpandedItemsChange.args[0][1]).to.deep.equal(['1']); - }); - - it('should be called when a parent item icon is clicked', () => { - const onExpandedItemsChange = spy(); - - const { getByTestId } = render( - -
    }} itemId="1" label="outer"> - - - , - ); - - fireEvent.click(getByTestId('icon')); - - expect(onExpandedItemsChange.callCount).to.equal(1); - expect(onExpandedItemsChange.args[0][1]).to.deep.equal(['1']); - }); - }); - describe('useTreeViewFocus', () => { it('should set tabIndex={0} on the selected item', () => { const { getByTestId } = render( diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 4b1fe9226b92..5ce12562dc86 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -301,18 +301,6 @@ describe('', () => { expect(getByTestId('test')).to.have.attribute('aria-expanded', 'false'); }); - it('should have the attribute `aria-expanded={true}` if expanded', () => { - const { getByTestId } = render( - - - - - , - ); - - expect(getByTestId('test')).to.have.attribute('aria-expanded', 'true'); - }); - it('should not have the attribute `aria-expanded` if no children are present', () => { const { getByTestId } = render( diff --git a/packages/x-tree-view/src/internals/models/plugin.ts b/packages/x-tree-view/src/internals/models/plugin.ts index 0587d6b19e2c..e8d1b497c613 100644 --- a/packages/x-tree-view/src/internals/models/plugin.ts +++ b/packages/x-tree-view/src/internals/models/plugin.ts @@ -85,8 +85,8 @@ type TreeViewUsedPlugins = [ ...TSignature['dependantPlugins'], ]; -type TreeViewUsedParams = TSignature['params'] & - MergePluginsProperty, 'params'>; +export type TreeViewUsedParams = + TSignature['params'] & MergePluginsProperty, 'params'>; type TreeViewUsedDefaultizedParams = TSignature['defaultizedParams'] & diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx new file mode 100644 index 000000000000..fcc5bad1dd9b --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx @@ -0,0 +1,304 @@ +import { expect } from 'chai'; +import { spy } from 'sinon'; +import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; +import { UseTreeViewExpansionSignature } from '@mui/x-tree-view/internals'; +import { act, fireEvent } from '@mui-internal/test-utils'; +import { + TreeItem2, + TreeItem2Props, + UseTreeItem2ContentSlotOwnProps, + useTreeItem2Utils, +} from '@mui/x-tree-view'; +import * as React from 'react'; + +/** + * All tests related to keyboard navigation (e.g.: expanding using "Enter" and "ArrowRight") + * are located in the `useTreeViewKeyboardNavigation.test.tsx` file. + */ +describeTreeView( + 'useTreeViewExpansion plugin', + ({ render, setup }) => { + describe('model props (expandedItems, defaultExpandedItems, onExpandedItemsChange)', () => { + it('should not expand items when no default state and no control state are defined', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + }); + + expect(response.isItemExpanded('1')).to.equal(false); + expect(response.getAllItemRoots()).to.have.length(2); + }); + + it('should use the default state when defined', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + defaultExpandedItems: ['1'], + }); + + expect(response.isItemExpanded('1')).to.equal(true); + expect(response.getAllItemRoots()).to.have.length(3); + }); + + it('should use the control state when defined', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + expandedItems: ['1'], + }); + + expect(response.isItemExpanded('1')).to.equal(true); + expect(response.getItemRoot('1.1')).toBeVisible(); + }); + + it('should use the control state upon the default state when both are defined', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + expandedItems: ['1'], + defaultExpandedItems: ['2'], + }); + + expect(response.isItemExpanded('1')).to.equal(true); + }); + + it('should react to control state update', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + expandedItems: [], + }); + + response.setProps({ expandedItems: ['1'] }); + expect(response.isItemExpanded('1')).to.equal(true); + }); + + it('should call the onExpandedItemsChange callback when the model is updated (add expanded item to empty list)', () => { + const onExpandedItemsChange = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + onExpandedItemsChange, + }); + + fireEvent.click(response.getItemContent('1')); + act(() => { + response.getRoot().focus(); + }); + + expect(onExpandedItemsChange.callCount).to.equal(1); + expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal(['1']); + }); + + it('should call the onExpandedItemsChange callback when the model is updated (add expanded item no non-empty list)', () => { + const onExpandedItemsChange = spy(); + + const response = render({ + items: [ + { id: '1', children: [{ id: '1.1' }] }, + { id: '2', children: [{ id: '2.1' }] }, + ], + onExpandedItemsChange, + defaultExpandedItems: ['1'], + }); + + fireEvent.click(response.getItemContent('2')); + act(() => { + response.getRoot().focus(); + }); + + expect(onExpandedItemsChange.callCount).to.equal(1); + expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal(['2', '1']); + }); + + it('should call the onExpandedItemsChange callback when the model is updated (remove expanded item)', () => { + const onExpandedItemsChange = spy(); + + const response = render({ + items: [ + { id: '1', children: [{ id: '1.1' }] }, + { id: '2', children: [{ id: '2.1' }] }, + ], + onExpandedItemsChange, + defaultExpandedItems: ['1'], + }); + + fireEvent.click(response.getItemContent('1')); + act(() => { + response.getRoot().focus(); + }); + + expect(onExpandedItemsChange.callCount).to.equal(1); + expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal([]); + }); + + it('should warn when switching from controlled to uncontrolled', () => { + const response = render({ + items: [{ id: '1' }], + expandedItems: [], + }); + + expect(() => { + response.setProps({ expandedItems: undefined }); + }).toErrorDev( + 'MUI X: A component is changing the controlled expandedItems state of TreeView to be uncontrolled.', + ); + }); + + it('should warn and not react to update when updating the default state', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + defaultExpandedItems: ['1'], + }); + + expect(() => { + response.setProps({ defaultExpandedItems: ['2'] }); + expect(response.isItemExpanded('1')).to.equal(true); + expect(response.isItemExpanded('2')).to.equal(false); + }).toErrorDev( + 'MUI X: A component is changing the default expandedItems state of an uncontrolled TreeView after being initialized. To suppress this warning opt to use a controlled TreeView.', + ); + }); + }); + + describe('click interactions', () => { + it('should expand collapsed item when clicking on an item content', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + }); + + expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemExpanded('1')).to.equal(true); + }); + + it('should collapse expanded item when clicking on an item content', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + defaultExpandedItems: ['1'], + }); + + expect(response.isItemExpanded('1')).to.equal(true); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemExpanded('1')).to.equal(false); + }); + + it('should not expand collapsed item when clicking on a disabled item content', () => { + const response = render({ + items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }, { id: '2' }], + }); + + expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemExpanded('1')).to.equal(false); + }); + + it('should not collapse expanded item when clicking on a disabled item', () => { + const response = render({ + items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }, { id: '2' }], + defaultExpandedItems: ['1'], + }); + + expect(response.isItemExpanded('1')).to.equal(true); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemExpanded('1')).to.equal(true); + }); + + it('should expand collapsed item when clicking on an item label', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + }); + + expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.click(response.getItemLabel('1')); + expect(response.isItemExpanded('1')).to.equal(true); + }); + + it('should expand collapsed item when clicking on an item icon container', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + }); + + expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.click(response.getItemIconContainer('1')); + expect(response.isItemExpanded('1')).to.equal(true); + }); + + it('should be able to limit the expansion to the icon', function test() { + // This test is not relevant for the TreeItem component. + // We could create the equivalent test for it, + // but it's not worth the effort given the complexity of the old behavior override. + if (!setup.includes('TreeItem2')) { + this.skip(); + } + + const CustomTreeItem = React.forwardRef(function MyTreeItem( + props: TreeItem2Props, + ref: React.Ref, + ) { + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + + const handleContentClick: UseTreeItem2ContentSlotOwnProps['onClick'] = (event) => { + event.defaultMuiPrevented = true; + interactions.handleSelection(event); + }; + + const handleIconContainerClick = (event: React.MouseEvent) => { + interactions.handleExpansion(event); + }; + + return ( + + ); + }); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + slots: { item: CustomTreeItem }, + }); + + expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.click(response.getItemIconContainer('1')); + expect(response.isItemExpanded('1')).to.equal(true); + }); + }); + + describe('onItemExpansionToggle prop', () => { + it('should call the onItemExpansionToggle callback when expanding an item', () => { + const onItemExpansionToggle = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + onItemExpansionToggle, + }); + + fireEvent.click(response.getItemContent('1')); + expect(onItemExpansionToggle.callCount).to.equal(1); + expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); + expect(onItemExpansionToggle.lastCall.args[2]).to.equal(true); + }); + + it('should call the onItemExpansionToggle callback when collapsing an item', () => { + const onItemExpansionToggle = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + defaultExpandedItems: ['1'], + onItemExpansionToggle, + }); + + fireEvent.click(response.getItemContent('1')); + expect(onItemExpansionToggle.callCount).to.equal(1); + expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); + expect(onItemExpansionToggle.lastCall.args[2]).to.equal(false); + }); + }); + }, +); diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts index efd1dc316478..1d6bb801ed3b 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts @@ -106,7 +106,7 @@ export const useTreeViewModels = < ].join('\n'), ); } - }, [JSON.stringify(defaultValue)]); + }, [JSON.stringify(newDefaultValue)]); }); } /* eslint-enable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */ diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx new file mode 100644 index 000000000000..39eb00ad72ba --- /dev/null +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -0,0 +1,235 @@ +import * as React from 'react'; +import createDescribe from '@mui-internal/test-utils/createDescribe'; +import { createRenderer } from '@mui-internal/test-utils'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; +import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; +import { TreeViewAnyPluginSignature } from '@mui/x-tree-view/internals/models'; +import { MuiRenderResult } from '@mui-internal/test-utils/createRenderer'; +import { + DescribeTreeViewTestRunner, + DescribeTreeViewRenderer, + DescribeTreeViewRendererReturnValue, + DescribeTreeViewItem, +} from './describeTreeView.types'; + +const innerDescribeTreeView = ( + message: string, + testRunner: DescribeTreeViewTestRunner, +): void => { + const { render } = createRenderer(); + + const getUtils = ( + result: MuiRenderResult, + ): Omit, 'setProps'> => { + const getRoot = () => result.getByRole('tree'); + + const getAllItemRoots = () => result.queryAllByRole('treeitem'); + + const getItemRoot = (id: string) => result.getByTestId(id); + + const getItemContent = (id: string) => + getItemRoot(id).querySelector(`.${treeItemClasses.content}`)!; + + const getItemLabel = (id: string) => + getItemRoot(id).querySelector(`.${treeItemClasses.label}`)!; + + const getItemIconContainer = (id: string) => + getItemRoot(id).querySelector(`.${treeItemClasses.iconContainer}`)!; + + const isItemExpanded = (id: string) => getItemRoot(id).getAttribute('aria-expanded') === 'true'; + + return { + getRoot, + getAllItemRoots, + getItemRoot, + getItemContent, + getItemLabel, + getItemIconContainer, + isItemExpanded, + }; + }; + + describe(message, () => { + describe('RichTreeView + TreeItem', () => { + const renderRichTreeView: DescribeTreeViewRenderer = ({ + items: rawItems, + slotProps, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const result = render( + + ({ + ...slotProps?.item, + 'data-testid': ownerState.itemId, + }) as any, + }} + getItemLabel={(item) => item.label ?? item.id} + isItemDisabled={(item) => !!item.disabled} + {...other} + />, + ); + + return { + setProps: result.setProps, + ...getUtils(result), + }; + }; + + testRunner({ render: renderRichTreeView, setup: 'RichTreeView + TreeItem' }); + }); + + describe('RichTreeView + TreeItem2', () => { + const renderRichTreeView: DescribeTreeViewRenderer = ({ + items: rawItems, + slots, + slotProps, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const result = render( + + ({ + ...slotProps?.item, + 'data-testid': ownerState.itemId, + }) as any, + }} + getItemLabel={(item) => item.label ?? item.id} + isItemDisabled={(item) => !!item.disabled} + {...other} + />, + ); + + return { + setProps: result.setProps, + ...getUtils(result), + }; + }; + + testRunner({ render: renderRichTreeView, setup: 'RichTreeView + TreeItem2' }); + }); + + describe('SimpleTreeView + TreeItem', () => { + const renderSimpleTreeView: DescribeTreeViewRenderer = ({ + items: rawItems, + slots, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const Item = slots?.item ?? TreeItem; + + const renderItem = (item: DescribeTreeViewItem) => ( + + {item.children?.map(renderItem)} + + ); + + const result = render( + + {items.map(renderItem)} + , + ); + + return { + setProps: result.setProps, + ...getUtils(result), + }; + }; + + testRunner({ render: renderSimpleTreeView, setup: 'SimpleTreeView + TreeItem' }); + }); + + describe('SimpleTreeView + TreeItem2', () => { + const renderSimpleTreeView: DescribeTreeViewRenderer = ({ + items: rawItems, + slots, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const Item = slots?.item ?? TreeItem2; + const renderItem = (item: DescribeTreeViewItem) => ( + + {item.children?.map(renderItem)} + + ); + + const result = render( + + {items.map(renderItem)} + , + ); + + return { + setProps: result.setProps, + ...getUtils(result), + }; + }; + + testRunner({ render: renderSimpleTreeView, setup: 'SimpleTreeView + TreeItem2' }); + }); + }); +}; + +type Params = [ + string, + DescribeTreeViewTestRunner, +]; + +type DescribeTreeView = { +

    (...args: Params

    ): void; + skip:

    (...args: Params

    ) => void; + only:

    (...args: Params

    ) => void; +}; + +/** + * Describe tests for the Tree View that will be executed with the following setups: + * - RichTreeView + TreeItem + * - RichTreeView + TreeItem2 + * - SimpleTreeView + TreeItem + * - SimpleTreeView + TreeItem2 + * + * Is used as follows: + * + * ``` + * describeTreeView('Title of the suite', ({ render }) => { + * it('should do something', () => { + * const { getItemRoot } = render({ + * items: [{ id: '1', children: [{ id: '1.1' }] }], + * defaultExpandedItems: ['1'], + * }); + * }); + * }); + * ``` + * + * Several things to note: + * - The `render` function takes an array of items, even for `SimpleTreeView` + * - Except for `items`, all the other properties passed to `render` will be forwarded to the Tree View as props + * - If an item has no label, its `id` will be used as the label + */ +export const describeTreeView = createDescribe( + 'describeTreeView', + innerDescribeTreeView, +) as DescribeTreeView; diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts new file mode 100644 index 000000000000..9c5f3d59dba8 --- /dev/null +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -0,0 +1,84 @@ +import * as React from 'react'; +import { TreeViewAnyPluginSignature, TreeViewUsedParams } from '@mui/x-tree-view/internals/models'; +import { TreeItemProps } from '@mui/x-tree-view/TreeItem'; +import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; + +export type DescribeTreeViewTestRunner = ( + params: DescribeTreeViewTestRunnerParams, +) => void; + +export interface DescribeTreeViewRendererReturnValue { + /** + * Passes new props to the Tree View. + * @param {Partial>} props A subset of the props accepted by the Tree View. + */ + setProps: (props: Partial>) => void; + /** + * Returns the `root` slot of the Tree View. + * @returns {HTMLElement} `root` slot of the Tree View. + */ + getRoot: () => HTMLElement; + /** + * Returns the `root` slot of all the items. + * @returns {HTMLElement[]} List of the `root` slot of all the items. + */ + getAllItemRoots: () => HTMLElement[]; + /** + * Returns the `root` slot of the item with the given id. + * @param {string} id The id of the item to retrieve. + * @returns {HTMLElement} `root` slot of the item with the given id. + */ + getItemRoot: (id: string) => HTMLElement; + /** + * Returns the `content` slot of the item with the given id. + * @param {string} id The id of the item to retrieve. + * @returns {HTMLElement} `content` slot of the item with the given id. + */ + getItemContent: (id: string) => HTMLElement; + /** + * Returns the `label` slot of the item with the given id. + * @param {string} id The id of the item to retrieve. + * @returns {HTMLElement} `label` slot of the item with the given id. + */ + getItemLabel: (id: string) => HTMLElement; + /** + * Returns the `iconContainer` slot of the item with the given id. + * @param {string} id The id of the item to retrieve. + * @returns {HTMLElement} `iconContainer` slot of the item with the given id. + */ + getItemIconContainer: (id: string) => HTMLElement; + /** + * Checks if an item is expanded. + * Uses the `aria-expanded` attribute to check the expansion. + * @param {string} id The id of the item to check. + * @returns {boolean} `true` if the item is expanded, `false` otherwise. + */ + isItemExpanded: (id: string) => boolean; +} + +export type DescribeTreeViewRenderer = < + R extends DescribeTreeViewItem, +>( + params: { + items: readonly R[]; + } & Omit, 'slots' | 'slotProps'> & { + slots?: TreeViewUsedParams['slots'] & { item?: React.ElementType }; + slotProps?: TreeViewUsedParams['slots'] & { item?: TreeItemProps | TreeItem2Props }; + }, +) => DescribeTreeViewRendererReturnValue; + +interface DescribeTreeViewTestRunnerParams { + render: DescribeTreeViewRenderer; + setup: + | 'SimpleTreeView + TreeItem' + | 'SimpleTreeView + TreeItem2' + | 'RichTreeView + TreeItem' + | 'RichTreeView + TreeItem2'; +} + +export interface DescribeTreeViewItem { + id: string; + label?: string; + disabled?: boolean; + children?: readonly DescribeTreeViewItem[]; +} diff --git a/test/utils/tree-view/describeTreeView/index.ts b/test/utils/tree-view/describeTreeView/index.ts new file mode 100644 index 000000000000..5eba1f6c9165 --- /dev/null +++ b/test/utils/tree-view/describeTreeView/index.ts @@ -0,0 +1 @@ +export { describeTreeView } from './describeTreeView'; From 90d6d68296af37778332c2dbc4a71237f42e78bd Mon Sep 17 00:00:00 2001 From: Alissa Tung Date: Tue, 2 Apr 2024 16:08:44 +0800 Subject: [PATCH 043/912] [TreeView] Fix typo in errors (#12623) Signed-off-by: alissa-tung --- .../src/internals/plugins/useTreeViewItems/useTreeViewItems.ts | 2 +- .../plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 045e6e849065..d8ea2faaacf5 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -47,7 +47,7 @@ const updateItemsState = ({ [ 'MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', - `Tow items were provided with the same id in the \`items\` prop: "${id}"`, + `Two items were provided with the same id in the \`items\` prop: "${id}"`, ].join('\n'), ); } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index 30101b6c9451..2eaeaa552f66 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -27,7 +27,7 @@ export const useTreeViewJSXItems: TreeViewPlugin = [ 'MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', - `Tow items were provided with the same id in the \`items\` prop: "${item.id}"`, + `Two items were provided with the same id in the \`items\` prop: "${item.id}"`, ].join('\n'), ); } From 4802a152add50974db2e49d389059456c8d0a3ce Mon Sep 17 00:00:00 2001 From: Alex Kobylansky <57197177+alexkobylansky@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:15:42 +0300 Subject: [PATCH 044/912] [l10n] Improve Ukrainian (uk-UA) locale (#12627) Signed-off-by: Alex Kobylansky <57197177+alexkobylansky@users.noreply.github.com> Co-authored-by: Lukas --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/ukUA.ts | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 458f563e77d9..ba14dcc31ed5 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -243,7 +243,7 @@ "languageTag": "uk-UA", "importName": "ukUA", "localeName": "Ukrainian", - "missingKeysCount": 14, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/ukUA.ts" }, diff --git a/packages/x-date-pickers/src/locales/ukUA.ts b/packages/x-date-pickers/src/locales/ukUA.ts index bb53b6e26fcc..2742d5dad70a 100644 --- a/packages/x-date-pickers/src/locales/ukUA.ts +++ b/packages/x-date-pickers/src/locales/ukUA.ts @@ -25,10 +25,10 @@ const ukUAPickers: Partial> = { // DateRange labels start: 'Початок', end: 'Кінець', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'День початку', + startTime: 'Час початку', + endDate: 'День закінчення', + endTime: 'Час закінчення', // Action bar cancelButtonLabel: 'Відміна', @@ -67,7 +67,7 @@ const ukUAPickers: Partial> = { value !== null && utils.isValid(value) ? `Оберіть час, обраний час ${utils.format(value, 'fullTime')}` : 'Оберіть час', - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Очистити дані', // Table labels timeTableLabel: 'оберіть час', @@ -84,17 +84,17 @@ const ukUAPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Рік', + month: 'Місяць', + day: 'День', + weekDay: 'День тижня', + hours: 'Годин', + minutes: 'Хвилин', + seconds: 'Секунд', + meridiem: 'Меридіем', // Common - // empty: 'Empty', + empty: 'Порожній', }; export const ukUA = getPickersLocalization(ukUAPickers); From 30909bfed35a7536e1e51f8cfea10041a5691be5 Mon Sep 17 00:00:00 2001 From: Josh Kelley Date: Tue, 2 Apr 2024 07:28:29 -0400 Subject: [PATCH 045/912] [docs] Fix grammar in TreeView migration doc (#12615) Signed-off-by: Josh Kelley --- .../migration/migration-tree-view-v6/migration-tree-view-v6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md index 4a368c1dc098..965b06fc43df 100644 --- a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md +++ b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md @@ -51,7 +51,7 @@ The required `nodeId` prop used by the `TreeItem` has been renamed to `itemId` f ``` -The same change has been applied to the and `ContentComponent` prop: +The same change has been applied to the `ContentComponent` prop: ```diff const CustomContent = React.forwardRef((props, ref) => { From fb445704d07aaa7e180f5d518199e59b698b92dd Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 2 Apr 2024 14:52:12 +0300 Subject: [PATCH 046/912] [fields] Fix `readOnly` behavior (#12609) --- .../src/internals/hooks/useField/useFieldV6TextField.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts index 5547dc9a047a..90ecb24fe6ff 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV6TextField.ts @@ -171,7 +171,8 @@ export const useFieldV6TextField: UseFieldTextField = (params) => { getActiveSectionIndexFromDOM: () => { const browserStartIndex = inputRef.current!.selectionStart ?? 0; const browserEndIndex = inputRef.current!.selectionEnd ?? 0; - if (browserStartIndex === 0 && browserEndIndex === 0) { + const isInputReadOnly = !!inputRef.current?.readOnly; + if ((browserStartIndex === 0 && browserEndIndex === 0) || isInputReadOnly) { return null; } @@ -196,6 +197,7 @@ export const useFieldV6TextField: UseFieldTextField = (params) => { const syncSelectionFromDOM = () => { if (readOnly) { + setSelectedSections(null); return; } const browserStartIndex = inputRef.current!.selectionStart ?? 0; From d50147efd66ceb9222f0c3d5cd7720dabb070115 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 2 Apr 2024 16:08:50 +0200 Subject: [PATCH 047/912] [docs] Fix typo in getItemId prop description (#12637) --- .../api-docs/tree-view/rich-tree-view/rich-tree-view.json | 2 +- packages/x-tree-view/src/RichTreeView/RichTreeView.tsx | 2 +- .../plugins/useTreeViewItems/useTreeViewItems.types.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json index 4f113ec528dd..8e73109f8685 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json @@ -19,7 +19,7 @@ "description": "Expanded item ids. Used when the item's expansion is controlled." }, "getItemId": { - "description": "Used to determine the string label for a given item.", + "description": "Used to determine the id of a given item.", "typeDescriptions": { "item": "The item to check.", "string": "The id of the item." } }, "getItemLabel": { diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index f0d469068892..5983e1697daf 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -188,7 +188,7 @@ RichTreeView.propTypes = { */ expandedItems: PropTypes.arrayOf(PropTypes.string), /** - * Used to determine the string label for a given item. + * Used to determine the id of a given item. * * @template R * @param {R} item The item to check. diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 37e704219cab..5b20682d1a9b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -55,7 +55,7 @@ export interface UseTreeViewItemsParameters { */ getItemLabel?: (item: R) => string; /** - * Used to determine the string label for a given item. + * Used to determine the id of a given item. * * @template R * @param {R} item The item to check. From 2791237f51cc4a11582932b98a20f0eadd00c878 Mon Sep 17 00:00:00 2001 From: cnHealth <158763580+cnHealth@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:45:47 -0300 Subject: [PATCH 048/912] [l10n] Improve Portuguese (pt-BR) locale (#12613) Signed-off-by: cnHealth <158763580+cnHealth@users.noreply.github.com> Signed-off-by: Lukas Co-authored-by: Lukas --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/ptBR.ts | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index ba14dcc31ed5..fced02554cba 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -187,7 +187,7 @@ "languageTag": "pt-BR", "importName": "ptBR", "localeName": "Portuguese (Brazil)", - "missingKeysCount": 14, + "missingKeysCount": 1, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/ptBR.ts" }, diff --git a/packages/x-date-pickers/src/locales/ptBR.ts b/packages/x-date-pickers/src/locales/ptBR.ts index 14b54dd8ca79..0e6385db7628 100644 --- a/packages/x-date-pickers/src/locales/ptBR.ts +++ b/packages/x-date-pickers/src/locales/ptBR.ts @@ -25,10 +25,10 @@ const ptBRPickers: Partial> = { // DateRange labels start: 'Início', end: 'Fim', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Data de início', + startTime: 'Hora de início', + endDate: 'Data de Término', + endTime: 'Hora de Término', // Action bar cancelButtonLabel: 'Cancelar', @@ -84,17 +84,17 @@ const ptBRPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Ano', + month: 'Mês', + day: 'Dia', + weekDay: 'Dia da Semana', + hours: 'Horas', + minutes: 'Minutos', + seconds: 'Segundos', + meridiem: 'Meio dia', // Common - // empty: 'Empty', + empty: 'Vazio', }; export const ptBR = getPickersLocalization(ptBRPickers); From 83fd4efacac03c2088be5cec3d1c93af7e4edc7d Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 3 Apr 2024 10:29:41 +0300 Subject: [PATCH 049/912] [docs] Remove `day` from the default `dayOfWeekFormatter` function params (#12644) --- docs/pages/x/api/date-pickers/date-calendar.json | 2 +- docs/pages/x/api/date-pickers/date-picker.json | 2 +- docs/pages/x/api/date-pickers/date-range-calendar.json | 2 +- docs/pages/x/api/date-pickers/date-range-picker.json | 2 +- docs/pages/x/api/date-pickers/date-time-picker.json | 2 +- docs/pages/x/api/date-pickers/date-time-range-picker.json | 2 +- docs/pages/x/api/date-pickers/desktop-date-picker.json | 2 +- docs/pages/x/api/date-pickers/desktop-date-range-picker.json | 2 +- docs/pages/x/api/date-pickers/desktop-date-time-picker.json | 2 +- .../x/api/date-pickers/desktop-date-time-range-picker.json | 2 +- docs/pages/x/api/date-pickers/mobile-date-picker.json | 2 +- docs/pages/x/api/date-pickers/mobile-date-range-picker.json | 2 +- docs/pages/x/api/date-pickers/mobile-date-time-picker.json | 2 +- .../pages/x/api/date-pickers/mobile-date-time-range-picker.json | 2 +- docs/pages/x/api/date-pickers/static-date-picker.json | 2 +- docs/pages/x/api/date-pickers/static-date-range-picker.json | 2 +- docs/pages/x/api/date-pickers/static-date-time-picker.json | 2 +- .../src/DateRangeCalendar/DateRangeCalendar.tsx | 2 +- .../x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx | 2 +- .../src/DateTimeRangePicker/DateTimeRangePicker.tsx | 2 +- .../src/DesktopDateRangePicker/DesktopDateRangePicker.tsx | 2 +- .../DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx | 2 +- .../src/MobileDateRangePicker/MobileDateRangePicker.tsx | 2 +- .../src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx | 2 +- .../src/StaticDateRangePicker/StaticDateRangePicker.tsx | 2 +- packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx | 2 +- packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx | 2 +- packages/x-date-pickers/src/DatePicker/DatePicker.tsx | 2 +- packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx | 2 +- .../x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx | 2 +- .../src/DesktopDateTimePicker/DesktopDateTimePicker.tsx | 2 +- .../x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx | 2 +- .../src/MobileDateTimePicker/MobileDateTimePicker.tsx | 2 +- .../x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx | 2 +- .../src/StaticDateTimePicker/StaticDateTimePicker.tsx | 2 +- 35 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/pages/x/api/date-pickers/date-calendar.json b/docs/pages/x/api/date-pickers/date-calendar.json index 72f1cd795719..68c507d55288 100644 --- a/docs/pages/x/api/date-pickers/date-calendar.json +++ b/docs/pages/x/api/date-pickers/date-calendar.json @@ -4,7 +4,7 @@ "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/date-picker.json b/docs/pages/x/api/date-pickers/date-picker.json index c615567fe829..ea40f5ecb500 100644 --- a/docs/pages/x/api/date-pickers/date-picker.json +++ b/docs/pages/x/api/date-pickers/date-picker.json @@ -7,7 +7,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/date-range-calendar.json b/docs/pages/x/api/date-pickers/date-range-calendar.json index 0c0a1d51c6b5..70821cf053e2 100644 --- a/docs/pages/x/api/date-pickers/date-range-calendar.json +++ b/docs/pages/x/api/date-pickers/date-range-calendar.json @@ -16,7 +16,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/date-range-picker.json b/docs/pages/x/api/date-pickers/date-range-picker.json index 99612ca1ca76..9f44960cf279 100644 --- a/docs/pages/x/api/date-pickers/date-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-range-picker.json @@ -15,7 +15,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/date-time-picker.json b/docs/pages/x/api/date-pickers/date-time-picker.json index 1588c746f832..a95659e8955e 100644 --- a/docs/pages/x/api/date-pickers/date-time-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-picker.json @@ -9,7 +9,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/date-time-range-picker.json b/docs/pages/x/api/date-pickers/date-time-range-picker.json index 1c8645cf410e..c176e8c1e00e 100644 --- a/docs/pages/x/api/date-pickers/date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-range-picker.json @@ -16,7 +16,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/desktop-date-picker.json b/docs/pages/x/api/date-pickers/desktop-date-picker.json index 8054ed48893c..a444cde654f3 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-picker.json @@ -7,7 +7,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/desktop-date-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-range-picker.json index 56ef916cd278..de5d83a3570f 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-range-picker.json @@ -15,7 +15,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json index bdc527c14f28..85b246eb27e6 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json @@ -9,7 +9,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json index e17818a31797..3a3612e730a4 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json @@ -16,7 +16,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/mobile-date-picker.json b/docs/pages/x/api/date-pickers/mobile-date-picker.json index 9c2d12c3887c..ef656fc6dcee 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-picker.json @@ -7,7 +7,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/mobile-date-range-picker.json b/docs/pages/x/api/date-pickers/mobile-date-range-picker.json index 4e4b02c80de7..8bdc9753d9b9 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-range-picker.json @@ -11,7 +11,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-picker.json index a31d556420df..6e53b200352f 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-picker.json @@ -9,7 +9,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json index 2b82a772e23a..3ec3f5b6d941 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json @@ -12,7 +12,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/static-date-picker.json b/docs/pages/x/api/date-pickers/static-date-picker.json index 07823b0be25c..a392f5a1d6dc 100644 --- a/docs/pages/x/api/date-pickers/static-date-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-picker.json @@ -3,7 +3,7 @@ "autoFocus": { "type": { "name": "bool" } }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/static-date-range-picker.json b/docs/pages/x/api/date-pickers/static-date-range-picker.json index e4c0366f38fd..25ac2072a671 100644 --- a/docs/pages/x/api/date-pickers/static-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-range-picker.json @@ -11,7 +11,7 @@ }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/docs/pages/x/api/date-pickers/static-date-time-picker.json b/docs/pages/x/api/date-pickers/static-date-time-picker.json index 90e73442433f..1d05b51bb020 100644 --- a/docs/pages/x/api/date-pickers/static-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-time-picker.json @@ -5,7 +5,7 @@ "autoFocus": { "type": { "name": "bool" } }, "dayOfWeekFormatter": { "type": { "name": "func" }, - "default": "(_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", + "default": "(date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase()", "signature": { "type": "function(date: TDate) => string", "describedArgs": ["date"], diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx index 328bd4358a57..3bab7b2bfbde 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx @@ -623,7 +623,7 @@ DateRangeCalendar.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx index 679515dd3ab2..6d48492f955f 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx @@ -79,7 +79,7 @@ DateRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx index b0cb8e230c46..e015a0972a38 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx @@ -84,7 +84,7 @@ DateTimeRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx index c3ae2ac5605d..83f7274a8e5b 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx @@ -120,7 +120,7 @@ DesktopDateRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index 89b24bee7f24..8f90fa61d321 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -252,7 +252,7 @@ DesktopDateTimeRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx index c65509df1c35..5dfa0b6ed65c 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx @@ -116,7 +116,7 @@ MobileDateRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index ce0f3684164a..f6a0beb025cc 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -244,7 +244,7 @@ MobileDateTimeRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx b/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx index bb3c4aa34ed7..5d099a332328 100644 --- a/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx @@ -94,7 +94,7 @@ StaticDateRangePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx b/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx index b14728935e28..95df734302d8 100644 --- a/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx +++ b/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx @@ -425,7 +425,7 @@ DateCalendar.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx b/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx index a16854f0e499..de6365bc00af 100644 --- a/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx +++ b/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx @@ -64,7 +64,7 @@ export interface ExportedDayCalendarProps * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter?: (date: TDate) => string; /** diff --git a/packages/x-date-pickers/src/DatePicker/DatePicker.tsx b/packages/x-date-pickers/src/DatePicker/DatePicker.tsx index 65f36dbf7537..0fb35eb2fa6d 100644 --- a/packages/x-date-pickers/src/DatePicker/DatePicker.tsx +++ b/packages/x-date-pickers/src/DatePicker/DatePicker.tsx @@ -70,7 +70,7 @@ DatePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx index 68edc264b00f..67d50cb40742 100644 --- a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx @@ -80,7 +80,7 @@ DateTimePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx index aaeb03f1eeba..741ba0caf36d 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx @@ -120,7 +120,7 @@ DesktopDatePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx index 7233ff2ad4be..f20cf6d44c8f 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx @@ -265,7 +265,7 @@ DesktopDateTimePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx index 25a5fd739b7f..eb6084ac6dd7 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx @@ -117,7 +117,7 @@ MobileDatePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx index 3489751741c5..204b2218b393 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx @@ -142,7 +142,7 @@ MobileDateTimePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx b/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx index cb5fb76cb9c3..a079d4cedb3d 100644 --- a/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx +++ b/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx @@ -83,7 +83,7 @@ StaticDatePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** diff --git a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx index caa6285fbee9..ef875b3b8bec 100644 --- a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx +++ b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx @@ -107,7 +107,7 @@ StaticDateTimePicker.propTypes = { * Formats the day of week displayed in the calendar header. * @param {TDate} date The date of the day of week provided by the adapter. * @returns {string} The name to display. - * @default (_day: string, date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() + * @default (date: TDate) => adapter.format(date, 'weekdayShort').charAt(0).toUpperCase() */ dayOfWeekFormatter: PropTypes.func, /** From d6e6c75fdb8a2473e2b21a067275c2a4c73ce9f4 Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 3 Apr 2024 10:50:44 +0300 Subject: [PATCH 050/912] [core] Use PR labels to identify the package a `l10n` PR belongs to (#12639) --- scripts/releaseChangelog.mjs | 43 +++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index 595630d7b093..ebfd37789ef1 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -42,6 +42,23 @@ async function findLatestTaggedVersion(octokit) { return data[0].name.trim(); } +function resolvePackageByLabels(labels) { + let resolvedPackage = null; + labels.forEach((label) => { + switch (label.name) { + case 'component: data grid': + resolvedPackage = 'DataGrid'; + break; + case 'component: pickers': + resolvedPackage = 'pickers'; + break; + default: + break; + } + }); + return resolvedPackage; +} + async function main(argv) { const { githubToken, lastRelease: lastReleaseInput, release } = argv; @@ -89,6 +106,7 @@ async function main(argv) { // Fetch all the pull Request and check if there is a section named changelog const changeLogMessages = []; + const prsLabelsMap = {}; await Promise.all( commitsItems.map(async (commitsItem) => { const searchPullRequestId = commitsItem.commit.message.match(/\(#([0-9]+)\)/); @@ -97,13 +115,15 @@ async function main(argv) { } const { - data: { body: bodyMessage }, + data: { body: bodyMessage, labels }, } = await octokit.request('GET /repos/{owner}/{repo}/pulls/{pull_number}', { owner: GIT_ORGANIZATION, repo: GIT_REPO, pull_number: Number(searchPullRequestId[1]), }); + prsLabelsMap[commitsItem.sha] = labels; + if (!bodyMessage) { return; } @@ -146,8 +166,6 @@ async function main(argv) { const tag = parseTags(commitItem.commit.message); switch (tag) { case 'DataGrid': - case 'l10n': - case '118n': dataGridCommits.push(commitItem); break; case 'DataGridPro': @@ -182,6 +200,25 @@ async function main(argv) { case 'codemod': codemodCommits.push(commitItem); break; + case 'l10n': + case '118n': { + const prLabels = prsLabelsMap[commitItem.sha]; + const resolvedPackage = resolvePackageByLabels(prLabels); + if (resolvedPackage) { + switch (resolvedPackage) { + case 'DataGrid': + dataGridCommits.push(commitItem); + break; + case 'pickers': + pickersCommits.push(commitItem); + break; + default: + coreCommits.push(commitItem); + break; + } + } + break; + } default: otherCommits.push(commitItem); break; From cfd228d2ba73f91a4c5f98f919f5f4162b398cfd Mon Sep 17 00:00:00 2001 From: eddine zeroual <48633360+alp-ex@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:58:06 +0200 Subject: [PATCH 051/912] [docs] Fix missing closing props in `PieShapeNoSnap` demo (#12636) Signed-off-by: eddine zeroual <48633360+alp-ex@users.noreply.github.com> --- docs/data/charts/pie/PieShapeNoSnap.js | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/data/charts/pie/PieShapeNoSnap.js b/docs/data/charts/pie/PieShapeNoSnap.js index 8640c4d17ddc..9952d0c2a3fe 100644 --- a/docs/data/charts/pie/PieShapeNoSnap.js +++ b/docs/data/charts/pie/PieShapeNoSnap.js @@ -52,6 +52,7 @@ export default function PieShapeNoSnap() { ` cx: ${props.cx},`, ` cy: ${props.cy},`, ` }`, + ` ]}`, '/>', ].join('\n'); }} From 3d86411074f2fe291d42edfa4b930f9baa951f62 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Wed, 3 Apr 2024 10:01:52 +0200 Subject: [PATCH 052/912] [docs] Remove ` around @default values (#12158) --- docs/pages/x/api/data-grid/data-grid-premium.json | 2 +- docs/pages/x/api/data-grid/grid-aggregation-function.json | 4 ++-- docs/pages/x/api/data-grid/grid-csv-export-options.json | 2 +- docs/pages/x/api/data-grid/grid-excel-export-options.json | 2 +- docs/pages/x/api/data-grid/grid-filter-model.json | 6 +++--- docs/pages/x/api/date-pickers/date-field.json | 2 +- docs/pages/x/api/date-pickers/date-time-field.json | 4 ++-- docs/pages/x/api/date-pickers/date-time-picker.json | 2 +- docs/pages/x/api/date-pickers/date-time-range-picker.json | 2 +- docs/pages/x/api/date-pickers/desktop-date-time-picker.json | 2 +- .../x/api/date-pickers/desktop-date-time-range-picker.json | 2 +- docs/pages/x/api/date-pickers/desktop-time-picker.json | 2 +- docs/pages/x/api/date-pickers/digital-clock.json | 2 +- docs/pages/x/api/date-pickers/mobile-date-time-picker.json | 2 +- .../x/api/date-pickers/mobile-date-time-range-picker.json | 2 +- docs/pages/x/api/date-pickers/mobile-time-picker.json | 2 +- .../x/api/date-pickers/multi-input-date-range-field.json | 2 +- .../api/date-pickers/multi-input-date-time-range-field.json | 4 ++-- .../x/api/date-pickers/multi-input-time-range-field.json | 4 ++-- .../x/api/date-pickers/multi-section-digital-clock.json | 2 +- docs/pages/x/api/date-pickers/pickers-shortcuts.json | 2 +- .../x/api/date-pickers/single-input-date-range-field.json | 2 +- .../date-pickers/single-input-date-time-range-field.json | 4 ++-- .../x/api/date-pickers/single-input-time-range-field.json | 4 ++-- docs/pages/x/api/date-pickers/static-date-time-picker.json | 2 +- docs/pages/x/api/date-pickers/static-time-picker.json | 2 +- docs/pages/x/api/date-pickers/time-clock.json | 2 +- docs/pages/x/api/date-pickers/time-field.json | 4 ++-- docs/pages/x/api/date-pickers/time-picker.json | 2 +- docs/pages/x/api/tree-view/rich-tree-view.json | 4 ++-- .../src/DataGridPremium/DataGridPremium.tsx | 4 ++-- .../hooks/features/aggregation/gridAggregationInterfaces.ts | 4 ++-- .../x-data-grid-premium/src/models/dataGridPremiumProps.ts | 4 ++-- packages/x-data-grid/src/models/gridExport.ts | 4 ++-- packages/x-data-grid/src/models/gridFilterModel.ts | 6 +++--- .../src/DateTimeRangePicker/DateTimeRangePicker.tsx | 2 +- .../DesktopDateTimeRangePicker.tsx | 2 +- .../MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx | 2 +- .../MultiInputDateRangeField/MultiInputDateRangeField.tsx | 2 +- .../MultiInputDateTimeRangeField.tsx | 4 ++-- .../MultiInputTimeRangeField/MultiInputTimeRangeField.tsx | 4 ++-- .../SingleInputDateRangeField/SingleInputDateRangeField.tsx | 2 +- .../SingleInputDateTimeRangeField.tsx | 4 ++-- .../SingleInputTimeRangeField/SingleInputTimeRangeField.tsx | 4 ++-- .../src/internals/models/dateTimeRange.ts | 2 +- .../x-date-pickers-pro/src/internals/models/timeRange.ts | 2 +- packages/x-date-pickers/src/DateField/DateField.tsx | 2 +- packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx | 4 ++-- .../x-date-pickers/src/DateTimeField/DateTimeField.types.ts | 2 +- .../x-date-pickers/src/DateTimePicker/DateTimePicker.tsx | 2 +- .../src/DesktopDateTimePicker/DesktopDateTimePicker.tsx | 2 +- .../src/DesktopTimePicker/DesktopTimePicker.tsx | 2 +- packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx | 2 +- .../src/MobileDateTimePicker/MobileDateTimePicker.tsx | 2 +- .../src/MobileTimePicker/MobileTimePicker.tsx | 2 +- .../MultiSectionDigitalClock/MultiSectionDigitalClock.tsx | 2 +- .../src/PickersShortcuts/PickersShortcuts.tsx | 4 ++-- .../src/StaticDateTimePicker/StaticDateTimePicker.tsx | 2 +- .../src/StaticTimePicker/StaticTimePicker.tsx | 2 +- packages/x-date-pickers/src/TimeClock/TimeClock.tsx | 2 +- packages/x-date-pickers/src/TimeField/TimeField.tsx | 4 ++-- packages/x-date-pickers/src/TimeField/TimeField.types.ts | 2 +- packages/x-date-pickers/src/TimePicker/TimePicker.tsx | 2 +- .../src/internals/hooks/useField/useField.types.ts | 2 +- packages/x-date-pickers/src/internals/models/props/clock.ts | 2 +- packages/x-tree-view/src/RichTreeView/RichTreeView.tsx | 4 ++-- .../plugins/useTreeViewItems/useTreeViewItems.types.ts | 4 ++-- 67 files changed, 92 insertions(+), 92 deletions(-) diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index 83f0ee534723..56215024f027 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -89,7 +89,7 @@ }, "getAggregationPosition": { "type": { "name": "func" }, - "default": "`(groupNode) => groupNode == null ? 'footer' : 'inline'`", + "default": "(groupNode) => groupNode == null ? 'footer' : 'inline'", "signature": { "type": "function(groupNode: GridGroupNode) => GridAggregationPosition | null", "describedArgs": ["groupNode"], diff --git a/docs/pages/x/api/data-grid/grid-aggregation-function.json b/docs/pages/x/api/data-grid/grid-aggregation-function.json index e4209cf783dd..0f876a7766f6 100644 --- a/docs/pages/x/api/data-grid/grid-aggregation-function.json +++ b/docs/pages/x/api/data-grid/grid-aggregation-function.json @@ -17,12 +17,12 @@ }, "hasCellUnit": { "type": { "description": "boolean" }, - "default": "`true`", + "default": "true", "isPremiumPlan": true }, "label": { "type": { "description": "string" }, - "default": "`apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)})`", + "default": "apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)})", "isPremiumPlan": true }, "valueFormatter": { diff --git a/docs/pages/x/api/data-grid/grid-csv-export-options.json b/docs/pages/x/api/data-grid/grid-csv-export-options.json index c8ec2874beb7..5d2236f5eb6f 100644 --- a/docs/pages/x/api/data-grid/grid-csv-export-options.json +++ b/docs/pages/x/api/data-grid/grid-csv-export-options.json @@ -10,7 +10,7 @@ "allColumns": { "type": { "description": "boolean" }, "default": "false" }, "delimiter": { "type": { "description": "string" }, "default": "','" }, "fields": { "type": { "description": "string[]" } }, - "fileName": { "type": { "description": "string" }, "default": "`document.title`" }, + "fileName": { "type": { "description": "string" }, "default": "document.title" }, "getRowsToExport": { "type": { "description": "(params: GridCsvGetRowsToExportParams) => GridRowId[]" } }, diff --git a/docs/pages/x/api/data-grid/grid-excel-export-options.json b/docs/pages/x/api/data-grid/grid-excel-export-options.json index 8df7897c3fd4..ed0fd0297e1d 100644 --- a/docs/pages/x/api/data-grid/grid-excel-export-options.json +++ b/docs/pages/x/api/data-grid/grid-excel-export-options.json @@ -24,7 +24,7 @@ "fields": { "type": { "description": "string[]" }, "isPremiumPlan": true }, "fileName": { "type": { "description": "string" }, - "default": "`document.title`", + "default": "document.title", "isPremiumPlan": true }, "getRowsToExport": { diff --git a/docs/pages/x/api/data-grid/grid-filter-model.json b/docs/pages/x/api/data-grid/grid-filter-model.json index c67155f35a6b..ac53f00f8979 100644 --- a/docs/pages/x/api/data-grid/grid-filter-model.json +++ b/docs/pages/x/api/data-grid/grid-filter-model.json @@ -10,13 +10,13 @@ "items": { "type": { "description": "GridFilterItem[]" }, "default": "[]", "required": true }, "logicOperator": { "type": { "description": "GridLogicOperator" }, - "default": "`GridLogicOperator.And`" + "default": "GridLogicOperator.And" }, "quickFilterExcludeHiddenColumns": { "type": { "description": "boolean" }, "default": "true" }, "quickFilterLogicOperator": { "type": { "description": "GridLogicOperator" }, - "default": "`GridLogicOperator.And`" + "default": "GridLogicOperator.And" }, - "quickFilterValues": { "type": { "description": "any[]" }, "default": "`[]`" } + "quickFilterValues": { "type": { "description": "any[]" }, "default": "[]" } } } diff --git a/docs/pages/x/api/date-pickers/date-field.json b/docs/pages/x/api/date-pickers/date-field.json index 61aff54380b4..00657063137c 100644 --- a/docs/pages/x/api/date-pickers/date-field.json +++ b/docs/pages/x/api/date-pickers/date-field.json @@ -97,7 +97,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "size": { "type": { "name": "enum", "description": "'medium'
    | 'small'" } }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { diff --git a/docs/pages/x/api/date-pickers/date-time-field.json b/docs/pages/x/api/date-pickers/date-time-field.json index c7778236192f..11e89eb31c84 100644 --- a/docs/pages/x/api/date-pickers/date-time-field.json +++ b/docs/pages/x/api/date-pickers/date-time-field.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" }, "default": "false" }, "clearable": { "type": { "name": "bool" }, "default": "false" }, "color": { @@ -112,7 +112,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "size": { "type": { "name": "enum", "description": "'medium'
    | 'small'" } }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { diff --git a/docs/pages/x/api/date-pickers/date-time-picker.json b/docs/pages/x/api/date-pickers/date-time-picker.json index a95659e8955e..34a266363323 100644 --- a/docs/pages/x/api/date-pickers/date-time-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { diff --git a/docs/pages/x/api/date-pickers/date-time-range-picker.json b/docs/pages/x/api/date-pickers/date-time-range-picker.json index c176e8c1e00e..c6c14a88228a 100644 --- a/docs/pages/x/api/date-pickers/date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-range-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "calendars": { "type": { "name": "enum", "description": "1
    | 2
    | 3" }, diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json index 85b246eb27e6..ab048c18a422 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json index 3a3612e730a4..c163702ae0b5 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "calendars": { "type": { "name": "enum", "description": "1
    | 2
    | 3" }, diff --git a/docs/pages/x/api/date-pickers/desktop-time-picker.json b/docs/pages/x/api/date-pickers/desktop-time-picker.json index 3437b5b664ee..a138a9baf6d6 100644 --- a/docs/pages/x/api/date-pickers/desktop-time-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { diff --git a/docs/pages/x/api/date-pickers/digital-clock.json b/docs/pages/x/api/date-pickers/digital-clock.json index ab41bb11244e..00035a5cb3fa 100644 --- a/docs/pages/x/api/date-pickers/digital-clock.json +++ b/docs/pages/x/api/date-pickers/digital-clock.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "defaultValue": { "type": { "name": "object" } }, diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-picker.json index 6e53b200352f..f304519adf06 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json index 3ec3f5b6d941..ac9fd6985343 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { "type": { "name": "bool" }, diff --git a/docs/pages/x/api/date-pickers/mobile-time-picker.json b/docs/pages/x/api/date-pickers/mobile-time-picker.json index c1cc22aecfaf..6285dff74f33 100644 --- a/docs/pages/x/api/date-pickers/mobile-time-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { diff --git a/docs/pages/x/api/date-pickers/multi-input-date-range-field.json b/docs/pages/x/api/date-pickers/multi-input-date-range-field.json index 6ac27db9ea70..dc806e89a2fb 100644 --- a/docs/pages/x/api/date-pickers/multi-input-date-range-field.json +++ b/docs/pages/x/api/date-pickers/multi-input-date-range-field.json @@ -62,7 +62,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, diff --git a/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json b/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json index 82462976a3f1..aff38085ab82 100644 --- a/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json +++ b/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "dateSeparator": { "type": { "name": "string" }, "default": "\"–\"" }, @@ -77,7 +77,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, diff --git a/docs/pages/x/api/date-pickers/multi-input-time-range-field.json b/docs/pages/x/api/date-pickers/multi-input-time-range-field.json index 9119c6dcc281..18f649b44708 100644 --- a/docs/pages/x/api/date-pickers/multi-input-time-range-field.json +++ b/docs/pages/x/api/date-pickers/multi-input-time-range-field.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "dateSeparator": { "type": { "name": "string" }, "default": "\"–\"" }, @@ -65,7 +65,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { "type": { "name": "object" }, diff --git a/docs/pages/x/api/date-pickers/multi-section-digital-clock.json b/docs/pages/x/api/date-pickers/multi-section-digital-clock.json index 792a65ce1208..e40d8718fb9f 100644 --- a/docs/pages/x/api/date-pickers/multi-section-digital-clock.json +++ b/docs/pages/x/api/date-pickers/multi-section-digital-clock.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "defaultValue": { "type": { "name": "object" } }, diff --git a/docs/pages/x/api/date-pickers/pickers-shortcuts.json b/docs/pages/x/api/date-pickers/pickers-shortcuts.json index 956f5970d01b..dd402f9066e1 100644 --- a/docs/pages/x/api/date-pickers/pickers-shortcuts.json +++ b/docs/pages/x/api/date-pickers/pickers-shortcuts.json @@ -11,7 +11,7 @@ "name": "arrayOf", "description": "Array<{ getValue: func, label: string }>" }, - "default": "`[]`" + "default": "[]" }, "subheader": { "type": { "name": "node" } }, "sx": { diff --git a/docs/pages/x/api/date-pickers/single-input-date-range-field.json b/docs/pages/x/api/date-pickers/single-input-date-range-field.json index 697d60d0ef89..72430d7a6cae 100644 --- a/docs/pages/x/api/date-pickers/single-input-date-range-field.json +++ b/docs/pages/x/api/date-pickers/single-input-date-range-field.json @@ -82,7 +82,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "size": { "type": { "name": "enum", "description": "'medium'
    | 'small'" } }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { diff --git a/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json b/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json index 3fe2a8097778..fd040876b0a8 100644 --- a/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json +++ b/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" }, "default": "false" }, "clearable": { "type": { "name": "bool" }, "default": "false" }, "color": { @@ -97,7 +97,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "size": { "type": { "name": "enum", "description": "'medium'
    | 'small'" } }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { diff --git a/docs/pages/x/api/date-pickers/single-input-time-range-field.json b/docs/pages/x/api/date-pickers/single-input-time-range-field.json index d04206f9390c..7a72192da87a 100644 --- a/docs/pages/x/api/date-pickers/single-input-time-range-field.json +++ b/docs/pages/x/api/date-pickers/single-input-time-range-field.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" }, "default": "false" }, "clearable": { "type": { "name": "bool" }, "default": "false" }, "color": { @@ -85,7 +85,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "size": { "type": { "name": "enum", "description": "'medium'
    | 'small'" } }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { diff --git a/docs/pages/x/api/date-pickers/static-date-time-picker.json b/docs/pages/x/api/date-pickers/static-date-time-picker.json index 1d05b51bb020..49ea3c3c1165 100644 --- a/docs/pages/x/api/date-pickers/static-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "dayOfWeekFormatter": { diff --git a/docs/pages/x/api/date-pickers/static-time-picker.json b/docs/pages/x/api/date-pickers/static-time-picker.json index 5cf72df9cbf4..0af386a2e7b7 100644 --- a/docs/pages/x/api/date-pickers/static-time-picker.json +++ b/docs/pages/x/api/date-pickers/static-time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "defaultValue": { "type": { "name": "object" } }, diff --git a/docs/pages/x/api/date-pickers/time-clock.json b/docs/pages/x/api/date-pickers/time-clock.json index f569a5c964f9..04615850d520 100644 --- a/docs/pages/x/api/date-pickers/time-clock.json +++ b/docs/pages/x/api/date-pickers/time-clock.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "false" }, "autoFocus": { "type": { "name": "bool" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, diff --git a/docs/pages/x/api/date-pickers/time-field.json b/docs/pages/x/api/date-pickers/time-field.json index 641529f95fd4..db81673b337d 100644 --- a/docs/pages/x/api/date-pickers/time-field.json +++ b/docs/pages/x/api/date-pickers/time-field.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "autoFocus": { "type": { "name": "bool" }, "default": "false" }, "clearable": { "type": { "name": "bool" }, "default": "false" }, "color": { @@ -84,7 +84,7 @@ "returned": "boolean" } }, - "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "`false`" }, + "shouldRespectLeadingZeros": { "type": { "name": "bool" }, "default": "false" }, "size": { "type": { "name": "enum", "description": "'medium'
    | 'small'" } }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, "slots": { diff --git a/docs/pages/x/api/date-pickers/time-picker.json b/docs/pages/x/api/date-pickers/time-picker.json index 1fd742141aa6..10cfe474c86f 100644 --- a/docs/pages/x/api/date-pickers/time-picker.json +++ b/docs/pages/x/api/date-pickers/time-picker.json @@ -1,6 +1,6 @@ { "props": { - "ampm": { "type": { "name": "bool" }, "default": "`utils.is12HourCycleInCurrentLocale()`" }, + "ampm": { "type": { "name": "bool" }, "default": "utils.is12HourCycleInCurrentLocale()" }, "ampmInClock": { "type": { "name": "bool" }, "default": "true on desktop, false on mobile" }, "autoFocus": { "type": { "name": "bool" } }, "closeOnSelect": { diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index bb5084be2972..8ec57fbf2e91 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -14,7 +14,7 @@ "expandedItems": { "type": { "name": "arrayOf", "description": "Array<string>" } }, "getItemId": { "type": { "name": "func" }, - "default": "`(item) => item.id`", + "default": "(item) => item.id", "signature": { "type": "function(item: R) => string", "describedArgs": ["item"], @@ -23,7 +23,7 @@ }, "getItemLabel": { "type": { "name": "func" }, - "default": "`(item) => item.label`", + "default": "(item) => item.label", "signature": { "type": "function(item: R) => string", "describedArgs": ["item"], diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 3b808b7999c8..1f3caece0f9a 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -357,7 +357,7 @@ DataGridPremiumRaw.propTypes = { * Determines the position of an aggregated value. * @param {GridGroupNode} groupNode The current group. * @returns {GridAggregationPosition | null} Position of the aggregated value (if `null`, the group isn't aggregated). - * @default `(groupNode) => groupNode == null ? 'footer' : 'inline'` + * @default (groupNode) => groupNode == null ? 'footer' : 'inline' */ getAggregationPosition: PropTypes.func, /** @@ -1011,7 +1011,7 @@ DataGridPremiumRaw.propTypes = { * The function is used to split the pasted text into rows and cells. * @param {string} text The text pasted from the clipboard. * @returns {string[][] | null} A 2D array of strings. The first dimension is the rows, the second dimension is the columns. - * @default `(pastedText) => { const text = pastedText.replace(/\r?\n$/, ''); return text.split(/\r\n|\n|\r/).map((row) => row.split('\t')); }` + * @default (pastedText) => { const text = pastedText.replace(/\r?\n$/, ''); return text.split(/\r\n|\n|\r/).map((row) => row.split('\t')); } */ splitClipboardPastedText: PropTypes.func, /** diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts index 1abf73791fd6..03be19423308 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts @@ -50,7 +50,7 @@ export interface GridAggregationFunction { /** * Label of the aggregation function. * Will be used to add a label on the footer of the grouping column when this aggregation function is the only one being used. - * @default `apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)})` + * @default apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)}) */ label?: string; /** @@ -69,7 +69,7 @@ export interface GridAggregationFunction { /** * Indicates if the aggregated value have the same unit as the cells used to generate it. * It can be used to apply a custom cell renderer only if the aggregated value has the same unit. - * @default `true` + * @default true */ hasCellUnit?: boolean; /** diff --git a/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts b/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts index ebba8956e323..329ce6cea092 100644 --- a/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts +++ b/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts @@ -103,7 +103,7 @@ export interface DataGridPremiumPropsWithDefaultValue groupNode == null ? 'footer' : 'inline'` + * @default (groupNode) => groupNode == null ? 'footer' : 'inline' */ getAggregationPosition: (groupNode: GridGroupNode) => GridAggregationPosition | null; /** @@ -115,7 +115,7 @@ export interface DataGridPremiumPropsWithDefaultValue { const text = pastedText.replace(/\r?\n$/, ''); return text.split(/\r\n|\n|\r/).map((row) => row.split('\t')); }` + * @default (pastedText) => { const text = pastedText.replace(/\r?\n$/, ''); return text.split(/\r\n|\n|\r/).map((row) => row.split('\t')); } */ splitClipboardPastedText: (text: string) => string[][] | null; } diff --git a/packages/x-data-grid/src/models/gridExport.ts b/packages/x-data-grid/src/models/gridExport.ts index 1b0366be669a..07aea49676c1 100644 --- a/packages/x-data-grid/src/models/gridExport.ts +++ b/packages/x-data-grid/src/models/gridExport.ts @@ -26,7 +26,7 @@ export interface GridFileExportOptions { /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm?: boolean; } diff --git a/packages/x-date-pickers-pro/src/internals/models/timeRange.ts b/packages/x-date-pickers-pro/src/internals/models/timeRange.ts index 2ef5443f3da3..010182c83114 100644 --- a/packages/x-date-pickers-pro/src/internals/models/timeRange.ts +++ b/packages/x-date-pickers-pro/src/internals/models/timeRange.ts @@ -33,7 +33,7 @@ export interface UseTimeRangeFieldProps< BaseTimeValidationProps { /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm?: boolean; } diff --git a/packages/x-date-pickers/src/DateField/DateField.tsx b/packages/x-date-pickers/src/DateField/DateField.tsx index 131d6f5ed987..9683b0cefba7 100644 --- a/packages/x-date-pickers/src/DateField/DateField.tsx +++ b/packages/x-date-pickers/src/DateField/DateField.tsx @@ -309,7 +309,7 @@ DateField.propTypes = { * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros. * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library. * - * @default `false` + * @default false */ shouldRespectLeadingZeros: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx b/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx index 7f9cf35580d1..43e6a9358664 100644 --- a/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx +++ b/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx @@ -85,7 +85,7 @@ DateTimeField.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** @@ -350,7 +350,7 @@ DateTimeField.propTypes = { * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros. * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library. * - * @default `false` + * @default false */ shouldRespectLeadingZeros: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts b/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts index 771dc16d121b..4f6301f55c08 100644 --- a/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts +++ b/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts @@ -47,7 +47,7 @@ export interface UseDateTimeFieldProps< ExportedUseClearableFieldProps { /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm?: boolean; } diff --git a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx index 67d50cb40742..43d1ca2b9dff 100644 --- a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx @@ -55,7 +55,7 @@ DateTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx index f20cf6d44c8f..5b3c2977bab4 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx @@ -240,7 +240,7 @@ DesktopDateTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx b/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx index 23ff47e66157..656455d8f9d4 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx @@ -143,7 +143,7 @@ DesktopTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx b/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx index 19b45e4c99a2..482ec398ac38 100644 --- a/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx +++ b/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx @@ -343,7 +343,7 @@ DigitalClock.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx index 204b2218b393..0f88dd08f014 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx @@ -117,7 +117,7 @@ MobileDateTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx b/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx index 3483b970f405..c27094adc47c 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx @@ -106,7 +106,7 @@ MobileTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx index 5c309e3f02e4..aed9518b528f 100644 --- a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx +++ b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx @@ -435,7 +435,7 @@ MultiSectionDigitalClock.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx b/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx index 2c43c8c8ed72..85d88255963b 100644 --- a/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx +++ b/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx @@ -22,7 +22,7 @@ export interface ExportedPickersShortcutProps extends Omit[]; /** @@ -127,7 +127,7 @@ PickersShortcuts.propTypes = { /** * Ordered array of shortcuts to display. * If empty, does not display the shortcuts. - * @default `[]` + * @default [] */ items: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx index ef875b3b8bec..48133682a595 100644 --- a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx +++ b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx @@ -87,7 +87,7 @@ StaticDateTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx b/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx index a8084a3eba7b..d68b76d9029f 100644 --- a/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx +++ b/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx @@ -76,7 +76,7 @@ StaticTimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/TimeClock/TimeClock.tsx b/packages/x-date-pickers/src/TimeClock/TimeClock.tsx index 2e2e4186fe2d..d184ffd59879 100644 --- a/packages/x-date-pickers/src/TimeClock/TimeClock.tsx +++ b/packages/x-date-pickers/src/TimeClock/TimeClock.tsx @@ -393,7 +393,7 @@ TimeClock.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/TimeField/TimeField.tsx b/packages/x-date-pickers/src/TimeField/TimeField.tsx index a5040b544960..36d86491800f 100644 --- a/packages/x-date-pickers/src/TimeField/TimeField.tsx +++ b/packages/x-date-pickers/src/TimeField/TimeField.tsx @@ -85,7 +85,7 @@ TimeField.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** @@ -310,7 +310,7 @@ TimeField.propTypes = { * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros. * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library. * - * @default `false` + * @default false */ shouldRespectLeadingZeros: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/TimeField/TimeField.types.ts b/packages/x-date-pickers/src/TimeField/TimeField.types.ts index 28addb35bdb5..0633093cf7f5 100644 --- a/packages/x-date-pickers/src/TimeField/TimeField.types.ts +++ b/packages/x-date-pickers/src/TimeField/TimeField.types.ts @@ -34,7 +34,7 @@ export interface UseTimeFieldProps< ExportedUseClearableFieldProps { /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm?: boolean; } diff --git a/packages/x-date-pickers/src/TimePicker/TimePicker.tsx b/packages/x-date-pickers/src/TimePicker/TimePicker.tsx index 6ffd875c38f9..9d734dd9ef2c 100644 --- a/packages/x-date-pickers/src/TimePicker/TimePicker.tsx +++ b/packages/x-date-pickers/src/TimePicker/TimePicker.tsx @@ -55,7 +55,7 @@ TimePicker.propTypes = { // ---------------------------------------------------------------------- /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm: PropTypes.bool, /** diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts b/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts index d60d89b6efc0..3b05171787ce 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useField.types.ts @@ -106,7 +106,7 @@ export interface UseFieldInternalProps< * Warning n°3: When used in strict mode, dayjs and moment require to respect the leading zeros. * This mean that when using `shouldRespectLeadingZeros={false}`, if you retrieve the value directly from the input (not listening to `onChange`) and your format contains tokens without leading zeros, the value will not be parsed by your library. * - * @default `false` + * @default false */ shouldRespectLeadingZeros?: boolean; /** diff --git a/packages/x-date-pickers/src/internals/models/props/clock.ts b/packages/x-date-pickers/src/internals/models/props/clock.ts index ff5fa599f6cd..41ac81136ae4 100644 --- a/packages/x-date-pickers/src/internals/models/props/clock.ts +++ b/packages/x-date-pickers/src/internals/models/props/clock.ts @@ -12,7 +12,7 @@ export interface ExportedBaseClockProps TimezoneProps { /** * 12h/24h view for hour selection clock. - * @default `utils.is12HourCycleInCurrentLocale()` + * @default utils.is12HourCycleInCurrentLocale() */ ampm?: boolean; } diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index 5983e1697daf..b2f700eb14ab 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -193,7 +193,7 @@ RichTreeView.propTypes = { * @template R * @param {R} item The item to check. * @returns {string} The id of the item. - * @default `(item) => item.id` + * @default (item) => item.id */ getItemId: PropTypes.func, /** @@ -202,7 +202,7 @@ RichTreeView.propTypes = { * @template R * @param {R} item The item to check. * @returns {string} The label of the item. - * @default `(item) => item.label` + * @default (item) => item.label */ getItemLabel: PropTypes.func, /** diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 5b20682d1a9b..465f6bbbd070 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -51,7 +51,7 @@ export interface UseTreeViewItemsParameters { * @template R * @param {R} item The item to check. * @returns {string} The label of the item. - * @default `(item) => item.label` + * @default (item) => item.label */ getItemLabel?: (item: R) => string; /** @@ -60,7 +60,7 @@ export interface UseTreeViewItemsParameters { * @template R * @param {R} item The item to check. * @returns {string} The id of the item. - * @default `(item) => item.id` + * @default (item) => item.id */ getItemId?: (item: R) => TreeViewItemId; } From 9bb62f3d56b402f1028014af46e59dd3286a5307 Mon Sep 17 00:00:00 2001 From: amirhosseinzf <99012444+amirhosseinzf@users.noreply.github.com> Date: Wed, 3 Apr 2024 13:20:57 +0330 Subject: [PATCH 053/912] [l10n] Improve Persian (fa-IR) locale (#12630) Signed-off-by: amirhosseinzf <99012444+amirhosseinzf@users.noreply.github.com> Co-authored-by: alexandre --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/faIR.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 3ee05aff82c5..482b226e0651 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -163,7 +163,7 @@ "languageTag": "fa-IR", "importName": "faIR", "localeName": "Persian", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/faIR.ts" }, diff --git a/packages/x-data-grid/src/locales/faIR.ts b/packages/x-data-grid/src/locales/faIR.ts index cf5c2e72ff4c..0f1b6e15f6d3 100644 --- a/packages/x-data-grid/src/locales/faIR.ts +++ b/packages/x-data-grid/src/locales/faIR.ts @@ -39,9 +39,9 @@ const faIRGrid: Partial = { toolbarExportExcel: 'دانلود به صورت اکسل', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'جستجو', + columnsManagementNoColumns: 'بدون سطر', + columnsManagementShowHideAllText: 'نمایش/مخفی کردن همه', // Filter panel text filterPanelAddFilter: 'افزودن فیلتر', From a5d834636de66890c600c2c9d5d67a0b35b9b831 Mon Sep 17 00:00:00 2001 From: hugoalkimim Date: Wed, 3 Apr 2024 06:51:26 -0300 Subject: [PATCH 054/912] [l10n] Improve Portuguese (pt-BR) locale (#12618) Signed-off-by: hugoalkimim Co-authored-by: Bilal Shafi --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/ptBR.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 482b226e0651..5e95d5bb5290 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -187,7 +187,7 @@ "languageTag": "pt-BR", "importName": "ptBR", "localeName": "Portuguese (Brazil)", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/ptBR.ts" }, diff --git a/packages/x-data-grid/src/locales/ptBR.ts b/packages/x-data-grid/src/locales/ptBR.ts index 5a50fefb1916..1a6e603141d8 100644 --- a/packages/x-data-grid/src/locales/ptBR.ts +++ b/packages/x-data-grid/src/locales/ptBR.ts @@ -39,9 +39,9 @@ const ptBRGrid: Partial = { toolbarExportExcel: 'Baixar como Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Buscar', + columnsManagementNoColumns: 'Nenhuma coluna', + columnsManagementShowHideAllText: 'Mostrar/Ocultar Todas', // Filter panel text filterPanelAddFilter: 'Adicionar filtro', From e12acf2bf65e0627b52ebed4cc0af8df06285f1a Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 3 Apr 2024 13:46:00 +0200 Subject: [PATCH 055/912] [docs] Use `TreeItem2` for icon expansion example on `RichTreeView` (#12563) --- .../customization/IconExpansionTreeView.js | 77 +++++----------- .../customization/IconExpansionTreeView.tsx | 87 +++++-------------- .../IconExpansionTreeView.tsx.preview | 2 +- 3 files changed, 46 insertions(+), 120 deletions(-) diff --git a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js index 4c28c6cd280b..fd33b99985c1 100644 --- a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js +++ b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js @@ -1,9 +1,9 @@ import * as React from 'react'; -import clsx from 'clsx'; -import Typography from '@mui/material/Typography'; import Box from '@mui/material/Box'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; -import { useTreeItemState } from '@mui/x-tree-view/TreeItem'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; + +import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; const ITEMS = [ { @@ -25,65 +25,30 @@ const ITEMS = [ }, ]; -const CustomContent = React.forwardRef(function CustomContent(props, ref) { - const { - classes, - className, - label, - itemId, - icon: iconProp, - expansionIcon, - displayIcon, - } = props; - - const { - disabled, - expanded, - selected, - focused, - handleExpansion, - handleSelection, - preventSelection, - } = useTreeItemState(itemId); - - const icon = iconProp || expansionIcon || displayIcon; - - const handleMouseDown = (event) => { - preventSelection(event); - }; +const CustomTreeItem = React.forwardRef(function MyTreeItem(props, ref) { + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); - const handleExpansionClick = (event) => { - handleExpansion(event); + const handleContentClick = (event) => { + event.defaultMuiPrevented = true; + interactions.handleSelection(event); }; - const handleSelectionClick = (event) => { - handleSelection(event); + const handleIconContainerClick = (event) => { + interactions.handleExpansion(event); }; return ( - // eslint-disable-next-line jsx-a11y/no-static-element-interactions -

    - {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */} -
    - {icon} -
    - - {label} - -
    + slotProps={{ + content: { onClick: handleContentClick }, + iconContainer: { onClick: handleIconContainerClick }, + }} + /> ); }); @@ -93,7 +58,7 @@ export default function IconExpansionTreeView() { ); diff --git a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx index 2847daf70967..9564b8d24b23 100644 --- a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; -import clsx from 'clsx'; -import Typography from '@mui/material/Typography'; import Box from '@mui/material/Box'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; -import { useTreeItemState, TreeItemContentProps } from '@mui/x-tree-view/TreeItem'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { UseTreeItem2ContentSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; +import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; import { TreeViewBaseItem } from '@mui/x-tree-view/models'; const ITEMS: TreeViewBaseItem[] = [ @@ -26,72 +26,33 @@ const ITEMS: TreeViewBaseItem[] = [ }, ]; -const CustomContent = React.forwardRef(function CustomContent( - props: TreeItemContentProps, - ref, +const CustomTreeItem = React.forwardRef(function MyTreeItem( + props: TreeItem2Props, + ref: React.Ref, ) { - const { - classes, - className, - label, - itemId, - icon: iconProp, - expansionIcon, - displayIcon, - } = props; + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); - const { - disabled, - expanded, - selected, - focused, - handleExpansion, - handleSelection, - preventSelection, - } = useTreeItemState(itemId); - - const icon = iconProp || expansionIcon || displayIcon; - - const handleMouseDown = (event: React.MouseEvent) => { - preventSelection(event); - }; - - const handleExpansionClick = ( - event: React.MouseEvent, - ) => { - handleExpansion(event); + const handleContentClick: UseTreeItem2ContentSlotOwnProps['onClick'] = (event) => { + event.defaultMuiPrevented = true; + interactions.handleSelection(event); }; - const handleSelectionClick = ( - event: React.MouseEvent, - ) => { - handleSelection(event); + const handleIconContainerClick = (event: React.MouseEvent) => { + interactions.handleExpansion(event); }; return ( - // eslint-disable-next-line jsx-a11y/no-static-element-interactions -
    } - > - {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */} -
    - {icon} -
    - - {label} - -
    + ); }); @@ -101,7 +62,7 @@ export default function IconExpansionTreeView() { ); diff --git a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx.preview b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx.preview index 9a621283b2c0..ea2163196d7a 100644 --- a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx.preview +++ b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx.preview @@ -1,5 +1,5 @@ \ No newline at end of file From 818dd1213928faa73694cdd5d1d2242a65360be7 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Wed, 3 Apr 2024 15:53:57 +0200 Subject: [PATCH 056/912] [support-infra] Replace author association with a permission check in survey action (#12068) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> --- .github/workflows/closed-issue-message.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/closed-issue-message.yaml b/.github/workflows/closed-issue-message.yaml index 9dddd9cfa32b..02181c2d51a1 100644 --- a/.github/workflows/closed-issue-message.yaml +++ b/.github/workflows/closed-issue-message.yaml @@ -27,9 +27,13 @@ jobs: permissions: issues: write steps: + - uses: actions-cool/check-user-permission@a0668c9aec87f3875fc56170b6452a453e9dd819 + id: checkUser + with: + require: 'write' - name: Add comment for outside contributors - if: github.event.issue.author_association != 'MEMBER' && github.event.issue.author_association != 'OWNER' + if: steps.checkUser.outputs.check-result == 'false' run: gh issue comment "$NUMBER" --body "$BODY $APPENDIX" - name: Add comment for maintainers - if: github.event.issue.author_association == 'MEMBER' || github.event.issue.author_association == 'OWNER' + if: steps.checkUser.outputs.check-result == 'true' run: gh issue comment "$NUMBER" --body "$BODY" From 3fd72e3b3fa6ce44b0ecc46a2c0669c5cbf34041 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 3 Apr 2024 16:39:22 +0200 Subject: [PATCH 057/912] [TreeView] Add JSDoc to all `publicAPI` methods (#12649) --- .../useTreeViewFocus/useTreeViewFocus.types.ts | 17 +++++++++++++---- .../useTreeViewItems/useTreeViewItems.types.ts | 15 ++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts index 1a5e571f1317..0cb0c7e69fde 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts @@ -5,16 +5,25 @@ import type { UseTreeViewItemsSignature } from '../useTreeViewItems'; import type { UseTreeViewSelectionSignature } from '../useTreeViewSelection'; import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion'; -export interface UseTreeViewFocusInstance { +export interface UseTreeViewFocusPublicAPI { + /** + * Focuses the item with the given id. + * + * If the item is the child of a collapsed item, then this method will do nothing. + * Make sure to expand the ancestors of the item before calling this method if needed. + * @param {React.SyntheticEvent} event The event source of the action. + * @param {string} itemId The id of the item to focus. + */ + focusItem: (event: React.SyntheticEvent, itemId: string) => void; +} + +export interface UseTreeViewFocusInstance extends UseTreeViewFocusPublicAPI { isItemFocused: (itemId: string) => boolean; canItemBeTabbed: (itemId: string) => boolean; - focusItem: (event: React.SyntheticEvent, itemId: string) => void; focusDefaultItem: (event: React.SyntheticEvent | null) => void; removeFocusedItem: () => void; } -export interface UseTreeViewFocusPublicAPI extends Pick {} - export interface UseTreeViewFocusParameters { /** * Callback fired when tree items are focused. diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 465f6bbbd070..42034102f880 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -8,9 +8,17 @@ interface TreeViewItemProps { children?: TreeViewItemProps[]; } -export interface UseTreeViewItemsInstance { - getNode: (itemId: string) => TreeViewNode; +export interface UseTreeViewItemsPublicAPI { + /** + * Get the item with the given id. + * @param {string} itemId The id of the item to return. + * @returns {R} The item with the given id. + */ getItem: (itemId: string) => R; +} + +export interface UseTreeViewItemsInstance extends UseTreeViewItemsPublicAPI { + getNode: (itemId: string) => TreeViewNode; getItemsToRender: () => TreeViewItemProps[]; getChildrenIds: (itemId: string | null) => string[]; getNavigableChildrenIds: (itemId: string | null) => string[]; @@ -28,9 +36,6 @@ export interface UseTreeViewItemsInstance { areItemUpdatesPrevented: () => boolean; } -export interface UseTreeViewItemsPublicAPI - extends Pick, 'getItem'> {} - export interface UseTreeViewItemsParameters { /** * If `true`, will allow focus on disabled items. From b44c954fead9ef64c027bc9e97d95a9e167119ef Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 3 Apr 2024 16:58:58 +0200 Subject: [PATCH 058/912] [TreeView] New API method: `setItemExpansion` (#12595) Signed-off-by: Flavien DELANGLE Co-authored-by: Lukas --- .../expansion/ChangeItemExpansion.js | 51 +++++++++++++ .../expansion/ChangeItemExpansion.tsx | 51 +++++++++++++ .../expansion/ChangeItemExpansion.tsx.preview | 7 ++ .../rich-tree-view/expansion/expansion.md | 6 ++ .../expansion/ChangeItemExpansion.js | 41 +++++++++++ .../expansion/ChangeItemExpansion.tsx | 41 +++++++++++ .../simple-tree-view/expansion/expansion.md | 6 ++ .../pages/x/api/tree-view/rich-tree-view.json | 5 +- .../x/api/tree-view/simple-tree-view.json | 5 +- docs/pages/x/api/tree-view/tree-view.json | 5 +- .../src/RichTreeView/RichTreeView.tsx | 1 + .../src/SimpleTreeView/SimpleTreeView.tsx | 1 + .../src/TreeItem/TreeItem.test.tsx | 1 + .../x-tree-view/src/TreeView/TreeView.tsx | 1 + .../useTreeViewExpansion.test.tsx | 72 +++++++++++++++++++ .../useTreeViewExpansion.ts | 46 +++++++----- .../useTreeViewExpansion.types.ts | 15 +++- .../useTreeView/useTreeViewModels.ts | 4 +- .../describeTreeView/describeTreeView.tsx | 19 +++-- .../describeTreeView.types.ts | 10 ++- 20 files changed, 359 insertions(+), 29 deletions(-) create mode 100644 docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.js create mode 100644 docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx create mode 100644 docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx.preview create mode 100644 docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.js create mode 100644 docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.tsx diff --git a/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.js b/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.js new file mode 100644 index 000000000000..044944e3dadc --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.js @@ -0,0 +1,51 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; + +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, +]; + +export default function ChangeItemExpansion() { + const apiRef = useTreeViewApiRef(); + + const handleExpandClick = (event) => { + apiRef.current.setItemExpansion(event, 'grid', true); + }; + + const handleCollapseClick = (event) => { + apiRef.current.setItemExpansion(event, 'grid', false); + }; + + return ( + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx b/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx new file mode 100644 index 000000000000..91587ed8df71 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx @@ -0,0 +1,51 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, +]; + +export default function ChangeItemExpansion() { + const apiRef = useTreeViewApiRef(); + + const handleExpandClick = (event: React.MouseEvent) => { + apiRef.current!.setItemExpansion(event, 'grid', true); + }; + + const handleCollapseClick = (event: React.MouseEvent) => { + apiRef.current!.setItemExpansion(event, 'grid', false); + }; + + return ( + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx.preview b/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx.preview new file mode 100644 index 000000000000..ca89ea196b8b --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/expansion/ChangeItemExpansion.tsx.preview @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/expansion/expansion.md b/docs/data/tree-view/rich-tree-view/expansion/expansion.md index 86a04e1b8c1f..a44e1e07bdfb 100644 --- a/docs/data/tree-view/rich-tree-view/expansion/expansion.md +++ b/docs/data/tree-view/rich-tree-view/expansion/expansion.md @@ -32,3 +32,9 @@ Learn more about the _Controlled and uncontrolled_ pattern in the [React documen Use the `onItemExpansionToggle` prop if you want to react to an item expansion change: {{"demo": "TrackItemExpansionToggle.js"}} + +## Change item expansion + +You can use the `setItemExpansion` API method to imperatively change the expansion of an item: + +{{"demo": "ChangeItemExpansion.js"}} diff --git a/docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.js b/docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.js new file mode 100644 index 000000000000..7af3290f9f7e --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.js @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +export default function ChangeItemExpansion() { + const apiRef = useTreeViewApiRef(); + + const handleExpandClick = (event) => { + apiRef.current.setItemExpansion(event, 'grid', true); + }; + + const handleCollapseClick = (event) => { + apiRef.current.setItemExpansion(event, 'grid', false); + }; + + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.tsx b/docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.tsx new file mode 100644 index 000000000000..ceddc17a3a26 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/expansion/ChangeItemExpansion.tsx @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +export default function ChangeItemExpansion() { + const apiRef = useTreeViewApiRef(); + + const handleExpandClick = (event: React.MouseEvent) => { + apiRef.current!.setItemExpansion(event, 'grid', true); + }; + + const handleCollapseClick = (event: React.MouseEvent) => { + apiRef.current!.setItemExpansion(event, 'grid', false); + }; + + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/expansion/expansion.md b/docs/data/tree-view/simple-tree-view/expansion/expansion.md index 296736f0d16a..d984b1bfb813 100644 --- a/docs/data/tree-view/simple-tree-view/expansion/expansion.md +++ b/docs/data/tree-view/simple-tree-view/expansion/expansion.md @@ -31,3 +31,9 @@ Learn more about the _Controlled and uncontrolled_ pattern in the [React documen Use the `onItemExpansionToggle` prop to trigger an action upon an item being expanded. {{"demo": "TrackItemExpansionToggle.js"}} + +## Change item expansion + +You can use the `setItemExpansion` API method to imperatively change the expansion of an item: + +{{"demo": "ChangeItemExpansion.js"}} diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 8ec57fbf2e91..fe0bf95c7f4c 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -1,7 +1,10 @@ { "props": { "apiRef": { - "type": { "name": "shape", "description": "{ current?: { focusItem: func, getItem: func } }" } + "type": { + "name": "shape", + "description": "{ current?: { focusItem: func, getItem: func, setItemExpansion: func } }" + } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "defaultExpandedItems": { diff --git a/docs/pages/x/api/tree-view/simple-tree-view.json b/docs/pages/x/api/tree-view/simple-tree-view.json index 0a4bd4f7b2da..8bdc52ded8fa 100644 --- a/docs/pages/x/api/tree-view/simple-tree-view.json +++ b/docs/pages/x/api/tree-view/simple-tree-view.json @@ -1,7 +1,10 @@ { "props": { "apiRef": { - "type": { "name": "shape", "description": "{ current?: { focusItem: func, getItem: func } }" } + "type": { + "name": "shape", + "description": "{ current?: { focusItem: func, getItem: func, setItemExpansion: func } }" + } }, "children": { "type": { "name": "node" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, diff --git a/docs/pages/x/api/tree-view/tree-view.json b/docs/pages/x/api/tree-view/tree-view.json index 28823f6d6bf7..40a19d4f2817 100644 --- a/docs/pages/x/api/tree-view/tree-view.json +++ b/docs/pages/x/api/tree-view/tree-view.json @@ -1,7 +1,10 @@ { "props": { "apiRef": { - "type": { "name": "shape", "description": "{ current?: { focusItem: func, getItem: func } }" } + "type": { + "name": "shape", + "description": "{ current?: { focusItem: func, getItem: func, setItemExpansion: func } }" + } }, "children": { "type": { "name": "node" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index b2f700eb14ab..d318156d22c6 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -153,6 +153,7 @@ RichTreeView.propTypes = { current: PropTypes.shape({ focusItem: PropTypes.func.isRequired, getItem: PropTypes.func.isRequired, + setItemExpansion: PropTypes.func.isRequired, }), }), /** diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx index c78cd8dcd253..83d072c51046 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx @@ -116,6 +116,7 @@ SimpleTreeView.propTypes = { current: PropTypes.shape({ focusItem: PropTypes.func.isRequired, getItem: PropTypes.func.isRequired, + setItemExpansion: PropTypes.func.isRequired, }), }), /** diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 5ce12562dc86..7206c6a56cfe 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -24,6 +24,7 @@ const TEST_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue publicAPI: { focusItem: () => {}, getItem: () => ({}), + setItemExpansion: () => {}, }, runItemPlugins: () => ({ rootRef: null, contentRef: null }), wrapItem: ({ children }) => children, diff --git a/packages/x-tree-view/src/TreeView/TreeView.tsx b/packages/x-tree-view/src/TreeView/TreeView.tsx index 5d21d2a0d7ac..0bd1b90b6a4e 100644 --- a/packages/x-tree-view/src/TreeView/TreeView.tsx +++ b/packages/x-tree-view/src/TreeView/TreeView.tsx @@ -93,6 +93,7 @@ TreeView.propTypes = { current: PropTypes.shape({ focusItem: PropTypes.func.isRequired, getItem: PropTypes.func.isRequired, + setItemExpansion: PropTypes.func.isRequired, }), }), /** diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx index fcc5bad1dd9b..30efae2980df 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx @@ -300,5 +300,77 @@ describeTreeView( expect(onItemExpansionToggle.lastCall.args[2]).to.equal(false); }); }); + + describe('setItemExpansion api method', () => { + it('should expand a collapsed item when calling the setItemExpansion method with `isExpanded=true`', () => { + const onItemExpansionToggle = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + onItemExpansionToggle, + }); + + act(() => { + response.apiRef.current.setItemExpansion({} as any, '1', true); + }); + + expect(response.isItemExpanded('1')).to.equal(true); + expect(onItemExpansionToggle.callCount).to.equal(1); + expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); + expect(onItemExpansionToggle.lastCall.args[2]).to.equal(true); + }); + + it('should collapse an expanded item when calling the setItemExpansion method with `isExpanded=false`', () => { + const onItemExpansionToggle = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + defaultExpandedItems: ['1'], + onItemExpansionToggle, + }); + + act(() => { + response.apiRef.current.setItemExpansion({} as any, '1', false); + }); + + expect(response.isItemExpanded('1')).to.equal(false); + expect(onItemExpansionToggle.callCount).to.equal(1); + expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); + expect(onItemExpansionToggle.lastCall.args[2]).to.equal(false); + }); + + it('should do nothing when calling the setItemExpansion method with `isExpanded=true` on an already expanded item', () => { + const onItemExpansionToggle = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + defaultExpandedItems: ['1'], + onItemExpansionToggle, + }); + + act(() => { + response.apiRef.current.setItemExpansion({} as any, '1', true); + }); + + expect(response.isItemExpanded('1')).to.equal(true); + expect(onItemExpansionToggle.callCount).to.equal(0); + }); + + it('should do nothing when calling the setItemExpansion method with `isExpanded=false` on an already collapsed item', () => { + const onItemExpansionToggle = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + onItemExpansionToggle, + }); + + act(() => { + response.apiRef.current.setItemExpansion({} as any, '1', false); + }); + + expect(response.isItemExpanded('1')).to.equal(false); + expect(onItemExpansionToggle.callCount).to.equal(0); + }); + }); }, ); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts index 7fa1d771b5a4..d7519b4b5f49 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts @@ -1,26 +1,33 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; import { TreeViewPlugin } from '../../models'; -import { populateInstance } from '../../useTreeView/useTreeView.utils'; +import { populateInstance, populatePublicAPI } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewExpansionSignature } from './useTreeViewExpansion.types'; +import { TreeViewItemId } from '../../../models'; export const useTreeViewExpansion: TreeViewPlugin = ({ instance, + publicAPI, params, models, }) => { + const expandedItemsMap = React.useMemo(() => { + const temp = new Map(); + models.expandedItems.value.forEach((id) => { + temp.set(id, true); + }); + + return temp; + }, [models.expandedItems.value]); + const setExpandedItems = (event: React.SyntheticEvent, value: string[]) => { params.onExpandedItemsChange?.(event, value); models.expandedItems.setControlledValue(value); }; const isItemExpanded = React.useCallback( - (itemId: string) => { - return Array.isArray(models.expandedItems.value) - ? models.expandedItems.value.indexOf(itemId) !== -1 - : false; - }, - [models.expandedItems.value], + (itemId: string) => expandedItemsMap.has(itemId), + [expandedItemsMap], ); const isItemExpandable = React.useCallback( @@ -28,23 +35,27 @@ export const useTreeViewExpansion: TreeViewPlugin [instance], ); - const toggleItemExpansion = useEventCallback( - (event: React.SyntheticEvent, itemId: string | null) => { - if (itemId == null) { + const toggleItemExpansion = useEventCallback((event: React.SyntheticEvent, itemId: string) => { + const isExpandedBefore = instance.isItemExpanded(itemId); + instance.setItemExpansion(event, itemId, !isExpandedBefore); + }); + + const setItemExpansion = useEventCallback( + (event: React.SyntheticEvent, itemId: string, isExpanded: boolean) => { + const isExpandedBefore = instance.isItemExpanded(itemId); + if (isExpandedBefore === isExpanded) { return; } - const isExpandedBefore = models.expandedItems.value.indexOf(itemId!) !== -1; - let newExpanded: string[]; - if (isExpandedBefore) { - newExpanded = models.expandedItems.value.filter((id) => id !== itemId); - } else { + if (isExpanded) { newExpanded = [itemId].concat(models.expandedItems.value); + } else { + newExpanded = models.expandedItems.value.filter((id) => id !== itemId); } if (params.onItemExpansionToggle) { - params.onItemExpansionToggle(event, itemId, !isExpandedBefore); + params.onItemExpansionToggle(event, itemId, isExpanded); } setExpandedItems(event, newExpanded); @@ -75,9 +86,12 @@ export const useTreeViewExpansion: TreeViewPlugin populateInstance(instance, { isItemExpanded, isItemExpandable, + setItemExpansion, toggleItemExpansion, expandAllSiblings, }); + + populatePublicAPI(publicAPI, { setItemExpansion }); }; useTreeViewExpansion.models = { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts index 9f261541492a..0116e7d722eb 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.ts @@ -2,10 +2,20 @@ import * as React from 'react'; import { DefaultizedProps, TreeViewPluginSignature } from '../../models'; import { UseTreeViewItemsSignature } from '../useTreeViewItems'; -export interface UseTreeViewExpansionInstance { +export interface UseTreeViewExpansionPublicAPI { + /** + * Change the expansion status of a given item. + * @param {React.SyntheticEvent} event The UI event that triggered the change. + * @param {string} itemId The id of the item to modify. + * @param {boolean} isExpanded The new expansion status of the given item. + */ + setItemExpansion: (event: React.SyntheticEvent, itemId: string, isExpanded: boolean) => void; +} + +export interface UseTreeViewExpansionInstance extends UseTreeViewExpansionPublicAPI { isItemExpanded: (itemId: string) => boolean; isItemExpandable: (itemId: string) => boolean; - toggleItemExpansion: (event: React.SyntheticEvent, value: string) => void; + toggleItemExpansion: (event: React.SyntheticEvent, itemId: string) => void; expandAllSiblings: (event: React.KeyboardEvent, itemId: string) => void; } @@ -49,6 +59,7 @@ export type UseTreeViewExpansionSignature = TreeViewPluginSignature<{ params: UseTreeViewExpansionParameters; defaultizedParams: UseTreeViewExpansionDefaultizedParameters; instance: UseTreeViewExpansionInstance; + publicAPI: UseTreeViewExpansionPublicAPI; modelNames: 'expandedItems'; dependantPlugins: [UseTreeViewItemsSignature]; }>; diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts index 1d6bb801ed3b..83b346ca9479 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeViewModels.ts @@ -48,9 +48,7 @@ export const useTreeViewModels = < const models = Object.fromEntries( Object.entries(modelsRef.current).map(([modelName, model]) => { - const value = model.isControlled - ? props[modelName as keyof DefaultizedParams] - : modelsState[modelName]; + const value = props[modelName as keyof DefaultizedParams] ?? modelsState[modelName]; return [ modelName, diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 39eb00ad72ba..507eaffcc1de 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -5,7 +5,7 @@ import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; -import { TreeViewAnyPluginSignature } from '@mui/x-tree-view/internals/models'; +import { TreeViewAnyPluginSignature, TreeViewPublicAPI } from '@mui/x-tree-view/internals/models'; import { MuiRenderResult } from '@mui-internal/test-utils/createRenderer'; import { DescribeTreeViewTestRunner, @@ -22,7 +22,7 @@ const innerDescribeTreeView = ( const getUtils = ( result: MuiRenderResult, - ): Omit, 'setProps'> => { + ): Omit, 'setProps' | 'apiRef'> => { const getRoot = () => result.getByRole('tree'); const getAllItemRoots = () => result.queryAllByRole('treeitem'); @@ -59,9 +59,11 @@ const innerDescribeTreeView = ( ...other }) => { const items = rawItems as readonly DescribeTreeViewItem[]; + const apiRef = { current: undefined }; const result = render( @@ -78,6 +80,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, + apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, ...getUtils(result), }; }; @@ -93,9 +96,11 @@ const innerDescribeTreeView = ( ...other }) => { const items = rawItems as readonly DescribeTreeViewItem[]; + const apiRef = { current: undefined }; const result = render( ( return { setProps: result.setProps, + apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, ...getUtils(result), }; }; @@ -128,6 +134,7 @@ const innerDescribeTreeView = ( }) => { const items = rawItems as readonly DescribeTreeViewItem[]; const Item = slots?.item ?? TreeItem; + const apiRef = { current: undefined }; const renderItem = (item: DescribeTreeViewItem) => ( ( ); const result = render( - + {items.map(renderItem)} , ); return { setProps: result.setProps, + apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, ...getUtils(result), }; }; @@ -164,6 +172,8 @@ const innerDescribeTreeView = ( }) => { const items = rawItems as readonly DescribeTreeViewItem[]; const Item = slots?.item ?? TreeItem2; + const apiRef = { current: undefined }; + const renderItem = (item: DescribeTreeViewItem) => ( ( ); const result = render( - + {items.map(renderItem)} , ); return { setProps: result.setProps, + apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, ...getUtils(result), }; }; diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index 9c5f3d59dba8..992bd656f19c 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -1,5 +1,9 @@ import * as React from 'react'; -import { TreeViewAnyPluginSignature, TreeViewUsedParams } from '@mui/x-tree-view/internals/models'; +import { + TreeViewAnyPluginSignature, + TreeViewPublicAPI, + TreeViewUsedParams, +} from '@mui/x-tree-view/internals/models'; import { TreeItemProps } from '@mui/x-tree-view/TreeItem'; import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; @@ -13,6 +17,10 @@ export interface DescribeTreeViewRendererReturnValue>} props A subset of the props accepted by the Tree View. */ setProps: (props: Partial>) => void; + /** + * The ref object that allows Tree View manipulation. + */ + apiRef: { current: TreeViewPublicAPI<[TPlugin]> }; /** * Returns the `root` slot of the Tree View. * @returns {HTMLElement} `root` slot of the Tree View. From d55d4123b61e24393638522f23cebb17205be853 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 17:09:46 +0200 Subject: [PATCH 059/912] Bump express from 4.18.3 to 4.19.2 (#12598) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index bcc36cc35cc4..cee3b422a11d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5702,10 +5702,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== cookie@~0.4.1: version "0.4.2" @@ -7281,16 +7281,16 @@ exponential-backoff@^3.1.1: integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== express@^4.16.4: - version "4.18.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.3.tgz#6870746f3ff904dee1819b82e4b51509afffb0d4" - integrity sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw== + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" body-parser "1.20.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.5.0" + cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" From a1975c661c3cc36eeb3e895f5d5d6b940fd8903e Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 3 Apr 2024 17:27:37 +0200 Subject: [PATCH 060/912] [core] Use `describeTreeView` for selection tests (#12647) --- .../SimpleTreeView/SimpleTreeView.test.tsx | 90 --- .../src/TreeItem/TreeItem.test.tsx | 391 ------------ .../useTreeViewExpansion.test.tsx | 61 +- .../useTreeViewSelection.test.tsx | 565 ++++++++++++++++++ .../describeTreeView/describeTreeView.tsx | 3 + .../describeTreeView.types.ts | 7 + 6 files changed, 614 insertions(+), 503 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx index 6891bdc740b0..7a313b22ac66 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx @@ -22,20 +22,6 @@ describe('', () => { })); describe('warnings', () => { - it('should warn when switching from controlled to uncontrolled of the selectedItems prop', () => { - const { setProps } = render( - - - , - ); - - expect(() => { - setProps({ selectedItems: undefined }); - }).toErrorDev( - 'MUI X: A component is changing the controlled selectedItems state of TreeView to be uncontrolled.', - ); - }); - it('should not crash when shift clicking a clean tree', () => { render( @@ -145,70 +131,6 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected'); }); - it('should be able to be controlled with the selectedItems prop and singleSelect', () => { - function MyComponent() { - const [selectedState, setSelectedState] = React.useState(null); - const onSelectedItemsChange = (event, items) => { - setSelectedState(items); - }; - return ( - - - - - ); - } - - const { getByTestId, getByText } = render(); - - expect(getByTestId('one')).not.to.have.attribute('aria-selected'); - expect(getByTestId('two')).not.to.have.attribute('aria-selected'); - - fireEvent.click(getByText('one')); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).not.to.have.attribute('aria-selected'); - - fireEvent.click(getByText('two')); - - expect(getByTestId('one')).not.to.have.attribute('aria-selected'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); - - it('should be able to be controlled with the selectedItems prop and multiSelect', () => { - function MyComponent() { - const [selectedState, setSelectedState] = React.useState([]); - const onSelectedItemsChange = (event, items) => { - setSelectedState(items); - }; - return ( - - - - - ); - } - - const { getByTestId, getByText } = render(); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - - fireEvent.click(getByText('one')); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - - fireEvent.click(getByText('two'), { ctrlKey: true }); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); - it('should not error when component state changes', () => { function MyComponent() { const [, setState] = React.useState(1); @@ -438,17 +360,5 @@ describe('', () => { expect(getByRole('tree')).not.to.equal(null); }); - - it('(TreeView) should have the attribute `aria-multiselectable=false if using single select`', () => { - const { getByRole } = render(); - - expect(getByRole('tree')).to.have.attribute('aria-multiselectable', 'false'); - }); - - it('(TreeView) should have the attribute `aria-multiselectable=true if using multi select`', () => { - const { getByRole } = render(); - - expect(getByRole('tree')).to.have.attribute('aria-multiselectable', 'true'); - }); }); }); diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 7206c6a56cfe..89697ecd54f0 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -289,30 +289,6 @@ describe('', () => { expect(getByRole('group')).to.contain(getByText('test2')); }); - describe('aria-expanded', () => { - it('should have the attribute `aria-expanded=false` if collapsed', () => { - const { getByTestId } = render( - - - - - , - ); - - expect(getByTestId('test')).to.have.attribute('aria-expanded', 'false'); - }); - - it('should not have the attribute `aria-expanded` if no children are present', () => { - const { getByTestId } = render( - - - , - ); - - expect(getByTestId('test')).not.to.have.attribute('aria-expanded'); - }); - }); - describe('aria-disabled', () => { it('should not have the attribute `aria-disabled` if disabled is false', () => { const { getByTestId } = render( @@ -335,62 +311,6 @@ describe('', () => { }); }); - describe('aria-selected', () => { - describe('single-select', () => { - it('should not have the attribute `aria-selected` if not selected', () => { - const { getByTestId } = render( - - - , - ); - - expect(getByTestId('test')).not.to.have.attribute('aria-selected'); - }); - - it('should have the attribute `aria-selected={true}` if selected', () => { - const { getByTestId } = render( - - - , - ); - - expect(getByTestId('test')).to.have.attribute('aria-selected', 'true'); - }); - }); - - describe('multi-select', () => { - it('should have the attribute `aria-selected=false` if not selected', () => { - const { getByTestId } = render( - - - , - ); - - expect(getByTestId('test')).to.have.attribute('aria-selected', 'false'); - }); - - it('should have the attribute `aria-selected={true}` if selected', () => { - const { getByTestId } = render( - - - , - ); - - expect(getByTestId('test')).to.have.attribute('aria-selected', 'true'); - }); - - it('should have the attribute `aria-selected` if disableSelection is true', () => { - const { getByTestId } = render( - - - , - ); - - expect(getByTestId('test')).to.have.attribute('aria-selected', 'false'); - }); - }); - }); - describe('when an item receives focus', () => { it('should focus the first item if none of the items are selected before the tree receives focus', () => { const { getByTestId, queryAllByRole } = render( @@ -1165,96 +1085,10 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected'); }); }); - - describe('mouse', () => { - it('should select an item when click', () => { - const { getByText, getByTestId } = render( - - - , - ); - - expect(getByTestId('one')).not.to.have.attribute('aria-selected'); - fireEvent.click(getByText('one')); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - }); - - it('should not deselect an item when clicking a selected item', () => { - const { getByText, getByTestId } = render( - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - fireEvent.click(getByText('one')); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - }); - - it('should not select an item when click and disableSelection', () => { - const { getByText, getByTestId } = render( - - - , - ); - - fireEvent.click(getByText('one')); - expect(getByTestId('one')).not.to.have.attribute('aria-selected'); - }); - }); }); describe('Multi Selection', () => { describe('deselection', () => { - describe('mouse behavior when multiple items are selected', () => { - it('clicking a selected item holding ctrl should deselect the item', () => { - const { getByText, getByTestId } = render( - - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - fireEvent.click(getByText('one'), { ctrlKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); - - it('clicking a selected item holding meta should deselect the item', () => { - const { getByText, getByTestId } = render( - - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - fireEvent.click(getByText('one'), { metaKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); - }); - - describe('mouse behavior when one item is selected', () => { - it('clicking a selected item shout not deselect the item', () => { - const { getByText, getByTestId } = render( - - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - fireEvent.click(getByText('one')); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - }); - }); - it('should deselect the item when pressing space on a selected item', () => { const { getByTestId } = render( @@ -1530,93 +1364,6 @@ describe('', () => { expect(queryAllByRole('treeitem', { selected: true })).to.have.length(0); }); - - it('mouse', () => { - const { getByTestId, getByText } = render( - - - - - - - - - - - - - , - ); - - fireEvent.click(getByText('five')); - fireEvent.click(getByText('nine'), { shiftKey: true }); - expect(getByTestId('five')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('six')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('seven')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('eight')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('nine')).to.have.attribute('aria-selected', 'true'); - fireEvent.click(getByText('one'), { shiftKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('three')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('four')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('five')).to.have.attribute('aria-selected', 'true'); - }); - - it('mouse behavior after deselection', () => { - const { getByTestId, getByText } = render( - - - - - - - , - ); - - fireEvent.click(getByText('one')); - fireEvent.click(getByText('two'), { ctrlKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - fireEvent.click(getByText('two'), { ctrlKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - - fireEvent.click(getByText('five'), { shiftKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('three')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('four')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('five')).to.have.attribute('aria-selected', 'true'); - fireEvent.click(getByText('one'), { shiftKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('three')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('four')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('five')).to.have.attribute('aria-selected', 'false'); - }); - - it('mouse does not range select when selectionDisabled', () => { - const { getByText, queryAllByRole } = render( - - - - - - - - - - - - - , - ); - - fireEvent.click(getByText('five')); - fireEvent.click(getByText('nine'), { shiftKey: true }); - expect(queryAllByRole('treeitem', { selected: true })).to.have.length(0); - }); }); describe('multi selection', () => { @@ -1673,64 +1420,6 @@ describe('', () => { expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); }); - - it('mouse', () => { - const { getByText, getByTestId } = render( - - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - - fireEvent.click(getByText('one')); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - - fireEvent.click(getByText('two')); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); - - it('mouse using ctrl', () => { - const { getByTestId, getByText } = render( - - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - fireEvent.click(getByText('one')); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - fireEvent.click(getByText('two'), { ctrlKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); - - it('mouse using meta', () => { - const { getByTestId, getByText } = render( - - - - , - ); - - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - fireEvent.click(getByText('one')); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - fireEvent.click(getByText('two'), { metaKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'true'); - }); }); it('ctrl + a selects all', () => { @@ -1775,73 +1464,6 @@ describe('', () => { describe('prop: disabled', () => { describe('selection', () => { - describe('mouse', () => { - it('should prevent selection by mouse', () => { - const { getByText, getByTestId } = render( - - - , - ); - - fireEvent.click(getByText('one')); - expect(getByTestId('one')).not.to.have.attribute('aria-selected'); - }); - - it('should prevent item triggering start of range selection', () => { - const { getByText, getByTestId } = render( - - - - - - , - ); - - fireEvent.click(getByText('one')); - fireEvent.click(getByText('four'), { shiftKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('three')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('four')).to.have.attribute('aria-selected', 'false'); - }); - - it('should prevent item being selected as part of range selection', () => { - const { getByText, getByTestId } = render( - - - - - - , - ); - - fireEvent.click(getByText('one')); - fireEvent.click(getByText('four'), { shiftKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('three')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('four')).to.have.attribute('aria-selected', 'true'); - }); - - it('should prevent item triggering end of range selection', () => { - const { getByText, getByTestId } = render( - - - - - - , - ); - - fireEvent.click(getByText('one')); - fireEvent.click(getByText('four'), { shiftKey: true }); - expect(getByTestId('one')).to.have.attribute('aria-selected', 'true'); - expect(getByTestId('two')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('three')).to.have.attribute('aria-selected', 'false'); - expect(getByTestId('four')).to.have.attribute('aria-selected', 'false'); - }); - }); - describe('keyboard', () => { describe('`disabledItemsFocusable={true}`', () => { it('should prevent selection by keyboard', () => { @@ -2234,19 +1856,6 @@ describe('', () => { expect(getByTestId('two')).to.have.attribute('aria-expanded', 'true'); }); }); - - it('should prevent expansion on click', () => { - const { getByText, getByTestId } = render( - - - - - , - ); - - fireEvent.click(getByText('one')); - expect(getByTestId('one')).to.have.attribute('aria-expanded', 'false'); - }); }); describe('event bindings', () => { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx index 30efae2980df..49b5290aed8a 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx @@ -1,15 +1,12 @@ +import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; import { UseTreeViewExpansionSignature } from '@mui/x-tree-view/internals'; -import { act, fireEvent } from '@mui-internal/test-utils'; -import { - TreeItem2, - TreeItem2Props, - UseTreeItem2ContentSlotOwnProps, - useTreeItem2Utils, -} from '@mui/x-tree-view'; -import * as React from 'react'; +import { fireEvent } from '@mui-internal/test-utils'; +import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; +import { UseTreeItem2ContentSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; /** * All tests related to keyboard navigation (e.g.: expanding using "Enter" and "ArrowRight") @@ -38,7 +35,7 @@ describeTreeView( expect(response.getAllItemRoots()).to.have.length(3); }); - it('should use the control state when defined', () => { + it('should use the controlled state when defined', () => { const response = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], expandedItems: ['1'], @@ -48,7 +45,7 @@ describeTreeView( expect(response.getItemRoot('1.1')).toBeVisible(); }); - it('should use the control state upon the default state when both are defined', () => { + it('should use the controlled state instead of the default state when both are defined', () => { const response = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], expandedItems: ['1'], @@ -58,7 +55,7 @@ describeTreeView( expect(response.isItemExpanded('1')).to.equal(true); }); - it('should react to control state update', () => { + it('should react to controlled state update', () => { const response = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], expandedItems: [], @@ -77,15 +74,12 @@ describeTreeView( }); fireEvent.click(response.getItemContent('1')); - act(() => { - response.getRoot().focus(); - }); expect(onExpandedItemsChange.callCount).to.equal(1); expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal(['1']); }); - it('should call the onExpandedItemsChange callback when the model is updated (add expanded item no non-empty list)', () => { + it('should call the onExpandedItemsChange callback when the model is updated (add expanded item to non-empty list)', () => { const onExpandedItemsChange = spy(); const response = render({ @@ -98,9 +92,6 @@ describeTreeView( }); fireEvent.click(response.getItemContent('2')); - act(() => { - response.getRoot().focus(); - }); expect(onExpandedItemsChange.callCount).to.equal(1); expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal(['2', '1']); @@ -119,9 +110,6 @@ describeTreeView( }); fireEvent.click(response.getItemContent('1')); - act(() => { - response.getRoot().focus(); - }); expect(onExpandedItemsChange.callCount).to.equal(1); expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal([]); @@ -156,7 +144,7 @@ describeTreeView( }); }); - describe('click interactions', () => { + describe('item click interaction', () => { it('should expand collapsed item when clicking on an item content', () => { const response = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], @@ -270,6 +258,35 @@ describeTreeView( }); }); + // The `aria-expanded` attribute is used by the `response.isItemExpanded` method. + // This `describe` only tests basics scenarios, more complex scenarios are tested in this file's other `describe`. + describe('aria-expanded item attribute', () => { + it('should have the attribute `aria-expanded=false` if collapsed', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + }); + + expect(response.getItemRoot('1')).to.have.attribute('aria-expanded', 'false'); + }); + + it('should have the attribute `aria-expanded=true` if expanded', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + defaultExpandedItems: ['1'], + }); + + expect(response.getItemRoot('1')).to.have.attribute('aria-expanded', 'true'); + }); + + it('should not have the attribute `aria-expanded` if no children are present', () => { + const response = render({ + items: [{ id: '1' }], + }); + + expect(response.getItemRoot('1')).not.to.have.attribute('aria-expanded'); + }); + }); + describe('onItemExpansionToggle prop', () => { it('should call the onItemExpansionToggle callback when expanding an item', () => { const onItemExpansionToggle = spy(); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx new file mode 100644 index 000000000000..249ac91c9c63 --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx @@ -0,0 +1,565 @@ +import { expect } from 'chai'; +import { spy } from 'sinon'; +import { fireEvent } from '@mui-internal/test-utils'; +import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; +import { UseTreeViewSelectionSignature } from '@mui/x-tree-view/internals'; + +/** + * All tests related to keyboard navigation (e.g.: selection using "Space") + * are located in the `useTreeViewKeyboardNavigation.test.tsx` file. + */ +describeTreeView('useTreeViewSelection plugin', ({ render }) => { + describe('model props (selectedItems, defaultSelectedItems, onSelectedItemsChange)', () => { + it('should not select items when no default state and no control state are defined', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + expect(response.isItemSelected('1')).to.equal(false); + }); + + it('should use the default state when defined', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should use the controlled state when defined', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + selectedItems: ['1'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should use the controlled state instead of the default state when both are defined', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + selectedItems: ['1'], + defaultSelectedItems: ['2'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should react to controlled state update', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + selectedItems: [], + }); + + response.setProps({ selectedItems: ['1'] }); + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should call the onSelectedItemsChange callback when the model is updated (single selection and add selected item)', () => { + const onSelectedItemsChange = spy(); + + const response = render({ + items: [{ id: '1' }, { id: '2' }], + onSelectedItemsChange, + }); + + fireEvent.click(response.getItemContent('1')); + + expect(onSelectedItemsChange.callCount).to.equal(1); + expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal('1'); + }); + + // TODO: Re-enable this test if we have a way to un-select an item in single selection. + // eslint-disable-next-line mocha/no-skipped-tests + it.skip('should call onSelectedItemsChange callback when the model is updated (single selection and remove selected item', () => { + const onSelectedItemsChange = spy(); + + const response = render({ + items: [{ id: '1' }, { id: '2' }], + onSelectedItemsChange, + defaultSelectedItems: ['1'], + }); + + fireEvent.click(response.getItemContent('1')); + + expect(onSelectedItemsChange.callCount).to.equal(1); + expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal([]); + }); + + it('should call the onSelectedItemsChange callback when the model is updated (multi selection and add selected item to empty list)', () => { + const onSelectedItemsChange = spy(); + + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + onSelectedItemsChange, + }); + + fireEvent.click(response.getItemContent('1')); + + expect(onSelectedItemsChange.callCount).to.equal(1); + expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['1']); + }); + + it('should call the onSelectedItemsChange callback when the model is updated (multi selection and add selected item to non-empty list)', () => { + const onSelectedItemsChange = spy(); + + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + onSelectedItemsChange, + defaultSelectedItems: ['1'], + }); + + fireEvent.click(response.getItemContent('2'), { ctrlKey: true }); + + expect(onSelectedItemsChange.callCount).to.equal(1); + expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['2', '1']); + }); + + it('should call the onSelectedItemsChange callback when the model is updated (multi selection and remove selected item)', () => { + const onSelectedItemsChange = spy(); + + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + onSelectedItemsChange, + defaultSelectedItems: ['1'], + }); + + fireEvent.click(response.getItemContent('1'), { ctrlKey: true }); + + expect(onSelectedItemsChange.callCount).to.equal(1); + expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal([]); + }); + + it('should warn when switching from controlled to uncontrolled', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + selectedItems: [], + }); + + expect(() => { + response.setProps({ selectedItems: undefined }); + }).toErrorDev( + 'MUI X: A component is changing the controlled selectedItems state of TreeView to be uncontrolled.', + ); + }); + + it('should warn and not react to update when updating the default state', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1'], + }); + + expect(() => { + response.setProps({ defaultSelectedItems: ['2'] }); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + }).toErrorDev( + 'MUI X: A component is changing the default selectedItems state of an uncontrolled TreeView after being initialized. To suppress this warning opt to use a controlled TreeView.', + ); + }); + }); + + describe('item click interaction', () => { + describe('single selection', () => { + it('should select un-selected item when clicking on an item content', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + expect(response.isItemSelected('1')).to.equal(false); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should not un-select selected item when clicking on an item content', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: '1', + }); + + expect(response.isItemSelected('1')).to.equal(true); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should not select an item when click and disableSelection', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + disableSelection: true, + }); + + expect(response.isItemSelected('1')).to.equal(false); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(false); + }); + + it('should not select an item when clicking on a disabled item content', () => { + const response = render({ + items: [{ id: '1', disabled: true }, { id: '2' }], + }); + + expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(false); + }); + }); + + describe('multi selection', () => { + it('should select un-selected item when clicking on an item content', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['2'], + }); + + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + }); + + it('should not un-select selected item when clicking on an item content', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(true); + }); + + it('should un-select selected item when clicking on its content while holding Ctrl', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1', '2'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(true); + fireEvent.click(response.getItemContent('1'), { ctrlKey: true }); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + }); + + it('should un-select selected item when clicking on its content while holding Meta', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1', '2'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(true); + + fireEvent.click(response.getItemContent('1'), { metaKey: true }); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + }); + + it('should not select an item when click and disableSelection', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + disableSelection: true, + }); + + expect(response.isItemSelected('1')).to.equal(false); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(false); + }); + + it('should not select an item when clicking on a disabled item content', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1', disabled: true }, { id: '2' }], + }); + + expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(false); + }); + + it('should select un-selected item when clicking on its content while holding Ctrl', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + defaultSelectedItems: ['1'], + }); + + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + + fireEvent.click(response.getItemContent('3'), { ctrlKey: true }); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(true); + }); + + it('should expand the selection range when clicking on an item content below the last selected item while holding Shift', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], + }); + + fireEvent.click(response.getItemContent('2')); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('3'), { shiftKey: true }); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(true); + expect(response.isItemSelected('3')).to.equal(true); + expect(response.isItemSelected('4')).to.equal(false); + }); + + it('should expand the selection range when clicking on an item content above the last selected item while holding Shift', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], + }); + + fireEvent.click(response.getItemContent('3')); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(true); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('2'), { shiftKey: true }); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(true); + expect(response.isItemSelected('3')).to.equal(true); + expect(response.isItemSelected('4')).to.equal(false); + }); + + it('should expand the selection range when clicking on an item content while holding Shift after un-selecting another item', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], + }); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('2'), { ctrlKey: true }); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('2'), { ctrlKey: true }); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('3'), { shiftKey: true }); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(true); + expect(response.isItemSelected('3')).to.equal(true); + expect(response.isItemSelected('4')).to.equal(false); + }); + + it('should not expand the selection range when clicking on a disabled item content then clicking on an item content while holding Shift', () => { + const response = render({ + multiSelect: true, + items: [ + { id: '1' }, + { id: '2', disabled: true }, + { id: '2.1' }, + { id: '3' }, + { id: '4' }, + ], + }); + + fireEvent.click(response.getItemContent('2')); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('3'), { shiftKey: true }); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + }); + + it('should not expand the selection range when clicking on an item content then clicking a disabled item content while holding Shift', () => { + const response = render({ + multiSelect: true, + items: [ + { id: '1' }, + { id: '2' }, + { id: '2.1' }, + { id: '3', disabled: true }, + { id: '4' }, + ], + }); + + fireEvent.click(response.getItemContent('2')); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + + fireEvent.click(response.getItemContent('3'), { shiftKey: true }); + expect(response.isItemSelected('1')).to.equal(false); + expect(response.isItemSelected('2')).to.equal(true); + expect(response.isItemSelected('2.1')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + expect(response.isItemSelected('4')).to.equal(false); + }); + + it('should not select disabled items that are part of the selected range', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], + }); + + fireEvent.click(response.getItemContent('1')); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(false); + + fireEvent.click(response.getItemContent('3'), { shiftKey: true }); + expect(response.isItemSelected('1')).to.equal(true); + expect(response.isItemSelected('2')).to.equal(false); + expect(response.isItemSelected('3')).to.equal(true); + }); + }); + }); + + describe('aria-multiselectable tree attribute', () => { + it('should have the attribute `aria-multiselectable=false if using single select`', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + expect(response.getRoot()).to.have.attribute('aria-multiselectable', 'false'); + }); + + it('should have the attribute `aria-multiselectable=true if using multi select`', () => { + const response = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true }); + + expect(response.getRoot()).to.have.attribute('aria-multiselectable', 'true'); + }); + }); + + // The `aria-selected` attribute is used by the `response.isItemSelected` method. + // This `describe` only tests basics scenarios, more complex scenarios are tested in this file's other `describe`. + describe('aria-selected item attribute', () => { + describe('single selection', () => { + it('should not have the attribute `aria-selected=false` if not selected', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + expect(response.getItemRoot('1')).not.to.have.attribute('aria-selected'); + }); + + it('should have the attribute `aria-selected=true` if selected', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: '1', + }); + + expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'true'); + }); + }); + + describe('multi selection', () => { + it('should have the attribute `aria-selected=false` if not selected', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + }); + + expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'false'); + }); + + it('should have the attribute `aria-selected=true` if selected', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1'], + }); + + expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'true'); + }); + + it('should have the attribute `aria-selected=false` if disabledSelection is true', () => { + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + disableSelection: true, + }); + + expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'false'); + }); + }); + }); + + describe('onItemSelectionToggle prop', () => { + it('should call the onItemSelectionToggle callback when selecting an item', () => { + const onItemSelectionToggle = spy(); + + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + onItemSelectionToggle, + }); + + fireEvent.click(response.getItemContent('1')); + expect(onItemSelectionToggle.callCount).to.equal(1); + expect(onItemSelectionToggle.lastCall.args[1]).to.equal('1'); + expect(onItemSelectionToggle.lastCall.args[2]).to.equal(true); + }); + + it('should call the onItemSelectionToggle callback when un-selecting an item', () => { + const onItemSelectionToggle = spy(); + + const response = render({ + multiSelect: true, + items: [{ id: '1' }, { id: '2' }], + defaultSelectedItems: ['1'], + onItemSelectionToggle, + }); + + fireEvent.click(response.getItemContent('1'), { ctrlKey: true }); + expect(onItemSelectionToggle.callCount).to.equal(1); + expect(onItemSelectionToggle.lastCall.args[1]).to.equal('1'); + expect(onItemSelectionToggle.lastCall.args[2]).to.equal(false); + }); + }); +}); diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 507eaffcc1de..c0773c94df05 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -40,6 +40,8 @@ const innerDescribeTreeView = ( const isItemExpanded = (id: string) => getItemRoot(id).getAttribute('aria-expanded') === 'true'; + const isItemSelected = (id: string) => getItemRoot(id).getAttribute('aria-selected') === 'true'; + return { getRoot, getAllItemRoots, @@ -48,6 +50,7 @@ const innerDescribeTreeView = ( getItemLabel, getItemIconContainer, isItemExpanded, + isItemSelected, }; }; diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index 992bd656f19c..abe8936e2bd9 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -62,6 +62,13 @@ export interface DescribeTreeViewRendererReturnValue boolean; + /** + * Checks if an item is selected. + * Uses the `aria-selected` attribute to check the selected. + * @param {string} id The id of the item to check. + * @returns {boolean} `true` if the item is selected, `false` otherwise. + */ + isItemSelected: (id: string) => boolean; } export type DescribeTreeViewRenderer = < From ddd0f13afa4bea7c5bbd12b399f370cc6bc286e4 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Wed, 3 Apr 2024 23:35:39 +0200 Subject: [PATCH 061/912] [infra] Polish support survey experience (#12624) --- .github/workflows/closed-issue-message.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/closed-issue-message.yaml b/.github/workflows/closed-issue-message.yaml index 02181c2d51a1..0057362c3438 100644 --- a/.github/workflows/closed-issue-message.yaml +++ b/.github/workflows/closed-issue-message.yaml @@ -14,13 +14,11 @@ jobs: GH_REPO: ${{ github.repository }} NUMBER: ${{ github.event.issue.number }} BODY: | - :warning: **This issue has been closed.** - If you have a similar problem, please open a [new issue](https://github.com/mui/mui-x/issues/new/choose) and provide details about your specific problem. - If you can provide additional information related to this topic that could help future readers, please feel free to leave a comment. + :warning: **This issue has been closed.** If you have a similar problem but not exactly the same, please open a [new issue](https://github.com/mui/mui-x/issues/new/choose). + Now, if you have additional information related to this issue or things that could help future readers, feel free to leave a comment. APPENDIX: | - **How did we do @${{ github.event.issue.user.login }}?** - Your experience with our support team matters to us. If you have a moment, please share your thoughts through our [brief survey](https://tally.so/r/w4r5Mk?issue=${{ github.event.issue.number }}). + @${{ github.event.issue.user.login }}: How did we do? Your experience with our support team matters to us. If you have a moment, please share your thoughts in this short [Support Satisfaction survey](https://tally.so/r/w4r5Mk?issue=${{ github.event.issue.number }}&productId=x). if: github.event.issue.state_reason != 'inactivity' runs-on: ubuntu-latest From 3778ed8c6fc0268ff6d6b9c6e748a520797fad00 Mon Sep 17 00:00:00 2001 From: Aitor Ramoneda Subarroca <86493991+aitor40@users.noreply.github.com> Date: Thu, 4 Apr 2024 02:50:48 +0200 Subject: [PATCH 062/912] [l10n] Improve Spanish (es-ES) locale (#12606) Signed-off-by: Aitor Ramoneda Subarroca <86493991+aitor40@users.noreply.github.com> Co-authored-by: alexandre --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/esES.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 5e95d5bb5290..befab4dc41b9 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -219,7 +219,7 @@ "languageTag": "es-ES", "importName": "esES", "localeName": "Spanish", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/esES.ts" }, diff --git a/packages/x-data-grid/src/locales/esES.ts b/packages/x-data-grid/src/locales/esES.ts index b3aba3cfad08..217e68ff5c68 100644 --- a/packages/x-data-grid/src/locales/esES.ts +++ b/packages/x-data-grid/src/locales/esES.ts @@ -39,9 +39,9 @@ const esESGrid: Partial = { toolbarExportExcel: 'Descargar como Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Buscar', + columnsManagementNoColumns: 'Sin columnas', + columnsManagementShowHideAllText: 'Mostrar/Ocultar todas', // Filter panel text filterPanelAddFilter: 'Agregar filtro', From 7424bae54fd8074b0a75778ef555c61b4eec7d55 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 4 Apr 2024 08:15:24 +0300 Subject: [PATCH 063/912] [core] Limit `test-types` CI step allowed memory (#12651) --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9936d6febdf7..736cfa65d207 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -229,7 +229,7 @@ jobs: name: Tests TypeScript definitions command: yarn typescript:ci environment: - NODE_OPTIONS: --max-old-space-size=3072 + NODE_OPTIONS: --max-old-space-size=2048 test_e2e: <<: *default-job docker: From 5c35a4baabd720fb933b164b0db26605d0e0b883 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 4 Apr 2024 08:16:03 +0300 Subject: [PATCH 064/912] [core] Add cherry-pick `master` to `v6` action (#12648) --- .../workflows/cherry-pick-master-to-v6.yml | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/cherry-pick-master-to-v6.yml diff --git a/.github/workflows/cherry-pick-master-to-v6.yml b/.github/workflows/cherry-pick-master-to-v6.yml new file mode 100644 index 000000000000..78a52ec9ed67 --- /dev/null +++ b/.github/workflows/cherry-pick-master-to-v6.yml @@ -0,0 +1,34 @@ +name: Cherry pick master to v6 + +on: + pull_request_target: + branches: + - master + types: ['closed'] + +permissions: {} + +jobs: + cherry_pick_to_v6: + runs-on: ubuntu-latest + name: Cherry pick into v6 + permissions: + pull-requests: write + contents: write + if: ${{ contains(github.event.pull_request.labels.*.name, 'needs cherry-pick') && github.event.pull_request.merged == true }} + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + - name: Cherry pick and create the new PR + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: carloscastrojumo/github-cherry-pick-action@a145da1b8142e752d3cbc11aaaa46a535690f0c5 # v1.0.9 + with: + branch: v6.x + body: 'Cherry-pick of #{old_pull_request_id}' + cherry-pick-branch: ${{ format('cherry-pick-{0}', github.event.number) }} + title: '{old_title} (@${{ github.event.pull_request.user.login }})' + labels: | + cherry-pick From e42a1cf03dc8b1c2e76ab1a3dc8d6a1401d1ac92 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 4 Apr 2024 08:26:29 +0200 Subject: [PATCH 065/912] [docs] Adds a recipe for the `checkboxSelectionVisibleOnly` prop (#12646) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Andrew Cherniavskii --- .../CheckboxSelectionVisibleOnlyGrid.js | 48 +++++++++++++++++++ .../CheckboxSelectionVisibleOnlyGrid.tsx | 48 +++++++++++++++++++ .../data-grid/row-selection/row-selection.md | 7 +++ 3 files changed, 103 insertions(+) create mode 100644 docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.js create mode 100644 docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.tsx diff --git a/docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.js b/docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.js new file mode 100644 index 000000000000..4b4783735e5c --- /dev/null +++ b/docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.js @@ -0,0 +1,48 @@ +import * as React from 'react'; +import { DataGridPro } from '@mui/x-data-grid-pro'; +import { useDemoData } from '@mui/x-data-grid-generator'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; +import Box from '@mui/material/Box'; + +export default function CheckboxSelectionVisibleOnlyGrid() { + const [checkboxSelectionVisibleOnly, setCheckboxSelectionVisibleOnly] = + React.useState(false); + + const { data } = useDemoData({ + dataSet: 'Commodity', + rowLength: 300, + maxColumns: 5, + }); + + return ( +
    + + + setCheckboxSelectionVisibleOnly(event.target.checked) + } + /> + } + /> + +
    + +
    +
    + ); +} diff --git a/docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.tsx b/docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.tsx new file mode 100644 index 000000000000..4b4783735e5c --- /dev/null +++ b/docs/data/data-grid/row-selection/CheckboxSelectionVisibleOnlyGrid.tsx @@ -0,0 +1,48 @@ +import * as React from 'react'; +import { DataGridPro } from '@mui/x-data-grid-pro'; +import { useDemoData } from '@mui/x-data-grid-generator'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; +import Box from '@mui/material/Box'; + +export default function CheckboxSelectionVisibleOnlyGrid() { + const [checkboxSelectionVisibleOnly, setCheckboxSelectionVisibleOnly] = + React.useState(false); + + const { data } = useDemoData({ + dataSet: 'Commodity', + rowLength: 300, + maxColumns: 5, + }); + + return ( +
    + + + setCheckboxSelectionVisibleOnly(event.target.checked) + } + /> + } + /> + +
    + +
    +
    + ); +} diff --git a/docs/data/data-grid/row-selection/row-selection.md b/docs/data/data-grid/row-selection/row-selection.md index b97c4a4293d1..6b4e2f63da46 100644 --- a/docs/data/data-grid/row-selection/row-selection.md +++ b/docs/data/data-grid/row-selection/row-selection.md @@ -64,6 +64,13 @@ Always set the `checkboxSelection` prop to `true` even when providing a custom c Otherwise, the data grid might remove your column. ::: +### Visible rows selection [](/x/introduction/licensing/#pro-plan 'Pro plan') + +By default, when you click the "Select All" checkbox, all rows in the data grid are selected. +If you want to change this behavior and only select the rows that are currently visible on the page, you can use the `checkboxSelectionVisibleOnly` prop. + +{{"demo": "CheckboxSelectionVisibleOnlyGrid.js", "bg": "inline"}} + ## Usage with server-side pagination Using the controlled selection with `paginationMode="server"` may result in selected rows being lost when the page is changed. From 7de42b224bf27e525fb12274a0c991685b7f6ef9 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 4 Apr 2024 09:47:15 +0300 Subject: [PATCH 066/912] [test] Fix TreeView test import (#12668) --- .../plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx index 49b5290aed8a..19828a91f5a4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx @@ -3,7 +3,7 @@ import { expect } from 'chai'; import { spy } from 'sinon'; import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; import { UseTreeViewExpansionSignature } from '@mui/x-tree-view/internals'; -import { fireEvent } from '@mui-internal/test-utils'; +import { act, fireEvent } from '@mui-internal/test-utils'; import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; import { UseTreeItem2ContentSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; From bb24b9e4bde6f1ad3ba3f6e1ca7dd792ee19e346 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 4 Apr 2024 09:27:05 +0200 Subject: [PATCH 067/912] [DataGrid] Log error if `rowCount` is used with client-side pagination (#12448) Co-authored-by: Bilal Shafi Co-authored-by: Andrew Cherniavskyi --- docs/data/data-grid/pagination/pagination.md | 5 +++++ .../src/internals/propValidation.ts | 14 +++++++++++++- .../src/tests/events.DataGridPro.test.tsx | 1 + .../src/tests/lazyLoader.DataGridPro.test.tsx | 1 + .../src/tests/pagination.DataGridPro.test.tsx | 8 ++++++++ .../src/tests/rows.DataGridPro.test.tsx | 12 +++++++++--- .../statePersistence.DataGridPro.test.tsx | 2 ++ .../src/internals/utils/propValidation.ts | 18 +++++++++++++++--- .../src/tests/pagination.DataGrid.test.tsx | 8 ++++++++ test/utils/mochaHooks.js | 3 +++ 10 files changed, 65 insertions(+), 7 deletions(-) diff --git a/docs/data/data-grid/pagination/pagination.md b/docs/data/data-grid/pagination/pagination.md index eebea559626f..a3af0fb6ac26 100644 --- a/docs/data/data-grid/pagination/pagination.md +++ b/docs/data/data-grid/pagination/pagination.md @@ -120,6 +120,11 @@ React.useEffect(() => { ; ``` +:::warning +The `rowCount` prop is used in server-side pagination mode to inform the DataGrid about the total number of rows in your dataset. +This prop is ignored when the `paginationMode` is set to `client`, i.e. when the pagination is handled on the client-side. +::: + {{"demo": "ServerPaginationGrid.js", "bg": "inline"}} ### Cursor implementation diff --git a/packages/x-data-grid-pro/src/internals/propValidation.ts b/packages/x-data-grid-pro/src/internals/propValidation.ts index 8651c0fb8031..b93320993aab 100644 --- a/packages/x-data-grid-pro/src/internals/propValidation.ts +++ b/packages/x-data-grid-pro/src/internals/propValidation.ts @@ -1,4 +1,9 @@ -import { PropValidator, propValidatorsDataGrid } from '@mui/x-data-grid/internals'; +import { + GridSignature, + PropValidator, + isNumber, + propValidatorsDataGrid, +} from '@mui/x-data-grid/internals'; import { DataGridProProcessedProps } from '../models/dataGridProProps'; export const propValidatorsDataGridPro: PropValidator[] = [ @@ -18,4 +23,11 @@ export const propValidatorsDataGridPro: PropValidator props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.') || undefined, + (props) => + (props.signature !== GridSignature.DataGrid && + props.paginationMode === 'client' && + props.rowsLoadingMode !== 'server' && + isNumber(props.rowCount) && + 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.') || + undefined, ]; diff --git a/packages/x-data-grid-pro/src/tests/events.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/events.DataGridPro.test.tsx index 0dc92e472484..0e58e190a945 100644 --- a/packages/x-data-grid-pro/src/tests/events.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/events.DataGridPro.test.tsx @@ -340,6 +340,7 @@ describe(' - Events params', () => { sortingMode="server" filterMode="server" rowsLoadingMode="server" + paginationMode="server" rowCount={50} />, ); diff --git a/packages/x-data-grid-pro/src/tests/lazyLoader.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/lazyLoader.DataGridPro.test.tsx index 545c75b36932..d39f33acb344 100644 --- a/packages/x-data-grid-pro/src/tests/lazyLoader.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/lazyLoader.DataGridPro.test.tsx @@ -51,6 +51,7 @@ describe(' - Lazy loader', () => { sortingMode="server" filterMode="server" rowsLoadingMode="server" + paginationMode="server" />
    ); diff --git a/packages/x-data-grid-pro/src/tests/pagination.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/pagination.DataGridPro.test.tsx index 55d78d03024f..b236b2e80ea6 100644 --- a/packages/x-data-grid-pro/src/tests/pagination.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/pagination.DataGridPro.test.tsx @@ -102,4 +102,12 @@ describe(' - Pagination', () => { expect(getColumnValues(0)).to.deep.equal(['0', '1']); }); }); + + it('should log an error if rowCount is used with client-side pagination', () => { + expect(() => { + render(); + }).toErrorDev([ + 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.', + ]); + }); }); diff --git a/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx index d4a7fb6d0747..6c67c82437ef 100644 --- a/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx @@ -959,7 +959,9 @@ describe(' - Rows', () => { it('should not show total row count in footer if `rowCount === rows.length`', () => { const { rows, columns } = getBasicGridData(10, 2); const rowCount = rows.length; - render(); + render( + , + ); const rowCountElement = document.querySelector(`.${gridClasses.rowCount}`); expect(rowCountElement!.textContent).to.equal(`Total Rows: ${rows.length}`); @@ -968,7 +970,9 @@ describe(' - Rows', () => { it('should show total row count in footer if `rowCount !== rows.length`', () => { const { rows, columns } = getBasicGridData(10, 2); const rowCount = rows.length + 10; - render(); + render( + , + ); const rowCountElement = document.querySelector(`.${gridClasses.rowCount}`); expect(rowCountElement!.textContent).to.equal(`Total Rows: ${rows.length} of ${rowCount}`); @@ -977,7 +981,9 @@ describe(' - Rows', () => { it('should update total row count in footer on `rowCount` prop change', () => { const { rows, columns } = getBasicGridData(10, 2); let rowCount = rows.length; - const { setProps } = render(); + const { setProps } = render( + , + ); rowCount += 1; setProps({ rowCount }); diff --git a/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx index 434c23c56c1c..091f51a8697c 100644 --- a/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx @@ -162,6 +162,7 @@ describe(' - State persistence', () => { page: FULL_INITIAL_STATE.pagination?.paginationModel?.page!, pageSize: FULL_INITIAL_STATE.pagination?.paginationModel?.pageSize!, }} + paginationMode="server" rowCount={FULL_INITIAL_STATE.pagination?.rowCount} pinnedColumns={FULL_INITIAL_STATE.pinnedColumns} // Some portable states don't have a controllable model @@ -187,6 +188,7 @@ describe(' - State persistence', () => { page: FULL_INITIAL_STATE.pagination?.paginationModel?.page!, pageSize: FULL_INITIAL_STATE.pagination?.paginationModel?.pageSize!, }} + paginationMode="server" rowCount={FULL_INITIAL_STATE.pagination?.rowCount} pinnedColumns={FULL_INITIAL_STATE.pinnedColumns} // Some portable states don't have a controllable model diff --git a/packages/x-data-grid/src/internals/utils/propValidation.ts b/packages/x-data-grid/src/internals/utils/propValidation.ts index b86261d3ca8c..427a2db0692e 100644 --- a/packages/x-data-grid/src/internals/utils/propValidation.ts +++ b/packages/x-data-grid/src/internals/utils/propValidation.ts @@ -1,4 +1,6 @@ +import { isNumber } from '../../utils/utils'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; +import { GridSignature } from '../../hooks/utils/useGridApiEventHandler'; export type PropValidator = (props: TProps) => string | undefined; @@ -13,13 +15,19 @@ export const propValidatorsDataGrid: PropValidator[] = [ 'Please remove one of these two props.', ].join('\n')) || undefined, + (props) => + (props.signature === GridSignature.DataGrid && + props.paginationMode === 'client' && + isNumber(props.rowCount) && + 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.') || + undefined, ]; -const warnedOnceMap = new Set(); +const warnedOnceCache = new Set(); const warnOnce = (message: string) => { - if (!warnedOnceMap.has(message)) { + if (!warnedOnceCache.has(message)) { console.error(message); - warnedOnceMap.add(message); + warnedOnceCache.add(message); } }; @@ -34,3 +42,7 @@ export const validateProps = (props: TProps, validators: PropValidator { + warnedOnceCache.clear(); +}; diff --git a/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx b/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx index fa636c43f242..8f60c3d159cc 100644 --- a/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx @@ -708,4 +708,12 @@ describe(' - Pagination', () => { setProps({ rows: rows.slice(0, 2) }); }).not.to.throw(); }); + + it('should log an error if rowCount is used with client-side pagination', () => { + expect(() => { + render(); + }).toErrorDev([ + 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.', + ]); + }); }); diff --git a/test/utils/mochaHooks.js b/test/utils/mochaHooks.js index db01b1e91dff..e0c7b2fd94ed 100644 --- a/test/utils/mochaHooks.js +++ b/test/utils/mochaHooks.js @@ -3,6 +3,7 @@ import { LicenseInfo } from '@mui/x-license'; import { unstable_resetCleanupTracking as unstable_resetCleanupTrackingDataGrid } from '@mui/x-data-grid'; import { unstable_resetCleanupTracking as unstable_resetCleanupTrackingDataGridPro } from '@mui/x-data-grid-pro'; import { unstable_resetCleanupTracking as unstable_resetCleanupTrackingTreeView } from '@mui/x-tree-view'; +import { clearWarningsCache } from '@mui/x-data-grid/internals'; export function createXMochaHooks(coreMochaHooks = {}) { const mochaHooks = { @@ -30,5 +31,7 @@ export function createXMochaHooks(coreMochaHooks = {}) { sinon.restore(); }); + mochaHooks.afterEach.push(clearWarningsCache); + return mochaHooks; } From bff8b84cedf45f058a53969f58ebe2840104c8f0 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 4 Apr 2024 09:27:57 +0200 Subject: [PATCH 068/912] [support-infra] fixes user permission check (#12669) --- .github/workflows/closed-issue-message.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/closed-issue-message.yaml b/.github/workflows/closed-issue-message.yaml index 0057362c3438..b652b7e5954d 100644 --- a/.github/workflows/closed-issue-message.yaml +++ b/.github/workflows/closed-issue-message.yaml @@ -29,9 +29,10 @@ jobs: id: checkUser with: require: 'write' + username: ${{ github.event.issue.user.login }} - name: Add comment for outside contributors - if: steps.checkUser.outputs.check-result == 'false' + if: steps.checkUser.outputs.check-result == false run: gh issue comment "$NUMBER" --body "$BODY $APPENDIX" - name: Add comment for maintainers - if: steps.checkUser.outputs.check-result == 'true' + if: steps.checkUser.outputs.check-result == true run: gh issue comment "$NUMBER" --body "$BODY" From 65b954975411b38773d5f82c8b7bb9bac779634d Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 4 Apr 2024 12:31:58 +0500 Subject: [PATCH 069/912] [DataGrid] Fix `ColDefChangesGridNoSnap` demo crash (#12663) --- .../migration/migration-data-grid-v6/ColDefChangesGridNoSnap.js | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/data/migration/migration-data-grid-v6/ColDefChangesGridNoSnap.js b/docs/data/migration/migration-data-grid-v6/ColDefChangesGridNoSnap.js index 8754b4cddae9..b79530976bd6 100644 --- a/docs/data/migration/migration-data-grid-v6/ColDefChangesGridNoSnap.js +++ b/docs/data/migration/migration-data-grid-v6/ColDefChangesGridNoSnap.js @@ -115,6 +115,7 @@ export default function ColDefChangesGridNoSnap() {
    Date: Thu, 4 Apr 2024 12:32:12 +0500 Subject: [PATCH 070/912] [DataGrid] Fix server-side filter demo not working (#12662) --- packages/x-data-grid-generator/src/hooks/useQuery.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-data-grid-generator/src/hooks/useQuery.ts b/packages/x-data-grid-generator/src/hooks/useQuery.ts index c888d14faa0e..c000f6cfab76 100644 --- a/packages/x-data-grid-generator/src/hooks/useQuery.ts +++ b/packages/x-data-grid-generator/src/hooks/useQuery.ts @@ -100,7 +100,7 @@ const getFilteredRows = ( return rows.filter((row: GridRowModel) => filterModel.items.every((_, index) => { const value = valueGetters[index](row); - return filterFunctions[index] === null ? true : filterFunctions[index]({ value }); + return filterFunctions[index] === null ? true : filterFunctions[index](value); }), ); }; From cd294ba9275da918294aec8f6c13f96ed32c6703 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 4 Apr 2024 12:32:50 +0500 Subject: [PATCH 071/912] [DataGrid] Allow higher packages' props to be used in MIT (#12365) --- .../src/models/dataGridPremiumProps.ts | 9 +++---- .../src/models/dataGridProProps.ts | 9 +++---- .../src/components/cell/GridCell.tsx | 9 ++++--- .../headerFiltering/useGridHeaderFiltering.ts | 20 ++++++++-------- .../useGridKeyboardNavigation.ts | 15 +++++++----- packages/x-data-grid/src/internals/index.ts | 2 ++ .../src/models/props/DataGridProps.ts | 24 +++++++++++++++++++ 7 files changed, 57 insertions(+), 31 deletions(-) diff --git a/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts b/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts index 329ce6cea092..b2f6e7975209 100644 --- a/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts +++ b/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts @@ -11,6 +11,7 @@ import { DataGridProPropsWithoutDefaultValue, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, + DataGridPremiumSharedPropsWithDefaultValue, } from '@mui/x-data-grid-pro/internals'; import type { GridRowGroupingModel } from '../hooks/features/rowGrouping'; import type { @@ -65,12 +66,8 @@ export type DataGridPremiumForcedPropsKey = 'signature'; * The controlled model do not have a default value at the prop processing level, so they must be defined in `DataGridOtherProps`. */ export interface DataGridPremiumPropsWithDefaultValue - extends DataGridProPropsWithDefaultValue { - /** - * If `true`, the cell selection mode is enabled. - * @default false - */ - cellSelection: boolean; + extends DataGridProPropsWithDefaultValue, + DataGridPremiumSharedPropsWithDefaultValue { /** * If `true`, aggregation is disabled. * @default false diff --git a/packages/x-data-grid-pro/src/models/dataGridProProps.ts b/packages/x-data-grid-pro/src/models/dataGridProProps.ts index e7425e47b4ac..b7a7430e4b3d 100644 --- a/packages/x-data-grid-pro/src/models/dataGridProProps.ts +++ b/packages/x-data-grid-pro/src/models/dataGridProProps.ts @@ -15,6 +15,7 @@ import { DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, GridPinnedColumnFields, + DataGridProSharedPropsWithDefaultValue, } from '@mui/x-data-grid/internals'; import type { GridPinnedRowsProp } from '../hooks/features/rowPinning'; import { GridApiPro } from './gridApiPro'; @@ -68,7 +69,8 @@ export type DataGridProForcedPropsKey = 'signature'; * The controlled model do not have a default value at the prop processing level, so they must be defined in `DataGridOtherProps` */ export interface DataGridProPropsWithDefaultValue - extends DataGridPropsWithDefaultValues { + extends DataGridPropsWithDefaultValues, + DataGridProSharedPropsWithDefaultValue { /** * Set the area in `px` at the bottom of the grid viewport where onRowsScrollEnd is called. * @default 80 @@ -132,11 +134,6 @@ export interface DataGridProPropsWithDefaultValue diff --git a/packages/x-data-grid/src/components/cell/GridCell.tsx b/packages/x-data-grid/src/components/cell/GridCell.tsx index 26ebc53d1ec8..a62c1aa9ace2 100644 --- a/packages/x-data-grid/src/components/cell/GridCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridCell.tsx @@ -31,7 +31,10 @@ import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { gridFocusCellSelector } from '../../hooks/features/focus/gridFocusStateSelector'; import { MissingRowIdError } from '../../hooks/features/rows/useGridParamsApi'; -import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; +import type { + DataGridProcessedProps, + DataGridProcessedPropsWithShared, +} from '../../models/props/DataGridProps'; import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils'; import { GridPinnedColumnPosition } from '../../hooks/features/columns/gridColumnsInterfaces'; @@ -77,6 +80,7 @@ export type GridCellProps = { type CellParamsWithAPI = GridCellParams & { api: GridApiCommunity; }; + const EMPTY_CELL_PARAMS: CellParamsWithAPI = { id: -1, field: '__unset__', @@ -176,7 +180,7 @@ const GridCell = React.forwardRef((props, ref) => } = props; const apiRef = useGridApiContext(); - const rootProps = useGridRootProps(); + const rootProps = useGridRootProps() as DataGridProcessedPropsWithShared; const field = column.field; @@ -257,7 +261,6 @@ const GridCell = React.forwardRef((props, ref) => const cellRef = React.useRef(null); const handleRef = useForkRef(ref, cellRef); const focusElementRef = React.useRef(null); - // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature const isSelectionMode = rootProps.cellSelection ?? false; const position = gridPinnedColumnPositionLookup[pinnedPosition]; diff --git a/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts b/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts index 007525abf67f..fccdbb154952 100644 --- a/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts +++ b/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; -import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; +import { DataGridProcessedPropsWithShared } from '../../../models/props/DataGridProps'; import { GridHeaderFilteringState } from '../../../models/gridHeaderFilteringModel'; import { useGridApiMethod } from '../../utils/useGridApiMethod'; import { GridStateInitializer } from '../../utils/useGridInitializeState'; @@ -15,19 +15,19 @@ import { GridHeaderFilteringPrivateApi, } from '../../../models/api/gridHeaderFilteringApi'; -export const headerFilteringStateInitializer: GridStateInitializer = (state, props) => ({ +export const headerFilteringStateInitializer: GridStateInitializer = ( + state, + props: DataGridProcessedPropsWithShared, +) => ({ ...state, - // @ts-expect-error Access `Pro` prop in MIT headerFiltering: { enabled: props.headerFilters ?? false, editing: null, menuOpen: null }, }); export const useGridHeaderFiltering = ( apiRef: React.MutableRefObject, - props: Pick, + props: Pick, ) => { const logger = useGridLogger(apiRef, 'useGridHeaderFiltering'); - // @ts-expect-error Access `Pro` prop in MIT - const isHeaderFilteringEnabled = props.headerFilters ?? false; const setHeaderFilterState = React.useCallback( (headerFilterState: Partial) => { apiRef.current.setState((state) => { @@ -39,7 +39,7 @@ export const useGridHeaderFiltering = ( return { ...state, headerFiltering: { - enabled: isHeaderFilteringEnabled ?? false, + enabled: props.headerFilters ?? false, editing: headerFilterState.editing ?? null, menuOpen: headerFilterState.menuOpen ?? null, }, @@ -47,7 +47,7 @@ export const useGridHeaderFiltering = ( }); apiRef.current.forceUpdate(); }, - [apiRef, props.signature, isHeaderFilteringEnabled], + [apiRef, props.signature, props.headerFilters], ); const startHeaderFilterEditMode = React.useCallback< @@ -129,7 +129,7 @@ export const useGridHeaderFiltering = ( if (isFirstRender.current) { isFirstRender.current = false; } else { - apiRef.current.setHeaderFilterState({ enabled: isHeaderFilteringEnabled }); + apiRef.current.setHeaderFilterState({ enabled: props.headerFilters ?? false }); } - }, [apiRef, isHeaderFilteringEnabled]); + }, [apiRef, props.headerFilters]); }; diff --git a/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts b/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts index cb8bdcfb4be9..1a2d4d606823 100644 --- a/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts +++ b/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts @@ -6,7 +6,7 @@ import { GridCellParams } from '../../../models/params/gridCellParams'; import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector'; import { useGridLogger } from '../../utils/useGridLogger'; import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler'; -import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; +import { DataGridProcessedPropsWithShared } from '../../../models/props/DataGridProps'; import { gridExpandedSortedRowEntriesSelector } from '../filter/gridFilterSelector'; import { useGridVisibleRows } from '../../utils/useGridVisibleRows'; import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSelectionColDef'; @@ -92,8 +92,13 @@ const getRightColumnIndex = ({ export const useGridKeyboardNavigation = ( apiRef: React.MutableRefObject, props: Pick< - DataGridProcessedProps, - 'pagination' | 'paginationMode' | 'getRowId' | 'experimentalFeatures' | 'signature' + DataGridProcessedPropsWithShared, + | 'pagination' + | 'paginationMode' + | 'getRowId' + | 'experimentalFeatures' + | 'signature' + | 'headerFilters' >, ): void => { const logger = useGridLogger(apiRef, 'useGridKeyboardNavigation'); @@ -105,9 +110,7 @@ export const useGridKeyboardNavigation = ( [apiRef, initialCurrentPageRows], ); - const headerFilteringEnabled = - // @ts-expect-error // TODO move relevant code to the `DataGridPro` - props.signature !== 'DataGrid' && props.headerFilters; + const headerFilteringEnabled = props.signature !== 'DataGrid' && props.headerFilters; /** * @param {number} colIndex Index of the column to focus diff --git a/packages/x-data-grid/src/internals/index.ts b/packages/x-data-grid/src/internals/index.ts index 1380dbf4d4c0..bee9fac100d2 100644 --- a/packages/x-data-grid/src/internals/index.ts +++ b/packages/x-data-grid/src/internals/index.ts @@ -130,6 +130,8 @@ export { useGridInitializeState } from '../hooks/utils/useGridInitializeState'; export type { GridStateInitializer } from '../hooks/utils/useGridInitializeState'; export type { + DataGridProSharedPropsWithDefaultValue, + DataGridPremiumSharedPropsWithDefaultValue, GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index de6ed4566803..47619a4c8db1 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -790,3 +790,27 @@ export interface DataGridPropsWithoutDefaultValue; } + +export interface DataGridProSharedPropsWithDefaultValue { + /** + * If `true`, enables the data grid filtering on header feature. + * @default false + */ + headerFilters: boolean; +} + +export interface DataGridPremiumSharedPropsWithDefaultValue { + /** + * If `true`, the cell selection mode is enabled. + * @default false + */ + cellSelection: boolean; +} + +/** + * Contains the commercial packages' props shared in the MIT version. + */ +export interface DataGridProcessedPropsWithShared + extends DataGridProcessedProps, + Partial, + Partial {} From 6e7c47861d638018257eff1a9906555003a37987 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 4 Apr 2024 10:11:26 +0200 Subject: [PATCH 072/912] [docs-infra] Adjust the links to search for issues (#11995) --- .github/ISSUE_TEMPLATE/1.bug.yml | 2 +- .github/ISSUE_TEMPLATE/2.feature.yml | 2 +- .github/ISSUE_TEMPLATE/3.pro-support.yml | 2 +- .github/ISSUE_TEMPLATE/4.premium-support.yml | 2 +- .github/ISSUE_TEMPLATE/5.priority-support.yml | 2 +- .github/ISSUE_TEMPLATE/6.docs-feedback.yml | 2 +- docs/data/introduction/support/support.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1.bug.yml b/.github/ISSUE_TEMPLATE/1.bug.yml index 24e3b54a8b5a..9f824d1be7f6 100644 --- a/.github/ISSUE_TEMPLATE/1.bug.yml +++ b/.github/ISSUE_TEMPLATE/1.bug.yml @@ -9,7 +9,7 @@ body: attributes: label: Search keywords description: | - Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues). + Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues?q=is%3Aissue). If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: validations: required: true diff --git a/.github/ISSUE_TEMPLATE/2.feature.yml b/.github/ISSUE_TEMPLATE/2.feature.yml index 6fc072dd7733..ea6b42d11ab9 100644 --- a/.github/ISSUE_TEMPLATE/2.feature.yml +++ b/.github/ISSUE_TEMPLATE/2.feature.yml @@ -9,7 +9,7 @@ body: attributes: label: Search keywords description: | - Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues). + Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues?q=is%3Aissue). If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: validations: required: true diff --git a/.github/ISSUE_TEMPLATE/3.pro-support.yml b/.github/ISSUE_TEMPLATE/3.pro-support.yml index c3ef5d1a3e07..e660e745d7b9 100644 --- a/.github/ISSUE_TEMPLATE/3.pro-support.yml +++ b/.github/ISSUE_TEMPLATE/3.pro-support.yml @@ -21,7 +21,7 @@ body: attributes: label: Search keywords description: | - Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues). + Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues?q=is%3Aissue). If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: validations: required: true diff --git a/.github/ISSUE_TEMPLATE/4.premium-support.yml b/.github/ISSUE_TEMPLATE/4.premium-support.yml index fb927c7619eb..b4a524402c27 100644 --- a/.github/ISSUE_TEMPLATE/4.premium-support.yml +++ b/.github/ISSUE_TEMPLATE/4.premium-support.yml @@ -21,7 +21,7 @@ body: attributes: label: Search keywords description: | - Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues). + Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues?q=is%3Aissue). If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: validations: required: true diff --git a/.github/ISSUE_TEMPLATE/5.priority-support.yml b/.github/ISSUE_TEMPLATE/5.priority-support.yml index f902b8ed2f40..e9deef0e72c6 100644 --- a/.github/ISSUE_TEMPLATE/5.priority-support.yml +++ b/.github/ISSUE_TEMPLATE/5.priority-support.yml @@ -11,7 +11,7 @@ body: attributes: label: Search keywords description: | - Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues). + Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues?q=is%3Aissue). If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: validations: required: true diff --git a/.github/ISSUE_TEMPLATE/6.docs-feedback.yml b/.github/ISSUE_TEMPLATE/6.docs-feedback.yml index fc4e40d1cc4f..61890d751baa 100644 --- a/.github/ISSUE_TEMPLATE/6.docs-feedback.yml +++ b/.github/ISSUE_TEMPLATE/6.docs-feedback.yml @@ -10,7 +10,7 @@ body: attributes: label: Search keywords description: | - Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues). + Your issue may have already been reported! First search for duplicates among the [existing issues](https://github.com/mui/mui-x/issues?q=is%3Aissue). If your issue isn't a duplicate, great! Please list the keywords you used so people in the future can find this one more easily: validations: required: true diff --git a/docs/data/introduction/support/support.md b/docs/data/introduction/support/support.md index 701c65e34bd5..1a9028d4a321 100644 --- a/docs/data/introduction/support/support.md +++ b/docs/data/introduction/support/support.md @@ -8,7 +8,7 @@ We use GitHub issues as a bug and feature request tracker. If you think you've found a bug, or you have a new feature idea: -1. Please start by [making sure it hasn't already been reported or fixed](https://github.com/mui/mui-x/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aclosed). +1. Please start by [making sure it hasn't already been reported or fixed](https://github.com/mui/mui-x/issues?q=is%3Aissue). You can search through existing issues and pull requests to see if someone has reported one similar to yours. 2. Then, if no duplicates exist, [open an issue](https://github.com/mui/mui-x/issues/new/choose) in the MUI X repository. From 4f36d646824fb576a9f8b41f47c8cbc7b91b8ef2 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 4 Apr 2024 10:30:18 +0200 Subject: [PATCH 073/912] [docs] Explain the use of `_action: 'delete'` in `processRowUpdate` (#12670) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Bilal Shafi --- docs/data/data-grid/editing/editing.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/data/data-grid/editing/editing.md b/docs/data/data-grid/editing/editing.md index fcf48175f9a4..74e94a5790d8 100644 --- a/docs/data/data-grid/editing/editing.md +++ b/docs/data/data-grid/editing/editing.md @@ -174,6 +174,24 @@ The value returned is used later as an argument on a call to `apiRef.current.upd /> ``` +If you want to delete a row from the internal state of the Data Grid, you can return an additional property `_action: 'delete'` in the row object from the `processRowUpdate` callback. This will remove the row from the internal state of the Data Grid. +It is a more performant way to delete a row as compared to updating the [`rows` prop](/x/react-data-grid/row-updates/#the-rows-prop) or using `setRows` API method because `processRowUpdate` uses the [`updateRows`](https://mui.com/x/react-data-grid/row-updates/#the-updaterows-method) under the hood which doesn't cause a full regeneration of the row tree. + +```tsx + { + if (shouldDeleteRow(updatedRow)) { + return { ...updatedRow, _action: 'delete' }; + } + return updatedRow; + }} +/> +``` + +In the example above, `shouldDeleteRow` is a function that determines whether a row should be deleted based on the updated row data. +If `shouldDeleteRow` returns `true`, the row will be deleted from the Data Grid's internal state. + ### Server-side validation If you need to cancel the save process on `processRowUpdate`—for instance, when a database validation fails, or the user wants to reject the changes—there are two options: From fdffa6a34ab5cd64802335794ad8f09ff3e38a55 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 4 Apr 2024 10:43:52 +0200 Subject: [PATCH 074/912] [TreeView] Create `RichTreeViewPro` component (#12610) Signed-off-by: Flavien DELANGLE Co-authored-by: Lukas --- docs/pages/_app.js | 1 + .../useLicenseVerifier/useLicenseVerifier.ts | 3 +- .../RichTreeViewPro/RichTreeViewPro.test.tsx | 20 +++ .../src/RichTreeViewPro/RichTreeViewPro.tsx | 159 ++++++++++++++++++ .../RichTreeViewPro/RichTreeViewPro.types.ts | 74 ++++++++ .../src/RichTreeViewPro/index.ts | 8 + .../RichTreeViewPro/richTreeViewProClasses.ts | 18 ++ packages/x-tree-view-pro/src/index.ts | 18 +- .../src/internals/plugins/defaultPlugins.ts | 52 ++++++ .../src/internals/plugins/index.ts | 2 + .../src/internals/utils/releaseInfo.ts | 15 ++ .../src/themeAugmentation/components.d.ts | 13 ++ .../src/themeAugmentation/index.js | 1 + .../src/themeAugmentation/index.ts | 3 + .../src/themeAugmentation/overrides.d.ts | 13 ++ .../src/themeAugmentation/props.d.ts | 12 ++ .../themeAugmentation.spec.ts | 26 +++ .../src/RichTreeView/RichTreeView.tsx | 5 +- .../src/SimpleTreeView/SimpleTreeView.tsx | 1 + packages/x-tree-view/src/internals/index.ts | 52 +++++- .../plugins/useTreeViewJSXItems/index.ts | 2 +- .../useTreeViewJSXItems.types.ts | 4 +- .../describeTreeView/describeTreeView.tsx | 75 +++++++++ 23 files changed, 562 insertions(+), 15 deletions(-) create mode 100644 packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.test.tsx create mode 100644 packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx create mode 100644 packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts create mode 100644 packages/x-tree-view-pro/src/RichTreeViewPro/index.ts create mode 100644 packages/x-tree-view-pro/src/RichTreeViewPro/richTreeViewProClasses.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/defaultPlugins.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/index.ts create mode 100644 packages/x-tree-view-pro/src/internals/utils/releaseInfo.ts create mode 100644 packages/x-tree-view-pro/src/themeAugmentation/components.d.ts create mode 100644 packages/x-tree-view-pro/src/themeAugmentation/index.js create mode 100644 packages/x-tree-view-pro/src/themeAugmentation/index.ts create mode 100644 packages/x-tree-view-pro/src/themeAugmentation/overrides.d.ts create mode 100644 packages/x-tree-view-pro/src/themeAugmentation/props.d.ts create mode 100644 packages/x-tree-view-pro/src/themeAugmentation/themeAugmentation.spec.ts diff --git a/docs/pages/_app.js b/docs/pages/_app.js index 06e3770e405c..8a648a3c9862 100644 --- a/docs/pages/_app.js +++ b/docs/pages/_app.js @@ -58,6 +58,7 @@ ponyfillGlobal.muiDocConfig = { '@mui/x-date-pickers-pro': getMuiPackageVersion('x-date-pickers-pro', muiCommitRef), '@mui/x-charts': getMuiPackageVersion('x-charts', muiCommitRef), '@mui/x-tree-view': getMuiPackageVersion('x-tree-view', muiCommitRef), + '@mui/x-tree-view-pro': getMuiPackageVersion('x-tree-view-pro', muiCommitRef), exceljs: 'latest', }; return output; diff --git a/packages/x-license/src/useLicenseVerifier/useLicenseVerifier.ts b/packages/x-license/src/useLicenseVerifier/useLicenseVerifier.ts index 890f40e341e3..8f69e15efa0a 100644 --- a/packages/x-license/src/useLicenseVerifier/useLicenseVerifier.ts +++ b/packages/x-license/src/useLicenseVerifier/useLicenseVerifier.ts @@ -16,7 +16,8 @@ import MuiLicenseInfoContext from '../Unstable_LicenseInfoProvider/MuiLicenseInf export type MuiCommercialPackageName = | 'x-data-grid-pro' | 'x-data-grid-premium' - | 'x-date-pickers-pro'; + | 'x-date-pickers-pro' + | 'x-tree-view-pro'; export const sharedLicenseStatuses: { [packageName in MuiCommercialPackageName]?: { diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.test.tsx b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.test.tsx new file mode 100644 index 000000000000..5957bddb6c87 --- /dev/null +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.test.tsx @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { createRenderer } from '@mui-internal/test-utils'; +import { + RichTreeViewPro, + richTreeViewProClasses as classes, +} from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { describeConformance } from 'test/utils/describeConformance'; + +describe('', () => { + const { render } = createRenderer(); + + describeConformance(, () => ({ + classes, + inheritComponent: 'ul', + render, + refInstanceof: window.HTMLUListElement, + muiName: 'MuiRichTreeViewPro', + skip: ['componentProp', 'componentsProp', 'themeVariants'], + })); +}); diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx new file mode 100644 index 000000000000..c2699d8d82c2 --- /dev/null +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx @@ -0,0 +1,159 @@ +import * as React from 'react'; +import { styled, useThemeProps } from '@mui/material/styles'; +import composeClasses from '@mui/utils/composeClasses'; +import { useLicenseVerifier, Watermark } from '@mui/x-license'; +import { useSlotProps } from '@mui/base/utils'; +import { TreeItem, TreeItemProps } from '@mui/x-tree-view/TreeItem'; +import { + useTreeView, + TreeViewProvider, + buildWarning, + extractPluginParamsFromProps, +} from '@mui/x-tree-view/internals'; +import { getRichTreeViewProUtilityClass } from './richTreeViewProClasses'; +import { + RichTreeViewProProps, + RichTreeViewProSlotProps, + RichTreeViewProSlots, +} from './RichTreeViewPro.types'; +import { DEFAULT_TREE_VIEW_PRO_PLUGINS } from '../internals/plugins'; +import { getReleaseInfo } from '../internals/utils/releaseInfo'; + +const useUtilityClasses = ( + ownerState: RichTreeViewProProps, +) => { + const { classes } = ownerState; + + const slots = { + root: ['root'], + }; + + return composeClasses(slots, getRichTreeViewProUtilityClass, classes); +}; + +export const RichTreeViewProRoot = styled('ul', { + name: 'MuiRichTreeViewPro', + slot: 'Root', + overridesResolver: (props, styles) => styles.root, +})<{ ownerState: RichTreeViewProProps }>({ + padding: 0, + margin: 0, + listStyle: 'none', + outline: 0, + position: 'relative', +}); + +type RichTreeViewProComponent = (( + props: RichTreeViewProProps & React.RefAttributes, +) => React.JSX.Element) & { propTypes?: any }; + +function WrappedTreeItem({ + slots, + slotProps, + label, + id, + itemId, + children, +}: Pick, 'slots' | 'slotProps'> & + Pick & { label: string }) { + const Item = slots?.item ?? TreeItem; + const itemProps = useSlotProps({ + elementType: Item, + externalSlotProps: slotProps?.item, + additionalProps: { itemId, id, label }, + ownerState: { itemId, label }, + }); + + return {children}; +} + +const releaseInfo = getReleaseInfo(); + +const childrenWarning = buildWarning([ + 'MUI X: The `RichTreeViewPro` component does not support JSX children.', + 'If you want to add items, you need to use the `items` prop', + 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/', +]); + +/** + * + * Demos: + * + * - [Tree View](https://mui.com/x/react-tree-view/) + * + * API: + * + * - [RichTreeView API](https://mui.com/x/api/tree-view/rich-tree-view/) + */ +const RichTreeViewPro = React.forwardRef(function RichTreeViewPro< + R extends {}, + Multiple extends boolean | undefined = undefined, +>(inProps: RichTreeViewProProps, ref: React.Ref) { + const props = useThemeProps({ props: inProps, name: 'MuiRichTreeViewPro' }); + + useLicenseVerifier('x-tree-view-pro', releaseInfo); + + if (process.env.NODE_ENV !== 'production') { + if ((props as any).children != null) { + childrenWarning(); + } + } + + const { pluginParams, slots, slotProps, otherProps } = extractPluginParamsFromProps< + typeof DEFAULT_TREE_VIEW_PRO_PLUGINS, + RichTreeViewProSlots, + RichTreeViewProSlotProps, + RichTreeViewProProps + >({ + props, + plugins: DEFAULT_TREE_VIEW_PRO_PLUGINS, + rootRef: ref, + }); + + const { getRootProps, contextValue, instance } = useTreeView(pluginParams); + + const classes = useUtilityClasses(props); + + const Root = slots?.root ?? RichTreeViewProRoot; + const rootProps = useSlotProps({ + elementType: Root, + externalSlotProps: slotProps?.root, + externalForwardedProps: otherProps, + className: classes.root, + getSlotProps: getRootProps, + ownerState: props as RichTreeViewProProps, + }); + + const itemsToRender = instance.getItemsToRender(); + + const renderItem = ({ + label, + itemId, + id, + children, + }: ReturnType[number]) => { + return ( + + {children?.map(renderItem)} + + ); + }; + + return ( + + + {itemsToRender.map(renderItem)} + + + + ); +}) as RichTreeViewProComponent; + +export { RichTreeViewPro }; diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts new file mode 100644 index 000000000000..5921da69be73 --- /dev/null +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts @@ -0,0 +1,74 @@ +import * as React from 'react'; +import { Theme } from '@mui/material/styles'; +import { SxProps } from '@mui/system'; +import { SlotComponentProps } from '@mui/base/utils'; +import { TreeItem, TreeItemProps } from '@mui/x-tree-view/TreeItem'; +import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; +import { TreeViewItemId } from '@mui/x-tree-view/models'; +import { TreeViewPublicAPI } from '@mui/x-tree-view/internals'; +import { RichTreeViewProClasses } from './richTreeViewProClasses'; +import { + DefaultTreeViewProPluginParameters, + DefaultTreeViewProPluginSlotProps, + DefaultTreeViewProPluginSlots, + DefaultTreeViewProPlugins, +} from '../internals/plugins/defaultPlugins'; + +interface RichTreeViewItemProSlotOwnerState { + itemId: TreeViewItemId; + label: string; +} + +export interface RichTreeViewProSlots extends DefaultTreeViewProPluginSlots { + /** + * Element rendered at the root. + * @default RichTreeViewProRoot + */ + root?: React.ElementType; + /** + * Custom component for the item. + * @default TreeItem. + */ + item?: React.JSXElementConstructor | React.JSXElementConstructor; +} + +export interface RichTreeViewProSlotProps + extends DefaultTreeViewProPluginSlotProps { + root?: SlotComponentProps<'ul', {}, RichTreeViewProProps>; + item?: SlotComponentProps; +} + +export type RichTreeViewProApiRef = React.MutableRefObject< + TreeViewPublicAPI | undefined +>; + +export interface RichTreeViewProPropsBase extends React.HTMLAttributes { + className?: string; + /** + * Override or extend the styles applied to the component. + */ + classes?: Partial; + /** + * The system prop that allows defining system overrides as well as additional CSS styles. + */ + sx?: SxProps; +} + +export interface RichTreeViewProProps + extends DefaultTreeViewProPluginParameters, + RichTreeViewProPropsBase { + /** + * Overridable component slots. + * @default {} + */ + slots?: RichTreeViewProSlots; + /** + * The props used for each component slot. + * @default {} + */ + slotProps?: RichTreeViewProSlotProps; + /** + * The ref object that allows Tree View manipulation. Can be instantiated with `useTreeViewApiRef()`. + */ + apiRef?: RichTreeViewProApiRef; +} diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/index.ts b/packages/x-tree-view-pro/src/RichTreeViewPro/index.ts new file mode 100644 index 000000000000..98a2e7b726ad --- /dev/null +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/index.ts @@ -0,0 +1,8 @@ +export * from './RichTreeViewPro'; +export * from './richTreeViewProClasses'; +export type { + RichTreeViewProProps, + RichTreeViewProPropsBase, + RichTreeViewProSlots, + RichTreeViewProSlotProps, +} from './RichTreeViewPro.types'; diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/richTreeViewProClasses.ts b/packages/x-tree-view-pro/src/RichTreeViewPro/richTreeViewProClasses.ts new file mode 100644 index 000000000000..72ba395e2c38 --- /dev/null +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/richTreeViewProClasses.ts @@ -0,0 +1,18 @@ +import generateUtilityClass from '@mui/utils/generateUtilityClass'; +import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; + +export interface RichTreeViewProClasses { + /** Styles applied to the root element. */ + root: string; +} + +export type RichTreeViewProClassKey = keyof RichTreeViewProClasses; + +export function getRichTreeViewProUtilityClass(slot: string): string { + return generateUtilityClass('MuiRichTreeViewPro', slot); +} + +export const richTreeViewProClasses: RichTreeViewProClasses = generateUtilityClasses( + 'MuiRichTreeViewPro', + ['root'], +); diff --git a/packages/x-tree-view-pro/src/index.ts b/packages/x-tree-view-pro/src/index.ts index a6b680db412a..cb79fa4f9128 100644 --- a/packages/x-tree-view-pro/src/index.ts +++ b/packages/x-tree-view-pro/src/index.ts @@ -1 +1,17 @@ -export * from '@mui/x-tree-view'; +// Tree View +export * from '@mui/x-tree-view/TreeView'; +export * from '@mui/x-tree-view/SimpleTreeView'; +export * from './RichTreeViewPro'; + +// Tree Item +export * from '@mui/x-tree-view/TreeItem'; +export * from '@mui/x-tree-view/TreeItem2'; +export * from '@mui/x-tree-view/useTreeItem2'; +export * from '@mui/x-tree-view/TreeItem2Icon'; +export * from '@mui/x-tree-view/TreeItem2Provider'; + +export { unstable_resetCleanupTracking } from '@mui/x-tree-view/internals'; + +export * from '@mui/x-tree-view/models'; +export * from '@mui/x-tree-view/icons'; +export * from '@mui/x-tree-view/hooks'; diff --git a/packages/x-tree-view-pro/src/internals/plugins/defaultPlugins.ts b/packages/x-tree-view-pro/src/internals/plugins/defaultPlugins.ts new file mode 100644 index 000000000000..8f12846c5043 --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/defaultPlugins.ts @@ -0,0 +1,52 @@ +import { + useTreeViewId, + UseTreeViewIdParameters, + useTreeViewItems, + UseTreeViewItemsParameters, + useTreeViewExpansion, + UseTreeViewExpansionParameters, + useTreeViewSelection, + UseTreeViewSelectionParameters, + useTreeViewFocus, + UseTreeViewFocusParameters, + useTreeViewKeyboardNavigation, + useTreeViewIcons, + UseTreeViewIconsParameters, + ConvertPluginsIntoSignatures, + MergePluginsProperty, +} from '@mui/x-tree-view/internals'; + +export const DEFAULT_TREE_VIEW_PRO_PLUGINS = [ + useTreeViewId, + useTreeViewItems, + useTreeViewExpansion, + useTreeViewSelection, + useTreeViewFocus, + useTreeViewKeyboardNavigation, + useTreeViewIcons, +] as const; + +export type DefaultTreeViewProPlugins = ConvertPluginsIntoSignatures< + typeof DEFAULT_TREE_VIEW_PRO_PLUGINS +>; + +export type DefaultTreeViewProPluginSlots = MergePluginsProperty< + DefaultTreeViewProPlugins, + 'slots' +>; + +export type DefaultTreeViewProPluginSlotProps = MergePluginsProperty< + DefaultTreeViewProPlugins, + 'slotProps' +>; + +// We can't infer this type from the plugin, otherwise we would lose the generics. +export interface DefaultTreeViewProPluginParameters< + R extends {}, + Multiple extends boolean | undefined, +> extends UseTreeViewIdParameters, + UseTreeViewItemsParameters, + UseTreeViewExpansionParameters, + UseTreeViewFocusParameters, + UseTreeViewSelectionParameters, + UseTreeViewIconsParameters {} diff --git a/packages/x-tree-view-pro/src/internals/plugins/index.ts b/packages/x-tree-view-pro/src/internals/plugins/index.ts new file mode 100644 index 000000000000..43574e246824 --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/index.ts @@ -0,0 +1,2 @@ +export { DEFAULT_TREE_VIEW_PRO_PLUGINS } from './defaultPlugins'; +export type { DefaultTreeViewProPlugins } from './defaultPlugins'; diff --git a/packages/x-tree-view-pro/src/internals/utils/releaseInfo.ts b/packages/x-tree-view-pro/src/internals/utils/releaseInfo.ts new file mode 100644 index 000000000000..2830a4fd656a --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/utils/releaseInfo.ts @@ -0,0 +1,15 @@ +import { ponyfillGlobal } from '@mui/utils'; + +export const getReleaseInfo = () => { + const releaseInfo = '__RELEASE_INFO__'; + if (process.env.NODE_ENV !== 'production') { + // A simple hack to set the value in the test environment (has no build step). + // eslint-disable-next-line no-useless-concat + if (releaseInfo === '__RELEASE' + '_INFO__') { + // eslint-disable-next-line no-underscore-dangle + return ponyfillGlobal.__MUI_RELEASE_INFO__; + } + } + + return releaseInfo; +}; diff --git a/packages/x-tree-view-pro/src/themeAugmentation/components.d.ts b/packages/x-tree-view-pro/src/themeAugmentation/components.d.ts new file mode 100644 index 000000000000..291c32a10688 --- /dev/null +++ b/packages/x-tree-view-pro/src/themeAugmentation/components.d.ts @@ -0,0 +1,13 @@ +import { ComponentsProps, ComponentsOverrides, ComponentsVariants } from '@mui/material/styles'; + +export interface TreeViewComponents { + MuiRichTreeViewPro?: { + defaultProps?: ComponentsProps['MuiRichTreeViewPro']; + styleOverrides?: ComponentsOverrides['MuiRichTreeViewPro']; + variants?: ComponentsVariants['MuiRichTreeViewPro']; + }; +} + +declare module '@mui/material/styles' { + interface Components extends TreeViewComponents {} +} diff --git a/packages/x-tree-view-pro/src/themeAugmentation/index.js b/packages/x-tree-view-pro/src/themeAugmentation/index.js new file mode 100644 index 000000000000..59eda67e09c6 --- /dev/null +++ b/packages/x-tree-view-pro/src/themeAugmentation/index.js @@ -0,0 +1 @@ +// Prefer to use `import type {} from '@mui/x-tree-view/themeAugmentation';` instead to avoid importing an empty file. diff --git a/packages/x-tree-view-pro/src/themeAugmentation/index.ts b/packages/x-tree-view-pro/src/themeAugmentation/index.ts new file mode 100644 index 000000000000..492f27d8f917 --- /dev/null +++ b/packages/x-tree-view-pro/src/themeAugmentation/index.ts @@ -0,0 +1,3 @@ +export * from './overrides'; +export * from './props'; +export * from './components'; diff --git a/packages/x-tree-view-pro/src/themeAugmentation/overrides.d.ts b/packages/x-tree-view-pro/src/themeAugmentation/overrides.d.ts new file mode 100644 index 000000000000..61e3ea9b379a --- /dev/null +++ b/packages/x-tree-view-pro/src/themeAugmentation/overrides.d.ts @@ -0,0 +1,13 @@ +import { RichTreeViewProClassKey } from '../RichTreeViewPro'; + +// prettier-ignore +export interface TreeViewComponentNameToClassKey { + MuiRichTreeViewPro: RichTreeViewProClassKey; +} + +declare module '@mui/material/styles' { + interface ComponentNameToClassKey extends TreeViewComponentNameToClassKey {} +} + +// disable automatic export +export {}; diff --git a/packages/x-tree-view-pro/src/themeAugmentation/props.d.ts b/packages/x-tree-view-pro/src/themeAugmentation/props.d.ts new file mode 100644 index 000000000000..75da97228e62 --- /dev/null +++ b/packages/x-tree-view-pro/src/themeAugmentation/props.d.ts @@ -0,0 +1,12 @@ +import { RichTreeViewProProps } from '../RichTreeViewPro'; + +export interface TreeViewComponentsPropsList { + MuiRichTreeViewPro: RichTreeViewProProps; +} + +declare module '@mui/material/styles' { + interface ComponentsPropsList extends TreeViewComponentsPropsList {} +} + +// disable automatic export +export {}; diff --git a/packages/x-tree-view-pro/src/themeAugmentation/themeAugmentation.spec.ts b/packages/x-tree-view-pro/src/themeAugmentation/themeAugmentation.spec.ts new file mode 100644 index 000000000000..81052765ceb4 --- /dev/null +++ b/packages/x-tree-view-pro/src/themeAugmentation/themeAugmentation.spec.ts @@ -0,0 +1,26 @@ +import { createTheme } from '@mui/material/styles'; +import { richTreeViewProClasses } from '../RichTreeViewPro'; + +createTheme({ + components: { + MuiRichTreeViewPro: { + defaultProps: { + defaultExpandedItems: ['root'], + // @ts-expect-error invalid MuiRichTreeViewPro prop + someRandomProp: true, + }, + styleOverrides: { + root: { + backgroundColor: 'red', + [`.${richTreeViewProClasses.root}`]: { + backgroundColor: 'green', + }, + }, + // @ts-expect-error invalid MuiRichTreeViewPro class key + main: { + backgroundColor: 'blue', + }, + }, + }, + }, +}); diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index d318156d22c6..20320b2a765c 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -33,9 +33,10 @@ export const RichTreeViewRoot = styled('ul', { margin: 0, listStyle: 'none', outline: 0, + position: 'relative', }); -type TreeViewComponent = (( +type RichTreeViewComponent = (( props: RichTreeViewProps & React.RefAttributes, ) => React.JSX.Element) & { propTypes?: any }; @@ -139,7 +140,7 @@ const RichTreeView = React.forwardRef(function RichTreeView< {itemsToRender.map(renderItem)} ); -}) as TreeViewComponent; +}) as RichTreeViewComponent; RichTreeView.propTypes = { // ----------------------------- Warning -------------------------------- diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx index 83d072c51046..2d8a9ea47c93 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx @@ -36,6 +36,7 @@ export const SimpleTreeViewRoot = styled('ul', { margin: 0, listStyle: 'none', outline: 0, + position: 'relative', }); type SimpleTreeViewComponent = (( diff --git a/packages/x-tree-view/src/internals/index.ts b/packages/x-tree-view/src/internals/index.ts index 13f393a2a829..c1ddf24a8274 100644 --- a/packages/x-tree-view/src/internals/index.ts +++ b/packages/x-tree-view/src/internals/index.ts @@ -1,8 +1,17 @@ export { useTreeView } from './useTreeView'; export { TreeViewProvider } from './TreeViewProvider'; -export type { TreeViewPlugin, TreeViewPluginSignature } from './models'; +export { unstable_resetCleanupTracking } from './hooks/useInstanceEventHandler'; +export type { + TreeViewPlugin, + TreeViewPluginSignature, + ConvertPluginsIntoSignatures, + MergePluginsProperty, + TreeViewPublicAPI, +} from './models'; + +// Plugins export { DEFAULT_TREE_VIEW_PLUGINS } from './plugins/defaultPlugins'; export type { DefaultTreeViewPlugins, @@ -10,13 +19,40 @@ export type { DefaultTreeViewPluginSlotProps, } from './plugins/defaultPlugins'; export type { DefaultTreeViewPluginParameters } from './plugins/defaultPlugins'; -export type { UseTreeViewExpansionSignature } from './plugins/useTreeViewExpansion'; -export type { UseTreeViewSelectionSignature } from './plugins/useTreeViewSelection'; -export type { UseTreeViewFocusSignature } from './plugins/useTreeViewFocus'; +export { useTreeViewExpansion } from './plugins/useTreeViewExpansion'; +export type { + UseTreeViewExpansionSignature, + UseTreeViewExpansionParameters, +} from './plugins/useTreeViewExpansion'; +export { useTreeViewSelection } from './plugins/useTreeViewSelection'; +export type { + UseTreeViewSelectionSignature, + UseTreeViewSelectionParameters, +} from './plugins/useTreeViewSelection'; +export { useTreeViewFocus } from './plugins/useTreeViewFocus'; +export type { + UseTreeViewFocusSignature, + UseTreeViewFocusParameters, +} from './plugins/useTreeViewFocus'; +export { useTreeViewKeyboardNavigation } from './plugins/useTreeViewKeyboardNavigation'; export type { UseTreeViewKeyboardNavigationSignature } from './plugins/useTreeViewKeyboardNavigation'; -export type { UseTreeViewIdSignature } from './plugins/useTreeViewId'; -export type { UseTreeViewIconsSignature } from './plugins/useTreeViewIcons'; -export type { UseTreeViewItemsSignature } from './plugins/useTreeViewItems'; -export type { UseTreeViewJSXItemsSignature } from './plugins/useTreeViewJSXItems'; +export { useTreeViewId } from './plugins/useTreeViewId'; +export type { UseTreeViewIdSignature, UseTreeViewIdParameters } from './plugins/useTreeViewId'; +export { useTreeViewIcons } from './plugins/useTreeViewIcons'; +export type { + UseTreeViewIconsSignature, + UseTreeViewIconsParameters, +} from './plugins/useTreeViewIcons'; +export { useTreeViewItems } from './plugins/useTreeViewItems'; +export type { + UseTreeViewItemsSignature, + UseTreeViewItemsParameters, +} from './plugins/useTreeViewItems'; +export { useTreeViewJSXItems } from './plugins/useTreeViewJSXItems'; +export type { + UseTreeViewJSXItemsSignature, + UseTreeViewJSXItemsParameters, +} from './plugins/useTreeViewJSXItems'; +export { buildWarning } from './utils/warning'; export { extractPluginParamsFromProps } from './utils/extractPluginParamsFromProps'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts index 1eff39d296b7..2e5130e10582 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/index.ts @@ -1,6 +1,6 @@ export { useTreeViewJSXItems } from './useTreeViewJSXItems'; export type { UseTreeViewJSXItemsSignature, - UseTreeViewItemsParameters, + UseTreeViewJSXItemsParameters, UseTreeViewItemsDefaultizedParameters, } from './useTreeViewJSXItems.types'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts index c219453ac6da..8cca1c9808d4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts @@ -8,12 +8,12 @@ export interface UseTreeViewItemsInstance { mapFirstCharFromJSX: (itemId: string, firstChar: string) => () => void; } -export interface UseTreeViewItemsParameters {} +export interface UseTreeViewJSXItemsParameters {} export interface UseTreeViewItemsDefaultizedParameters {} export type UseTreeViewJSXItemsSignature = TreeViewPluginSignature<{ - params: UseTreeViewItemsParameters; + params: UseTreeViewJSXItemsParameters; defaultizedParams: UseTreeViewItemsDefaultizedParameters; instance: UseTreeViewItemsInstance; dependantPlugins: [UseTreeViewItemsSignature, UseTreeViewKeyboardNavigationSignature]; diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index c0773c94df05..4a27c1d03647 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import createDescribe from '@mui-internal/test-utils/createDescribe'; import { createRenderer } from '@mui-internal/test-utils'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; @@ -129,6 +130,80 @@ const innerDescribeTreeView = ( testRunner({ render: renderRichTreeView, setup: 'RichTreeView + TreeItem2' }); }); + describe('RichTreeViewPro + TreeItem', () => { + const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ + items: rawItems, + slotProps, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const apiRef = { current: undefined }; + const result = render( + + ({ + ...slotProps?.item, + 'data-testid': ownerState.itemId, + }) as any, + }} + getItemLabel={(item) => item.label ?? item.id} + isItemDisabled={(item) => !!item.disabled} + {...other} + />, + ); + + return { + setProps: result.setProps, + apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + ...getUtils(result), + }; + }; + + testRunner({ render: renderRichTreeViewPro, setup: 'RichTreeView + TreeItem' }); + }); + + describe('RichTreeViewPro + TreeItem2', () => { + const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ + items: rawItems, + slots, + slotProps, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const apiRef = { current: undefined }; + const result = render( + + ({ + ...slotProps?.item, + 'data-testid': ownerState.itemId, + }) as any, + }} + getItemLabel={(item) => item.label ?? item.id} + isItemDisabled={(item) => !!item.disabled} + {...other} + />, + ); + + return { + setProps: result.setProps, + apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + ...getUtils(result), + }; + }; + + testRunner({ render: renderRichTreeViewPro, setup: 'RichTreeView + TreeItem2' }); + }); + describe('SimpleTreeView + TreeItem', () => { const renderSimpleTreeView: DescribeTreeViewRenderer = ({ items: rawItems, From f617d7032d26305445b83307f46df777979f82bf Mon Sep 17 00:00:00 2001 From: Eng Zer Jun Date: Thu, 4 Apr 2024 17:20:15 +0800 Subject: [PATCH 075/912] [docs] Fix type arguments in Custom Field page (#12619) Signed-off-by: Eng Zer Jun --- docs/data/date-pickers/custom-field/custom-field.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/data/date-pickers/custom-field/custom-field.md b/docs/data/date-pickers/custom-field/custom-field.md index 81438b384a3c..bb3301d7bf66 100644 --- a/docs/data/date-pickers/custom-field/custom-field.md +++ b/docs/data/date-pickers/custom-field/custom-field.md @@ -173,20 +173,22 @@ On the examples below, you can see that the typing of the props received by a cu ```tsx interface JoyDateFieldProps - extends UseDateFieldProps, // The headless field props + extends UseDateFieldProps, // The headless field props BaseSingleInputFieldProps< Dayjs | null, Dayjs, FieldSection, + false, // `true` for `enableAccessibleFieldDOMStructure` DateValidationError > {} // The DOM field props interface JoyDateTimeFieldProps - extends UseDateTimeFieldProps, // The headless field props + extends UseDateTimeFieldProps, // The headless field props BaseSingleInputFieldProps< Dayjs | null, Dayjs, FieldSection, + false, // `true` for `enableAccessibleFieldDOMStructure` DateTimeValidationError > {} // The DOM field props ``` From b6cdf15e0fcc5168a897bd8d0243fc3e6f31ede8 Mon Sep 17 00:00:00 2001 From: Jan Potoms <2109932+Janpot@users.noreply.github.com> Date: Thu, 4 Apr 2024 11:40:08 +0200 Subject: [PATCH 076/912] Update to new embedded translations in the docs package (#12232) --- docs/pages/_app.js | 11 ++- docs/translations/translations-zh.json | 97 -------------------------- docs/translations/translations.json | 97 -------------------------- 3 files changed, 10 insertions(+), 195 deletions(-) diff --git a/docs/pages/_app.js b/docs/pages/_app.js index 8a648a3c9862..a9db3930db71 100644 --- a/docs/pages/_app.js +++ b/docs/pages/_app.js @@ -20,6 +20,7 @@ import findActivePage from 'docs/src/modules/utils/findActivePage'; import { LicenseInfo } from '@mui/x-license'; import getProductInfoFromUrl from 'docs/src/modules/utils/getProductInfoFromUrl'; import { DocsProvider } from '@mui/docs/DocsProvider'; +import { mapTranslations } from '@mui/docs/i18n'; import config from '../config'; // Remove the license warning from demonstration purposes @@ -307,7 +308,11 @@ function AppWrapper(props) { - + @@ -350,6 +355,9 @@ MyApp.propTypes = { MyApp.getInitialProps = async ({ ctx, Component }) => { let pageProps = {}; + const req = require.context('../translations', false, /\.\/translations.*\.json$/); + const translations = mapTranslations(req); + if (Component.getInitialProps) { pageProps = await Component.getInitialProps(ctx); } @@ -357,6 +365,7 @@ MyApp.getInitialProps = async ({ ctx, Component }) => { return { pageProps: { userLanguage: ctx.query.userLanguage || 'en', + translations, ...pageProps, }, }; diff --git a/docs/translations/translations-zh.json b/docs/translations/translations-zh.json index 535081ba0f26..5952445f52cc 100644 --- a/docs/translations/translations-zh.json +++ b/docs/translations/translations-zh.json @@ -1,101 +1,4 @@ { - "adblock": "如果您不介意与技术相关的广告,并且支持开源代码,请在你的 ad blocker 中将 MUI 设置为白名单。", - "albumDescr": "这是一个包含了 hero 的单元和页脚的响应式相册 / 展览页面布局。", - "albumTitle": "相册", - "algoliaSearch": "搜索", - "blogDescr": "这是一个精致的博客页面布局。这个 Markdown 由 markdown-to-jsx 提供支持,但是这也不难替换。", - "blogTitle": "博客", - "cdn": "或者您也可以使用 CDN。", - "changeLanguage": "更改语言", - "checkoutDescr": "这是一个逐步建立的支付页面布局。您可以根据具体需求来调整步骤,或者只采用部分步骤。", - "checkoutTitle": "支付", - "close": "关闭", - "codesandbox": "在 CodeSandbox 中编辑", - "copiedSource": "源代码已被复制。", - "copiedSourceLink": "源代码的链接已被复制。", - "copySource": "复制源代码", - "copySourceLinkJS": "请将链接复制到 JavaScript 源代码", - "copySourceLinkTS": "请将链接复制到 TypeScript 源代码", - "dashboardDescr": "这是一个含有任务栏和迷你变体抽屉的最小化管理面板。这个图表由 Recharts 提供,但是很容易替换成其他的。", - "dashboardTitle": "管理面板", - "decreaseSpacing": "减少间距", - "demoToolbarLabel": "demo 源", - "diamondSponsors": "钻石赞助商", - "editPage": "编辑此页面", - "editWebsiteColors": "编辑网站的颜色", - "emojiLove": "喜爱", - "emoojiWarning": "警告", - "expandAll": "展开全部", - "footerCommunity": "社区", - "footerCompany": "企业", - "footerResources": "资源", - "getProfessionalSupport": "获取专业客服", - "getStarted": "快速上手", - "github": "GitHub 存储库", - "headTitle": "MUI:当下流行的 React UI 框架", - "helpToTranslate": "来帮助我们翻译吧", - "hideFullSource": "隐藏全部源代码", - "hideSource": "隐藏源代码", - "homeFooterRelease": "当前版本为 {{versionNumber}}。在 {{license}} 下发布。", - "homeQuickWord": "来自我们的赞助商的一个简短概括:", - "increaseSpacing": "增加间距", - "installation": "安装", - "installButton": "阅读安装文档", - "installDescr": "您可以通过 npm 安装 MUI 的源码。我们会负责引入样式。", - "joinThese": "一起加入这些或者其他的有名的组织中吧!", - "letUsKnow": "请告诉我们吧!", - "license": "MIT 许可证", - "likeMui": "请帮助我们继续运行把", - "loadFont": "加载默认的 Roboto 字体。", - "mainNavigation": "主导航", - "newest": "最新的", - "openDrawer": "打开主导航栏", - "pageTOC": "目录内容的页面", - "praise": "给 MUI 点赞", - "praiseDescr": "以下是一些我们用户的看法。", - "pricingDescr": "使用此页面布局,您可以快速的为潜在客户创建一个高效的价格表。", - "pricingTitle": "定价", - "resetDemo": "重置 demo", - "resetDensity": "重置密度", - "seeMore": "查看更多", - "showFullSource": "显示全部源代码", - "showJSSource": "显示 JavaScript 源代码", - "showSource": "查看源代码", - "showTSSource": "显示 TypeScript 源代码", - "signInDescr": "这是一个简单的登录页面。", - "signInSideDescr": "一个简单的侧边登录页面", - "signInSideTitle": "侧边页登录", - "signInTitle": "登录", - "signUpDescr": "一个简单的注册页面", - "signUpTitle": "注册", - "skipToContent": "跳转到内容", - "sourceCode": "源代码", - "spacingUnit": "间隔单元", - "stackblitz": "在 StackBlitz 中编辑(仅限JS)", - "stars": "GitHub 点赞数", - "stickyFooterDescr": "当页面内容比较简短的时候,在可视区域的底端附加上一个页脚。", - "stickyFooterTitle": "Sticky footer", - "strapline": "React 组件用于更快速、更简便的 web 开发。你也可以建立你自己的设计系统,或者从 Material Design 开始。", - "tableOfContents": "目录", - "thanks": "感谢!", - "themes": "高级版主题", - "themesButton": "浏览主题", - "themesDescr": "试一试我们的商城中的高级主题吧——它们均以 MUI 为基础,它们可以让你的项目更上一层楼。", - "toggleNotifications": "切换通知面板", - "toggleRTL": "从右到左 / 从左到右切换 ", - "toggleTheme": "在light(亮色)和dark(暗色)主题中切换", - "traffic": "流量", - "usage": "使用", - "usageButton": "探索文档", - "usageDescr": "MUI 组件无需任何额外的设置即可使用,并且不会影响全局变量。", - "useDarkTheme": "使用暗色主题", - "useHighDensity": "通过 props 来实现更高的密度值", - "usingMui": "您在使用 MUI 吗?", - "viewGitHub": "在 GitHub 中查看源代码", - "visit": "访问网站", - "whosUsing": "谁在使用 MUI 呢?", - "initialFocusLabel": "一个旨在测试我们的组件的键盘导航功能的程序化的通用容器", - "resetFocus": "重置焦点以测试键盘导航功能", "pages": { "/getting-started": "快速上手", "/getting-started/installation": "安装", diff --git a/docs/translations/translations.json b/docs/translations/translations.json index b2f8beef3526..2677973858de 100644 --- a/docs/translations/translations.json +++ b/docs/translations/translations.json @@ -1,101 +1,4 @@ { - "adblock": "If you don't mind tech related ads (no tracking or remarketing), and want to keep us running, please whitelist MUI in your blocker.", - "albumDescr": "A responsive album / gallery page layout with a hero unit and footer.", - "albumTitle": "Album", - "algoliaSearch": "Search", - "blogDescr": "A sophisticated blog page layout. Markdown support is courtesy of markdown-to-jsx but is easily replaced.", - "blogTitle": "Blog", - "cdn": "or use a CDN.", - "changeLanguage": "Change language", - "checkoutDescr": "A step-by-step checkout page layout. Adapt the number of steps to suit your needs, or make steps optional.", - "checkoutTitle": "Checkout", - "close": "Close", - "codesandbox": "Edit in CodeSandbox", - "copiedSource": "The source code has been copied.", - "copiedSourceLink": "Link to the source code has been copied.", - "copySource": "Copy the source", - "copySourceLinkJS": "Copy link to JavaScript source", - "copySourceLinkTS": "Copy link to TypeScript source", - "dashboardDescr": "A minimal dashboard with taskbar and mini variant draw. The chart is courtesy of Recharts, but it is simple to substitute an alternative.", - "dashboardTitle": "Dashboard", - "decreaseSpacing": "decrease spacing", - "demoToolbarLabel": "demo source", - "diamondSponsors": "Diamond Sponsors", - "editPage": "Edit this page", - "editWebsiteColors": "Edit website colors", - "emojiLove": "Love", - "emoojiWarning": "Warning", - "expandAll": "Expand all", - "footerCommunity": "Community", - "footerCompany": "Company", - "footerResources": "Resources", - "getProfessionalSupport": "Get Professional Support", - "getStarted": "Get Started", - "github": "GitHub repository", - "headTitle": "MUI: A popular React UI framework", - "helpToTranslate": "Help to translate", - "hideFullSource": "Hide the full source", - "hideSource": "Hide the source", - "homeFooterRelease": "Currently {{versionNumber}}. Released under the {{license}}.", - "homeQuickWord": "A quick word from our sponsors:", - "increaseSpacing": "increase spacing", - "installation": "Installation", - "installButton": "Read installation docs", - "installDescr": "Install MUI's source files via npm. We take care of injecting the CSS needed.", - "joinThese": "Join these and other great organisations!", - "letUsKnow": "Let us know!", - "license": "MIT License", - "likeMui": "Help us keep running", - "loadFont": "Load the default Roboto font.", - "mainNavigation": "Main navigation", - "newest": "Newest", - "openDrawer": "Open main navigation", - "pageTOC": "Page table of contents", - "praise": "Praise for MUI", - "praiseDescr": "Here's what some of our users are saying.", - "pricingDescr": "Quickly build an effective pricing table for your potential customers with this page layout.", - "pricingTitle": "Pricing", - "resetDemo": "Reset demo", - "resetDensity": "Reset density", - "seeMore": "See more", - "showFullSource": "Show the full source", - "showJSSource": "Show JavaScript source", - "showSource": "Show the source", - "showTSSource": "Show TypeScript source", - "signInDescr": "A simple Sign In page.", - "signInSideDescr": "A simple Sign In side page.", - "signInSideTitle": "Sign-in side", - "signInTitle": "Sign In", - "signUpDescr": "A simple Sign Up page.", - "signUpTitle": "Sign Up", - "skipToContent": "Skip to content", - "sourceCode": "Source code", - "spacingUnit": "Spacing unit", - "stackblitz": "Edit in StackBlitz (JS only)", - "stars": "GitHub stars", - "stickyFooterDescr": "Attach a footer to the bottom of the viewport when page content is short.", - "stickyFooterTitle": "Sticky footer", - "strapline": "React components for faster and easier web development. Build your own design system, or start with Material Design.", - "tableOfContents": "Contents", - "thanks": "Thank you!", - "themes": "Premium themes", - "themesButton": "Browse themes", - "themesDescr": "Take your project to the next level with premium themes from our store – all built on MUI.", - "toggleNotifications": "Toggle notifications panel", - "toggleRTL": "Toggle right-to-left/left-to-right", - "toggleTheme": "Toggle light/dark theme", - "traffic": "Traffic", - "usage": "Usage", - "usageButton": "Explore the docs", - "usageDescr": "MUI components work without any additional setup, and don't pollute the global scope.", - "useDarkTheme": "Use dark theme", - "useHighDensity": "Apply higher density via props", - "usingMui": "Are you using MUI?", - "viewGitHub": "View the source on GitHub", - "visit": "Visit the website", - "whosUsing": "Who's using MUI?", - "initialFocusLabel": "A generic container that is programmatically focused to test keyboard navigation of our components.", - "resetFocus": "Reset focus to test keyboard navigation", "pages": { "/getting-started": "Getting Started", "/getting-started/installation": "Installation", From ac02582bb4c394984ea67d9f61185dcf31c6a772 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Thu, 4 Apr 2024 06:49:11 -0400 Subject: [PATCH 077/912] [DataGrid] Remove GridFormatterParams completely (#12660) --- .../aggregation/AggregationValueFormatter.js | 2 +- .../aggregation/AggregationValueFormatter.tsx | 2 +- .../data-grid/grid-aggregation-function.json | 5 +--- .../aggregation/gridAggregationFunctions.ts | 9 ++++---- .../aggregation/gridAggregationInterfaces.ts | 14 +++-------- .../aggregation/wrapColumnWithAggregation.tsx | 7 +----- .../aggregation.DataGridPremium.test.tsx | 2 +- .../src/models/params/gridCellParams.ts | 23 ------------------- scripts/x-data-grid-premium.exports.json | 1 - scripts/x-data-grid-pro.exports.json | 1 - scripts/x-data-grid.exports.json | 1 - 11 files changed, 12 insertions(+), 55 deletions(-) diff --git a/docs/data/data-grid/aggregation/AggregationValueFormatter.js b/docs/data/data-grid/aggregation/AggregationValueFormatter.js index 955a77b5ec8a..4a44be9a698f 100644 --- a/docs/data/data-grid/aggregation/AggregationValueFormatter.js +++ b/docs/data/data-grid/aggregation/AggregationValueFormatter.js @@ -45,7 +45,7 @@ const firstAlphabeticalAggregation = { return sortedValue[0]; }, label: 'first alphabetical', - valueFormatter: (params) => `Agg: ${params.value}`, + valueFormatter: (value) => `Agg: ${value}`, columnTypes: ['string'], }; diff --git a/docs/data/data-grid/aggregation/AggregationValueFormatter.tsx b/docs/data/data-grid/aggregation/AggregationValueFormatter.tsx index 1a3f4c5a1c2f..e5be776393cb 100644 --- a/docs/data/data-grid/aggregation/AggregationValueFormatter.tsx +++ b/docs/data/data-grid/aggregation/AggregationValueFormatter.tsx @@ -48,7 +48,7 @@ const firstAlphabeticalAggregation: GridAggregationFunction `Agg: ${params.value}`, + valueFormatter: (value) => `Agg: ${value}`, columnTypes: ['string'], }; diff --git a/docs/pages/x/api/data-grid/grid-aggregation-function.json b/docs/pages/x/api/data-grid/grid-aggregation-function.json index 0f876a7766f6..9b9aa006a668 100644 --- a/docs/pages/x/api/data-grid/grid-aggregation-function.json +++ b/docs/pages/x/api/data-grid/grid-aggregation-function.json @@ -25,9 +25,6 @@ "default": "apiRef.current.getLocaleText('aggregationFunctionLabel{capitalize(name)})", "isPremiumPlan": true }, - "valueFormatter": { - "type": { "description": "(params: GridValueFormatterParams<AV>) => FAV" }, - "isPremiumPlan": true - } + "valueFormatter": { "type": { "description": "GridValueFormatter" }, "isPremiumPlan": true } } } diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationFunctions.ts b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationFunctions.ts index 1dae2269107d..78f2066d2734 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationFunctions.ts +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationFunctions.ts @@ -1,4 +1,3 @@ -import { GridValueFormatterParams } from '@mui/x-data-grid-pro'; import { isNumber } from '@mui/x-data-grid-pro/internals'; import { GridAggregationFunction } from './gridAggregationInterfaces'; @@ -80,12 +79,12 @@ const sizeAgg: GridAggregationFunction = { apply: ({ values }) => { return values.filter((value) => typeof value !== 'undefined').length; }, - valueFormatter: (params: GridValueFormatterParams) => { - if (params.value == null || !isNumber(params.value)) { - return params.value; + valueFormatter: (value: number | string | null) => { + if (value == null || !isNumber(value)) { + return value; } - return params.value.toLocaleString(); + return value.toLocaleString(); }, hasCellUnit: false, }; diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts index 03be19423308..82ecbce2fc1c 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts @@ -1,9 +1,4 @@ -import { - GridValueFormatterParams, - GridRowId, - GridRowModel, - GridColDef, -} from '@mui/x-data-grid-pro'; +import { GridRowId, GridRowModel, GridColDef, GridValueFormatter } from '@mui/x-data-grid-pro'; export interface GridAggregationState { model: GridAggregationModel; @@ -39,7 +34,7 @@ export interface GridAggregationGetCellValueParams { * @demos * - [Aggregation functions](/x/react-data-grid/aggregation/#aggregation-functions) */ -export interface GridAggregationFunction { +export interface GridAggregationFunction { /** * Function that takes the current cell values and generates the aggregated value. * @template V, AV @@ -61,11 +56,8 @@ export interface GridAggregationFunction { /** * Function that allows to apply a formatter to the aggregated value. * If not defined, the grid will use the formatter of the column. - * @template AV, F - * @param {GridValueFormatterParams} params Object containing parameters for the formatter. - * @returns {F} The formatted value. */ - valueFormatter?: (params: GridValueFormatterParams) => FAV; + valueFormatter?: GridValueFormatter; /** * Indicates if the aggregated value have the same unit as the cells used to generate it. * It can be used to apply a custom cell renderer only if the aggregated value has the same unit. diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx b/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx index b7030fb5b9c0..3b40db435437 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx @@ -78,12 +78,7 @@ const getAggregationValueWrappedValueFormatter: ColumnPropertyWrapper<'valueForm if (rowId != null) { const cellAggregationResult = getCellAggregationResult(rowId, column.field); if (cellAggregationResult != null) { - return aggregationRule.aggregationFunction.valueFormatter?.({ - id: rowId, - field: column.field, - value, - api: apiRef.current, - }); + return aggregationRule.aggregationFunction.valueFormatter?.(value, row, column, apiRef); } } diff --git a/packages/x-data-grid-premium/src/tests/aggregation.DataGridPremium.test.tsx b/packages/x-data-grid-premium/src/tests/aggregation.DataGridPremium.test.tsx index a950d6f5d382..deffec6d9b2f 100644 --- a/packages/x-data-grid-premium/src/tests/aggregation.DataGridPremium.test.tsx +++ b/packages/x-data-grid-premium/src/tests/aggregation.DataGridPremium.test.tsx @@ -641,7 +641,7 @@ describe(' - Aggregation', () => { it('should use the aggregation function valueFormatter if defined', () => { const customAggregationFunction: GridAggregationFunction = { apply: () => 'Agg value', - valueFormatter: (params) => `+ ${params.value}`, + valueFormatter: (value) => `+ ${value}`, }; render( diff --git a/packages/x-data-grid/src/models/params/gridCellParams.ts b/packages/x-data-grid/src/models/params/gridCellParams.ts index f0b18838440e..f0e1d9eafc60 100644 --- a/packages/x-data-grid/src/models/params/gridCellParams.ts +++ b/packages/x-data-grid/src/models/params/gridCellParams.ts @@ -108,29 +108,6 @@ export interface GridRenderEditCellParams< api: GridApiCommunity; } -/** - * Object passed as parameter in the column [[GridColDef]] value formatter callback. - */ -export interface GridValueFormatterParams { - /** - * The grid row id. - * It is not available when the value formatter is called by the filter panel. - */ - id?: GridRowId; - /** - * The column field of the cell that triggered the event. - */ - field: string; - /** - * The cell value, if the column has valueGetter it is the value returned by it. - */ - value: V; - /** - * GridApi that let you manipulate the grid. - */ - api: GridApiCommunity; -} - /** * Object passed as parameter in the column [[GridColDef]] edit cell props change callback. */ diff --git a/scripts/x-data-grid-premium.exports.json b/scripts/x-data-grid-premium.exports.json index 5641efdd4b4c..b82e069ad3be 100644 --- a/scripts/x-data-grid-premium.exports.json +++ b/scripts/x-data-grid-premium.exports.json @@ -588,7 +588,6 @@ { "name": "GridUpdateAction", "kind": "TypeAlias" }, { "name": "GridValidRowModel", "kind": "TypeAlias" }, { "name": "GridValueFormatter", "kind": "TypeAlias" }, - { "name": "GridValueFormatterParams", "kind": "Interface" }, { "name": "GridValueGetter", "kind": "TypeAlias" }, { "name": "GridValueOptionsParams", "kind": "Interface" }, { "name": "GridValueParser", "kind": "TypeAlias" }, diff --git a/scripts/x-data-grid-pro.exports.json b/scripts/x-data-grid-pro.exports.json index 44386f2892c8..676755c5d1b3 100644 --- a/scripts/x-data-grid-pro.exports.json +++ b/scripts/x-data-grid-pro.exports.json @@ -542,7 +542,6 @@ { "name": "GridUpdateAction", "kind": "TypeAlias" }, { "name": "GridValidRowModel", "kind": "TypeAlias" }, { "name": "GridValueFormatter", "kind": "TypeAlias" }, - { "name": "GridValueFormatterParams", "kind": "Interface" }, { "name": "GridValueGetter", "kind": "TypeAlias" }, { "name": "GridValueOptionsParams", "kind": "Interface" }, { "name": "GridValueParser", "kind": "TypeAlias" }, diff --git a/scripts/x-data-grid.exports.json b/scripts/x-data-grid.exports.json index f2755ff699be..16c223ee5de3 100644 --- a/scripts/x-data-grid.exports.json +++ b/scripts/x-data-grid.exports.json @@ -501,7 +501,6 @@ { "name": "GridUpdateAction", "kind": "TypeAlias" }, { "name": "GridValidRowModel", "kind": "TypeAlias" }, { "name": "GridValueFormatter", "kind": "TypeAlias" }, - { "name": "GridValueFormatterParams", "kind": "Interface" }, { "name": "GridValueGetter", "kind": "TypeAlias" }, { "name": "GridValueOptionsParams", "kind": "Interface" }, { "name": "GridValueParser", "kind": "TypeAlias" }, From b7848b46fcde4d2473e93744b4c905c24b2a84fd Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 4 Apr 2024 13:09:05 +0200 Subject: [PATCH 078/912] [core] Fix typo in `@mui/x-tree-view-pro/themeAugmentation` (#12674) --- packages/x-tree-view-pro/src/themeAugmentation/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-tree-view-pro/src/themeAugmentation/index.js b/packages/x-tree-view-pro/src/themeAugmentation/index.js index 59eda67e09c6..32fffa24956c 100644 --- a/packages/x-tree-view-pro/src/themeAugmentation/index.js +++ b/packages/x-tree-view-pro/src/themeAugmentation/index.js @@ -1 +1 @@ -// Prefer to use `import type {} from '@mui/x-tree-view/themeAugmentation';` instead to avoid importing an empty file. +// Prefer to use `import type {} from '@mui/x-tree-view-pro/themeAugmentation';` instead to avoid importing an empty file. From 38022a08b1bd36ebca9829c482fbbc2b22a6b447 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Thu, 4 Apr 2024 15:36:12 +0200 Subject: [PATCH 079/912] [docs] Make the Charts `margin` usage more visible (#12591) Signed-off-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Lukas Co-authored-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> --- .../charts/axis/MarginAndLabelPosition.js | 267 ++++++++++++++++++ .../charts/axis/MarginAndLabelPosition.tsx | 267 ++++++++++++++++++ docs/data/charts/axis/axis.md | 15 + .../charts/getting-started/getting-started.md | 13 + 4 files changed, 562 insertions(+) create mode 100644 docs/data/charts/axis/MarginAndLabelPosition.js create mode 100644 docs/data/charts/axis/MarginAndLabelPosition.tsx diff --git a/docs/data/charts/axis/MarginAndLabelPosition.js b/docs/data/charts/axis/MarginAndLabelPosition.js new file mode 100644 index 000000000000..1adfde47af84 --- /dev/null +++ b/docs/data/charts/axis/MarginAndLabelPosition.js @@ -0,0 +1,267 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; + +export default function MarginAndLabelPosition() { + const [fixMargin, setFixMargin] = React.useState(true); + const [fixLabel, setFixLabel] = React.useState(true); + + return ( + + + setFixMargin(event.target.checked)} /> + } + label="fix chart margin" + labelPlacement="end" + /> + setFixLabel(event.target.checked)} /> + } + label="fix axis label position" + labelPlacement="end" + /> + + + + context.location === 'tick' + ? value.split('').join('\n') + : usAirportPassengers.find((item) => item.code === value).fullName, + label: 'airports', + labelStyle: fixLabel + ? { + // Move the x-axis label with style + transform: 'translateY(30px)', + } + : {}, + }, + ]} + // Modify the margin + margin={fixMargin ? { top: 5, right: 5, bottom: 80, left: 100 } : undefined} + sx={ + fixLabel + ? { + [`.${axisClasses.left} .${axisClasses.label}`]: { + // Move the y-axis label with CSS + transform: 'translateX(-35px)', + }, + } + : {} + } + // Other props + height={300} + dataset={usAirportPassengers} + series={[ + { dataKey: '2018', label: '2018' }, + { dataKey: '2019', label: '2019' }, + { dataKey: '2020', label: '2020' }, + { dataKey: '2021', label: '2021' }, + { dataKey: '2022', label: '2022' }, + ]} + slotProps={{ legend: { hidden: true } }} + yAxis={[ + { + valueFormatter: (value) => `${(value / 1000).toLocaleString()}k`, + label: 'passengers', + }, + ]} + /> + + ); +} + +const usAirportPassengers = [ + { + fullName: 'Hartsfield–Jackson Atlanta International Airport', + code: 'ATL', + 2022: 45396001, + 2021: 36676010, + 2020: 20559866, + 2019: 53505795, + 2018: 51865797, + }, + { + fullName: 'Dallas/Fort Worth International Airport', + code: 'DFW', + 2022: 35345138, + 2021: 30005266, + 2020: 18593421, + 2019: 35778573, + 2018: 32821799, + }, + { + fullName: 'Denver International Airport', + code: 'DEN', + 2022: 33773832, + 2021: 28645527, + 2020: 16243216, + 2019: 33592945, + 2018: 31362941, + }, + { + fullName: "O'Hare International Airport", + code: 'ORD', + 2022: 33120474, + 2021: 26350976, + 2020: 14606034, + 2019: 40871223, + 2018: 39873927, + }, + { + fullName: 'Los Angeles International Airport', + code: 'LAX', + 2022: 32326616, + 2021: 23663410, + 2020: 14055777, + 2019: 42939104, + 2018: 42624050, + }, + { + fullName: 'John F. Kennedy International Airport', + code: 'JFK', + 2022: 26919982, + 2021: 15273342, + 2020: 8269819, + 2019: 31036655, + 2018: 30620769, + }, + { + fullName: 'Harry Reid International Airport', + code: 'LAS', + 2022: 25480500, + 2021: 19160342, + 2020: 10584059, + 2019: 24728361, + 2018: 23795012, + }, + { + fullName: 'Orlando International Airport', + code: 'MCO', + 2022: 24469733, + 2021: 19618838, + 2020: 10467728, + 2019: 24562271, + 2018: 23202480, + }, + { + fullName: 'Miami International Airport', + code: 'MIA', + 2022: 23949892, + 2021: 17500096, + 2020: 8786007, + 2019: 21421031, + 2018: 21021640, + }, + { + fullName: 'Charlotte Douglas International Airport', + code: 'CLT', + 2022: 23100300, + 2021: 20900875, + 2020: 12952869, + 2019: 24199688, + 2018: 22281949, + }, + { + fullName: 'Seattle–Tacoma International Airport', + code: 'SEA', + 2022: 22157862, + 2021: 17430195, + 2020: 9462411, + 2019: 25001762, + 2018: 24024908, + }, + { + fullName: 'Phoenix Sky Harbor International Airport', + code: 'PHX', + 2022: 21852586, + 2021: 18940287, + 2020: 10531436, + 2019: 22433552, + 2018: 21622580, + }, + { + fullName: 'Newark Liberty International Airport', + code: 'EWR', + 2022: 21572147, + 2021: 14514049, + 2020: 7985474, + 2019: 23160763, + 2018: 22797602, + }, + { + fullName: 'San Francisco International Airport', + code: 'SFO', + 2022: 20411420, + 2021: 11725347, + 2020: 7745057, + 2019: 27779230, + 2018: 27790717, + }, + { + fullName: 'George Bush Intercontinental Airport', + code: 'IAH', + 2022: 19814052, + 2021: 16242821, + 2020: 8682558, + 2019: 21905309, + 2018: 21157398, + }, + { + fullName: 'Logan International Airport', + code: 'BOS', + 2022: 17443775, + 2021: 10909817, + 2020: 6035452, + 2019: 20699377, + 2018: 20006521, + }, + { + fullName: 'Fort Lauderdale–Hollywood International Airport', + code: 'FLL', + 2022: 15370165, + 2021: 13598994, + 2020: 8015744, + 2019: 17950989, + 2018: 17612331, + }, + { + fullName: 'Minneapolis–Saint Paul International Airport', + code: 'MSP', + 2022: 15242089, + 2021: 12211409, + 2020: 7069720, + 2019: 19192917, + 2018: 18361942, + }, + { + fullName: 'LaGuardia Airport', + code: 'LGA', + 2022: 14367463, + 2021: 7827307, + 2020: 4147116, + 2019: 15393601, + 2018: 15058501, + }, + { + fullName: 'Detroit Metropolitan Airport', + code: 'DTW', + 2022: 13751197, + 2021: 11517696, + 2020: 6822324, + 2019: 18143040, + 2018: 17436837, + }, +]; diff --git a/docs/data/charts/axis/MarginAndLabelPosition.tsx b/docs/data/charts/axis/MarginAndLabelPosition.tsx new file mode 100644 index 000000000000..1b70a7c59f5f --- /dev/null +++ b/docs/data/charts/axis/MarginAndLabelPosition.tsx @@ -0,0 +1,267 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; + +export default function MarginAndLabelPosition() { + const [fixMargin, setFixMargin] = React.useState(true); + const [fixLabel, setFixLabel] = React.useState(true); + + return ( + + + setFixMargin(event.target.checked)} /> + } + label="fix chart margin" + labelPlacement="end" + /> + setFixLabel(event.target.checked)} /> + } + label="fix axis label position" + labelPlacement="end" + /> + + + + context.location === 'tick' + ? value.split('').join('\n') + : usAirportPassengers.find((item) => item.code === value)!.fullName, + label: 'airports', + labelStyle: fixLabel + ? { + // Move the x-axis label with style + transform: 'translateY(30px)', + } + : {}, + }, + ]} + // Modify the margin + margin={fixMargin ? { top: 5, right: 5, bottom: 80, left: 100 } : undefined} + sx={ + fixLabel + ? { + [`.${axisClasses.left} .${axisClasses.label}`]: { + // Move the y-axis label with CSS + transform: 'translateX(-35px)', + }, + } + : {} + } + // Other props + height={300} + dataset={usAirportPassengers} + series={[ + { dataKey: '2018', label: '2018' }, + { dataKey: '2019', label: '2019' }, + { dataKey: '2020', label: '2020' }, + { dataKey: '2021', label: '2021' }, + { dataKey: '2022', label: '2022' }, + ]} + slotProps={{ legend: { hidden: true } }} + yAxis={[ + { + valueFormatter: (value) => `${(value / 1000).toLocaleString()}k`, + label: 'passengers', + }, + ]} + /> + + ); +} + +const usAirportPassengers = [ + { + fullName: 'Hartsfield–Jackson Atlanta International Airport', + code: 'ATL', + 2022: 45396001, + 2021: 36676010, + 2020: 20559866, + 2019: 53505795, + 2018: 51865797, + }, + { + fullName: 'Dallas/Fort Worth International Airport', + code: 'DFW', + 2022: 35345138, + 2021: 30005266, + 2020: 18593421, + 2019: 35778573, + 2018: 32821799, + }, + { + fullName: 'Denver International Airport', + code: 'DEN', + 2022: 33773832, + 2021: 28645527, + 2020: 16243216, + 2019: 33592945, + 2018: 31362941, + }, + { + fullName: "O'Hare International Airport", + code: 'ORD', + 2022: 33120474, + 2021: 26350976, + 2020: 14606034, + 2019: 40871223, + 2018: 39873927, + }, + { + fullName: 'Los Angeles International Airport', + code: 'LAX', + 2022: 32326616, + 2021: 23663410, + 2020: 14055777, + 2019: 42939104, + 2018: 42624050, + }, + { + fullName: 'John F. Kennedy International Airport', + code: 'JFK', + 2022: 26919982, + 2021: 15273342, + 2020: 8269819, + 2019: 31036655, + 2018: 30620769, + }, + { + fullName: 'Harry Reid International Airport', + code: 'LAS', + 2022: 25480500, + 2021: 19160342, + 2020: 10584059, + 2019: 24728361, + 2018: 23795012, + }, + { + fullName: 'Orlando International Airport', + code: 'MCO', + 2022: 24469733, + 2021: 19618838, + 2020: 10467728, + 2019: 24562271, + 2018: 23202480, + }, + { + fullName: 'Miami International Airport', + code: 'MIA', + 2022: 23949892, + 2021: 17500096, + 2020: 8786007, + 2019: 21421031, + 2018: 21021640, + }, + { + fullName: 'Charlotte Douglas International Airport', + code: 'CLT', + 2022: 23100300, + 2021: 20900875, + 2020: 12952869, + 2019: 24199688, + 2018: 22281949, + }, + { + fullName: 'Seattle–Tacoma International Airport', + code: 'SEA', + 2022: 22157862, + 2021: 17430195, + 2020: 9462411, + 2019: 25001762, + 2018: 24024908, + }, + { + fullName: 'Phoenix Sky Harbor International Airport', + code: 'PHX', + 2022: 21852586, + 2021: 18940287, + 2020: 10531436, + 2019: 22433552, + 2018: 21622580, + }, + { + fullName: 'Newark Liberty International Airport', + code: 'EWR', + 2022: 21572147, + 2021: 14514049, + 2020: 7985474, + 2019: 23160763, + 2018: 22797602, + }, + { + fullName: 'San Francisco International Airport', + code: 'SFO', + 2022: 20411420, + 2021: 11725347, + 2020: 7745057, + 2019: 27779230, + 2018: 27790717, + }, + { + fullName: 'George Bush Intercontinental Airport', + code: 'IAH', + 2022: 19814052, + 2021: 16242821, + 2020: 8682558, + 2019: 21905309, + 2018: 21157398, + }, + { + fullName: 'Logan International Airport', + code: 'BOS', + 2022: 17443775, + 2021: 10909817, + 2020: 6035452, + 2019: 20699377, + 2018: 20006521, + }, + { + fullName: 'Fort Lauderdale–Hollywood International Airport', + code: 'FLL', + 2022: 15370165, + 2021: 13598994, + 2020: 8015744, + 2019: 17950989, + 2018: 17612331, + }, + { + fullName: 'Minneapolis–Saint Paul International Airport', + code: 'MSP', + 2022: 15242089, + 2021: 12211409, + 2020: 7069720, + 2019: 19192917, + 2018: 18361942, + }, + { + fullName: 'LaGuardia Airport', + code: 'LGA', + 2022: 14367463, + 2021: 7827307, + 2020: 4147116, + 2019: 15393601, + 2018: 15058501, + }, + { + fullName: 'Detroit Metropolitan Airport', + code: 'DTW', + 2022: 13751197, + 2021: 11517696, + 2020: 6822324, + 2019: 18143040, + 2018: 17436837, + }, +]; diff --git a/docs/data/charts/axis/axis.md b/docs/data/charts/axis/axis.md index 71cbc5d78c6e..c514ecf23580 100644 --- a/docs/data/charts/axis/axis.md +++ b/docs/data/charts/axis/axis.md @@ -175,6 +175,21 @@ At the bottom, you can see one tick for the beginning and the middle of the day You can further customize the axis rendering besides the axis definition. +### Fixing overflow issues + +If your tick labels are too long, they can either overflow the SVG or overlap with the axis label. +Resolving this can be achieved in two ways: + +- Increase the space between the SVG border and the axis by setting the [margin props](/x/react-charts/styling/#placement). +- Modify the axis label position by: + - Using the axis configuration `labelStyle.transform`. + - Applying CSS transform to the class name `axisClasses.label`. + +In the following demo, the margin is modified to provide more space to the x and y axes. +The x-axis label placement is based on the axis configuration, and the y-axis is placed using a CSS selector. + +{{"demo": "MarginAndLabelPosition.js"}} + ### Position Charts components provide 4 props: `topAxis`, `rightAxis`, `bottomAxis`, and `leftAxis` allowing to define the 4 axes of the chart. diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index edf2a310d677..7eea0dda7d14 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -108,6 +108,19 @@ Visit the [Composition page](/x/react-charts/composition/) for more details. {{"demo": "Combining.js"}} +### Positions + +Charts are composed of two main areas. +The SVG defined by its `width` and `height` delimits the available space. + +Within this SVG, a dedicated "drawing area" (aka "plot area") serves as the canvas for data representation. +Here, elements like lines, bars, and areas visually depict the information. +It's controlled by the `margin = {top, bottom, left, right}` object defining the margin between the SVG and the drawing area. + +The space left by margins can display axes, titles, a legend, or any other additional information. + +For more information about the position configuration, visit the [styling page](/x/react-charts/styling/#styling). + ## Axis management MUI X Charts have a flexible approach to axis management, supporting multiple-axis charts with any combination of scales and ranges. From d533964e284f1abf10255e1ff215d56673de1a94 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Thu, 4 Apr 2024 16:53:40 +0200 Subject: [PATCH 080/912] [charts] Fix typescript error when using `sx` property on ChartsTooltip (#12659) --- packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx | 11 +++++++++-- scripts/x-charts.exports.json | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx index 9af286fe77b6..937f3c79d542 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { styled, useThemeProps } from '@mui/material/styles'; -import { Popper, PopperProps } from '@mui/base/Popper'; +import { styled, useThemeProps, SxProps, Theme } from '@mui/material/styles'; +import { Popper, PopperProps as BasePopperProps } from '@mui/base/Popper'; import { NoSsr } from '@mui/base/NoSsr'; import { useSlotProps } from '@mui/base/utils'; import { @@ -21,6 +21,13 @@ import { ChartsItemContentProps, ChartsItemTooltipContent } from './ChartsItemTo import { ChartsAxisContentProps, ChartsAxisTooltipContent } from './ChartsAxisTooltipContent'; import { ChartsTooltipClasses, getChartsTooltipUtilityClass } from './chartsTooltipClasses'; +export type PopperProps = BasePopperProps & { + /** + * The system prop that allows defining system overrides as well as additional CSS styles. + */ + sx?: SxProps; +}; + export interface ChartsTooltipSlots { /** * Custom component for the tooltip popper. diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index 355468e12fa5..9e48f1f55049 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -227,6 +227,7 @@ { "name": "PiePlotSlots", "kind": "Interface" }, { "name": "PieSeriesType", "kind": "Interface" }, { "name": "PieValueType", "kind": "TypeAlias" }, + { "name": "PopperProps", "kind": "TypeAlias" }, { "name": "referenceLineClasses", "kind": "Variable" }, { "name": "ResponsiveChartContainer", "kind": "Variable" }, { "name": "ResponsiveChartContainerProps", "kind": "Interface" }, From 771a28782b3b145f01e7b3e61e74a836775625df Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Thu, 4 Apr 2024 14:13:08 -0400 Subject: [PATCH 081/912] [DataGrid] Restore main slot (#12657) --- .../virtualization/GridMainContainer.tsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx b/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx index 626aa4a544d2..047612a91fbd 100644 --- a/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx @@ -1,8 +1,16 @@ import * as React from 'react'; import { styled } from '@mui/system'; +import { DataGridProcessedProps } from '../../models/props/DataGridProps'; +import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes'; -const Element = styled('div')({ +type OwnerState = DataGridProcessedProps; + +const Element = styled('div', { + name: 'MuiDataGrid', + slot: 'Main', + overridesResolver: (props, styles) => styles.main, +})<{ ownerState: OwnerState }>({ flexGrow: 1, position: 'relative', overflow: 'hidden', @@ -15,9 +23,16 @@ export const GridMainContainer = React.forwardRef< }> >((props, ref) => { const ariaAttributes = useGridAriaAttributes(); + const rootProps = useGridRootProps(); return ( - + {props.children} ); From 0b1d5925944b1c538b89771382f0a2471f96b46f Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Fri, 5 Apr 2024 10:58:17 +0200 Subject: [PATCH 082/912] [charts] Fix Scatter series highlight when id is a `number` (#12677) --- .../charts-voronoi-handler.json | 4 +- .../ChartsVoronoiHandler.tsx | 46 +++++++++---------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/docs/translations/api-docs/charts/charts-voronoi-handler/charts-voronoi-handler.json b/docs/translations/api-docs/charts/charts-voronoi-handler/charts-voronoi-handler.json index 1e277962d2f4..7e41d310b338 100644 --- a/docs/translations/api-docs/charts/charts-voronoi-handler/charts-voronoi-handler.json +++ b/docs/translations/api-docs/charts/charts-voronoi-handler/charts-voronoi-handler.json @@ -4,8 +4,8 @@ "onItemClick": { "description": "Callback fired when clicking on a scatter item.", "typeDescriptions": { - "event": "Mouse event catched at the svg level", - "scatterItemIdentifier": "Identify whihc item got clicked" + "event": "Mouse event caught at the svg level", + "scatterItemIdentifier": "Identify which item got clicked" } }, "voronoiMaxRadius": { diff --git a/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx b/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx index 9bcb98600408..015229f63570 100644 --- a/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx +++ b/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx @@ -19,12 +19,14 @@ export type ChartsVoronoiHandlerProps = { voronoiMaxRadius?: number | undefined; /** * Callback fired when clicking on a scatter item. - * @param {MouseEvent} event Mouse event catched at the svg level - * @param {ScatterItemIdentifier} scatterItemIdentifier Identify whihc item got clicked + * @param {MouseEvent} event Mouse event caught at the svg level + * @param {ScatterItemIdentifier} scatterItemIdentifier Identify which item got clicked */ onItemClick?: (event: MouseEvent, scatterItemIdentifier: ScatterItemIdentifier) => void; }; +type VoronoiSeries = { seriesId: SeriesId; startIndex: number; endIndex: number }; + function ChartsVoronoiHandler(props: ChartsVoronoiHandlerProps) { const { voronoiMaxRadius, onItemClick } = props; const svgRef = React.useContext(SvgContext); @@ -33,9 +35,8 @@ function ChartsVoronoiHandler(props: ChartsVoronoiHandlerProps) { const { dispatch } = React.useContext(InteractionContext); const { series, seriesOrder } = React.useContext(SeriesContext).scatter ?? {}; - const voronoiRef = React.useRef< - Record & { delauney?: Delaunay } - >({}); + const voronoiRef = React.useRef>({}); + const delauneyRef = React.useRef | undefined>(undefined); const defaultXAxisId = xAxisIds[0]; const defaultYAxisId = yAxisIds[0]; @@ -68,13 +69,14 @@ function ChartsVoronoiHandler(props: ChartsVoronoiHandlerProps) { const seriesPoints = data.flatMap(({ x, y }) => [getXPosition(x), getYPosition(y)]); voronoiRef.current[seriesId] = { + seriesId, startIndex: points.length, endIndex: points.length + seriesPoints.length, }; points = points.concat(seriesPoints); }); - voronoiRef.current.delauney = new Delaunay(points); + delauneyRef.current = new Delaunay(points); }, [defaultXAxisId, defaultYAxisId, series, seriesOrder, xAxis, yAxis]); React.useEffect(() => { @@ -83,7 +85,7 @@ function ChartsVoronoiHandler(props: ChartsVoronoiHandlerProps) { return undefined; } - // TODO: A perf optimisation of voronoi could be to use the last point as the intial point for the next search. + // TODO: A perf optimisation of voronoi could be to use the last point as the initial point for the next search. function getClosestPoint( event: MouseEvent, ): @@ -100,40 +102,36 @@ function ChartsVoronoiHandler(props: ChartsVoronoiHandlerProps) { return 'outside-chart'; } - if (!voronoiRef.current.delauney) { + if (!delauneyRef.current) { return 'no-point-found'; } - const closestPointIndex = voronoiRef.current.delauney?.find(svgPoint.x, svgPoint.y); + const closestPointIndex = delauneyRef.current.find(svgPoint.x, svgPoint.y); if (closestPointIndex === undefined) { return 'no-point-found'; } - const seriesId = Object.keys(voronoiRef.current).find((id) => { - if (id === 'delauney') { - return false; - } - return ( - 2 * closestPointIndex >= voronoiRef.current[id].startIndex && - 2 * closestPointIndex < voronoiRef.current[id].endIndex - ); + const closestSeries = Object.values(voronoiRef.current).find((value) => { + return 2 * closestPointIndex >= value.startIndex && 2 * closestPointIndex < value.endIndex; }); - if (seriesId === undefined) { + + if (closestSeries === undefined) { return 'no-point-found'; } - const dataIndex = (2 * closestPointIndex - voronoiRef.current[seriesId].startIndex) / 2; + const dataIndex = + (2 * closestPointIndex - voronoiRef.current[closestSeries.seriesId].startIndex) / 2; if (voronoiMaxRadius !== undefined) { - const pointX = voronoiRef.current.delauney.points[2 * closestPointIndex]; - const pointY = voronoiRef.current.delauney.points[2 * closestPointIndex + 1]; + const pointX = delauneyRef.current.points[2 * closestPointIndex]; + const pointY = delauneyRef.current.points[2 * closestPointIndex + 1]; const dist2 = (pointX - svgPoint.x) ** 2 + (pointY - svgPoint.y) ** 2; if (dist2 > voronoiMaxRadius ** 2) { // The closest point is too far to be considered. return 'outside-voronoi-max-radius'; } } - return { seriesId, dataIndex }; + return { seriesId: closestSeries.seriesId, dataIndex }; } const handleMouseOut = () => { @@ -193,8 +191,8 @@ ChartsVoronoiHandler.propTypes = { // ---------------------------------------------------------------------- /** * Callback fired when clicking on a scatter item. - * @param {MouseEvent} event Mouse event catched at the svg level - * @param {ScatterItemIdentifier} scatterItemIdentifier Identify whihc item got clicked + * @param {MouseEvent} event Mouse event caught at the svg level + * @param {ScatterItemIdentifier} scatterItemIdentifier Identify which item got clicked */ onItemClick: PropTypes.func, /** From 04c72625e9ae218ea0ef0f7e290f9017f6c060a8 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 5 Apr 2024 12:23:54 +0300 Subject: [PATCH 083/912] v7.1.1 (#12681) Signed-off-by: Lukas Co-authored-by: Andrew Cherniavskii Co-authored-by: Flavien DELANGLE --- CHANGELOG.md | 173 +++++++++++++++++++- package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 4 +- packages/x-data-grid-premium/package.json | 8 +- packages/x-data-grid-pro/package.json | 6 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 6 +- packages/x-date-pickers/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 6 +- packages/x-tree-view/package.json | 2 +- 12 files changed, 193 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc6680381a8..1fcd37cfc7b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,107 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.1.1 + +_Apr 5, 2024_ + +We'd like to offer a big thanks to the 19 contributors who made this release possible. Here are some highlights ✨: + +- 🚀 Add `setItemExpansion` Tree View API method (#12595) @flaviendelangle +- 🌍 Improve Persian (fa-IR), Portuguese (pt-BR), and Spanish (es-ES) locale on the Data Grid +- 🌍 Improve Persian (fa-IR), Portuguese (pt-BR), and Ukrainian (uk-UA) locale on the Pickers +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@7.1.1` + +- [DataGrid] Allow higher packages' props to be used in MIT (#12365) @MBilalShafi +- [DataGrid] Fix RTL mode (#12583) @romgrk +- [DataGrid] Fix `ColDefChangesGridNoSnap` demo crash (#12663) @MBilalShafi +- [DataGrid] Fix server-side filter demo not working (#12662) @MBilalShafi +- [DataGrid] Log error if `rowCount` is used with client-side pagination (#12448) @michelengelen +- [DataGrid] Remove `GridFormatterParams` completely (#12660) @romgrk +- [DataGrid] Restore main slot (#12657) @romgrk +- [l10n] Improve Persian (fa-IR) locale (#12630) @amirhosseinzf +- [l10n] Improve Portuguese (pt-BR) locale (#12618) @hugoalkimim +- [l10n] Improve Spanish (es-ES) locale (#12606) @aitor40 + +#### `@mui/x-data-grid-pro@7.1.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.1.1`. + +#### `@mui/x-data-grid-premium@7.1.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.1.1`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.1.1` + +- [fields] Fix `readOnly` behavior (#12609) @LukasTy +- [l10n] Improve Persian (fa-IR) locale (#12632) @misafari +- [l10n] Improve Portuguese (pt-BR) locale (#12613) @cnHealth +- [l10n] Improve Ukrainian (uk-UA) locale (#12627) @alexkobylansky + +#### `@mui/x-date-pickers-pro@7.1.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.1.1`, plus: + +- [DateTimeRangePicker] Fix selection on same day (#12604) @LukasTy + +### Charts + +#### `@mui/x-charts@7.1.1` + +- [charts] Fix `tickInterval` usage for y-axis (#12592) @alexfauquette +- [charts] Fix Scatter series highlight when `id` is a `number` (#12677) @JCQuintas +- [charts] Fix TS error when using `sx` property on `ChartsTooltip` (#12659) @JCQuintas + +### Tree View + +#### `@mui/x-tree-view@7.1.1` + +- [TreeView] Add JSDoc to all `publicAPI` methods (#12649) @flaviendelangle +- [TreeView] Create `RichTreeViewPro` component (not released yet) (#12610) @flaviendelangle +- [TreeView] Create pro package (not released yet) (#12240) @flaviendelangle +- [TreeView] Fix typo in errors (#12623) @alissa-tung +- [TreeView] New API method: `setItemExpansion` (#12595) @flaviendelangle + +### Docs + +- [docs] Add a recipe for the `checkboxSelectionVisibleOnly` prop (#12646) @michelengelen +- [docs] Explain the use of `_action: 'delete'` in `processRowUpdate` (#12670) @michelengelen +- [docs] Fix formatting and typo on migration guide @oliviertassinari +- [docs] Fix formatting in changelog @oliviertassinari +- [docs] Fix grammar in TreeView migration doc (#12615) @joshkel +- [docs] Fix missing closing props in `PieShapeNoSnap` demo (#12636) @alp-ex +- [docs] Fix type arguments in Custom Field page (#12619) @Juneezee +- [docs] Fix typo in `getItemId` prop description (#12637) @flaviendelangle +- [docs] Make the Charts `margin` usage more visible (#12591) @alexfauquette +- [docs] Match IE 11 spacing with Material UI @oliviertassinari +- [docs] Move data grid interfaces to standard API page layout (#12016) @alexfauquette +- [docs] Remove ` around @default values (#12158) @alexfauquette +- [docs] Remove `day` from the default `dayOfWeekFormatter` function params (#12644) @LukasTy +- [docs] Use `TreeItem2` for icon expansion example on `RichTreeView` (#12563) @flaviendelangle + +### Core + +- [core] Add cherry-pick `master` to `v6` action (#12648) @LukasTy +- [core] Fix typo in `@mui/x-tree-view-pro/themeAugmentation` (#12674) @flaviendelangle +- [core] Introduce `describeTreeView` to run test on `SimpleTreeView` and `RichTreeView`, using `TreeItem` and `TreeItem2` + migrate expansion tests (#12428) @flaviendelangle +- [core] Limit `test-types` CI step allowed memory (#12651) @LukasTy +- [core] Remove explicit `express` package (#12602) @LukasTy +- [core] Update to new embedded translations in the docs package (#12232) @Janpot +- [core] Use PR labels to identify the package a `l10n` PR belongs to (#12639) @LukasTy +- [core] Use `describeTreeView` for selection tests (#12647) @flaviendelangle +- [docs-infra] Adjust the links to search for issues (#11995) @michelengelen +- [infra] Polish support survey experience (#12624) @oliviertassinari +- [support-infra] Replace author association with a permission check in survey action (#12068) @michelengelen +- [support-infra] Fix user permission check (#12669) @michelengelen +- [test] Fix Tree View test import (#12668) @LukasTy + ## 7.1.0 _Mar 28, 2024_ @@ -74,7 +175,7 @@ Same changes as in `@mui/x-date-pickers@7.1.0`, plus: - [core] Include `DateTimeRangePicker` tag in `releaseChangelog` (#12526) @LukasTy - [core] Upgrade monorepo (#12536) @cherniavskii -## v7.0.0 +## 7.0.0 _Mar 22, 2024_ @@ -2871,6 +2972,76 @@ Here is an example of the renaming for the `` component. - [core] Update release instructions as per v7 configuration (#10962) @MBilalShafi - [license] Correctly throw errors (#10924) @oliviertassinari +## 6.19.9 + +_Apr 5, 2024_ + +We'd like to offer a big thanks to the 3 contributors who made this release possible. Here are some highlights ✨: + +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@6.19.9` + +- [DataGrid] Remove legacy editing API event: `rowEditCommit` (#12087) @MBilalShafi + +#### `@mui/x-data-grid-pro@6.19.9` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@6.19.9`. + +#### `@mui/x-data-grid-premium@6.19.9` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@6.19.9`. + +### Date Pickers + +#### `@mui/x-date-pickers@6.19.9` + +No changes. + +#### `@mui/x-date-pickers-pro@6.19.9` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +- [DateRangePicker] Fix selection behavior with single input field when `readOnly` (#12605) @LukasTy + +### Docs + +- [docs] Add a recipe for the `checkboxSelectionVisibleOnly` prop (#12667) @michelengelen +- [docs] Explain the use of `_action: 'delete'` in `processRowUpdate` (#12673) @michelengelen + +### Core + +- [core] Use Circle CI context (#12607) @cherniavskii + +## 6.19.8 + +_Mar 20, 2024_ + +We'd like to offer a big thanks to the 3 contributors who made this release possible. + +### Data Grid + +#### `@mui/x-data-grid@6.19.8` + +- [DataGrid] Fix `ElementType` usage (#12505) @cherniavskii +- [DataGrid] Fix cell value formatting on copy (#12483) @sai6855 +- [DataGrid] Fix checkbox selection when filtering (#12485) @g1mishra + +#### `@mui/x-data-grid-pro@6.19.8` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@6.19.8`. + +#### `@mui/x-data-grid-premium@6.19.8` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@6.19.8`, plus: + +- [DataGridPremium] Add support for confirmation before clipboard paste (#12466) @cherniavskii + +### Docs + +- [docs] Update links to v7 (#12495) @cherniavskii + ## 6.19.7 _Mar 14, 2024_ diff --git a/package.json b/package.json index 4313c40a232e..a316b44687fd 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.1.0", + "version": "7.1.1", "private": true, "scripts": { "start": "yarn && yarn docs:dev", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 2538e1072853..17ed659a7446 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.1.0", + "version": "7.1.1", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index b08bfd399600..3c8e2381d077 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.0.0", + "version": "7.1.1", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", @@ -34,7 +34,7 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@mui/base": "^5.0.0-beta.40", - "@mui/x-data-grid-premium": "7.1.0", + "@mui/x-data-grid-premium": "7.1.1", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 21a3a670cd7b..c2eebed31acd 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.1.0", + "version": "7.1.1", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,9 +45,9 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.1.0", - "@mui/x-data-grid-pro": "7.1.0", - "@mui/x-license": "7.0.0", + "@mui/x-data-grid": "7.1.1", + "@mui/x-data-grid-pro": "7.1.1", + "@mui/x-license": "7.1.1", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "exceljs": "^4.4.0", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index cb657f877a22..a5692779a6b5 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.1.0", + "version": "7.1.1", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.1.0", - "@mui/x-license": "7.0.0", + "@mui/x-data-grid": "7.1.1", + "@mui/x-license": "7.1.1", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 328047af2423..acd366c96f3b 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.1.0", + "version": "7.1.1", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index d19dd4687345..848f8ed64ac8 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.1.0", + "version": "7.1.1", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-date-pickers": "7.1.0", - "@mui/x-license": "7.0.0", + "@mui/x-date-pickers": "7.1.1", + "@mui/x-license": "7.1.1", "clsx": "^2.1.0", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 4a02d63182b3..95560a7999f9 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.1.0", + "version": "7.1.1", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 0fb6503bafe3..5f42788179d0 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.0.0", + "version": "7.1.1", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 1f463cbdd531..7c206cb61686 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.0.1", + "version": "7.1.1", "private": true, "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", @@ -47,8 +47,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-license": "7.0.0", - "@mui/x-tree-view-pro": "7.0.1", + "@mui/x-license": "7.1.1", + "@mui/x-tree-view": "7.1.1", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 00f469bfc5f3..b3b3f32cccbb 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.1.0", + "version": "7.1.1", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From d69feafeb86714f30c69aa5a963d697ce5a584dd Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 5 Apr 2024 12:48:31 +0300 Subject: [PATCH 084/912] [core] Update Netlify release references in release README (#12687) Signed-off-by: Lukas --- scripts/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/README.md b/scripts/README.md index 677fec421dd6..416adebde670 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -52,8 +52,8 @@ Push the working branch on the documentation release branch to deploy the docume git push -f upstream master:docs-v7 ``` -You can follow the deployment process [on the Netlify Dashboard](https://app.netlify.com/sites/material-ui-x/deploys?filter=docs-next) -Once deployed, it will be accessible at https://material-ui-x.netlify.app/ for the `docs-next` deployment. +You can follow the deployment process [on the Netlify Dashboard](https://app.netlify.com/sites/material-ui-x/deploys?filter=docs-v7) +Once deployed, it will be accessible at https://material-ui-x.netlify.app/ for the `docs-v7` deployment. ### Publish GitHub release From 00b0415f344b5c7cb9eca1a5a9b96deffc219873 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 5 Apr 2024 14:19:33 +0200 Subject: [PATCH 085/912] [docs] Explain how to clip plots with composition (#12679) Signed-off-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Jose C Quintas Jr --- docs/data/charts/composition/LimitOverflow.js | 103 +++++++++++++++++ .../data/charts/composition/LimitOverflow.tsx | 107 ++++++++++++++++++ docs/data/charts/composition/composition.md | 35 ++++++ 3 files changed, 245 insertions(+) create mode 100644 docs/data/charts/composition/LimitOverflow.js create mode 100644 docs/data/charts/composition/LimitOverflow.tsx diff --git a/docs/data/charts/composition/LimitOverflow.js b/docs/data/charts/composition/LimitOverflow.js new file mode 100644 index 000000000000..afc7afdfa526 --- /dev/null +++ b/docs/data/charts/composition/LimitOverflow.js @@ -0,0 +1,103 @@ +import * as React from 'react'; +import Slider from '@mui/material/Slider'; +import Box from '@mui/material/Box'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import useId from '@mui/utils/useId'; + +import { ResponsiveChartContainer } from '@mui/x-charts/ResponsiveChartContainer'; +import { ScatterPlot } from '@mui/x-charts/ScatterChart'; +import { LinePlot, MarkPlot } from '@mui/x-charts/LineChart'; +import { ChartsClipPath } from '@mui/x-charts/ChartsClipPath'; +import { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'; +import { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'; +import { ChartsGrid } from '@mui/x-charts/ChartsGrid'; + +import { Chance } from 'chance'; + +const chance = new Chance(42); + +const data = Array.from({ length: 100 }, () => ({ + x: chance.floating({ min: -25, max: 25 }), + y: chance.floating({ min: -25, max: 25 }), +})).map((d, index) => ({ ...d, id: index })); + +const minDistance = 10; + +export default function LimitOverflow() { + const [isLimited, setIsLimited] = React.useState(false); + const [xLimits, setXLimites] = React.useState([-20, 20]); + + const id = useId(); + const clipPathId = `${id}-clip-path`; + + const handleChange = (event, newValue, activeThumb) => { + if (!Array.isArray(newValue)) { + return; + } + + if (newValue[1] - newValue[0] < minDistance) { + if (activeThumb === 0) { + const clamped = Math.min(newValue[0], 100 - minDistance); + setXLimites([clamped, clamped + minDistance]); + } else { + const clamped = Math.max(newValue[1], minDistance); + setXLimites([clamped - minDistance, clamped]); + } + } else { + setXLimites(newValue); + } + }; + + return ( + + setIsLimited(event.target.checked)} /> + } + label="Clip the plot" + labelPlacement="end" + /> + + + + + + + + + + {isLimited && } + + + + + ); +} diff --git a/docs/data/charts/composition/LimitOverflow.tsx b/docs/data/charts/composition/LimitOverflow.tsx new file mode 100644 index 000000000000..f2dd4454415f --- /dev/null +++ b/docs/data/charts/composition/LimitOverflow.tsx @@ -0,0 +1,107 @@ +import * as React from 'react'; +import Slider from '@mui/material/Slider'; +import Box from '@mui/material/Box'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import useId from '@mui/utils/useId'; + +import { ResponsiveChartContainer } from '@mui/x-charts/ResponsiveChartContainer'; +import { ScatterPlot } from '@mui/x-charts/ScatterChart'; +import { LinePlot, MarkPlot } from '@mui/x-charts/LineChart'; +import { ChartsClipPath } from '@mui/x-charts/ChartsClipPath'; +import { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'; +import { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'; +import { ChartsGrid } from '@mui/x-charts/ChartsGrid'; + +import { Chance } from 'chance'; + +const chance = new Chance(42); + +const data = Array.from({ length: 100 }, () => ({ + x: chance.floating({ min: -25, max: 25 }), + y: chance.floating({ min: -25, max: 25 }), +})).map((d, index) => ({ ...d, id: index })); + +const minDistance = 10; + +export default function LimitOverflow() { + const [isLimited, setIsLimited] = React.useState(false); + const [xLimits, setXLimites] = React.useState([-20, 20]); + + const id = useId(); + const clipPathId = `${id}-clip-path`; + + const handleChange = ( + event: Event, + newValue: number | number[], + activeThumb: number, + ) => { + if (!Array.isArray(newValue)) { + return; + } + + if (newValue[1] - newValue[0] < minDistance) { + if (activeThumb === 0) { + const clamped = Math.min(newValue[0], 100 - minDistance); + setXLimites([clamped, clamped + minDistance]); + } else { + const clamped = Math.max(newValue[1], minDistance); + setXLimites([clamped - minDistance, clamped]); + } + } else { + setXLimites(newValue as number[]); + } + }; + + return ( + + setIsLimited(event.target.checked)} /> + } + label="Clip the plot" + labelPlacement="end" + /> + + + + + + + + + + {isLimited && } + + + + + ); +} diff --git a/docs/data/charts/composition/composition.md b/docs/data/charts/composition/composition.md index 362e8f2bc6c2..4034aa4cf951 100644 --- a/docs/data/charts/composition/composition.md +++ b/docs/data/charts/composition/composition.md @@ -105,6 +105,41 @@ The order of elements in composition is the only way to define how they overlap. To display data, you have components named `` such as ``, ``, ``, ``, etc. +### Clipping + +To ensure chart elements stay confined to the designated drawing area, use the `ChartsClipPath` component. +This component defines a rectangular clip path that acts as a boundary. + +1. **Define the Clip Path**: Use `` to establish the clip path for the drawing area. `clipPathId` must be a unique identifier. +2. **Wrap the Chart**: Enclose the chart elements you want to clip within a `` element. Set the `clipPath` attribute to `url(#${clipPathId})` to reference the previously defined clip path. Example: ```` + +```jsx + + + // The plotting to clip in the drawing area. + + + + // Defines the clip path of the drawing area. + +``` + +The following demo allows you to toggle clipping for scatter and line plots. +Observe how line markers extend beyond the clip area, rendering on top of the axes. + +{{"demo": "LimitOverflow.js" }} + +:::warning +The provided demo is generating a unique ID with `useId()`. + +```js +const id = useId(); +const clipPathId = `${id}-clip-path`; +``` + +It's important to generate unique IDs for clip paths, especially when dealing with multiple charts on a page. Assigning a static ID like `"my-id"` would lead to conflicts. +::: + ### Axis To add axes, you can use `` and `` as defined in the [axis page](/x/react-charts/axis/#composition). From b51d1526d4d821d2131a9bf87ff9dbf29a34c377 Mon Sep 17 00:00:00 2001 From: BEL KHYATE FAROUK <72896094+FaroukBel@users.noreply.github.com> Date: Mon, 8 Apr 2024 08:31:39 +0000 Subject: [PATCH 086/912] [l10n] Improve French (fr-FR) locale (#12692) Signed-off-by: BEL KHYATE FAROUK <72896094+FaroukBel@users.noreply.github.com> Co-authored-by: alexandre --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/frFR.ts | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index fced02554cba..14aef62970d8 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -75,7 +75,7 @@ "languageTag": "fr-FR", "importName": "frFR", "localeName": "French", - "missingKeysCount": 15, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/frFR.ts" }, diff --git a/packages/x-date-pickers/src/locales/frFR.ts b/packages/x-date-pickers/src/locales/frFR.ts index a204a29377e4..05c5e3efe89b 100644 --- a/packages/x-date-pickers/src/locales/frFR.ts +++ b/packages/x-date-pickers/src/locales/frFR.ts @@ -25,10 +25,10 @@ const frFRPickers: Partial> = { // DateRange labels start: 'Début', end: 'Fin', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Date de début', + startTime: 'Heure de début', + endDate: 'Date de fin', + endTime: 'Heure de fin', // Action bar cancelButtonLabel: 'Annuler', @@ -67,7 +67,7 @@ const frFRPickers: Partial> = { value !== null && utils.isValid(value) ? `Choisir l'heure, l'heure sélectionnée est ${utils.format(value, 'fullTime')}` : "Choisir l'heure", - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Effacer la valeur', // Table labels timeTableLabel: "choix de l'heure", @@ -77,24 +77,24 @@ const frFRPickers: Partial> = { fieldYearPlaceholder: (params) => 'A'.repeat(params.digitAmount), fieldMonthPlaceholder: (params) => (params.contentType === 'letter' ? 'MMMM' : 'MM'), fieldDayPlaceholder: () => 'JJ', - // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE', + fieldWeekDayPlaceholder: (params) => (params.contentType === 'letter' ? 'EEEE' : 'EE'), fieldHoursPlaceholder: () => 'hh', fieldMinutesPlaceholder: () => 'mm', fieldSecondsPlaceholder: () => 'ss', fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Année', + month: 'Mois', + day: 'Jour', + weekDay: 'Jour de la semaine', + hours: 'Heures', + minutes: 'Minutes', + seconds: 'Secondes', + meridiem: 'Méridien', // Common - // empty: 'Empty', + empty: 'Vider', }; export const frFR = getPickersLocalization(frFRPickers); From acd41a2c0a2deb1d6a6b78403fb2bc5f6527dd55 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 8 Apr 2024 14:09:04 +0200 Subject: [PATCH 087/912] [core] Use `describeTreeView` for icons tests (#12672) Signed-off-by: Flavien DELANGLE Co-authored-by: Nora <72460825+noraleonte@users.noreply.github.com> --- .../src/RichTreeView/RichTreeView.types.ts | 10 +- .../src/TreeItem/TreeItem.test.tsx | 40 ---- .../x-tree-view/src/TreeItem2/TreeItem2.tsx | 6 +- .../useTreeViewExpansion.test.tsx | 2 +- .../useTreeViewIcons.test.tsx | 197 ++++++++++++++++++ .../useTreeViewSelection.test.tsx | 2 +- .../describeTreeView/describeTreeView.tsx | 48 +++-- .../describeTreeView.types.ts | 32 +-- .../utils/tree-view/describeTreeView/index.ts | 1 + 9 files changed, 257 insertions(+), 81 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts b/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts index 2687be9a9d65..a2ffd144c2f8 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts @@ -9,10 +9,10 @@ import { DefaultTreeViewPluginSlots, DefaultTreeViewPlugins, } from '../internals/plugins/defaultPlugins'; -import { TreeItem, TreeItemProps } from '../TreeItem'; +import { TreeItemProps } from '../TreeItem'; import { TreeItem2Props } from '../TreeItem2'; import { TreeViewItemId } from '../models'; -import { TreeViewPublicAPI } from '../internals/models'; +import { SlotComponentPropsFromProps, TreeViewPublicAPI } from '../internals/models'; interface RichTreeViewItemSlotOwnerState { itemId: TreeViewItemId; @@ -35,7 +35,11 @@ export interface RichTreeViewSlots extends DefaultTreeViewPluginSlots { export interface RichTreeViewSlotProps extends DefaultTreeViewPluginSlotProps { root?: SlotComponentProps<'ul', {}, RichTreeViewProps>; - item?: SlotComponentProps; + item?: SlotComponentPropsFromProps< + TreeItemProps | TreeItem2Props, + {}, + RichTreeViewItemSlotOwnerState + >; } export type RichTreeViewApiRef = React.MutableRefObject< diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 89697ecd54f0..3ca830125010 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -106,46 +106,6 @@ describe('', () => { expect(handleClick.callCount).to.equal(1); }); - it('should display the right icons', () => { - const { getByTestId } = render( -
    , - collapseIcon: () =>
    , - endIcon: () =>
    , - }} - defaultExpandedItems={['1']} - > - - -
    }} - /> -
    }} - /> - - - - - , - ); - - const getIcon = (testId) => getByTestId(testId).querySelector(`.${classes.iconContainer} div`); - - expect(getIcon('1')).attribute('data-test').to.equal('defaultCollapseIcon'); - expect(getIcon('2')).attribute('data-test').to.equal('defaultEndIcon'); - expect(getIcon('3')).attribute('data-test').to.equal('defaultExpandIcon'); - expect(getIcon('5')).attribute('data-test').to.equal('icon'); - expect(getIcon('6')).attribute('data-test').to.equal('endIcon'); - }); - it('should allow conditional child', () => { function TestComponent() { const [hide, setState] = React.useState(false); diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx index c0959fe8c69c..c48addd33328 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx @@ -157,6 +157,10 @@ const useUtilityClasses = (ownerState: TreeItem2OwnerState) => { return composeClasses(slots, getTreeItemUtilityClass, classes); }; +type TreeItem2Component = (( + props: TreeItem2Props & React.RefAttributes, +) => React.JSX.Element) & { propTypes?: any }; + /** * * Demos: @@ -264,7 +268,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( ); -}); +}) as TreeItem2Component; TreeItem2.propTypes = { // ----------------------------- Warning -------------------------------- diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx index 19828a91f5a4..f0b18b58c1f5 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx @@ -12,7 +12,7 @@ import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; * All tests related to keyboard navigation (e.g.: expanding using "Enter" and "ArrowRight") * are located in the `useTreeViewKeyboardNavigation.test.tsx` file. */ -describeTreeView( +describeTreeView<[UseTreeViewExpansionSignature]>( 'useTreeViewExpansion plugin', ({ render, setup }) => { describe('model props (expandedItems, defaultExpandedItems, onExpandedItemsChange)', () => { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx new file mode 100644 index 000000000000..a866127ab3cd --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx @@ -0,0 +1,197 @@ +import * as React from 'react'; +import { expect } from 'chai'; +import { + describeTreeView, + DescribeTreeViewRendererReturnValue, +} from 'test/utils/tree-view/describeTreeView'; +import { + UseTreeViewExpansionSignature, + UseTreeViewIconsSignature, +} from '@mui/x-tree-view/internals'; + +describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( + 'useTreeViewIcons plugin', + ({ render }) => { + describe('slots (expandIcon, collapseIcon, endIcon, icon)', () => { + const getIconTestId = (response: DescribeTreeViewRendererReturnValue<[]>, itemId: string) => + response.getItemIconContainer(itemId).querySelector(`div`)?.dataset.testid; + + it('should render the expandIcon slot defined on the tree if no icon slot is defined on the item and the item is collapsed', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + }); + + expect(getIconTestId(response, '1')).to.equal('treeExpandIcon'); + }); + + it('should render the collapseIcon slot defined on the tree if no icon is defined on the item and the item is expanded', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + defaultExpandedItems: ['1'], + }); + + expect(getIconTestId(response, '1')).to.equal('treeCollapseIcon'); + }); + + it('should render the endIcon slot defined on the tree if no icon is defined on the item and the item has no children', () => { + const response = render({ + items: [{ id: '1' }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + }); + + expect(getIconTestId(response, '1')).to.equal('treeEndIcon'); + }); + + it('should render the expandIcon slot defined on the item if the item is collapsed', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + slotProps: { + item: { + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + }, + }, + }); + + expect(getIconTestId(response, '1')).to.equal('itemExpandIcon'); + }); + + it('should render the collapseIcon slot defined on the item if the item is expanded', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + slotProps: { + item: { + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + }, + }, + defaultExpandedItems: ['1'], + }); + + expect(getIconTestId(response, '1')).to.equal('itemCollapseIcon'); + }); + + it('should render the endIcon slot defined on the tree if the item has no children', () => { + const response = render({ + items: [{ id: '1' }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + slotProps: { + item: { + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + }, + }, + }); + + expect(getIconTestId(response, '1')).to.equal('itemEndIcon'); + }); + + it('should render the icon slot defined on the item if the item is collapsed', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + slotProps: { + item: { + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + icon: () =>
    , + }, + }, + }, + }); + + expect(getIconTestId(response, '1')).to.equal('itemIcon'); + }); + + it('should render the icon slot defined on the item if the item is expanded', () => { + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + slotProps: { + item: { + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + icon: () =>
    , + }, + }, + }, + defaultExpandedItems: ['1'], + }); + + expect(getIconTestId(response, '1')).to.equal('itemIcon'); + }); + + it('should render the icon slot defined on the item if the item has no children', () => { + const response = render({ + items: [{ id: '1' }], + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + }, + slotProps: { + item: { + slots: { + expandIcon: () =>
    , + collapseIcon: () =>
    , + endIcon: () =>
    , + icon: () =>
    , + }, + }, + }, + }); + + expect(getIconTestId(response, '1')).to.equal('itemIcon'); + }); + }); + }, +); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx index 249ac91c9c63..c6d5e885ec2c 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx @@ -8,7 +8,7 @@ import { UseTreeViewSelectionSignature } from '@mui/x-tree-view/internals'; * All tests related to keyboard navigation (e.g.: selection using "Space") * are located in the `useTreeViewKeyboardNavigation.test.tsx` file. */ -describeTreeView('useTreeViewSelection plugin', ({ render }) => { +describeTreeView<[UseTreeViewSelectionSignature]>('useTreeViewSelection plugin', ({ render }) => { describe('model props (selectedItems, defaultSelectedItems, onSelectedItemsChange)', () => { it('should not select items when no default state and no control state are defined', () => { const response = render({ diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 4a27c1d03647..5dc84c400887 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -15,15 +15,15 @@ import { DescribeTreeViewItem, } from './describeTreeView.types'; -const innerDescribeTreeView = ( +const innerDescribeTreeView = ( message: string, - testRunner: DescribeTreeViewTestRunner, + testRunner: DescribeTreeViewTestRunner, ): void => { const { render } = createRenderer(); const getUtils = ( result: MuiRenderResult, - ): Omit, 'setProps' | 'apiRef'> => { + ): Omit, 'setProps' | 'apiRef'> => { const getRoot = () => result.getByRole('tree'); const getAllItemRoots = () => result.queryAllByRole('treeitem'); @@ -57,7 +57,7 @@ const innerDescribeTreeView = ( describe(message, () => { describe('RichTreeView + TreeItem', () => { - const renderRichTreeView: DescribeTreeViewRenderer = ({ + const renderRichTreeView: DescribeTreeViewRenderer = ({ items: rawItems, slotProps, ...other @@ -84,7 +84,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, - apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; }; @@ -93,7 +93,7 @@ const innerDescribeTreeView = ( }); describe('RichTreeView + TreeItem2', () => { - const renderRichTreeView: DescribeTreeViewRenderer = ({ + const renderRichTreeView: DescribeTreeViewRenderer = ({ items: rawItems, slots, slotProps, @@ -122,7 +122,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, - apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; }; @@ -131,7 +131,7 @@ const innerDescribeTreeView = ( }); describe('RichTreeViewPro + TreeItem', () => { - const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ + const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ items: rawItems, slotProps, ...other @@ -158,7 +158,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, - apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; }; @@ -167,7 +167,7 @@ const innerDescribeTreeView = ( }); describe('RichTreeViewPro + TreeItem2', () => { - const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ + const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ items: rawItems, slots, slotProps, @@ -196,7 +196,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, - apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; }; @@ -205,9 +205,10 @@ const innerDescribeTreeView = ( }); describe('SimpleTreeView + TreeItem', () => { - const renderSimpleTreeView: DescribeTreeViewRenderer = ({ + const renderSimpleTreeView: DescribeTreeViewRenderer = ({ items: rawItems, slots, + slotProps, ...other }) => { const items = rawItems as readonly DescribeTreeViewItem[]; @@ -221,20 +222,21 @@ const innerDescribeTreeView = ( disabled={item.disabled} data-testid={item.id} key={item.id} + {...slotProps?.item} > {item.children?.map(renderItem)} ); const result = render( - + {items.map(renderItem)} , ); return { setProps: result.setProps, - apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; }; @@ -243,9 +245,10 @@ const innerDescribeTreeView = ( }); describe('SimpleTreeView + TreeItem2', () => { - const renderSimpleTreeView: DescribeTreeViewRenderer = ({ + const renderSimpleTreeView: DescribeTreeViewRenderer = ({ items: rawItems, slots, + slotProps, ...other }) => { const items = rawItems as readonly DescribeTreeViewItem[]; @@ -259,20 +262,21 @@ const innerDescribeTreeView = ( disabled={item.disabled} data-testid={item.id} key={item.id} + {...slotProps?.item} > {item.children?.map(renderItem)} ); const result = render( - + {items.map(renderItem)} , ); return { setProps: result.setProps, - apiRef: apiRef as { current: TreeViewPublicAPI<[TPlugin]> }, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; }; @@ -282,15 +286,15 @@ const innerDescribeTreeView = ( }); }; -type Params = [ +type Params = [ string, - DescribeTreeViewTestRunner, + DescribeTreeViewTestRunner, ]; type DescribeTreeView = { -

    (...args: Params

    ): void; - skip:

    (...args: Params

    ) => void; - only:

    (...args: Params

    ) => void; + (...args: Params): void; + skip: (...args: Params) => void; + only: (...args: Params) => void; }; /** diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index abe8936e2bd9..017aa8906f99 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -1,26 +1,28 @@ import * as React from 'react'; import { + MergePluginsProperty, TreeViewAnyPluginSignature, TreeViewPublicAPI, - TreeViewUsedParams, } from '@mui/x-tree-view/internals/models'; import { TreeItemProps } from '@mui/x-tree-view/TreeItem'; import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; -export type DescribeTreeViewTestRunner = ( - params: DescribeTreeViewTestRunnerParams, +export type DescribeTreeViewTestRunner = ( + params: DescribeTreeViewTestRunnerParams, ) => void; -export interface DescribeTreeViewRendererReturnValue { +export interface DescribeTreeViewRendererReturnValue< + TPlugins extends TreeViewAnyPluginSignature[], +> { /** * Passes new props to the Tree View. * @param {Partial>} props A subset of the props accepted by the Tree View. */ - setProps: (props: Partial>) => void; + setProps: (props: Partial>) => void; /** * The ref object that allows Tree View manipulation. */ - apiRef: { current: TreeViewPublicAPI<[TPlugin]> }; + apiRef: { current: TreeViewPublicAPI }; /** * Returns the `root` slot of the Tree View. * @returns {HTMLElement} `root` slot of the Tree View. @@ -71,19 +73,23 @@ export interface DescribeTreeViewRendererReturnValue boolean; } -export type DescribeTreeViewRenderer = < +export type DescribeTreeViewRenderer = < R extends DescribeTreeViewItem, >( params: { items: readonly R[]; - } & Omit, 'slots' | 'slotProps'> & { - slots?: TreeViewUsedParams['slots'] & { item?: React.ElementType }; - slotProps?: TreeViewUsedParams['slots'] & { item?: TreeItemProps | TreeItem2Props }; + } & Omit, 'slots' | 'slotProps'> & { + slots?: MergePluginsProperty & { + item?: React.ElementType; + }; + slotProps?: MergePluginsProperty & { + item?: Partial | Partial; + }; }, -) => DescribeTreeViewRendererReturnValue; +) => DescribeTreeViewRendererReturnValue; -interface DescribeTreeViewTestRunnerParams { - render: DescribeTreeViewRenderer; +interface DescribeTreeViewTestRunnerParams { + render: DescribeTreeViewRenderer; setup: | 'SimpleTreeView + TreeItem' | 'SimpleTreeView + TreeItem2' diff --git a/test/utils/tree-view/describeTreeView/index.ts b/test/utils/tree-view/describeTreeView/index.ts index 5eba1f6c9165..4459a7a95583 100644 --- a/test/utils/tree-view/describeTreeView/index.ts +++ b/test/utils/tree-view/describeTreeView/index.ts @@ -1 +1,2 @@ export { describeTreeView } from './describeTreeView'; +export type { DescribeTreeViewRendererReturnValue } from './describeTreeView.types'; From e3f6d433cd2aa15cbd770c3411196a523006242c Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 8 Apr 2024 14:09:17 +0200 Subject: [PATCH 088/912] [TreeView] Return `instance` and `publicAPI` methods from plugin and populate the main objects inside `useTreeView` (#12650) --- .../headless/LogExpandedItems.js | 2 ++ .../headless/LogExpandedItems.tsx | 2 ++ .../rich-tree-view/headless/headless.md | 20 +++++++++++-- .../useTreeViewInstanceEvents.ts | 15 +++++----- .../src/internals/models/plugin.ts | 7 +++-- .../useTreeViewExpansion.ts | 23 +++++++------- .../useTreeViewFocus/useTreeViewFocus.ts | 24 +++++++-------- .../plugins/useTreeViewId/useTreeViewId.ts | 10 +++---- .../useTreeViewItems/useTreeViewItems.ts | 30 ++++++++----------- .../useTreeViewJSXItems.tsx | 13 ++++---- .../useTreeViewKeyboardNavigation.ts | 11 +++---- .../useTreeViewSelection.ts | 22 +++++--------- .../src/internals/useTreeView/useTreeView.ts | 30 +++++++++++-------- .../useTreeView/useTreeView.utils.ts | 21 +------------ 14 files changed, 111 insertions(+), 119 deletions(-) diff --git a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js index a9b775cd40e2..33cca94e5ef0 100644 --- a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js +++ b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.js @@ -21,6 +21,8 @@ const useTreeViewLogExpanded = ({ params, models }) => { params.logMessage(`Expanded items: ${expandedStr}`); } }, [expandedStr]); // eslint-disable-line react-hooks/exhaustive-deps + + return {}; }; // Sets the default value of this plugin parameters. diff --git a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx index 67d52862b7ca..25a1912754d3 100644 --- a/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx +++ b/docs/data/tree-view/rich-tree-view/headless/LogExpandedItems.tsx @@ -52,6 +52,8 @@ const useTreeViewLogExpanded: TreeViewPlugin = ({ params.logMessage(`Expanded items: ${expandedStr}`); } }, [expandedStr]); // eslint-disable-line react-hooks/exhaustive-deps + + return {}; }; // Sets the default value of this plugin parameters. diff --git a/docs/data/tree-view/rich-tree-view/headless/headless.md b/docs/data/tree-view/rich-tree-view/headless/headless.md index 6d920b03d2c5..c003a9fa5f69 100644 --- a/docs/data/tree-view/rich-tree-view/headless/headless.md +++ b/docs/data/tree-view/rich-tree-view/headless/headless.md @@ -28,6 +28,8 @@ A custom plugins contains 2 required elements: React.useEffect(() => { console.log(params.customParam); }); + + return {}; }; ``` @@ -48,6 +50,8 @@ const useCustomPlugin = ({ params }) => { React.useEffect(() => { console.log(params.customParam); }); + + return {}; }; useCustomPlugin.params = { customParam: true }; @@ -100,6 +104,8 @@ const useCustomPlugin = ({ models }) => { const updateCustomModel = (newValue) => models.customModel.setControlledValue(newValue); + + return {}; }; ``` @@ -141,11 +147,15 @@ The Tree View instance is an object accessible in all the plugins and in the `Tr It is the main way a plugin can provide features to the rest of the component. ```ts -const useCustomPlugin = ({ models, instance }) => { +const useCustomPlugin = ({ models }) => { const toggleCustomModel = () => models.customModel.setValue(!models.customModel.value); - populateInstance(instance, { toggleCustomModel }); + return { + instance: { + toggleCustomModel, + }, + }; }; ``` @@ -169,7 +179,11 @@ const useCustomPlugin = () => { publishTreeViewEvent(instance, 'toggleCustomModel', { value: newValue }); }; - populateInstance(instance, { toggleCustomModel }); + return { + instance: { + toggleCustomModel, + }, + }; }; ``` diff --git a/packages/x-tree-view/src/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.ts b/packages/x-tree-view/src/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.ts index 9dd96f72c8bc..0357b4096b3d 100644 --- a/packages/x-tree-view/src/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.ts +++ b/packages/x-tree-view/src/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.ts @@ -1,7 +1,6 @@ import * as React from 'react'; import { EventManager } from '../../utils/EventManager'; import type { TreeViewPlugin } from '../../models'; -import { populateInstance } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewInstanceEventsSignature } from './useTreeViewInstanceEvents.types'; import type { TreeViewEventListener } from '../../models/events'; @@ -9,9 +8,7 @@ const isSyntheticEvent = (event: any): event is React.SyntheticEvent => { return event.isPropagationStopped !== undefined; }; -export const useTreeViewInstanceEvents: TreeViewPlugin = ({ - instance, -}) => { +export const useTreeViewInstanceEvents: TreeViewPlugin = () => { const [eventManager] = React.useState(() => new EventManager()); const publishEvent = React.useCallback( @@ -38,10 +35,12 @@ export const useTreeViewInstanceEvents: TreeViewPlugin(instance, { - $$publishEvent: publishEvent, - $$subscribeEvent: subscribeEvent, - }); + return { + instance: { + $$publishEvent: publishEvent, + $$subscribeEvent: subscribeEvent, + }, + }; }; useTreeViewInstanceEvents.params = {}; diff --git a/packages/x-tree-view/src/internals/models/plugin.ts b/packages/x-tree-view/src/internals/models/plugin.ts index e8d1b497c613..9d51ad5f489c 100644 --- a/packages/x-tree-view/src/internals/models/plugin.ts +++ b/packages/x-tree-view/src/internals/models/plugin.ts @@ -8,7 +8,6 @@ import { TreeViewItemId } from '../../models'; export interface TreeViewPluginOptions { instance: TreeViewUsedInstance; - publicAPI: TreeViewUsedPublicAPI; params: TreeViewUsedDefaultizedParams; state: TreeViewUsedState; slots: TSignature['slots']; @@ -30,7 +29,9 @@ type TreeViewResponse = { getRootProps?: ( otherHandlers: TOther, ) => React.HTMLAttributes; -} & OptionalIfEmpty<'contextValue', TSignature['contextValue']>; +} & OptionalIfEmpty<'publicAPI', TSignature['publicAPI']> & + OptionalIfEmpty<'instance', TSignature['instance']> & + OptionalIfEmpty<'contextValue', TSignature['contextValue']>; export type TreeViewPluginSignature< T extends { @@ -149,7 +150,7 @@ export type TreeItemWrapper = (params: { }) => React.ReactNode; export type TreeViewPlugin = { - (options: TreeViewPluginOptions): void | TreeViewResponse; + (options: TreeViewPluginOptions): TreeViewResponse; getDefaultizedParams?: ( params: TreeViewUsedParams, ) => TSignature['defaultizedParams']; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts index d7519b4b5f49..8a51758f752b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts @@ -1,13 +1,11 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; import { TreeViewPlugin } from '../../models'; -import { populateInstance, populatePublicAPI } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewExpansionSignature } from './useTreeViewExpansion.types'; import { TreeViewItemId } from '../../../models'; export const useTreeViewExpansion: TreeViewPlugin = ({ instance, - publicAPI, params, models, }) => { @@ -83,15 +81,18 @@ export const useTreeViewExpansion: TreeViewPlugin } }; - populateInstance(instance, { - isItemExpanded, - isItemExpandable, - setItemExpansion, - toggleItemExpansion, - expandAllSiblings, - }); - - populatePublicAPI(publicAPI, { setItemExpansion }); + return { + publicAPI: { + setItemExpansion, + }, + instance: { + isItemExpanded, + isItemExpandable, + setItemExpansion, + toggleItemExpansion, + expandAllSiblings, + }, + }; }; useTreeViewExpansion.models = { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index eab87b06ba78..6b3662198e30 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -3,7 +3,6 @@ import useEventCallback from '@mui/utils/useEventCallback'; import { EventHandlers } from '@mui/base/utils'; import ownerDocument from '@mui/utils/ownerDocument'; import { TreeViewPlugin, TreeViewUsedInstance } from '../../models'; -import { populateInstance, populatePublicAPI } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewFocusSignature } from './useTreeViewFocus.types'; import { useInstanceEventHandler } from '../../hooks/useInstanceEventHandler'; import { getActiveElement } from '../../utils/utils'; @@ -33,7 +32,6 @@ const useTabbableItemId = ( export const useTreeViewFocus: TreeViewPlugin = ({ instance, - publicAPI, params, state, setState, @@ -121,18 +119,6 @@ export const useTreeViewFocus: TreeViewPlugin = ({ const canItemBeTabbed = (itemId: string) => itemId === tabbableItemId; - populateInstance(instance, { - isItemFocused, - canItemBeTabbed, - focusItem, - focusDefaultItem, - removeFocusedItem, - }); - - populatePublicAPI(publicAPI, { - focusItem, - }); - useInstanceEventHandler(instance, 'removeItem', ({ id }) => { if (state.focusedItemId === id) { instance.focusDefaultItem(null); @@ -158,6 +144,16 @@ export const useTreeViewFocus: TreeViewPlugin = ({ onFocus: createHandleFocus(otherHandlers), 'aria-activedescendant': activeDescendant ?? undefined, }), + publicAPI: { + focusItem, + }, + instance: { + isItemFocused, + canItemBeTabbed, + focusItem, + focusDefaultItem, + removeFocusedItem, + }, }; }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts index 2e97b58bd0dd..a0572cc19b23 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts @@ -1,10 +1,9 @@ import * as React from 'react'; import useId from '@mui/utils/useId'; import { TreeViewPlugin } from '../../models'; -import { populateInstance } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewIdSignature } from './useTreeViewId.types'; -export const useTreeViewId: TreeViewPlugin = ({ instance, params }) => { +export const useTreeViewId: TreeViewPlugin = ({ params }) => { const treeId = useId(params.id); const getTreeItemId = React.useCallback( @@ -12,14 +11,13 @@ export const useTreeViewId: TreeViewPlugin = ({ instance [treeId], ); - populateInstance(instance, { - getTreeItemId, - }); - return { getRootProps: () => ({ id: treeId, }), + instance: { + getTreeItemId, + }, }; }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index d8ea2faaacf5..314ec01142ae 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -1,6 +1,5 @@ import * as React from 'react'; import { TreeViewPlugin } from '../../models'; -import { populateInstance, populatePublicAPI } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewItemsSignature, UseTreeViewItemsDefaultizedParameters, @@ -93,7 +92,6 @@ const updateItemsState = ({ export const useTreeViewItems: TreeViewPlugin = ({ instance, - publicAPI, params, state, setState, @@ -209,22 +207,20 @@ export const useTreeViewItems: TreeViewPlugin = ({ return state.items.nodeTree.map(getPropsFromItemId); }; - populateInstance(instance, { - getNode, - getItem, - getItemsToRender, - getChildrenIds, - getNavigableChildrenIds, - isItemDisabled, - preventItemUpdates, - areItemUpdatesPrevented, - }); - - populatePublicAPI(publicAPI, { - getItem, - }); - return { + publicAPI: { + getItem, + }, + instance: { + getNode, + getItem, + getItemsToRender, + getChildrenIds, + getNavigableChildrenIds, + isItemDisabled, + preventItemUpdates, + areItemUpdatesPrevented, + }, contextValue: { disabledItemsFocusable: params.disabledItemsFocusable }, }; }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index 2eaeaa552f66..b46ca31d199f 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -2,7 +2,6 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; import useForkRef from '@mui/utils/useForkRef'; import { TreeViewItemPlugin, TreeViewNode, TreeViewPlugin } from '../../models'; -import { populateInstance } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewJSXItemsSignature } from './useTreeViewJSXItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext'; @@ -77,11 +76,13 @@ export const useTreeViewJSXItems: TreeViewPlugin = }; }); - populateInstance(instance, { - insertJSXItem, - removeJSXItem, - mapFirstCharFromJSX, - }); + return { + instance: { + insertJSXItem, + removeJSXItem, + mapFirstCharFromJSX, + }, + }; }; const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin = ({ diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index 42f487890461..efb114ac34b5 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -7,7 +7,6 @@ import { getLastItem, getNextItem, getPreviousItem, - populateInstance, } from '../../useTreeView/useTreeView.utils'; import { TreeViewFirstCharMap, @@ -297,10 +296,12 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< } }; - populateInstance(instance, { - updateFirstCharMap, - handleItemKeyDown, - }); + return { + instance: { + updateFirstCharMap, + handleItemKeyDown, + }, + }; }; useTreeViewKeyboardNavigation.params = {}; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts index 28a570228c6e..58c30f122b10 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts @@ -1,11 +1,6 @@ import * as React from 'react'; import { TreeViewPlugin, TreeViewItemRange } from '../../models'; -import { - populateInstance, - getNextItem, - getFirstItem, - getLastItem, -} from '../../useTreeView/useTreeView.utils'; +import { getNextItem, getFirstItem, getLastItem } from '../../useTreeView/useTreeView.utils'; import { UseTreeViewSelectionSignature } from './useTreeViewSelection.types'; import { findOrderInTremauxTree } from './useTreeViewSelection.utils'; @@ -187,18 +182,17 @@ export const useTreeViewSelection: TreeViewPlugin }); }; - populateInstance(instance, { - isItemSelected, - selectItem, - selectRange, - rangeSelectToLast, - rangeSelectToFirst, - }); - return { getRootProps: () => ({ 'aria-multiselectable': params.multiSelect, }), + instance: { + isItemSelected, + selectItem, + selectRange, + rangeSelectToLast, + rangeSelectToFirst, + }, contextValue: { selection: { multiSelect: params.multiSelect, diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts index 17f7d3769f4a..5c71251849dc 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts @@ -86,23 +86,29 @@ export const useTreeView = ; const runPlugin = (plugin: TreeViewPlugin) => { - const pluginResponse = - plugin({ - instance, - publicAPI, - params, - slots: params.slots, - slotProps: params.slotProps, - state, - setState, - rootRef: innerRootRef, - models, - }) || {}; + const pluginResponse = plugin({ + instance, + params, + slots: params.slots, + slotProps: params.slotProps, + state, + setState, + rootRef: innerRootRef, + models, + }); if (pluginResponse.getRootProps) { rootPropsGetters.push(pluginResponse.getRootProps); } + if (pluginResponse.publicAPI) { + Object.assign(publicAPI, pluginResponse.publicAPI); + } + + if (pluginResponse.instance) { + Object.assign(instance, pluginResponse.instance); + } + if (pluginResponse.contextValue) { Object.assign(contextValue, pluginResponse.contextValue); } diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts index 8e8bffed2986..6a0dc3b36b70 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts @@ -1,9 +1,4 @@ -import { - TreeViewAnyPluginSignature, - TreeViewInstance, - TreeViewUsedInstance, - TreeViewUsedPublicAPI, -} from '../models'; +import { TreeViewInstance } from '../models'; import type { UseTreeViewExpansionSignature } from '../plugins/useTreeViewExpansion'; import type { UseTreeViewItemsSignature } from '../plugins/useTreeViewItems'; @@ -69,17 +64,3 @@ export const getLastItem = ( export const getFirstItem = (instance: TreeViewInstance<[UseTreeViewItemsSignature]>) => instance.getNavigableChildrenIds(null)[0]; - -export const populateInstance = ( - instance: TreeViewUsedInstance, - methods: T['instance'], -) => { - Object.assign(instance, methods); -}; - -export const populatePublicAPI = ( - publicAPI: TreeViewUsedPublicAPI, - methods: T['publicAPI'], -) => { - Object.assign(publicAPI, methods); -}; From 0b7d3866ec620882e518160402f61e268e3d3b71 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Mon, 8 Apr 2024 15:00:16 +0200 Subject: [PATCH 089/912] [docs] Add AxisFormatter documentation for customizing tick/tooltip value formatting (#12700) Signed-off-by: Jose C Quintas Jr Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/charts/tooltip/AxisFormatter.js | 74 +++++++++++++++++++ docs/data/charts/tooltip/AxisFormatter.tsx | 74 +++++++++++++++++++ .../charts/tooltip/AxisFormatter.tsx.preview | 13 ++++ docs/data/charts/tooltip/tooltip.md | 13 ++++ 4 files changed, 174 insertions(+) create mode 100644 docs/data/charts/tooltip/AxisFormatter.js create mode 100644 docs/data/charts/tooltip/AxisFormatter.tsx create mode 100644 docs/data/charts/tooltip/AxisFormatter.tsx.preview diff --git a/docs/data/charts/tooltip/AxisFormatter.js b/docs/data/charts/tooltip/AxisFormatter.js new file mode 100644 index 000000000000..07f82faf0cb8 --- /dev/null +++ b/docs/data/charts/tooltip/AxisFormatter.js @@ -0,0 +1,74 @@ +import * as React from 'react'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts'; + +const dataset = [ + { name: 'Austria', code: 'AT', gdp: 471 }, + { name: 'Belgium', code: 'BE', gdp: 583 }, + { name: 'Bulgaria', code: 'BG', gdp: 90.35 }, + { name: 'Croatia', code: 'HR', gdp: 71.6 }, + { name: 'Czech Republic', code: 'CZ', gdp: 291 }, + { name: 'Denmark', code: 'DK', gdp: 400 }, + { name: 'Finland', code: 'FI', gdp: 283 }, + { name: 'France', code: 'FR', gdp: 2779 }, + { name: 'Germany', code: 'DE', gdp: 4082 }, + { name: 'Greece', code: 'GR', gdp: 218 }, + { name: 'Hungary', code: 'HU', gdp: 177 }, + { name: 'Ireland', code: 'IE', gdp: 533 }, + { name: 'Italy', code: 'IT', gdp: 2050 }, + { name: 'Netherlands', code: 'NL', gdp: 1009 }, + { name: 'Poland', code: 'PL', gdp: 688 }, + { name: 'Portugal', code: 'PT', gdp: 255 }, + { name: 'Romania', code: 'RO', gdp: 301 }, + { name: 'Slovakia', code: 'SK', gdp: 115 }, + { name: 'Spain', code: 'ES', gdp: 1418 }, + { name: 'Sweden', code: 'SE', gdp: 591 }, +]; + +const chartParams = { + yAxis: [ + { + label: 'GDP (million $USD)', + }, + ], + series: [ + { + label: 'GDP', + dataKey: 'gdp', + valueFormatter: (v) => + new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + compactDisplay: 'short', + notation: 'compact', + }).format((v || 0) * 1_000_000), + }, + ], + slotProps: { legend: { hidden: true } }, + dataset, + width: 600, + height: 400, + sx: { + [`.${axisClasses.left} .${axisClasses.label}`]: { + transform: 'translate(-20px, 0)', + }, + }, +}; + +export default function AxisFormatter() { + return ( + + context.location === 'tick' + ? code + : `Country: ${dataset.find((d) => d.code === code)?.name} (${code})`, + }, + ]} + {...chartParams} + /> + ); +} diff --git a/docs/data/charts/tooltip/AxisFormatter.tsx b/docs/data/charts/tooltip/AxisFormatter.tsx new file mode 100644 index 000000000000..5ba4b86b170e --- /dev/null +++ b/docs/data/charts/tooltip/AxisFormatter.tsx @@ -0,0 +1,74 @@ +import * as React from 'react'; +import { BarChart, BarChartProps } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts'; + +const dataset = [ + { name: 'Austria', code: 'AT', gdp: 471 }, + { name: 'Belgium', code: 'BE', gdp: 583 }, + { name: 'Bulgaria', code: 'BG', gdp: 90.35 }, + { name: 'Croatia', code: 'HR', gdp: 71.6 }, + { name: 'Czech Republic', code: 'CZ', gdp: 291 }, + { name: 'Denmark', code: 'DK', gdp: 400 }, + { name: 'Finland', code: 'FI', gdp: 283 }, + { name: 'France', code: 'FR', gdp: 2779 }, + { name: 'Germany', code: 'DE', gdp: 4082 }, + { name: 'Greece', code: 'GR', gdp: 218 }, + { name: 'Hungary', code: 'HU', gdp: 177 }, + { name: 'Ireland', code: 'IE', gdp: 533 }, + { name: 'Italy', code: 'IT', gdp: 2050 }, + { name: 'Netherlands', code: 'NL', gdp: 1009 }, + { name: 'Poland', code: 'PL', gdp: 688 }, + { name: 'Portugal', code: 'PT', gdp: 255 }, + { name: 'Romania', code: 'RO', gdp: 301 }, + { name: 'Slovakia', code: 'SK', gdp: 115 }, + { name: 'Spain', code: 'ES', gdp: 1418 }, + { name: 'Sweden', code: 'SE', gdp: 591 }, +]; + +const chartParams: BarChartProps = { + yAxis: [ + { + label: 'GDP (million $USD)', + }, + ], + series: [ + { + label: 'GDP', + dataKey: 'gdp', + valueFormatter: (v) => + new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + compactDisplay: 'short', + notation: 'compact', + }).format((v || 0) * 1_000_000), + }, + ], + slotProps: { legend: { hidden: true } }, + dataset, + width: 600, + height: 400, + sx: { + [`.${axisClasses.left} .${axisClasses.label}`]: { + transform: 'translate(-20px, 0)', + }, + }, +}; + +export default function AxisFormatter() { + return ( + + context.location === 'tick' + ? code + : `Country: ${dataset.find((d) => d.code === code)?.name} (${code})`, + }, + ]} + {...chartParams} + /> + ); +} diff --git a/docs/data/charts/tooltip/AxisFormatter.tsx.preview b/docs/data/charts/tooltip/AxisFormatter.tsx.preview new file mode 100644 index 000000000000..c12fab7e6707 --- /dev/null +++ b/docs/data/charts/tooltip/AxisFormatter.tsx.preview @@ -0,0 +1,13 @@ + + context.location === 'tick' + ? code + : `Country: ${dataset.find((d) => d.code === code)?.name} (${code})`, + }, + ]} + {...chartParams} +/> \ No newline at end of file diff --git a/docs/data/charts/tooltip/tooltip.md b/docs/data/charts/tooltip/tooltip.md index 0c94979395de..a3c463c96dcf 100644 --- a/docs/data/charts/tooltip/tooltip.md +++ b/docs/data/charts/tooltip/tooltip.md @@ -69,6 +69,19 @@ Here is a demo with: {{"demo": "Formatting.js"}} +### Axis formatter + +To modify how data is displayed in the axis use the `valueFormatter` property. + +Its second argument is a context that provides a `location` property with either `'tick'` or `'tooltip'`. + +In this demo, you can see: + +- The country axis displays only the country code +- The label displays annotated data `Country: name (code)` + +{{"demo": "AxisFormatter.js"}} + ### Hiding values You can hide the axis value with `hideTooltip` in the `xAxis` props. From 616cf32b7b30b0dbc0a29ef8fb729e27434bbc51 Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Mon, 8 Apr 2024 20:37:14 +0300 Subject: [PATCH 090/912] [TreeView] Clean up usage of term node in internals (#12655) --- .../rich-tree-view/headless/headless.md | 2 +- .../src/internals/models/treeView.ts | 2 +- .../useTreeViewExpansion.ts | 6 +-- .../useTreeViewFocus/useTreeViewFocus.ts | 22 +++++---- .../useTreeViewItems/useTreeViewItems.ts | 46 +++++++++---------- .../useTreeViewItems.types.ts | 10 ++-- .../useTreeViewJSXItems.tsx | 14 +++--- .../useTreeViewJSXItems.types.ts | 4 +- .../useTreeViewKeyboardNavigation.ts | 14 +++--- .../useTreeViewSelection.utils.ts | 32 ++++++------- .../useTreeView/useTreeView.utils.ts | 16 +++---- 11 files changed, 85 insertions(+), 83 deletions(-) diff --git a/docs/data/tree-view/rich-tree-view/headless/headless.md b/docs/data/tree-view/rich-tree-view/headless/headless.md index c003a9fa5f69..a258a6e6b524 100644 --- a/docs/data/tree-view/rich-tree-view/headless/headless.md +++ b/docs/data/tree-view/rich-tree-view/headless/headless.md @@ -138,7 +138,7 @@ We probably need a new abstraction here so that a plugin is always responsible f TODO :::warning -Once `focusedNodeId` becomes a model, we could consider removing the notion of state and just let each plugin define its state and provide methods in the instance to access / update it. +Once `focusedItemId` becomes a model, we could consider removing the notion of state and just let each plugin define its state and provide methods in the instance to access / update it. ::: ### Populate the Tree View instance diff --git a/packages/x-tree-view/src/internals/models/treeView.ts b/packages/x-tree-view/src/internals/models/treeView.ts index 8a8e9ca22106..44b037ffe124 100644 --- a/packages/x-tree-view/src/internals/models/treeView.ts +++ b/packages/x-tree-view/src/internals/models/treeView.ts @@ -1,7 +1,7 @@ import type { TreeViewAnyPluginSignature } from './plugin'; import type { MergePluginsProperty } from './helpers'; -export interface TreeViewNode { +export interface TreeViewItemMeta { id: string; idAttribute: string | undefined; index: number; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts index 8a51758f752b..533ad991860e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts @@ -29,7 +29,7 @@ export const useTreeViewExpansion: TreeViewPlugin ); const isItemExpandable = React.useCallback( - (itemId: string) => !!instance.getNode(itemId)?.expandable, + (itemId: string) => !!instance.getItemMeta(itemId)?.expandable, [instance], ); @@ -61,8 +61,8 @@ export const useTreeViewExpansion: TreeViewPlugin ); const expandAllSiblings = (event: React.KeyboardEvent, itemId: string) => { - const node = instance.getNode(itemId); - const siblings = instance.getChildrenIds(node.parentId); + const itemMeta = instance.getItemMeta(itemId); + const siblings = instance.getChildrenIds(itemMeta.parentId); const diff = siblings.filter( (child) => instance.isItemExpandable(child) && !instance.isItemExpanded(child), diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 6b3662198e30..0491e5e3946b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -12,8 +12,8 @@ const useTabbableItemId = ( selectedItems: string | string[] | null, ) => { const isItemVisible = (itemId: string) => { - const node = instance.getNode(itemId); - return node && (node.parentId == null || instance.isItemExpanded(node.parentId)); + const itemMeta = instance.getItemMeta(itemId); + return itemMeta && (itemMeta.parentId == null || instance.isItemExpanded(itemMeta.parentId)); }; let tabbableItemId: string | null | undefined; @@ -60,13 +60,15 @@ export const useTreeViewFocus: TreeViewPlugin = ({ ); const isItemVisible = (itemId: string) => { - const node = instance.getNode(itemId); - return node && (node.parentId == null || instance.isItemExpanded(node.parentId)); + const itemMeta = instance.getItemMeta(itemId); + return itemMeta && (itemMeta.parentId == null || instance.isItemExpanded(itemMeta.parentId)); }; const innerFocusItem = (event: React.SyntheticEvent | null, itemId: string) => { - const node = instance.getNode(itemId); - const itemElement = document.getElementById(instance.getTreeItemId(itemId, node.idAttribute)); + const itemMeta = instance.getItemMeta(itemId); + const itemElement = document.getElementById( + instance.getTreeItemId(itemId, itemMeta.idAttribute), + ); if (itemElement) { itemElement.focus(); } @@ -104,10 +106,10 @@ export const useTreeViewFocus: TreeViewPlugin = ({ return; } - const node = instance.getNode(state.focusedItemId); - if (node) { + const itemMeta = instance.getItemMeta(state.focusedItemId); + if (itemMeta) { const itemElement = document.getElementById( - instance.getTreeItemId(state.focusedItemId, node.idAttribute), + instance.getTreeItemId(state.focusedItemId, itemMeta.idAttribute), ); if (itemElement) { itemElement.blur(); @@ -134,7 +136,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ } }; - const focusedItem = instance.getNode(state.focusedItemId!); + const focusedItem = instance.getItemMeta(state.focusedItemId!); const activeDescendant = focusedItem ? instance.getTreeItemId(focusedItem.id, focusedItem.idAttribute) : null; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 314ec01142ae..268a86c87877 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -3,7 +3,7 @@ import { TreeViewPlugin } from '../../models'; import { UseTreeViewItemsSignature, UseTreeViewItemsDefaultizedParameters, - TreeViewNodeMap, + TreeViewItemMetaMap, TreeViewItemIdAndChildren, UseTreeViewItemsState, TreeViewItemMap, @@ -20,7 +20,7 @@ const updateItemsState = ({ UseTreeViewItemsDefaultizedParameters, 'items' | 'isItemDisabled' | 'getItemLabel' | 'getItemId' >): UseTreeViewItemsState['items'] => { - const nodeMap: TreeViewNodeMap = {}; + const itemMetaMap: TreeViewItemMetaMap = {}; const itemMap: TreeViewItemMap = {}; const processItem = ( @@ -41,7 +41,7 @@ const updateItemsState = ({ ); } - if (nodeMap[id] != null) { + if (itemMetaMap[id] != null) { throw new Error( [ 'MUI X: The Tree View component requires all items to have a unique `id` property.', @@ -63,7 +63,7 @@ const updateItemsState = ({ ); } - nodeMap[id] = { + itemMetaMap[id] = { id, label, index, @@ -81,11 +81,11 @@ const updateItemsState = ({ }; }; - const nodeTree = items.map((item, itemIndex) => processItem(item, itemIndex, null)); + const itemTree = items.map((item, itemIndex) => processItem(item, itemIndex, null)); return { - nodeMap, - nodeTree, + itemMetaMap, + itemTree, itemMap, }; }; @@ -96,9 +96,9 @@ export const useTreeViewItems: TreeViewPlugin = ({ state, setState, }) => { - const getNode = React.useCallback( - (itemId: string) => state.items.nodeMap[itemId], - [state.items.nodeMap], + const getItemMeta = React.useCallback( + (itemId: string) => state.items.itemMetaMap[itemId], + [state.items.itemMetaMap], ); const getItem = React.useCallback( @@ -112,20 +112,20 @@ export const useTreeViewItems: TreeViewPlugin = ({ return false; } - let node = instance.getNode(itemId); + let itemMeta = instance.getItemMeta(itemId); // This can be called before the item has been added to the item map. - if (!node) { + if (!itemMeta) { return false; } - if (node.disabled) { + if (itemMeta.disabled) { return true; } - while (node.parentId != null) { - node = instance.getNode(node.parentId); - if (node.disabled) { + while (itemMeta.parentId != null) { + itemMeta = instance.getItemMeta(itemMeta.parentId); + if (itemMeta.disabled) { return true; } } @@ -137,11 +137,11 @@ export const useTreeViewItems: TreeViewPlugin = ({ const getChildrenIds = React.useCallback( (itemId: string | null) => - Object.values(state.items.nodeMap) + Object.values(state.items.itemMetaMap) .filter((item) => item.parentId === itemId) .sort((a, b) => a.index - b.index) .map((child) => child.id), - [state.items.nodeMap], + [state.items.itemMetaMap], ); const getNavigableChildrenIds = (itemId: string | null) => { @@ -173,8 +173,8 @@ export const useTreeViewItems: TreeViewPlugin = ({ getItemLabel: params.getItemLabel, }); - Object.values(prevState.items.nodeMap).forEach((item) => { - if (!newState.nodeMap[item.id]) { + Object.values(prevState.items.itemMetaMap).forEach((item) => { + if (!newState.itemMetaMap[item.id]) { publishTreeViewEvent(instance, 'removeItem', { id: item.id }); } }); @@ -195,7 +195,7 @@ export const useTreeViewItems: TreeViewPlugin = ({ id, children, }: TreeViewItemIdAndChildren): ReturnType[number] => { - const item = state.items.nodeMap[id]; + const item = state.items.itemMetaMap[id]; return { label: item.label!, itemId: item.id, @@ -204,7 +204,7 @@ export const useTreeViewItems: TreeViewPlugin = ({ }; }; - return state.items.nodeTree.map(getPropsFromItemId); + return state.items.itemTree.map(getPropsFromItemId); }; return { @@ -212,7 +212,7 @@ export const useTreeViewItems: TreeViewPlugin = ({ getItem, }, instance: { - getNode, + getItemMeta, getItem, getItemsToRender, getChildrenIds, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 42034102f880..c0cefb6e8639 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -1,4 +1,4 @@ -import { TreeViewNode, DefaultizedProps, TreeViewPluginSignature } from '../../models'; +import { TreeViewItemMeta, DefaultizedProps, TreeViewPluginSignature } from '../../models'; import { TreeViewItemId } from '../../../models'; interface TreeViewItemProps { @@ -18,7 +18,7 @@ export interface UseTreeViewItemsPublicAPI { } export interface UseTreeViewItemsInstance extends UseTreeViewItemsPublicAPI { - getNode: (itemId: string) => TreeViewNode; + getItemMeta: (itemId: string) => TreeViewItemMeta; getItemsToRender: () => TreeViewItemProps[]; getChildrenIds: (itemId: string | null) => string[]; getNavigableChildrenIds: (itemId: string | null) => string[]; @@ -88,8 +88,8 @@ export interface TreeViewItemIdAndChildren { export interface UseTreeViewItemsState { items: { - nodeTree: TreeViewItemIdAndChildren[]; - nodeMap: TreeViewNodeMap; + itemTree: TreeViewItemIdAndChildren[]; + itemMetaMap: TreeViewItemMetaMap; itemMap: TreeViewItemMap; }; } @@ -107,6 +107,6 @@ export type UseTreeViewItemsSignature = TreeViewPluginSignature<{ contextValue: UseTreeViewItemsContextValue; }>; -export type TreeViewNodeMap = { [itemId: string]: TreeViewNode }; +export type TreeViewItemMetaMap = { [itemId: string]: TreeViewItemMeta }; export type TreeViewItemMap = { [itemId: string]: R }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index b46ca31d199f..2db2047d534e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; import useForkRef from '@mui/utils/useForkRef'; -import { TreeViewItemPlugin, TreeViewNode, TreeViewPlugin } from '../../models'; +import { TreeViewItemPlugin, TreeViewItemMeta, TreeViewPlugin } from '../../models'; import { UseTreeViewJSXItemsSignature } from './useTreeViewJSXItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext'; @@ -19,9 +19,9 @@ export const useTreeViewJSXItems: TreeViewPlugin = }) => { instance.preventItemUpdates(); - const insertJSXItem = useEventCallback((item: TreeViewNode) => { + const insertJSXItem = useEventCallback((item: TreeViewItemMeta) => { setState((prevState) => { - if (prevState.items.nodeMap[item.id] != null) { + if (prevState.items.itemMetaMap[item.id] != null) { throw new Error( [ 'MUI X: The Tree View component requires all items to have a unique `id` property.', @@ -35,7 +35,7 @@ export const useTreeViewJSXItems: TreeViewPlugin = ...prevState, items: { ...prevState.items, - nodeMap: { ...prevState.items.nodeMap, [item.id]: item }, + itemMetaMap: { ...prevState.items.itemMetaMap, [item.id]: item }, // For `SimpleTreeView`, we don't have a proper `item` object, so we create a very basic one. itemMap: { ...prevState.items.itemMap, [item.id]: { id: item.id, label: item.label } }, }, @@ -45,15 +45,15 @@ export const useTreeViewJSXItems: TreeViewPlugin = const removeJSXItem = useEventCallback((itemId: string) => { setState((prevState) => { - const newNodeMap = { ...prevState.items.nodeMap }; + const newItemMetaMap = { ...prevState.items.itemMetaMap }; const newItemMap = { ...prevState.items.itemMap }; - delete newNodeMap[itemId]; + delete newItemMetaMap[itemId]; delete newItemMap[itemId]; return { ...prevState, items: { ...prevState.items, - nodeMap: newNodeMap, + itemMetaMap: newItemMetaMap, itemMap: newItemMap, }, }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts index 8cca1c9808d4..72970916f670 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts @@ -1,9 +1,9 @@ -import { TreeViewNode, TreeViewPluginSignature } from '../../models'; +import { TreeViewItemMeta, TreeViewPluginSignature } from '../../models'; import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewKeyboardNavigationSignature } from '../useTreeViewKeyboardNavigation'; export interface UseTreeViewItemsInstance { - insertJSXItem: (item: TreeViewNode) => void; + insertJSXItem: (item: TreeViewItemMeta) => void; removeJSXItem: (itemId: string) => void; mapFirstCharFromJSX: (itemId: string, firstChar: string) => () => void; } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index efb114ac34b5..0a97109fe0df 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { useTheme } from '@mui/material/styles'; import useEventCallback from '@mui/utils/useEventCallback'; -import { TreeViewNode, TreeViewPlugin } from '../../models'; +import { TreeViewItemMeta, TreeViewPlugin } from '../../models'; import { getFirstItem, getLastItem, @@ -47,13 +47,13 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< const newFirstCharMap: { [itemId: string]: string } = {}; - const processItem = (node: TreeViewNode) => { - newFirstCharMap[node.id] = node.label!.substring(0, 1).toLowerCase(); + const processItem = (item: TreeViewItemMeta) => { + newFirstCharMap[item.id] = item.label!.substring(0, 1).toLowerCase(); }; - Object.values(state.items.nodeMap).forEach(processItem); + Object.values(state.items.itemMetaMap).forEach(processItem); firstCharMap.current = newFirstCharMap; - }, [state.items.nodeMap, params.getItemId, instance]); + }, [state.items.itemMetaMap, params.getItemId, instance]); const getFirstMatchingItem = (itemId: string, firstChar: string) => { let start: number; @@ -64,7 +64,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< const firstChars: string[] = []; // This really only works since the ids are strings Object.keys(firstCharMap.current).forEach((mapItemId) => { - const map = instance.getNode(mapItemId); + const map = instance.getItemMeta(mapItemId); const visible = map.parentId ? instance.isItemExpanded(map.parentId) : true; const shouldBeSkipped = params.disabledItemsFocusable ? false @@ -227,7 +227,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< instance.toggleItemExpansion(event, itemId); event.preventDefault(); } else { - const parent = instance.getNode(itemId).parentId; + const parent = instance.getItemMeta(itemId).parentId; if (parent) { instance.focusItem(event, parent); event.preventDefault(); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts index 48553f5c6471..03c3daa60d60 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts @@ -17,25 +17,25 @@ import { UseTreeViewItemsSignature } from '../useTreeViewItems'; */ export const findOrderInTremauxTree = ( instance: TreeViewInstance<[UseTreeViewItemsSignature]>, - nodeAId: string, - nodeBId: string, + itemAId: string, + itemBId: string, ) => { - if (nodeAId === nodeBId) { - return [nodeAId, nodeBId]; + if (itemAId === itemBId) { + return [itemAId, itemBId]; } - const nodeA = instance.getNode(nodeAId); - const nodeB = instance.getNode(nodeBId); + const itemA = instance.getItemMeta(itemAId); + const itemB = instance.getItemMeta(itemBId); - if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) { - return nodeB.parentId === nodeA.id ? [nodeA.id, nodeB.id] : [nodeB.id, nodeA.id]; + if (itemA.parentId === itemB.id || itemB.parentId === itemA.id) { + return itemB.parentId === itemA.id ? [itemA.id, itemB.id] : [itemB.id, itemA.id]; } - const aFamily: (string | null)[] = [nodeA.id]; - const bFamily: (string | null)[] = [nodeB.id]; + const aFamily: (string | null)[] = [itemA.id]; + const bFamily: (string | null)[] = [itemB.id]; - let aAncestor = nodeA.parentId; - let bAncestor = nodeB.parentId; + let aAncestor = itemA.parentId; + let bAncestor = itemB.parentId; let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1; let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1; @@ -49,7 +49,7 @@ export const findOrderInTremauxTree = ( aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1; continueA = aAncestor !== null; if (!aAncestorIsCommon && continueA) { - aAncestor = instance.getNode(aAncestor!).parentId; + aAncestor = instance.getItemMeta(aAncestor!).parentId; } } @@ -58,7 +58,7 @@ export const findOrderInTremauxTree = ( bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1; continueB = bAncestor !== null; if (!bAncestorIsCommon && continueB) { - bAncestor = instance.getNode(bAncestor!).parentId; + bAncestor = instance.getItemMeta(bAncestor!).parentId; } } } @@ -70,6 +70,6 @@ export const findOrderInTremauxTree = ( const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1]; return ancestorFamily.indexOf(aSide!) < ancestorFamily.indexOf(bSide!) - ? [nodeAId, nodeBId] - : [nodeBId, nodeAId]; + ? [itemAId, itemBId] + : [itemBId, itemAId]; }; diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts index 6a0dc3b36b70..4c3033421b20 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts @@ -6,12 +6,12 @@ export const getPreviousItem = ( instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, itemId: string, ) => { - const node = instance.getNode(itemId); - const siblings = instance.getNavigableChildrenIds(node.parentId); + const itemMeta = instance.getItemMeta(itemId); + const siblings = instance.getNavigableChildrenIds(itemMeta.parentId); const itemIndex = siblings.indexOf(itemId); if (itemIndex === 0) { - return node.parentId; + return itemMeta.parentId; } let currentItem: string = siblings[itemIndex - 1]; @@ -34,18 +34,18 @@ export const getNextItem = ( return instance.getNavigableChildrenIds(itemId)[0]; } - let node = instance.getNode(itemId); - while (node != null) { + let itemMeta = instance.getItemMeta(itemId); + while (itemMeta != null) { // Try to get next sibling - const siblings = instance.getNavigableChildrenIds(node.parentId); - const nextSibling = siblings[siblings.indexOf(node.id) + 1]; + const siblings = instance.getNavigableChildrenIds(itemMeta.parentId); + const nextSibling = siblings[siblings.indexOf(itemMeta.id) + 1]; if (nextSibling) { return nextSibling; } // If the sibling does not exist, go up a level to the parent and try again. - node = instance.getNode(node.parentId!); + itemMeta = instance.getItemMeta(itemMeta.parentId!); } return null; From 5c31f93be33170b6d161e5712d5c963c1c0a8a71 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 9 Apr 2024 11:27:50 +0200 Subject: [PATCH 091/912] [TreeView] Support reordering of items in `SimpleTreeView` (#12369) Signed-off-by: Flavien DELANGLE Co-authored-by: Lukas --- .../SimpleTreeView/SimpleTreeView.test.tsx | 27 +++ .../src/TreeItem/TreeItem.test.tsx | 15 +- .../x-tree-view/src/TreeItem/TreeItem.tsx | 2 +- .../TreeViewProvider/DescendantProvider.tsx | 208 ------------------ .../TreeViewChildrenItemProvider.tsx | 91 ++++++++ .../TreeViewProvider/TreeViewProvider.tsx | 3 +- .../TreeViewProvider.types.ts | 3 + .../src/internals/models/plugin.ts | 12 +- .../src/internals/models/treeView.ts | 1 - .../useTreeViewExpansion.ts | 2 +- .../useTreeViewFocus/useTreeViewFocus.ts | 6 +- .../plugins/useTreeViewId/useTreeViewId.ts | 4 +- .../useTreeViewId/useTreeViewId.types.ts | 2 +- .../useTreeViewItems/useTreeViewItems.ts | 36 +-- .../useTreeViewItems.types.ts | 3 +- .../useTreeViewItems.utils.ts | 1 + .../useTreeViewJSXItems.tsx | 90 +++++--- .../useTreeViewJSXItems.types.ts | 1 + .../useTreeViewSelection.utils.ts | 2 +- .../src/internals/useTreeView/useTreeView.ts | 16 +- .../src/useTreeItem2/useTreeItem2.ts | 2 +- 21 files changed, 254 insertions(+), 273 deletions(-) delete mode 100644 packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx create mode 100644 packages/x-tree-view/src/internals/TreeViewProvider/TreeViewChildrenItemProvider.tsx create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx index 7a313b22ac66..1152da7217c2 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx @@ -217,6 +217,33 @@ describe('', () => { expect(getByTestId('four')).toHaveFocus(); }); + it('should update indexes when two items are swapped', () => { + const onSelectedItemsChange = spy(); + + function TestComponent() { + const [items, setItems] = React.useState(['1', '2', '3']); + + return ( + + + + {items.map((itemId) => ( + + ))} + + + ); + } + + const { getByText } = render(); + fireEvent.click(getByText('Swap items')); + fireEvent.click(getByText('1')); + fireEvent.click(getByText('3'), { shiftKey: true }); + expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['1', '3']); + }); + describe('onItemFocus', () => { it('should be called when an item is focused', () => { const onFocus = spy(); diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 3ca830125010..e0747a0cb786 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -17,9 +17,18 @@ const TEST_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue isItemFocused: () => false, isItemSelected: () => false, isItemDisabled: (itemId: string | null): itemId is string => !!itemId, - getTreeItemId: () => '', + getTreeItemIdAttribute: () => '', mapFirstCharFromJSX: () => () => {}, canItemBeTabbed: () => false, + getJSXItemsChildrenIndexes: () => {}, + setJSXItemsChildrenIndexes: () => {}, + getNode: () => ({ + parentId: null, + id: 'one', + idAttribute: undefined, + disabled: false, + expandable: false, + }), } as any, publicAPI: { focusItem: () => {}, @@ -28,6 +37,7 @@ const TEST_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue }, runItemPlugins: () => ({ rootRef: null, contentRef: null }), wrapItem: ({ children }) => children, + wrapRoot: ({ children }) => children, disabledItemsFocusable: false, icons: { slots: {}, @@ -36,6 +46,9 @@ const TEST_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue selection: { multiSelect: false, }, + rootRef: { + current: null, + }, }; describe('', () => { diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index 7dd7ba75dcf9..20781e11f033 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -306,7 +306,7 @@ export const TreeItem = React.forwardRef(function TreeItem( instance.handleItemKeyDown(event, itemId); }; - const idAttribute = instance.getTreeItemId(itemId, id); + const idAttribute = instance.getTreeItemIdAttribute(itemId, id); const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1; return ( diff --git a/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx b/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx deleted file mode 100644 index 7e145beaeac9..000000000000 --- a/packages/x-tree-view/src/internals/TreeViewProvider/DescendantProvider.tsx +++ /dev/null @@ -1,208 +0,0 @@ -import * as React from 'react'; -import PropTypes from 'prop-types'; -import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; - -/** Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md - * Modified slightly to suit our purposes. - */ - -function binaryFindElement(array: TreeItemDescendant[], element: HTMLLIElement) { - let start = 0; - let end = array.length - 1; - - while (start <= end) { - const middle = Math.floor((start + end) / 2); - - if (array[middle].element === element) { - return middle; - } - - // eslint-disable-next-line no-bitwise - if (array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING) { - end = middle - 1; - } else { - start = middle + 1; - } - } - - return start; -} - -const DescendantContext = React.createContext({}); - -if (process.env.NODE_ENV !== 'production') { - DescendantContext.displayName = 'DescendantContext'; -} - -function usePrevious(value: T) { - const ref = React.useRef(null); - React.useEffect(() => { - ref.current = value; - }, [value]); - return ref.current; -} - -const noop = () => {}; - -/** - * This hook registers our descendant by passing it into an array. We can then - * search that array by to find its index when registering it in the component. - * We use this for focus management, keyboard navigation, and typeahead - * functionality for some components. - * - * The hook accepts the element item - * - * Our main goals with this are: - * 1) maximum composability, - * 2) minimal API friction - * 3) SSR compatibility* - * 4) concurrent safe - * 5) index always up-to-date with the tree despite changes - * 6) works with memoization of any component in the tree (hopefully) - * - * * As for SSR, the good news is that we don't actually need the index on the - * server for most use-cases, as we are only using it to determine the order of - * composed descendants for keyboard navigation. - */ -export function useDescendant(descendant: TreeItemDescendant) { - const [, forceUpdate] = React.useState<{}>(); - const { - registerDescendant = noop, - unregisterDescendant = noop, - descendants = [], - parentId = null, - } = React.useContext(DescendantContext); - - // This will initially return -1 because we haven't registered the descendant - // on the first render. After we register, this will then return the correct - // index on the following render, and we will re-register descendants - // so that everything is up-to-date before the user interacts with a - // collection. - const index = descendants.findIndex((item) => item.element === descendant.element); - - const previousDescendants = usePrevious(descendants); - - // We also need to re-register descendants any time ANY of the other - // descendants have changed. My brain was melting when I wrote this and it - // feels a little off, but checking in render and using the result in the - // effect's dependency array works well enough. - const someDescendantsHaveChanged = descendants.some((newDescendant, position) => { - return ( - previousDescendants && - previousDescendants[position] && - previousDescendants[position].element !== newDescendant.element - ); - }); - - // Prevent any flashing - useEnhancedEffect(() => { - if (descendant.element) { - registerDescendant({ - ...descendant, - index, - }); - return () => { - unregisterDescendant(descendant.element!); - }; - } - forceUpdate({}); - - return undefined; - }, [registerDescendant, unregisterDescendant, index, someDescendantsHaveChanged, descendant]); - - return { parentId, index }; -} - -interface DescendantProviderProps { - id?: string; - children: React.ReactNode; -} - -export function DescendantProvider(props: DescendantProviderProps) { - const { children, id } = props; - - const [items, set] = React.useState<(TreeItemDescendant & { index: number })[]>([]); - - const registerDescendant = React.useCallback(({ element, ...other }: TreeItemDescendant) => { - set((oldItems) => { - if (oldItems.length === 0) { - // If there are no items, register at index 0 and bail. - return [ - { - ...other, - element, - index: 0, - }, - ]; - } - - const index = binaryFindElement(oldItems, element); - let newItems: typeof oldItems; - - if (oldItems[index] && oldItems[index].element === element) { - // If the element is already registered, just use the same array - newItems = oldItems; - } else { - // When registering a descendant, we need to make sure we insert in - // into the array in the same order that it appears in the DOM. So as - // new descendants are added or maybe some are removed, we always know - // that the array is up-to-date and correct. - // - // So here we look at our registered descendants and see if the new - // element we are adding appears earlier than an existing descendant's - // DOM node via `node.compareDocumentPosition`. If it does, we insert - // the new element at this index. Because `registerDescendant` will be - // called in an effect every time the descendants state value changes, - // we should be sure that this index is accurate when descendent - // elements come or go from our component. - - const newItem = { - ...other, - element, - index, - }; - - // If an index is not found we will push the element to the end. - newItems = oldItems.slice(); - newItems.splice(index, 0, newItem); - } - newItems.forEach((item, position) => { - item.index = position; - }); - return newItems; - }); - }, []); - - const unregisterDescendant = React.useCallback((element: HTMLLIElement) => { - set((oldItems) => oldItems.filter((item) => element !== item.element)); - }, []); - - const value = React.useMemo( - () => ({ - descendants: items, - registerDescendant, - unregisterDescendant, - parentId: id, - }), - [items, registerDescendant, unregisterDescendant, id], - ); - - return {children}; -} - -DescendantProvider.propTypes = { - children: PropTypes.node, - id: PropTypes.string, -} as any; - -export interface TreeItemDescendant { - element: HTMLLIElement; - id: string; -} - -interface DescendantContextValue { - registerDescendant?: (params: TreeItemDescendant & { index: number }) => void; - unregisterDescendant?: (params: HTMLLIElement) => void; - descendants?: TreeItemDescendant[]; - parentId?: string | null; -} diff --git a/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewChildrenItemProvider.tsx b/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewChildrenItemProvider.tsx new file mode 100644 index 000000000000..48afd8f36c22 --- /dev/null +++ b/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewChildrenItemProvider.tsx @@ -0,0 +1,91 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { useTreeViewContext } from './useTreeViewContext'; +import type { UseTreeViewJSXItemsSignature } from '../plugins/useTreeViewJSXItems'; +import type { UseTreeViewItemsSignature } from '../plugins/useTreeViewItems'; +import type { UseTreeViewIdSignature } from '../plugins/useTreeViewId'; + +export const TreeViewChildrenItemContext = + React.createContext(null); + +if (process.env.NODE_ENV !== 'production') { + TreeViewChildrenItemContext.displayName = 'TreeViewChildrenItemContext'; +} + +interface TreeViewChildrenItemProviderProps { + itemId?: string; + children: React.ReactNode; +} + +export function TreeViewChildrenItemProvider(props: TreeViewChildrenItemProviderProps) { + const { children, itemId = null } = props; + + const { instance, rootRef } = + useTreeViewContext< + [UseTreeViewJSXItemsSignature, UseTreeViewItemsSignature, UseTreeViewIdSignature] + >(); + const childrenIdAttrToIdRef = React.useRef>(new Map()); + + React.useEffect(() => { + if (!rootRef.current) { + return; + } + + let idAttr: string | null = null; + if (itemId == null) { + idAttr = rootRef.current.id; + } else { + // Undefined during 1st render + const itemMeta = instance.getItemMeta(itemId); + if (itemMeta !== undefined) { + idAttr = instance.getTreeItemIdAttribute(itemId, itemMeta.idAttribute); + } + } + + if (idAttr == null) { + return; + } + + const previousChildrenIds = instance.getItemOrderedChildrenIds(itemId ?? null) ?? []; + const childrenElements = rootRef.current.querySelectorAll( + `${itemId == null ? '' : `*[id="${idAttr}"] `}[role="treeitem"]:not(*[id="${idAttr}"] [role="treeitem"] [role="treeitem"])`, + ); + const childrenIds = Array.from(childrenElements).map( + (child) => childrenIdAttrToIdRef.current.get(child.id)!, + ); + + const hasChanged = + childrenIds.length !== previousChildrenIds.length || + childrenIds.some((childId, index) => childId !== previousChildrenIds[index]); + if (hasChanged) { + instance.setJSXItemsOrderedChildrenIds(itemId ?? null, childrenIds); + } + }); + + const value = React.useMemo( + () => ({ + registerChild: (childIdAttribute, childItemId) => + childrenIdAttrToIdRef.current.set(childIdAttribute, childItemId), + unregisterChild: (childIdAttribute) => childrenIdAttrToIdRef.current.delete(childIdAttribute), + parentId: itemId, + }), + [itemId], + ); + + return ( + + {children} + + ); +} + +TreeViewChildrenItemProvider.propTypes = { + children: PropTypes.node, + id: PropTypes.string, +} as any; + +interface TreeViewChildrenItemContextValue { + registerChild: (idAttribute: string, itemId: string) => void; + unregisterChild: (idAttribute: string) => void; + parentId: string | null; +} diff --git a/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.tsx b/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.tsx index 761d9447e78e..de246ec61ea3 100644 --- a/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.tsx +++ b/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.tsx @@ -1,7 +1,6 @@ import * as React from 'react'; import { TreeViewProviderProps } from './TreeViewProvider.types'; import { TreeViewContext } from './TreeViewContext'; -import { DescendantProvider } from './DescendantProvider'; import { TreeViewAnyPluginSignature } from '../models'; /** @@ -16,7 +15,7 @@ export function TreeViewProvider - {children} + {value.wrapRoot({ children })} ); } diff --git a/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.types.ts b/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.types.ts index 99a00d68c536..9ff9f5af735e 100644 --- a/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.types.ts +++ b/packages/x-tree-view/src/internals/TreeViewProvider/TreeViewProvider.types.ts @@ -2,6 +2,7 @@ import * as React from 'react'; import { MergePluginsProperty, TreeItemWrapper, + TreeRootWrapper, TreeViewAnyPluginSignature, TreeViewInstance, TreeViewItemPluginResponse, @@ -12,7 +13,9 @@ export type TreeViewContextValue & { instance: TreeViewInstance; publicAPI: TreeViewPublicAPI; + rootRef: React.RefObject; wrapItem: TreeItemWrapper; + wrapRoot: TreeRootWrapper; runItemPlugins: (props: TProps) => Required; }; diff --git a/packages/x-tree-view/src/internals/models/plugin.ts b/packages/x-tree-view/src/internals/models/plugin.ts index 9d51ad5f489c..994ffc54bd6b 100644 --- a/packages/x-tree-view/src/internals/models/plugin.ts +++ b/packages/x-tree-view/src/internals/models/plugin.ts @@ -149,6 +149,8 @@ export type TreeItemWrapper = (params: { children: React.ReactNode; }) => React.ReactNode; +export type TreeRootWrapper = (params: { children: React.ReactNode }) => React.ReactNode; + export type TreeViewPlugin = { (options: TreeViewPluginOptions): TreeViewResponse; getDefaultizedParams?: ( @@ -160,8 +162,14 @@ export type TreeViewPlugin = { itemPlugin?: TreeViewItemPlugin; /** * Render function used to add React wrappers around the TreeItem. - * @param {TreeItemWrapperParams} params The params of the item. - * @returns {React.ReactNode} The wrapped items. + * @param {{ nodeId: TreeViewItemId; children: React.ReactNode; }} params The params of the item. + * @returns {React.ReactNode} The wrapped item. */ wrapItem?: TreeItemWrapper; + /** + * Render function used to add React wrappers around the TreeView. + * @param {{ children: React.ReactNode; }} params The params of the root. + * @returns {React.ReactNode} The wrapped root. + */ + wrapRoot?: TreeRootWrapper; }; diff --git a/packages/x-tree-view/src/internals/models/treeView.ts b/packages/x-tree-view/src/internals/models/treeView.ts index 44b037ffe124..fa6cca1edb60 100644 --- a/packages/x-tree-view/src/internals/models/treeView.ts +++ b/packages/x-tree-view/src/internals/models/treeView.ts @@ -4,7 +4,6 @@ import type { MergePluginsProperty } from './helpers'; export interface TreeViewItemMeta { id: string; idAttribute: string | undefined; - index: number; parentId: string | null; expandable: boolean; disabled: boolean; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts index 533ad991860e..3b993255789e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.ts @@ -62,7 +62,7 @@ export const useTreeViewExpansion: TreeViewPlugin const expandAllSiblings = (event: React.KeyboardEvent, itemId: string) => { const itemMeta = instance.getItemMeta(itemId); - const siblings = instance.getChildrenIds(itemMeta.parentId); + const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId); const diff = siblings.filter( (child) => instance.isItemExpandable(child) && !instance.isItemExpanded(child), diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 0491e5e3946b..267f30bb56d4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -67,7 +67,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ const innerFocusItem = (event: React.SyntheticEvent | null, itemId: string) => { const itemMeta = instance.getItemMeta(itemId); const itemElement = document.getElementById( - instance.getTreeItemId(itemId, itemMeta.idAttribute), + instance.getTreeItemIdAttribute(itemId, itemMeta.idAttribute), ); if (itemElement) { itemElement.focus(); @@ -109,7 +109,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ const itemMeta = instance.getItemMeta(state.focusedItemId); if (itemMeta) { const itemElement = document.getElementById( - instance.getTreeItemId(state.focusedItemId, itemMeta.idAttribute), + instance.getTreeItemIdAttribute(state.focusedItemId, itemMeta.idAttribute), ); if (itemElement) { itemElement.blur(); @@ -138,7 +138,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ const focusedItem = instance.getItemMeta(state.focusedItemId!); const activeDescendant = focusedItem - ? instance.getTreeItemId(focusedItem.id, focusedItem.idAttribute) + ? instance.getTreeItemIdAttribute(focusedItem.id, focusedItem.idAttribute) : null; return { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts index a0572cc19b23..8b74f34f1e64 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.ts @@ -6,7 +6,7 @@ import { UseTreeViewIdSignature } from './useTreeViewId.types'; export const useTreeViewId: TreeViewPlugin = ({ params }) => { const treeId = useId(params.id); - const getTreeItemId = React.useCallback( + const getTreeItemIdAttribute = React.useCallback( (itemId: string, idAttribute: string | undefined) => idAttribute ?? `${treeId}-${itemId}`, [treeId], ); @@ -16,7 +16,7 @@ export const useTreeViewId: TreeViewPlugin = ({ params } id: treeId, }), instance: { - getTreeItemId, + getTreeItemIdAttribute, }, }; }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts index 649405e2bb67..aafd09a0949b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewId/useTreeViewId.types.ts @@ -1,7 +1,7 @@ import { TreeViewPluginSignature } from '../../models'; export interface UseTreeViewIdInstance { - getTreeItemId: (itemId: string, idAttribute: string | undefined) => string; + getTreeItemIdAttribute: (itemId: string, idAttribute: string | undefined) => string; } export interface UseTreeViewIdParameters { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 268a86c87877..5b98dac00b21 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -10,18 +10,25 @@ import { } from './useTreeViewItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { TreeViewBaseItem } from '../../../models'; +import { TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils'; + +interface UpdateNodesStateParameters + extends Pick< + UseTreeViewItemsDefaultizedParameters, + 'items' | 'isItemDisabled' | 'getItemLabel' | 'getItemId' + > {} const updateItemsState = ({ items, isItemDisabled, getItemLabel, getItemId, -}: Pick< - UseTreeViewItemsDefaultizedParameters, - 'items' | 'isItemDisabled' | 'getItemLabel' | 'getItemId' ->): UseTreeViewItemsState['items'] => { +}: UpdateNodesStateParameters): UseTreeViewItemsState['items'] => { const itemMetaMap: TreeViewItemMetaMap = {}; const itemMap: TreeViewItemMap = {}; + const itemOrderedChildrenIds: { [parentId: string]: string[] } = { + [TREE_VIEW_ROOT_PARENT_ID]: [], + }; const processItem = ( item: TreeViewBaseItem, @@ -66,7 +73,6 @@ const updateItemsState = ({ itemMetaMap[id] = { id, label, - index, parentId, idAttribute: undefined, expandable: !!item.children?.length, @@ -74,6 +80,12 @@ const updateItemsState = ({ }; itemMap[id] = item; + itemOrderedChildrenIds[id] = []; + const parentIdWithDefault = parentId ?? TREE_VIEW_ROOT_PARENT_ID; + if (!itemOrderedChildrenIds[parentIdWithDefault]) { + itemOrderedChildrenIds[parentIdWithDefault] = []; + } + itemOrderedChildrenIds[parentIdWithDefault].push(id); return { id, @@ -87,6 +99,7 @@ const updateItemsState = ({ itemMetaMap, itemTree, itemMap, + itemOrderedChildrenIds, }; }; @@ -135,17 +148,14 @@ export const useTreeViewItems: TreeViewPlugin = ({ [instance], ); - const getChildrenIds = React.useCallback( + const getItemOrderedChildrenIds = React.useCallback( (itemId: string | null) => - Object.values(state.items.itemMetaMap) - .filter((item) => item.parentId === itemId) - .sort((a, b) => a.index - b.index) - .map((child) => child.id), - [state.items.itemMetaMap], + state.items.itemOrderedChildrenIds[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? [], + [state.items.itemOrderedChildrenIds], ); const getNavigableChildrenIds = (itemId: string | null) => { - let childrenIds = instance.getChildrenIds(itemId); + let childrenIds = instance.getItemOrderedChildrenIds(itemId); if (!params.disabledItemsFocusable) { childrenIds = childrenIds.filter((item) => !instance.isItemDisabled(item)); @@ -215,7 +225,7 @@ export const useTreeViewItems: TreeViewPlugin = ({ getItemMeta, getItem, getItemsToRender, - getChildrenIds, + getItemOrderedChildrenIds, getNavigableChildrenIds, isItemDisabled, preventItemUpdates, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index c0cefb6e8639..9af920c41518 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -20,7 +20,7 @@ export interface UseTreeViewItemsPublicAPI { export interface UseTreeViewItemsInstance extends UseTreeViewItemsPublicAPI { getItemMeta: (itemId: string) => TreeViewItemMeta; getItemsToRender: () => TreeViewItemProps[]; - getChildrenIds: (itemId: string | null) => string[]; + getItemOrderedChildrenIds: (parentId: string | null) => string[]; getNavigableChildrenIds: (itemId: string | null) => string[]; isItemDisabled: (itemId: string | null) => itemId is string; /** @@ -91,6 +91,7 @@ export interface UseTreeViewItemsState { itemTree: TreeViewItemIdAndChildren[]; itemMetaMap: TreeViewItemMetaMap; itemMap: TreeViewItemMap; + itemOrderedChildrenIds: { [parentItemId: string]: string[] }; }; } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts new file mode 100644 index 000000000000..bf81cbd4417b --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts @@ -0,0 +1 @@ +export const TREE_VIEW_ROOT_PARENT_ID = '__TREE_VIEW_ROOT_PARENT_ID__'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index 2db2047d534e..d26a7c2cccf5 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -1,17 +1,19 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; import useForkRef from '@mui/utils/useForkRef'; +import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { TreeViewItemPlugin, TreeViewItemMeta, TreeViewPlugin } from '../../models'; import { UseTreeViewJSXItemsSignature } from './useTreeViewJSXItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext'; import { - DescendantProvider, - TreeItemDescendant, - useDescendant, -} from '../../TreeViewProvider/DescendantProvider'; + TreeViewChildrenItemContext, + TreeViewChildrenItemProvider, +} from '../../TreeViewProvider/TreeViewChildrenItemProvider'; +import { TREE_VIEW_ROOT_PARENT_ID } from '../useTreeViewItems/useTreeViewItems.utils'; import type { TreeItemProps } from '../../../TreeItem'; import type { TreeItem2Props } from '../../../TreeItem2'; +import { UseTreeViewIdSignature } from '../useTreeViewId'; export const useTreeViewJSXItems: TreeViewPlugin = ({ instance, @@ -35,7 +37,7 @@ export const useTreeViewJSXItems: TreeViewPlugin = ...prevState, items: { ...prevState.items, - itemMetaMap: { ...prevState.items.itemMetaMap, [item.id]: item }, + itemMetaMap: { ...prevState.items.itemMetaMap, [item.id]: { ...item, index: -1 } }, // For `SimpleTreeView`, we don't have a proper `item` object, so we create a very basic one. itemMap: { ...prevState.items.itemMap, [item.id]: { id: item.id, label: item.label } }, }, @@ -43,6 +45,19 @@ export const useTreeViewJSXItems: TreeViewPlugin = }); }); + const setJSXItemsOrderedChildrenIds = (parentId: string | null, orderedChildrenIds: string[]) => { + setState((prevState) => ({ + ...prevState, + items: { + ...prevState.items, + itemOrderedChildrenIds: { + ...prevState.items.itemOrderedChildrenIds, + [parentId ?? TREE_VIEW_ROOT_PARENT_ID]: orderedChildrenIds, + }, + }, + })); + }; + const removeJSXItem = useEventCallback((itemId: string) => { setState((prevState) => { const newItemMetaMap = { ...prevState.items.itemMetaMap }; @@ -80,6 +95,7 @@ export const useTreeViewJSXItems: TreeViewPlugin = instance: { insertJSXItem, removeJSXItem, + setJSXItemsOrderedChildrenIds, mapFirstCharFromJSX, }, }; @@ -90,9 +106,20 @@ const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin { + const { instance } = useTreeViewContext<[UseTreeViewIdSignature, UseTreeViewJSXItemsSignature]>(); const { children, disabled = false, label, itemId, id } = props; - const { instance } = useTreeViewContext<[UseTreeViewJSXItemsSignature]>(); + const parentContext = React.useContext(TreeViewChildrenItemContext); + if (parentContext == null) { + throw new Error( + [ + 'MUI X: Could not find the Tree View Children Item context.', + 'It looks like you rendered your component outside of a SimpleTreeView parent component.', + 'This can also happen if you are bundling multiple versions of the Tree View.', + ].join('\n'), + ); + } + const { registerChild, unregisterChild, parentId } = parentContext; const isExpandable = (reactChildren: React.ReactNode) => { if (Array.isArray(reactChildren)) { @@ -103,39 +130,30 @@ const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin(null); const pluginContentRef = React.useRef(null); - - const handleRootRef = useForkRef(setTreeItemElement, rootRef); const handleContentRef = useForkRef(pluginContentRef, contentRef); - const descendant = React.useMemo( - () => ({ - element: treeItemElement!, - id: itemId, - }), - [itemId, treeItemElement], - ); + // Prevent any flashing + useEnhancedEffect(() => { + const idAttributeWithDefault = instance.getTreeItemIdAttribute(itemId, id); + registerChild(idAttributeWithDefault, itemId); - const { index, parentId } = useDescendant(descendant); + return () => { + unregisterChild(idAttributeWithDefault); + }; + }, [instance, registerChild, unregisterChild, itemId, id]); React.useEffect(() => { - // On the first render a item's index will be -1. We want to wait for the real index. - if (index !== -1) { - instance.insertJSXItem({ - id: itemId, - idAttribute: id, - index, - parentId, - expandable, - disabled, - }); + instance.insertJSXItem({ + id: itemId, + idAttribute: id, + parentId, + expandable, + disabled, + }); - return () => instance.removeJSXItem(itemId); - } - - return undefined; - }, [instance, parentId, index, itemId, expandable, disabled, id]); + return () => instance.removeJSXItem(itemId); + }, [instance, parentId, itemId, expandable, disabled, id]); React.useEffect(() => { if (label) { @@ -149,14 +167,18 @@ const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin ( - {children} + {children} +); + +useTreeViewJSXItems.wrapRoot = ({ children }) => ( + {children} ); useTreeViewJSXItems.params = {}; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts index 72970916f670..87f7f4a07baa 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.ts @@ -6,6 +6,7 @@ export interface UseTreeViewItemsInstance { insertJSXItem: (item: TreeViewItemMeta) => void; removeJSXItem: (itemId: string) => void; mapFirstCharFromJSX: (itemId: string, firstChar: string) => () => void; + setJSXItemsOrderedChildrenIds: (parentId: string | null, orderedChildrenIds: string[]) => void; } export interface UseTreeViewJSXItemsParameters {} diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts index 03c3daa60d60..12ff2e67b445 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts @@ -64,7 +64,7 @@ export const findOrderInTremauxTree = ( } const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor; - const ancestorFamily = instance.getChildrenIds(commonAncestor); + const ancestorFamily = instance.getItemOrderedChildrenIds(commonAncestor); const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1]; const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1]; diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts index 5c71251849dc..3898b90cc232 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts @@ -8,6 +8,7 @@ import { ConvertPluginsIntoSignatures, MergePluginsProperty, TreeItemWrapper, + TreeRootWrapper, TreeViewPublicAPI, } from '../models'; import { @@ -60,7 +61,7 @@ export const useTreeView = >(inParams.apiRef); - const innerRootRef = React.useRef(null); + const innerRootRef: React.RefObject = React.useRef(null); const handleRootRef = useForkRef(innerRootRef, inParams.rootRef); const [state, setState] = React.useState(() => { @@ -83,6 +84,7 @@ export const useTreeView = , + rootRef: innerRootRef, } as TreeViewContextValue; const runPlugin = (plugin: TreeViewPlugin) => { @@ -156,6 +158,18 @@ export const useTreeView = plugin.wrapRoot) + .filter((wrapRoot): wrapRoot is TreeRootWrapper => !!wrapRoot); + contextValue.wrapRoot = ({ children }) => { + let finalChildren: React.ReactNode = children; + rootWrappers.forEach((rootWrapper) => { + finalChildren = rootWrapper({ children: finalChildren }); + }); + + return finalChildren; + }; + const getRootProps = ( otherHandlers: TOther = {} as TOther, ) => { diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index fcfcb93a19f0..b2c5ebbe8992 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -30,7 +30,7 @@ export const useTreeItem2 = Date: Tue, 9 Apr 2024 13:23:00 +0200 Subject: [PATCH 092/912] [TreeView] Remove remaining occurences of the word "node" in the codebase (#12712) --- .../plugins/useTreeViewItems/useTreeViewItems.types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 9af920c41518..7f56a51db3e3 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -25,12 +25,12 @@ export interface UseTreeViewItemsInstance extends UseTreeViewItems isItemDisabled: (itemId: string | null) => itemId is string; /** * Freeze any future update to the state based on the `items` prop. - * This is useful when `useTreeViewJSXNodes` is used to avoid having conflicting sources of truth. + * This is useful when `useTreeViewJSXItems` is used to avoid having conflicting sources of truth. */ preventItemUpdates: () => void; /** * Check if the updates to the state based on the `items` prop are prevented. - * This is useful when `useTreeViewJSXNodes` is used to avoid having conflicting sources of truth. + * This is useful when `useTreeViewJSXItems` is used to avoid having conflicting sources of truth. * @returns {boolean} `true` if the updates to the state based on the `items` prop are prevented. */ areItemUpdatesPrevented: () => boolean; From 3120d6895a7db00b0cbf935c8aa93fa6983d8bd9 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 9 Apr 2024 13:42:23 +0200 Subject: [PATCH 093/912] [docs] Do not use import of depth 3 in the doc (#12716) --- .../rich-tree-view/customization/IconExpansionTreeView.js | 2 +- .../rich-tree-view/customization/IconExpansionTreeView.tsx | 2 +- .../simple-tree-view/customization/IconExpansionTreeView.js | 2 +- .../simple-tree-view/customization/IconExpansionTreeView.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js index fd33b99985c1..0a57a4123f6a 100644 --- a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js +++ b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.js @@ -1,7 +1,7 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; -import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; diff --git a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx index 9564b8d24b23..37f6f43aa73a 100644 --- a/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/IconExpansionTreeView.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; -import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; import { UseTreeItem2ContentSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; import { TreeViewBaseItem } from '@mui/x-tree-view/models'; diff --git a/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.js b/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.js index f924050a7f06..2aac5812e5d8 100644 --- a/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.js +++ b/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.js @@ -1,7 +1,7 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; -import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; diff --git a/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.tsx b/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.tsx index 7fda369d214d..816ee7f375df 100644 --- a/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.tsx +++ b/docs/data/tree-view/simple-tree-view/customization/IconExpansionTreeView.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; -import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; import { UseTreeItem2ContentSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; From 9d049bbdeceff36cee33530ec9575373f98aee8f Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 9 Apr 2024 17:28:57 +0200 Subject: [PATCH 094/912] [charts] Fix Barchart with empty dataset throwing an error (#12708) --- .../x-charts/src/BarChart/extremums.test.ts | 63 +++++++++++++++++++ packages/x-charts/src/BarChart/extremums.ts | 4 +- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 packages/x-charts/src/BarChart/extremums.test.ts diff --git a/packages/x-charts/src/BarChart/extremums.test.ts b/packages/x-charts/src/BarChart/extremums.test.ts new file mode 100644 index 000000000000..00942ffad552 --- /dev/null +++ b/packages/x-charts/src/BarChart/extremums.test.ts @@ -0,0 +1,63 @@ +import { expect } from 'chai'; +import { getExtremumX } from './extremums'; +import { ExtremumGetter } from '../models/seriesType/config'; + +const buildData = ( + data: number[], + layout: 'vertical' | 'horizontal' = 'vertical', +): Parameters>[0] => { + return { + series: { + id1: { + id: 'id1', + type: 'bar', + color: 'red', + data, + stackedData: data.length + ? [ + [data[0], data[1]], + [data[2], data[3]], + ] + : [], + layout, + }, + }, + axis: { + id: 'id', + data, + }, + isDefaultAxis: true, + }; +}; + +describe('BarChart - extremums', () => { + describe('getExtremumX', () => { + describe('vertical', () => { + it('should correctly get the extremes from axis', () => { + const [x, y] = getExtremumX(buildData([-1, 2, 3, 8])); + expect(x).to.equal(-1); + expect(y).to.equal(8); + }); + + it('should correctly get Infinity when empty data', () => { + const [x, y] = getExtremumX(buildData([])); + expect(x).to.equal(Infinity); + expect(y).to.equal(-Infinity); + }); + }); + + describe('horizontal', () => { + it('should correctly get the extremes from axis', () => { + const [x, y] = getExtremumX(buildData([-1, 2, 3, 8], 'horizontal')); + expect(x).to.equal(-1); + expect(y).to.equal(8); + }); + + it('should correctly get Infinity when empty data', () => { + const [x, y] = getExtremumX(buildData([], 'horizontal')); + expect(x).to.equal(null); + expect(y).to.equal(null); + }); + }); + }); +}); diff --git a/packages/x-charts/src/BarChart/extremums.ts b/packages/x-charts/src/BarChart/extremums.ts index d75f322009df..b2ea914188be 100644 --- a/packages/x-charts/src/BarChart/extremums.ts +++ b/packages/x-charts/src/BarChart/extremums.ts @@ -19,13 +19,13 @@ const getValueExtremum: ExtremumGetter<'bar'> = (params) => { ) .reduce( (acc: ExtremumGetterResult, seriesId) => { - const [seriesMin, seriesMax] = series[seriesId].stackedData.reduce( + const [seriesMin, seriesMax] = series[seriesId].stackedData?.reduce( (seriesAcc, values) => [ Math.min(...values, ...(seriesAcc[0] === null ? [] : [seriesAcc[0]])), Math.max(...values, ...(seriesAcc[1] === null ? [] : [seriesAcc[1]])), ], series[seriesId].stackedData[0], - ); + ) ?? [null, null]; return [ acc[0] === null ? seriesMin : Math.min(seriesMin, acc[0]), From 43247fd2ecfff8a6e81add4a40a9116e7efdbfc8 Mon Sep 17 00:00:00 2001 From: Brandon Faulkner <12897328+bfaulk96@users.noreply.github.com> Date: Wed, 10 Apr 2024 01:34:52 -0400 Subject: [PATCH 095/912] [docs] Fix typo in Pickers v7 migration page (#12721) Signed-off-by: Brandon Faulkner <12897328+bfaulk96@users.noreply.github.com> --- .../data/migration/migration-pickers-v6/migration-pickers-v6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md index eac5ac7a0046..23e509dc29a7 100644 --- a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md +++ b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md @@ -230,7 +230,7 @@ Learn more on this prop on [the `DateCalendar` documentation](/x/react-date-pick ```diff - ++ ``` ## Modified props From a473c21f313caabd8393f09939b6c9ce837604a4 Mon Sep 17 00:00:00 2001 From: Brandon Faulkner <12897328+bfaulk96@users.noreply.github.com> Date: Wed, 10 Apr 2024 01:46:34 -0400 Subject: [PATCH 096/912] [docs] Fix typo in Data Grid v7 migration page (#12720) Signed-off-by: Brandon Faulkner <12897328+bfaulk96@users.noreply.github.com> Signed-off-by: Lukas Co-authored-by: Lukas --- .../migration/migration-data-grid-v6/migration-data-grid-v6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 328ada32ec59..a6891036755b 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -245,7 +245,7 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) ```diff -valueFormatter: ({ value }) => value, - + alueFormatter: (value, row, column, apiRef) => value, + +valueFormatter: (value, row, column, apiRef) => value, ``` The `GridValueFormatterParams` interface has been removed: From 042c0133580a6ee046c29be51cbf73743c4dec96 Mon Sep 17 00:00:00 2001 From: Pontus Magnusson Date: Wed, 10 Apr 2024 12:14:24 +0200 Subject: [PATCH 097/912] [l10n] Improve Swedish (sv-SE) locale (#12731) Co-authored-by: Pontus Magnusson --- docs/data/data-grid/localization/data.json | 2 +- docs/data/date-pickers/localization/data.json | 2 +- packages/x-data-grid/src/locales/svSE.ts | 6 +-- packages/x-date-pickers/src/locales/svSE.ts | 44 +++++++++---------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index befab4dc41b9..4c0a0d9dbcbe 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -227,7 +227,7 @@ "languageTag": "sv-SE", "importName": "svSE", "localeName": "Swedish", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/svSE.ts" }, diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 14aef62970d8..9f57aab37387 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -227,7 +227,7 @@ "languageTag": "sv-SE", "importName": "svSE", "localeName": "Swedish", - "missingKeysCount": 22, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/svSE.ts" }, diff --git a/packages/x-data-grid/src/locales/svSE.ts b/packages/x-data-grid/src/locales/svSE.ts index c4cbfcabae67..c014fd7f1465 100644 --- a/packages/x-data-grid/src/locales/svSE.ts +++ b/packages/x-data-grid/src/locales/svSE.ts @@ -39,9 +39,9 @@ const svSEGrid: Partial = { toolbarExportExcel: 'Ladda ner som Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Sök', + columnsManagementNoColumns: 'Inga kolumner', + columnsManagementShowHideAllText: 'Visa/Dölj alla', // Filter panel text filterPanelAddFilter: 'Lägg till filter', diff --git a/packages/x-date-pickers/src/locales/svSE.ts b/packages/x-date-pickers/src/locales/svSE.ts index e14f6f593404..f2a8465c30e8 100644 --- a/packages/x-date-pickers/src/locales/svSE.ts +++ b/packages/x-date-pickers/src/locales/svSE.ts @@ -25,10 +25,10 @@ const svSEPickers: Partial> = { // DateRange labels start: 'Start', end: 'Slut', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Startdatum', + startTime: 'Starttid', + endDate: 'Slutdatum', + endTime: 'Sluttid', // Action bar cancelButtonLabel: 'Avbryt', @@ -67,34 +67,34 @@ const svSEPickers: Partial> = { value !== null && utils.isValid(value) ? `Välj tid, vald tid är ${utils.format(value, 'fullTime')}` : 'Välj tid', - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Rensa värde', // Table labels timeTableLabel: 'välj tid', dateTableLabel: 'välj datum', // Field section placeholders - // fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount), - // fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM', - // fieldDayPlaceholder: () => 'DD', - // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE', - // fieldHoursPlaceholder: () => 'hh', - // fieldMinutesPlaceholder: () => 'mm', - // fieldSecondsPlaceholder: () => 'ss', - // fieldMeridiemPlaceholder: () => 'aa', + fieldYearPlaceholder: (params) => 'Å'.repeat(params.digitAmount), + fieldMonthPlaceholder: (params) => (params.contentType === 'letter' ? 'MMMM' : 'MM'), + fieldDayPlaceholder: () => 'DD', + fieldWeekDayPlaceholder: (params) => (params.contentType === 'letter' ? 'EEEE' : 'EE'), + fieldHoursPlaceholder: () => 'tt', + fieldMinutesPlaceholder: () => 'mm', + fieldSecondsPlaceholder: () => 'ss', + fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'År', + month: 'Månad', + day: 'Dag', + weekDay: 'Veckodag', + hours: 'Timmar', + minutes: 'Minuter', + seconds: 'Sekunder', + meridiem: 'Meridiem', // Common - // empty: 'Empty', + empty: 'Tom', }; export const svSE = getPickersLocalization(svSEPickers); From 7fd89cb11e77690b9133bf13930df51dde3ea96f Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Wed, 10 Apr 2024 14:54:37 +0200 Subject: [PATCH 098/912] [DataGrid] Do not escape double quotes when copying to clipboard (#12722) --- .../cellSelection/useGridCellSelection.ts | 2 +- .../tests/clipboard.DataGridPremium.test.tsx | 24 +++++++++ .../src/tests/clipboard.DataGridPro.test.tsx | 53 ++++++++++++++----- .../export/serializers/csvSerializer.ts | 11 ++-- 4 files changed, 71 insertions(+), 19 deletions(-) diff --git a/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts b/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts index e407ed045a0a..ad700ae7eca1 100644 --- a/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts +++ b/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts @@ -561,7 +561,7 @@ export const useGridCellSelection = ( cellData = serializeCellValue(cellParams, { delimiterCharacter: clipboardCopyCellDelimiter, ignoreValueFormatter, - shouldAppendQuotes: true, + shouldAppendQuotes: false, }); } else { cellData = ''; diff --git a/packages/x-data-grid-premium/src/tests/clipboard.DataGridPremium.test.tsx b/packages/x-data-grid-premium/src/tests/clipboard.DataGridPremium.test.tsx index c98bc58370e2..cbc2b55cc850 100644 --- a/packages/x-data-grid-premium/src/tests/clipboard.DataGridPremium.test.tsx +++ b/packages/x-data-grid-premium/src/tests/clipboard.DataGridPremium.test.tsx @@ -140,6 +140,30 @@ describe(' - Clipboard', () => { fireEvent.keyDown(cell, { key: 'c', keyCode: 67, ctrlKey: true }); expect(writeText.lastCall.firstArg).to.equal(['Adidas', 'Nike', 'Puma'].join('\r\n')); }); + + it('should not escape double quotes when copying multiple cells to clipboard', () => { + render( + , + ); + + const cell = getCell(0, 0); + cell.focus(); + userEvent.mousePress(cell); + + fireEvent.keyDown(cell, { key: 'Ctrl' }); + fireEvent.click(getCell(1, 0), { ctrlKey: true }); + + fireEvent.keyDown(cell, { key: 'c', keyCode: 67, ctrlKey: true }); + expect(writeText.lastCall.firstArg).to.equal(['1 " 1', '2'].join('\r\n')); + }); }); describe('paste', () => { diff --git a/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx index fb2a4721dbf9..38f3731ddd33 100644 --- a/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx @@ -28,18 +28,9 @@ describe(' - Clipboard', () => { apiRef={apiRef} columns={columns} rows={[ - { - id: 0, - brand: 'Nike', - }, - { - id: 1, - brand: 'Adidas', - }, - { - id: 2, - brand: 'Puma', - }, + { id: 0, brand: 'Nike' }, + { id: 1, brand: 'Adidas' }, + { id: 2, brand: 'Puma' }, ]} {...props} /> @@ -47,7 +38,7 @@ describe(' - Clipboard', () => { ); } - describe('copySelectedRowsToClipboard', () => { + describe('copy to clipboard', () => { let writeText: SinonStub; const originalClipboard = navigator.clipboard; @@ -74,5 +65,41 @@ describe(' - Clipboard', () => { expect(writeText.firstCall.args[0]).to.equal(['0\tNike', '1\tAdidas'].join('\r\n')); }); }); + + it('should not escape double quotes when copying a single cell to clipboard', () => { + render( + , + ); + + const cell = getCell(0, 0); + cell.focus(); + userEvent.mousePress(cell); + + fireEvent.keyDown(cell, { key: 'c', keyCode: 67, ctrlKey: true }); + expect(writeText.lastCall.firstArg).to.equal('1 " 1'); + }); + + it('should not escape double quotes when copying rows to clipboard', () => { + render( + , + ); + + act(() => apiRef.current.selectRows([0, 1])); + const cell = getCell(0, 0); + userEvent.mousePress(cell); + fireEvent.keyDown(cell, { key: 'c', keyCode: 67, ctrlKey: true }); + expect(writeText.firstCall.args[0]).to.equal(['1 " 1', '2'].join('\r\n')); + }); }); }); diff --git a/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts b/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts index 88eea0e800fe..b11c6c986de5 100644 --- a/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts +++ b/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts @@ -7,12 +7,13 @@ import { buildWarning } from '../../../../utils/warning'; function sanitizeCellValue(value: any, delimiterCharacter: string, shouldAppendQuotes: boolean) { if (typeof value === 'string') { - // Make sure value containing delimiter or line break won't be split into multiple rows - if ([delimiterCharacter, '\n', '\r', '"'].some((delimiter) => value.includes(delimiter))) { - if (shouldAppendQuotes) { - return `"${value.replace(/"/g, '""')}"`; + if (shouldAppendQuotes) { + const escapedValue = value.replace(/"/g, '""'); + // Make sure value containing delimiter or line break won't be split into multiple rows + if ([delimiterCharacter, '\n', '\r', '"'].some((delimiter) => value.includes(delimiter))) { + return `"${escapedValue}"`; } - return `${value.replace(/"/g, '""')}`; + return escapedValue; } return value; From f8e62473d25a008e6c1c81baa59f41d52d09703e Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 10 Apr 2024 17:17:24 +0300 Subject: [PATCH 099/912] [core] Support multiple resolved `l10n` PR packages (#12735) --- scripts/releaseChangelog.mjs | 38 +++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index ebfd37789ef1..2f528a340a7d 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -42,21 +42,21 @@ async function findLatestTaggedVersion(octokit) { return data[0].name.trim(); } -function resolvePackageByLabels(labels) { - let resolvedPackage = null; +function resolvePackagesByLabels(labels) { + let resolvedPackages = []; labels.forEach((label) => { switch (label.name) { case 'component: data grid': - resolvedPackage = 'DataGrid'; + resolvedPackages.push('DataGrid'); break; case 'component: pickers': - resolvedPackage = 'pickers'; + resolvedPackages.push('pickers'); break; default: break; } }); - return resolvedPackage; + return resolvedPackages; } async function main(argv) { @@ -203,19 +203,21 @@ async function main(argv) { case 'l10n': case '118n': { const prLabels = prsLabelsMap[commitItem.sha]; - const resolvedPackage = resolvePackageByLabels(prLabels); - if (resolvedPackage) { - switch (resolvedPackage) { - case 'DataGrid': - dataGridCommits.push(commitItem); - break; - case 'pickers': - pickersCommits.push(commitItem); - break; - default: - coreCommits.push(commitItem); - break; - } + const resolvedPackages = resolvePackagesByLabels(prLabels); + if (resolvedPackages.length > 0) { + resolvedPackages.forEach((resolvedPackage) => { + switch (resolvedPackage) { + case 'DataGrid': + dataGridCommits.push(commitItem); + break; + case 'pickers': + pickersCommits.push(commitItem); + break; + default: + coreCommits.push(commitItem); + break; + } + }); } break; } From d83881812acf4934dc4c0dea037000474551588f Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Wed, 10 Apr 2024 16:47:01 +0200 Subject: [PATCH 100/912] [DataGridPremium] Fix clipboard paste not working when cell loses focus (#12724) --- .../hooks/features/clipboard/useGridClipboardImport.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid-premium/src/hooks/features/clipboard/useGridClipboardImport.ts b/packages/x-data-grid-premium/src/hooks/features/clipboard/useGridClipboardImport.ts index 0c06460e0e3a..b05389a3fd0c 100644 --- a/packages/x-data-grid-premium/src/hooks/features/clipboard/useGridClipboardImport.ts +++ b/packages/x-data-grid-premium/src/hooks/features/clipboard/useGridClipboardImport.ts @@ -220,7 +220,8 @@ function defaultPasteResolver({ const isSingleValuePasted = pastedData.length === 1 && pastedData[0].length === 1; const cellSelectionModel = apiRef.current.getCellSelectionModel(); - if (cellSelectionModel && apiRef.current.getSelectedCellsAsArray().length > 1) { + const selectedCellsArray = apiRef.current.getSelectedCellsAsArray(); + if (cellSelectionModel && selectedCellsArray.length > 1) { Object.keys(cellSelectionModel).forEach((rowId, rowIndex) => { const rowDataArr = pastedData[isSingleValuePasted ? 0 : rowIndex]; const hasRowData = isSingleValuePasted ? true : rowDataArr !== undefined; @@ -275,7 +276,11 @@ function defaultPasteResolver({ return; } - const selectedCell = gridFocusCellSelector(apiRef); + let selectedCell = gridFocusCellSelector(apiRef); + if (!selectedCell && selectedCellsArray.length === 1) { + selectedCell = selectedCellsArray[0]; + } + if (!selectedCell) { return; } From 3a5c36355a004e3ff20f88983ea01e38ec2eacb3 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 10 Apr 2024 17:03:19 +0200 Subject: [PATCH 101/912] [TreeView] Add a new lookup to access an item index without expansive computation (#12729) --- .../useTreeViewItems/useTreeViewItems.ts | 26 ++++++++++++++----- .../useTreeViewItems.types.ts | 2 ++ .../useTreeViewItems.utils.ts | 9 +++++++ .../useTreeViewJSXItems.tsx | 15 ++++++++--- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 5b98dac00b21..921857b209a3 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -3,14 +3,12 @@ import { TreeViewPlugin } from '../../models'; import { UseTreeViewItemsSignature, UseTreeViewItemsDefaultizedParameters, - TreeViewItemMetaMap, TreeViewItemIdAndChildren, UseTreeViewItemsState, - TreeViewItemMap, } from './useTreeViewItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; import { TreeViewBaseItem } from '../../../models'; -import { TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils'; +import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils'; interface UpdateNodesStateParameters extends Pick< @@ -18,15 +16,16 @@ interface UpdateNodesStateParameters 'items' | 'isItemDisabled' | 'getItemLabel' | 'getItemId' > {} +type State = UseTreeViewItemsState['items']; const updateItemsState = ({ items, isItemDisabled, getItemLabel, getItemId, }: UpdateNodesStateParameters): UseTreeViewItemsState['items'] => { - const itemMetaMap: TreeViewItemMetaMap = {}; - const itemMap: TreeViewItemMap = {}; - const itemOrderedChildrenIds: { [parentId: string]: string[] } = { + const itemMetaMap: State['itemMetaMap'] = {}; + const itemMap: State['itemMap'] = {}; + const itemOrderedChildrenIds: State['itemOrderedChildrenIds'] = { [TREE_VIEW_ROOT_PARENT_ID]: [], }; @@ -95,11 +94,17 @@ const updateItemsState = ({ const itemTree = items.map((item, itemIndex) => processItem(item, itemIndex, null)); + const itemChildrenIndexes: State['itemChildrenIndexes'] = {}; + Object.keys(itemOrderedChildrenIds).forEach((parentId) => { + itemChildrenIndexes[parentId] = buildSiblingIndexes(itemOrderedChildrenIds[parentId]); + }); + return { itemMetaMap, itemTree, itemMap, itemOrderedChildrenIds, + itemChildrenIndexes, }; }; @@ -148,6 +153,14 @@ export const useTreeViewItems: TreeViewPlugin = ({ [instance], ); + const getItemIndex = React.useCallback( + (itemId: string) => { + const parentId = instance.getItemMeta(itemId).parentId ?? TREE_VIEW_ROOT_PARENT_ID; + return state.items.itemChildrenIndexes[parentId][itemId]; + }, + [instance, state.items.itemChildrenIndexes], + ); + const getItemOrderedChildrenIds = React.useCallback( (itemId: string | null) => state.items.itemOrderedChildrenIds[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? [], @@ -225,6 +238,7 @@ export const useTreeViewItems: TreeViewPlugin = ({ getItemMeta, getItem, getItemsToRender, + getItemIndex, getItemOrderedChildrenIds, getNavigableChildrenIds, isItemDisabled, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 7f56a51db3e3..ff95e42a07d9 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -23,6 +23,7 @@ export interface UseTreeViewItemsInstance extends UseTreeViewItems getItemOrderedChildrenIds: (parentId: string | null) => string[]; getNavigableChildrenIds: (itemId: string | null) => string[]; isItemDisabled: (itemId: string | null) => itemId is string; + getItemIndex: (itemId: string) => number; /** * Freeze any future update to the state based on the `items` prop. * This is useful when `useTreeViewJSXItems` is used to avoid having conflicting sources of truth. @@ -92,6 +93,7 @@ export interface UseTreeViewItemsState { itemMetaMap: TreeViewItemMetaMap; itemMap: TreeViewItemMap; itemOrderedChildrenIds: { [parentItemId: string]: string[] }; + itemChildrenIndexes: { [parentItemId: string]: { [itemId: string]: number } }; }; } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts index bf81cbd4417b..176d1b5eb37d 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.utils.ts @@ -1 +1,10 @@ export const TREE_VIEW_ROOT_PARENT_ID = '__TREE_VIEW_ROOT_PARENT_ID__'; + +export const buildSiblingIndexes = (siblings: string[]) => { + const siblingsIndexLookup: { [itemId: string]: number } = {}; + siblings.forEach((childId, index) => { + siblingsIndexLookup[childId] = index; + }); + + return siblingsIndexLookup; +}; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index d26a7c2cccf5..5b2775a94cfc 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -10,7 +10,10 @@ import { TreeViewChildrenItemContext, TreeViewChildrenItemProvider, } from '../../TreeViewProvider/TreeViewChildrenItemProvider'; -import { TREE_VIEW_ROOT_PARENT_ID } from '../useTreeViewItems/useTreeViewItems.utils'; +import { + buildSiblingIndexes, + TREE_VIEW_ROOT_PARENT_ID, +} from '../useTreeViewItems/useTreeViewItems.utils'; import type { TreeItemProps } from '../../../TreeItem'; import type { TreeItem2Props } from '../../../TreeItem2'; import { UseTreeViewIdSignature } from '../useTreeViewId'; @@ -37,7 +40,7 @@ export const useTreeViewJSXItems: TreeViewPlugin = ...prevState, items: { ...prevState.items, - itemMetaMap: { ...prevState.items.itemMetaMap, [item.id]: { ...item, index: -1 } }, + itemMetaMap: { ...prevState.items.itemMetaMap, [item.id]: item }, // For `SimpleTreeView`, we don't have a proper `item` object, so we create a very basic one. itemMap: { ...prevState.items.itemMap, [item.id]: { id: item.id, label: item.label } }, }, @@ -46,13 +49,19 @@ export const useTreeViewJSXItems: TreeViewPlugin = }); const setJSXItemsOrderedChildrenIds = (parentId: string | null, orderedChildrenIds: string[]) => { + const parentIdWithDefault = parentId ?? TREE_VIEW_ROOT_PARENT_ID; + setState((prevState) => ({ ...prevState, items: { ...prevState.items, itemOrderedChildrenIds: { ...prevState.items.itemOrderedChildrenIds, - [parentId ?? TREE_VIEW_ROOT_PARENT_ID]: orderedChildrenIds, + [parentIdWithDefault]: orderedChildrenIds, + }, + itemChildrenIndexes: { + ...prevState.items.itemChildrenIndexes, + [parentIdWithDefault]: buildSiblingIndexes(orderedChildrenIds), }, }, })); From 873d9649fe5cde4064bc13eee3b309ff47a0ee4e Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Wed, 10 Apr 2024 20:19:43 -0400 Subject: [PATCH 102/912] [DataGrid] Make colors customizable (#12614) Signed-off-by: Rom Grk Co-authored-by: Sam Sycamore <71297412+samuelsycamore@users.noreply.github.com> --- docs/data/data-grid/style/style.md | 19 +++++++++++++++++++ .../components/containers/GridRootStyles.ts | 5 +++-- .../src/themeAugmentation/overrides.ts | 7 +++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/data/data-grid/style/style.md b/docs/data/data-grid/style/style.md index 42cbe48475a7..71ee02e6f58e 100644 --- a/docs/data/data-grid/style/style.md +++ b/docs/data/data-grid/style/style.md @@ -116,6 +116,25 @@ The following demo illustrates how this can be achieved. {{"demo": "StripedGrid.js", "bg": "inline"}} +## Theme header and pinned sections + +By default, the Data Grid uses the Material UI `theme.palette.background.default` color for the background of its header and pinned sections. These elements require a solid color to hide the scrollable content behind them. You can override that color with the following configuration: + +```tsx +import { createTheme } from '@mui/material/styles'; + +const theme = createTheme({ + mixins: { + MuiDataGrid: { + // Pinned columns sections + pinnedBackground: '#340606', + // Headers, and top & bottom fixed rows + containerBackground: '#343434', + }, + }, +}); +``` + ## Custom theme The following demo leverages the CSS customization API to match the Ant Design specification. diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index 3c7708692775..e5a2b8bbf1cf 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -8,6 +8,7 @@ import { recomposeColor, Theme, } from '@mui/material/styles'; +import type {} from '../../themeAugmentation/overrides'; import { gridClasses as c } from '../../constants/gridClasses'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; @@ -126,9 +127,9 @@ export const GridRootStyles = styled('div', { const containerBackground = t.vars ? t.vars.palette.background.default - : t.palette.background.default; + : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default; - const pinnedBackground = containerBackground; + const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground; const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` diff --git a/packages/x-data-grid/src/themeAugmentation/overrides.ts b/packages/x-data-grid/src/themeAugmentation/overrides.ts index 00ab216a1f7e..f41cd6a731a4 100644 --- a/packages/x-data-grid/src/themeAugmentation/overrides.ts +++ b/packages/x-data-grid/src/themeAugmentation/overrides.ts @@ -6,4 +6,11 @@ export interface DataGridComponentNameToClassKey { declare module '@mui/material/styles' { interface ComponentNameToClassKey extends DataGridComponentNameToClassKey {} + + interface Mixins { + MuiDataGrid?: { + containerBackground?: string; + pinnedBackground?: string; + }; + } } From 73dadbd9d2ba85506ce10b7f8e9aa45bda6f3f00 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 11 Apr 2024 08:45:13 +0200 Subject: [PATCH 103/912] [TreeView] Improve performance by removing `getNavigableChildrenIds` method (#12713) --- .../useTreeViewFocus/useTreeViewFocus.ts | 5 +- .../useTreeViewItems/useTreeViewItems.ts | 12 +- .../useTreeViewItems.types.ts | 4 +- .../useTreeViewKeyboardNavigation.ts | 24 +-- .../useTreeViewSelection.ts | 27 +-- .../useTreeViewSelection.utils.ts | 75 ------- .../useTreeView/useTreeView.utils.ts | 66 ------ .../x-tree-view/src/internals/utils/tree.ts | 204 ++++++++++++++++++ 8 files changed, 234 insertions(+), 183 deletions(-) delete mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts delete mode 100644 packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts create mode 100644 packages/x-tree-view/src/internals/utils/tree.ts diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 267f30bb56d4..63f51c998778 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -6,6 +6,7 @@ import { TreeViewPlugin, TreeViewUsedInstance } from '../../models'; import { UseTreeViewFocusSignature } from './useTreeViewFocus.types'; import { useInstanceEventHandler } from '../../hooks/useInstanceEventHandler'; import { getActiveElement } from '../../utils/utils'; +import { getFirstNavigableItem } from '../../utils/tree'; const useTabbableItemId = ( instance: TreeViewUsedInstance, @@ -24,7 +25,7 @@ const useTabbableItemId = ( } if (tabbableItemId == null) { - tabbableItemId = instance.getNavigableChildrenIds(null)[0]; + tabbableItemId = getFirstNavigableItem(instance); } return tabbableItemId; @@ -95,7 +96,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ } if (itemToFocusId == null) { - itemToFocusId = instance.getNavigableChildrenIds(null)[0]; + itemToFocusId = getFirstNavigableItem(instance); } innerFocusItem(event, itemToFocusId); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 921857b209a3..4f279825708b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -167,13 +167,11 @@ export const useTreeViewItems: TreeViewPlugin = ({ [state.items.itemOrderedChildrenIds], ); - const getNavigableChildrenIds = (itemId: string | null) => { - let childrenIds = instance.getItemOrderedChildrenIds(itemId); - - if (!params.disabledItemsFocusable) { - childrenIds = childrenIds.filter((item) => !instance.isItemDisabled(item)); + const isItemNavigable = (itemId: string) => { + if (params.disabledItemsFocusable) { + return true; } - return childrenIds; + return !instance.isItemDisabled(itemId); }; const areItemUpdatesPreventedRef = React.useRef(false); @@ -240,8 +238,8 @@ export const useTreeViewItems: TreeViewPlugin = ({ getItemsToRender, getItemIndex, getItemOrderedChildrenIds, - getNavigableChildrenIds, isItemDisabled, + isItemNavigable, preventItemUpdates, areItemUpdatesPrevented, }, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index ff95e42a07d9..b9534e4eadbb 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -21,8 +21,8 @@ export interface UseTreeViewItemsInstance extends UseTreeViewItems getItemMeta: (itemId: string) => TreeViewItemMeta; getItemsToRender: () => TreeViewItemProps[]; getItemOrderedChildrenIds: (parentId: string | null) => string[]; - getNavigableChildrenIds: (itemId: string | null) => string[]; - isItemDisabled: (itemId: string | null) => itemId is string; + isItemDisabled: (itemId: string) => itemId is string; + isItemNavigable: (itemId: string) => boolean; getItemIndex: (itemId: string) => number; /** * Freeze any future update to the state based on the `items` prop. diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index 0a97109fe0df..bcf20f45487f 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -3,11 +3,11 @@ import { useTheme } from '@mui/material/styles'; import useEventCallback from '@mui/utils/useEventCallback'; import { TreeViewItemMeta, TreeViewPlugin } from '../../models'; import { - getFirstItem, - getLastItem, - getNextItem, - getPreviousItem, -} from '../../useTreeView/useTreeView.utils'; + getFirstNavigableItem, + getLastNavigableItem, + getNextNavigableItem, + getPreviousNavigableItem, +} from '../../utils/tree'; import { TreeViewFirstCharMap, UseTreeViewKeyboardNavigationSignature, @@ -157,7 +157,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focus the next focusable item case key === 'ArrowDown': { - const nextItem = getNextItem(instance, itemId); + const nextItem = getNextNavigableItem(instance, itemId); if (nextItem) { event.preventDefault(); instance.focusItem(event, nextItem); @@ -181,7 +181,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the previous focusable item case key === 'ArrowUp': { - const previousItem = getPreviousItem(instance, itemId); + const previousItem = getPreviousNavigableItem(instance, itemId); if (previousItem) { event.preventDefault(); instance.focusItem(event, previousItem); @@ -207,7 +207,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // If the focused item is collapsed and has children, we expand it case (key === 'ArrowRight' && !isRTL) || (key === 'ArrowLeft' && isRTL): { if (instance.isItemExpanded(itemId)) { - const nextItemId = getNextItem(instance, itemId); + const nextItemId = getNextNavigableItem(instance, itemId); if (nextItemId) { instance.focusItem(event, nextItemId); event.preventDefault(); @@ -239,7 +239,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the first item in the tree case key === 'Home': { - instance.focusItem(event, getFirstItem(instance)); + instance.focusItem(event, getFirstNavigableItem(instance)); // Multi select behavior when pressing Ctrl + Shift + Home // Selects the focused item and all items up to the first item. @@ -253,7 +253,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the last item in the tree case key === 'End': { - instance.focusItem(event, getLastItem(instance)); + instance.focusItem(event, getLastNavigableItem(instance)); // Multi select behavior when pressing Ctrl + Shirt + End // Selects the focused item and all the items down to the last item. @@ -276,8 +276,8 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Selects all the items case key === 'a' && ctrlPressed && params.multiSelect && !params.disableSelection: { instance.selectRange(event, { - start: getFirstItem(instance), - end: getLastItem(instance), + start: getFirstNavigableItem(instance), + end: getLastNavigableItem(instance), }); event.preventDefault(); break; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts index 58c30f122b10..bda0ed53bc1a 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts @@ -1,8 +1,11 @@ import * as React from 'react'; import { TreeViewPlugin, TreeViewItemRange } from '../../models'; -import { getNextItem, getFirstItem, getLastItem } from '../../useTreeView/useTreeView.utils'; +import { + getFirstNavigableItem, + getLastNavigableItem, + getNavigableItemsInRange, +} from '../../utils/tree'; import { UseTreeViewSelectionSignature } from './useTreeViewSelection.types'; -import { findOrderInTremauxTree } from './useTreeViewSelection.utils'; export const useTreeViewSelection: TreeViewPlugin = ({ instance, @@ -80,20 +83,6 @@ export const useTreeViewSelection: TreeViewPlugin currentRangeSelection.current = []; }; - const getItemsInRange = (itemAId: string, itemBId: string) => { - const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId); - const items = [first]; - - let current = first; - - while (current !== last) { - current = getNextItem(instance, current)!; - items.push(current); - } - - return items; - }; - const handleRangeArrowSelect = (event: React.SyntheticEvent, items: TreeViewItemRange) => { let base = (models.selectedItems.value as string[]).slice(); const { start, next, current } = items; @@ -134,7 +123,7 @@ export const useTreeViewSelection: TreeViewPlugin base = base.filter((id) => currentRangeSelection.current.indexOf(id) === -1); } - let range = getItemsInRange(start, end); + let range = getNavigableItemsInRange(instance, start, end); range = range.filter((item) => !instance.isItemDisabled(item)); currentRangeSelection.current = range; let newSelected = base.concat(range); @@ -165,7 +154,7 @@ export const useTreeViewSelection: TreeViewPlugin instance.selectRange(event, { start, - end: getFirstItem(instance), + end: getFirstNavigableItem(instance), }); }; @@ -178,7 +167,7 @@ export const useTreeViewSelection: TreeViewPlugin instance.selectRange(event, { start, - end: getLastItem(instance), + end: getLastNavigableItem(instance), }); }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts deleted file mode 100644 index 12ff2e67b445..000000000000 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { TreeViewInstance } from '../../models'; -import { UseTreeViewItemsSignature } from '../useTreeViewItems'; - -/** - * This is used to determine the start and end of a selection range so - * we can get the items between the two border items. - * - * It finds the items' common ancestor using - * a naive implementation of a lowest common ancestor algorithm - * (https://en.wikipedia.org/wiki/Lowest_common_ancestor). - * Then compares the ancestor's 2 children that are ancestors of itemA and ItemB - * so we can compare their indexes to work out which item comes first in a depth first search. - * (https://en.wikipedia.org/wiki/Depth-first_search) - * - * Another way to put it is which item is shallower in a trémaux tree - * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree - */ -export const findOrderInTremauxTree = ( - instance: TreeViewInstance<[UseTreeViewItemsSignature]>, - itemAId: string, - itemBId: string, -) => { - if (itemAId === itemBId) { - return [itemAId, itemBId]; - } - - const itemA = instance.getItemMeta(itemAId); - const itemB = instance.getItemMeta(itemBId); - - if (itemA.parentId === itemB.id || itemB.parentId === itemA.id) { - return itemB.parentId === itemA.id ? [itemA.id, itemB.id] : [itemB.id, itemA.id]; - } - - const aFamily: (string | null)[] = [itemA.id]; - const bFamily: (string | null)[] = [itemB.id]; - - let aAncestor = itemA.parentId; - let bAncestor = itemB.parentId; - - let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1; - let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1; - - let continueA = true; - let continueB = true; - - while (!bAncestorIsCommon && !aAncestorIsCommon) { - if (continueA) { - aFamily.push(aAncestor); - aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1; - continueA = aAncestor !== null; - if (!aAncestorIsCommon && continueA) { - aAncestor = instance.getItemMeta(aAncestor!).parentId; - } - } - - if (continueB && !aAncestorIsCommon) { - bFamily.push(bAncestor); - bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1; - continueB = bAncestor !== null; - if (!bAncestorIsCommon && continueB) { - bAncestor = instance.getItemMeta(bAncestor!).parentId; - } - } - } - - const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor; - const ancestorFamily = instance.getItemOrderedChildrenIds(commonAncestor); - - const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1]; - const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1]; - - return ancestorFamily.indexOf(aSide!) < ancestorFamily.indexOf(bSide!) - ? [itemAId, itemBId] - : [itemBId, itemAId]; -}; diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts deleted file mode 100644 index 4c3033421b20..000000000000 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.utils.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { TreeViewInstance } from '../models'; -import type { UseTreeViewExpansionSignature } from '../plugins/useTreeViewExpansion'; -import type { UseTreeViewItemsSignature } from '../plugins/useTreeViewItems'; - -export const getPreviousItem = ( - instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, - itemId: string, -) => { - const itemMeta = instance.getItemMeta(itemId); - const siblings = instance.getNavigableChildrenIds(itemMeta.parentId); - const itemIndex = siblings.indexOf(itemId); - - if (itemIndex === 0) { - return itemMeta.parentId; - } - - let currentItem: string = siblings[itemIndex - 1]; - while ( - instance.isItemExpanded(currentItem) && - instance.getNavigableChildrenIds(currentItem).length > 0 - ) { - currentItem = instance.getNavigableChildrenIds(currentItem).pop()!; - } - - return currentItem; -}; - -export const getNextItem = ( - instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewItemsSignature]>, - itemId: string, -) => { - // If expanded get first child - if (instance.isItemExpanded(itemId) && instance.getNavigableChildrenIds(itemId).length > 0) { - return instance.getNavigableChildrenIds(itemId)[0]; - } - - let itemMeta = instance.getItemMeta(itemId); - while (itemMeta != null) { - // Try to get next sibling - const siblings = instance.getNavigableChildrenIds(itemMeta.parentId); - const nextSibling = siblings[siblings.indexOf(itemMeta.id) + 1]; - - if (nextSibling) { - return nextSibling; - } - - // If the sibling does not exist, go up a level to the parent and try again. - itemMeta = instance.getItemMeta(itemMeta.parentId!); - } - - return null; -}; - -export const getLastItem = ( - instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewItemsSignature]>, -) => { - let lastItem = instance.getNavigableChildrenIds(null).pop()!; - - while (instance.isItemExpanded(lastItem)) { - lastItem = instance.getNavigableChildrenIds(lastItem).pop()!; - } - return lastItem; -}; - -export const getFirstItem = (instance: TreeViewInstance<[UseTreeViewItemsSignature]>) => - instance.getNavigableChildrenIds(null)[0]; diff --git a/packages/x-tree-view/src/internals/utils/tree.ts b/packages/x-tree-view/src/internals/utils/tree.ts new file mode 100644 index 000000000000..d3938323ca60 --- /dev/null +++ b/packages/x-tree-view/src/internals/utils/tree.ts @@ -0,0 +1,204 @@ +import { TreeViewInstance } from '../models'; +import type { UseTreeViewExpansionSignature } from '../plugins/useTreeViewExpansion'; +import type { UseTreeViewItemsSignature } from '../plugins/useTreeViewItems'; + +const getLastNavigableItemInArray = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature]>, + items: string[], +) => { + // Equivalent to Array.prototype.findLastIndex + let itemIndex = items.length - 1; + while (itemIndex >= 0 && !instance.isItemNavigable(items[itemIndex])) { + itemIndex -= 1; + } + + if (itemIndex === -1) { + return undefined; + } + + return items[itemIndex]; +}; + +export const getPreviousNavigableItem = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, + itemId: string, +) => { + const itemMeta = instance.getItemMeta(itemId); + const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId); + const itemIndex = instance.getItemIndex(itemId); + + // TODO: What should we do if the parent is not navigable? + if (itemIndex === 0) { + return itemMeta.parentId; + } + + let currentItemId: string = siblings[itemIndex - 1]; + let lastNavigableChild = getLastNavigableItemInArray( + instance, + instance.getItemOrderedChildrenIds(currentItemId), + ); + while (instance.isItemExpanded(currentItemId) && lastNavigableChild != null) { + currentItemId = lastNavigableChild; + lastNavigableChild = instance + .getItemOrderedChildrenIds(currentItemId) + .find(instance.isItemNavigable); + } + + return currentItemId; +}; + +export const getNextNavigableItem = ( + instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewItemsSignature]>, + itemId: string, +) => { + // If the item is expanded and has some navigable children, return the first of them. + if (instance.isItemExpanded(itemId)) { + const firstNavigableChild = instance + .getItemOrderedChildrenIds(itemId) + .find(instance.isItemNavigable); + if (firstNavigableChild != null) { + return firstNavigableChild; + } + } + + let itemMeta = instance.getItemMeta(itemId); + while (itemMeta != null) { + // Try to find the first navigable sibling after the current item. + const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId); + const currentItemIndex = instance.getItemIndex(itemMeta.id); + + if (currentItemIndex < siblings.length - 1) { + let nextItemIndex = currentItemIndex + 1; + while ( + !instance.isItemNavigable(siblings[nextItemIndex]) && + nextItemIndex < siblings.length - 1 + ) { + nextItemIndex += 1; + } + + if (instance.isItemNavigable(siblings[nextItemIndex])) { + return siblings[nextItemIndex]; + } + } + + // If the sibling does not exist, go up a level to the parent and try again. + itemMeta = instance.getItemMeta(itemMeta.parentId!); + } + + return null; +}; + +export const getLastNavigableItem = ( + instance: TreeViewInstance<[UseTreeViewExpansionSignature, UseTreeViewItemsSignature]>, +) => { + let itemId: string | null = null; + while (itemId == null || instance.isItemExpanded(itemId)) { + const children = instance.getItemOrderedChildrenIds(itemId); + const lastNavigableChild = getLastNavigableItemInArray(instance, children); + + // The item has no navigable children. + if (lastNavigableChild == null) { + return itemId!; + } + + itemId = lastNavigableChild; + } + + return itemId!; +}; + +export const getFirstNavigableItem = (instance: TreeViewInstance<[UseTreeViewItemsSignature]>) => + instance.getItemOrderedChildrenIds(null).find(instance.isItemNavigable)!; + +/** + * This is used to determine the start and end of a selection range so + * we can get the items between the two border items. + * + * It finds the items' common ancestor using + * a naive implementation of a lowest common ancestor algorithm + * (https://en.wikipedia.org/wiki/Lowest_common_ancestor). + * Then compares the ancestor's 2 children that are ancestors of itemA and ItemB + * so we can compare their indexes to work out which item comes first in a depth first search. + * (https://en.wikipedia.org/wiki/Depth-first_search) + * + * Another way to put it is which item is shallower in a trémaux tree + * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree + */ +const findOrderInTremauxTree = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature]>, + itemAId: string, + itemBId: string, +) => { + if (itemAId === itemBId) { + return [itemAId, itemBId]; + } + + const itemMetaA = instance.getItemMeta(itemAId); + const itemMetaB = instance.getItemMeta(itemBId); + + if (itemMetaA.parentId === itemMetaB.id || itemMetaB.parentId === itemMetaA.id) { + return itemMetaB.parentId === itemMetaA.id + ? [itemMetaA.id, itemMetaB.id] + : [itemMetaB.id, itemMetaA.id]; + } + + const aFamily: (string | null)[] = [itemMetaA.id]; + const bFamily: (string | null)[] = [itemMetaB.id]; + + let aAncestor = itemMetaA.parentId; + let bAncestor = itemMetaB.parentId; + + let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1; + let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1; + + let continueA = true; + let continueB = true; + + while (!bAncestorIsCommon && !aAncestorIsCommon) { + if (continueA) { + aFamily.push(aAncestor); + aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1; + continueA = aAncestor !== null; + if (!aAncestorIsCommon && continueA) { + aAncestor = instance.getItemMeta(aAncestor!).parentId; + } + } + + if (continueB && !aAncestorIsCommon) { + bFamily.push(bAncestor); + bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1; + continueB = bAncestor !== null; + if (!bAncestorIsCommon && continueB) { + bAncestor = instance.getItemMeta(bAncestor!).parentId; + } + } + } + + const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor; + const ancestorFamily = instance.getItemOrderedChildrenIds(commonAncestor); + + const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1]; + const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1]; + + return ancestorFamily.indexOf(aSide!) < ancestorFamily.indexOf(bSide!) + ? [itemAId, itemBId] + : [itemBId, itemAId]; +}; + +export const getNavigableItemsInRange = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, + itemAId: string, + itemBId: string, +) => { + const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId); + const items = [first]; + + let current = first; + + while (current !== last) { + current = getNextNavigableItem(instance, current)!; + items.push(current); + } + + return items; +}; From cca7bd4a495f143d924dae738dbbc277ddd42915 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 11 Apr 2024 09:06:11 +0200 Subject: [PATCH 104/912] [core] Use `describeTreeView` in existing tests for `useTreeViewItems` (#12732) --- .../useTreeViewItems.test.tsx | 62 +--- .../useTreeViewItems/useTreeViewItems.ts | 5 +- .../describeTreeView/describeTreeView.tsx | 338 +++++++----------- .../describeTreeView.types.ts | 15 +- 4 files changed, 153 insertions(+), 267 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx index e1f098e05799..98e161d10f2c 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx @@ -1,40 +1,8 @@ -import * as React from 'react'; import { expect } from 'chai'; -import { createRenderer, ErrorBoundary } from '@mui-internal/test-utils'; -import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; -import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; -import { TreeItem } from '@mui/x-tree-view/TreeItem'; +import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; -describe('useTreeViewItems', () => { - const { render } = createRenderer(); - - it('should throw an error when two items have the same ID (items prop approach)', function test() { - // TODO is this fixed? - if (!/jsdom/.test(window.navigator.userAgent)) { - // can't catch render errors in the browser for unknown reason - // tried try-catch + error boundary + window onError preventDefault - this.skip(); - } - - expect(() => - render( - - - , - ), - ).toErrorDev([ - 'MUI X: The Tree View component requires all items to have a unique `id` property.', - 'MUI X: The Tree View component requires all items to have a unique `id` property.', - 'The above error occurred in the component:', - ]); - }); - - it('should throw an error when two items have the same ID (JSX approach)', function test() { +describeTreeView('useTreeViewItems plugin', ({ render, treeViewComponent }) => { + it('should throw an error when two items have the same ID', function test() { // TODO is this fixed? if (!/jsdom/.test(window.navigator.userAgent)) { // can't catch render errors in the browser for unknown reason @@ -42,19 +10,15 @@ describe('useTreeViewItems', () => { this.skip(); } - expect(() => - render( - - - - - - , - ), - ).toErrorDev([ - 'MUI X: The Tree View component requires all items to have a unique `id` property.', - 'MUI X: The Tree View component requires all items to have a unique `id` property.', - 'The above error occurred in the component:', - ]); + expect(() => render({ items: [{ id: '1' }, { id: '1' }], withErrorBoundary: true })).toErrorDev( + [ + ...(treeViewComponent === 'SimpleTreeView' + ? ['Encountered two children with the same key'] + : []), + 'MUI X: The Tree View component requires all items to have a unique `id` property.', + 'MUI X: The Tree View component requires all items to have a unique `id` property.', + `The above error occurred in the component`, + ], + ); }); }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 4f279825708b..2fa727a5abc6 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -31,7 +31,6 @@ const updateItemsState = ({ const processItem = ( item: TreeViewBaseItem, - index: number, parentId: string | null, ): TreeViewItemIdAndChildren => { const id: string = getItemId ? getItemId(item) : (item as any).id; @@ -88,11 +87,11 @@ const updateItemsState = ({ return { id, - children: item.children?.map((child, childIndex) => processItem(child, childIndex, id)), + children: item.children?.map((child) => processItem(child, id)), }; }; - const itemTree = items.map((item, itemIndex) => processItem(item, itemIndex, null)); + const itemTree = items.map((item) => processItem(item, null)); const itemChildrenIndexes: State['itemChildrenIndexes'] = {}; Object.keys(itemOrderedChildrenIds).forEach((parentId) => { diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 5dc84c400887..6184bf83eefc 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import createDescribe from '@mui-internal/test-utils/createDescribe'; -import { createRenderer } from '@mui-internal/test-utils'; +import { createRenderer, ErrorBoundary } from '@mui-internal/test-utils'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; @@ -55,233 +55,149 @@ const innerDescribeTreeView = ( }; }; - describe(message, () => { - describe('RichTreeView + TreeItem', () => { - const renderRichTreeView: DescribeTreeViewRenderer = ({ - items: rawItems, - slotProps, - ...other - }) => { - const items = rawItems as readonly DescribeTreeViewItem[]; - const apiRef = { current: undefined }; - const result = render( - - ({ - ...slotProps?.item, - 'data-testid': ownerState.itemId, - }) as any, - }} - getItemLabel={(item) => item.label ?? item.id} - isItemDisabled={(item) => !!item.disabled} - {...other} - />, - ); + const createRendererForComponentWithItemsProp = ( + TreeViewComponent: typeof RichTreeView, + TreeItemComponent: typeof TreeItem | typeof TreeItem2, + ) => { + const wrappedRenderer: DescribeTreeViewRenderer = ({ + items: rawItems, + withErrorBoundary, + slotProps, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const apiRef = { current: undefined }; + + const jsx = ( + + ({ + ...slotProps?.item, + 'data-testid': ownerState.itemId, + }) as any, + }} + getItemLabel={(item) => item.label ?? item.id} + isItemDisabled={(item) => !!item.disabled} + {...other} + /> + ); + + const result = render(withErrorBoundary ? {jsx} : jsx); + + return { + setProps: result.setProps, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, + ...getUtils(result), + }; + }; - return { - setProps: result.setProps, - apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), - }; + return wrappedRenderer; + }; + + const createRendererForComponentWithJSXItems = ( + TreeViewComponent: typeof SimpleTreeView, + TreeItemComponent: typeof TreeItem | typeof TreeItem2, + ) => { + const wrappedRenderer: DescribeTreeViewRenderer = ({ + items: rawItems, + withErrorBoundary, + slots, + slotProps, + ...other + }) => { + const items = rawItems as readonly DescribeTreeViewItem[]; + const Item = slots?.item ?? TreeItemComponent; + const apiRef = { current: undefined }; + + const renderItem = (item: DescribeTreeViewItem) => ( + + {item.children?.map(renderItem)} + + ); + + const jsx = ( + + {items.map(renderItem)} + + ); + + const result = render(withErrorBoundary ? {jsx} : jsx); + + return { + setProps: result.setProps, + apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, + ...getUtils(result), }; + }; - testRunner({ render: renderRichTreeView, setup: 'RichTreeView + TreeItem' }); + return wrappedRenderer; + }; + + describe(message, () => { + describe('RichTreeView + TreeItem', () => { + testRunner({ + render: createRendererForComponentWithItemsProp(RichTreeView, TreeItem), + setup: 'RichTreeView + TreeItem', + treeViewComponent: 'RichTreeView', + treeItemComponent: 'TreeItem', + }); }); describe('RichTreeView + TreeItem2', () => { - const renderRichTreeView: DescribeTreeViewRenderer = ({ - items: rawItems, - slots, - slotProps, - ...other - }) => { - const items = rawItems as readonly DescribeTreeViewItem[]; - const apiRef = { current: undefined }; - const result = render( - - ({ - ...slotProps?.item, - 'data-testid': ownerState.itemId, - }) as any, - }} - getItemLabel={(item) => item.label ?? item.id} - isItemDisabled={(item) => !!item.disabled} - {...other} - />, - ); - - return { - setProps: result.setProps, - apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), - }; - }; - - testRunner({ render: renderRichTreeView, setup: 'RichTreeView + TreeItem2' }); + testRunner({ + render: createRendererForComponentWithItemsProp(RichTreeView, TreeItem2), + setup: 'RichTreeView + TreeItem2', + treeViewComponent: 'RichTreeView', + treeItemComponent: 'TreeItem2', + }); }); describe('RichTreeViewPro + TreeItem', () => { - const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ - items: rawItems, - slotProps, - ...other - }) => { - const items = rawItems as readonly DescribeTreeViewItem[]; - const apiRef = { current: undefined }; - const result = render( - - ({ - ...slotProps?.item, - 'data-testid': ownerState.itemId, - }) as any, - }} - getItemLabel={(item) => item.label ?? item.id} - isItemDisabled={(item) => !!item.disabled} - {...other} - />, - ); - - return { - setProps: result.setProps, - apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), - }; - }; - - testRunner({ render: renderRichTreeViewPro, setup: 'RichTreeView + TreeItem' }); + testRunner({ + render: createRendererForComponentWithItemsProp(RichTreeViewPro, TreeItem), + setup: 'RichTreeViewPro + TreeItem', + treeViewComponent: 'RichTreeViewPro', + treeItemComponent: 'TreeItem', + }); }); describe('RichTreeViewPro + TreeItem2', () => { - const renderRichTreeViewPro: DescribeTreeViewRenderer = ({ - items: rawItems, - slots, - slotProps, - ...other - }) => { - const items = rawItems as readonly DescribeTreeViewItem[]; - const apiRef = { current: undefined }; - const result = render( - - ({ - ...slotProps?.item, - 'data-testid': ownerState.itemId, - }) as any, - }} - getItemLabel={(item) => item.label ?? item.id} - isItemDisabled={(item) => !!item.disabled} - {...other} - />, - ); - - return { - setProps: result.setProps, - apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), - }; - }; - - testRunner({ render: renderRichTreeViewPro, setup: 'RichTreeView + TreeItem2' }); + testRunner({ + render: createRendererForComponentWithItemsProp(RichTreeViewPro, TreeItem2), + setup: 'RichTreeViewPro + TreeItem2', + treeViewComponent: 'RichTreeViewPro', + treeItemComponent: 'TreeItem2', + }); }); describe('SimpleTreeView + TreeItem', () => { - const renderSimpleTreeView: DescribeTreeViewRenderer = ({ - items: rawItems, - slots, - slotProps, - ...other - }) => { - const items = rawItems as readonly DescribeTreeViewItem[]; - const Item = slots?.item ?? TreeItem; - const apiRef = { current: undefined }; - - const renderItem = (item: DescribeTreeViewItem) => ( - - {item.children?.map(renderItem)} - - ); - - const result = render( - - {items.map(renderItem)} - , - ); - - return { - setProps: result.setProps, - apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), - }; - }; - - testRunner({ render: renderSimpleTreeView, setup: 'SimpleTreeView + TreeItem' }); + testRunner({ + render: createRendererForComponentWithJSXItems(SimpleTreeView, TreeItem), + setup: 'SimpleTreeView + TreeItem', + treeViewComponent: 'SimpleTreeView', + treeItemComponent: 'TreeItem', + }); }); describe('SimpleTreeView + TreeItem2', () => { - const renderSimpleTreeView: DescribeTreeViewRenderer = ({ - items: rawItems, - slots, - slotProps, - ...other - }) => { - const items = rawItems as readonly DescribeTreeViewItem[]; - const Item = slots?.item ?? TreeItem2; - const apiRef = { current: undefined }; - - const renderItem = (item: DescribeTreeViewItem) => ( - - {item.children?.map(renderItem)} - - ); - - const result = render( - - {items.map(renderItem)} - , - ); - - return { - setProps: result.setProps, - apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), - }; - }; - - testRunner({ render: renderSimpleTreeView, setup: 'SimpleTreeView + TreeItem2' }); + testRunner({ + render: createRendererForComponentWithJSXItems(SimpleTreeView, TreeItem2), + setup: 'SimpleTreeView + TreeItem2', + treeViewComponent: 'SimpleTreeView', + treeItemComponent: 'TreeItem2', + }); }); }); }; @@ -301,6 +217,8 @@ type DescribeTreeView = { * Describe tests for the Tree View that will be executed with the following setups: * - RichTreeView + TreeItem * - RichTreeView + TreeItem2 + * - RichTreeViewPro + TreeItem + * - RichTreeViewPro + TreeItem2 * - SimpleTreeView + TreeItem * - SimpleTreeView + TreeItem2 * diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index 017aa8906f99..e28e480022a8 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -78,6 +78,10 @@ export type DescribeTreeViewRenderer( params: { items: readonly R[]; + /** + * If `true`, the Tree View will be wrapped with an error boundary. + */ + withErrorBoundary?: boolean; } & Omit, 'slots' | 'slotProps'> & { slots?: MergePluginsProperty & { item?: React.ElementType; @@ -88,13 +92,14 @@ export type DescribeTreeViewRenderer DescribeTreeViewRendererReturnValue; +type TreeViewComponent = 'RichTreeView' | 'RichTreeViewPro' | 'SimpleTreeView'; +type TreeItemComponent = 'TreeItem' | 'TreeItem2'; + interface DescribeTreeViewTestRunnerParams { render: DescribeTreeViewRenderer; - setup: - | 'SimpleTreeView + TreeItem' - | 'SimpleTreeView + TreeItem2' - | 'RichTreeView + TreeItem' - | 'RichTreeView + TreeItem2'; + setup: `${TreeViewComponent} + ${TreeItemComponent}`; + treeViewComponent: TreeViewComponent; + treeItemComponent: TreeItemComponent; } export interface DescribeTreeViewItem { From a84c0d9a48ae7fcaa5f524adf7f6a6b0893eed97 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Thu, 11 Apr 2024 10:59:16 +0200 Subject: [PATCH 105/912] [DataGrid] Fix invalid date error when filtering `date`/`dateTime` columns (#12709) --- .../panel/filterPanel/GridFilterInputDate.tsx | 6 ++++- test/e2e/index.test.ts | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx index a613c573a082..528af026ff58 100644 --- a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx +++ b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx @@ -26,6 +26,9 @@ function convertFilterItemValueToInputValue( return ''; } const dateCopy = new Date(itemValue); + if (Number.isNaN(dateCopy.getTime())) { + return ''; + } // The date picker expects the date to be in the local timezone. // But .toISOString() converts it to UTC with zero offset. // So we need to subtract the timezone offset. @@ -69,7 +72,8 @@ function GridFilterInputDate(props: GridFilterInputDateProps) { setIsApplying(true); filterTimeout.start(rootProps.filterDebounceMs, () => { - applyValue({ ...item, value: new Date(value) }); + const date = new Date(value); + applyValue({ ...item, value: Number.isNaN(date.getTime()) ? undefined : date }); setIsApplying(false); }); }, diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index 97357460b867..697265f3b71b 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -10,6 +10,7 @@ import { devices, BrowserContextOptions, BrowserType, + WebError, } from '@playwright/test'; import { pickersTextFieldClasses } from '@mui/x-date-pickers/PickersTextField'; import { pickersSectionListClasses } from '@mui/x-date-pickers/PickersSectionList'; @@ -514,6 +515,29 @@ async function initializeEnvironment( await page.locator('[role="gridcell"][data-field="brand"] input').inputValue(), ).not.to.equal('v'); }); + + // https://github.com/mui/mui-x/issues/12705 + it('should not crash if the date is invalid', async () => { + await renderFixture('DataGrid/KeyboardEditDate'); + + await page.hover('div[role="columnheader"][data-field="birthday"]'); + await page.click( + 'div[role="columnheader"][data-field="birthday"] button[aria-label="Menu"]', + ); + await page.click('"Filter"'); + await page.keyboard.type('08/04/2024', { delay: 10 }); + + let thrownError: Error | null = null; + context.once('weberror', (webError: WebError) => { + thrownError = webError.error(); + console.error(thrownError); + }); + + await page.keyboard.press('Backspace'); + + await sleep(200); + expect(thrownError).to.equal(null); + }); }); describe('', () => { From 4b8500e796d5d70939d20bf8829b3cef152a2929 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Thu, 11 Apr 2024 06:06:59 -0400 Subject: [PATCH 106/912] [DataGrid] Fix overflow with dynamic row height (#12683) --- .../migration/migration-data-grid-v6/migration-data-grid-v6.md | 3 ++- .../x-data-grid/src/components/containers/GridRootStyles.ts | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index a6891036755b..6f52bc1d05ab 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -509,7 +509,8 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) - You can now style a row's hover state using just `:hover` instead of `.Mui-hovered`. - The `.MuiDataGrid--pinnedColumns-(left\|right)` class for pinned columns has been removed. - The `.MuiDataGrid-cell--withRenderer` class has been removed. -- The cell element isn't `display: flex` by default. You can add `display: 'flex'` on the column definition to restore the behavior. This also means cells aren't vertically centered by default anymore, so if you have dynamic row height, you might want to set the `display: 'flex'` for all non-dynamic columns. +- The cell element isn't `display: flex` by default. You can add `display: 'flex'` on the column definition to restore the behavior. + NOTE: If you're using **dynamic row height**, this also means cells aren't vertically centered by default anymore, you might want to set the `display: 'flex'` for all non-dynamic columns. This may also affect text-ellipsis, which you can restore by adding your own wrapper with `text-overflow: ellipsis;`. - The `columnHeader--showColumnBorder` class was replaced by `columnHeader--withLeftBorder` and `columnHeader--withRightBorder`. - The `columnHeadersInner`, `columnHeadersInner--scrollable`, and `columnHeaderDropZone` classes were removed since the inner wrapper was removed in our effort to simplify the DOM structure and improve accessibility. - The `pinnedColumnHeaders`, `pinnedColumnHeaders--left`, and `pinnedColumnHeaders--right` classes were removed along with the element they were applied to. diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index e5a2b8bbf1cf..a6f5075d3d3f 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -461,7 +461,6 @@ export const GridRootStyles = styled('div', { userSelect: 'none', }, [`& .${c['row--dynamicHeight']} > .${c.cell}`]: { - overflow: 'initial', whiteSpace: 'initial', lineHeight: 'inherit', }, From 95c9760677df475946cd970a77454ce913fbad1f Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 11 Apr 2024 12:54:50 +0200 Subject: [PATCH 107/912] [TreeView] Remove `state.items.itemTree` (#12717) --- .../useTreeViewItems/useTreeViewItems.ts | 27 +++++++------------ .../useTreeViewItems.types.ts | 6 ----- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts index 2fa727a5abc6..25f4d660487d 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.ts @@ -3,11 +3,10 @@ import { TreeViewPlugin } from '../../models'; import { UseTreeViewItemsSignature, UseTreeViewItemsDefaultizedParameters, - TreeViewItemIdAndChildren, UseTreeViewItemsState, } from './useTreeViewItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; -import { TreeViewBaseItem } from '../../../models'; +import { TreeViewBaseItem, TreeViewItemId } from '../../../models'; import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils'; interface UpdateNodesStateParameters @@ -29,10 +28,7 @@ const updateItemsState = ({ [TREE_VIEW_ROOT_PARENT_ID]: [], }; - const processItem = ( - item: TreeViewBaseItem, - parentId: string | null, - ): TreeViewItemIdAndChildren => { + const processItem = (item: TreeViewBaseItem, parentId: string | null) => { const id: string = getItemId ? getItemId(item) : (item as any).id; if (id == null) { @@ -85,13 +81,10 @@ const updateItemsState = ({ } itemOrderedChildrenIds[parentIdWithDefault].push(id); - return { - id, - children: item.children?.map((child) => processItem(child, id)), - }; + item.children?.forEach((child) => processItem(child, id)); }; - const itemTree = items.map((item) => processItem(item, null)); + items.forEach((item) => processItem(item, null)); const itemChildrenIndexes: State['itemChildrenIndexes'] = {}; Object.keys(itemOrderedChildrenIds).forEach((parentId) => { @@ -100,7 +93,6 @@ const updateItemsState = ({ return { itemMetaMap, - itemTree, itemMap, itemOrderedChildrenIds, itemChildrenIndexes, @@ -211,20 +203,19 @@ export const useTreeViewItems: TreeViewPlugin = ({ ]); const getItemsToRender = () => { - const getPropsFromItemId = ({ - id, - children, - }: TreeViewItemIdAndChildren): ReturnType[number] => { + const getPropsFromItemId = ( + id: TreeViewItemId, + ): ReturnType[number] => { const item = state.items.itemMetaMap[id]; return { label: item.label!, itemId: item.id, id: item.idAttribute, - children: children?.map(getPropsFromItemId), + children: state.items.itemOrderedChildrenIds[id].map(getPropsFromItemId), }; }; - return state.items.itemTree.map(getPropsFromItemId); + return state.items.itemOrderedChildrenIds[TREE_VIEW_ROOT_PARENT_ID].map(getPropsFromItemId); }; return { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index b9534e4eadbb..3862f2d5d51d 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -82,14 +82,8 @@ interface UseTreeViewItemsEventLookup { }; } -export interface TreeViewItemIdAndChildren { - id: TreeViewItemId; - children?: TreeViewItemIdAndChildren[]; -} - export interface UseTreeViewItemsState { items: { - itemTree: TreeViewItemIdAndChildren[]; itemMetaMap: TreeViewItemMetaMap; itemMap: TreeViewItemMap; itemOrderedChildrenIds: { [parentItemId: string]: string[] }; From dd774548187496329ee3605641d175dfd745e17a Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Thu, 11 Apr 2024 07:27:14 -0400 Subject: [PATCH 108/912] [DataGrid] Fix column vertical border (#12741) --- .../headerFiltering/GridHeaderFilterCell.tsx | 4 ++++ .../columnHeaders/useGridColumnHeaders.tsx | 5 ++++- .../x-data-grid/src/components/GridRow.tsx | 2 ++ .../src/components/cell/GridCell.tsx | 4 ++++ .../columnHeaders/GridColumnGroupHeader.tsx | 3 +++ .../columnHeaders/GridColumnHeaderItem.tsx | 4 ++++ .../GridColumnHeaderSeparator.tsx | 2 +- .../components/containers/GridRootStyles.ts | 3 +++ .../x-data-grid/src/constants/gridClasses.ts | 6 ++++++ .../columnHeaders/useGridColumnHeaders.tsx | 11 +++++++++- .../x-data-grid/src/utils/cellBorderUtils.ts | 20 ++++++++++++++----- 11 files changed, 56 insertions(+), 8 deletions(-) diff --git a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx index 68833b01e116..3f2b92db7a10 100644 --- a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx +++ b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx @@ -53,6 +53,7 @@ export interface GridHeaderFilterCellProps extends Pick { const rootProps = useGridRootProps(); const classes = useUtilityClasses(rootProps); const disableHeaderFiltering = !rootProps.headerFilters; - const dimensions = apiRef.current.getRootDimensions(); + const dimensions = useGridSelector(apiRef, gridDimensionsSelector); const filterModel = useGridSelector(apiRef, gridFilterModelSelector); + const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width; const columnHeaderFilterFocus = useGridSelector(apiRef, gridFocusColumnHeaderFilterSelector); @@ -138,6 +140,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { style={style} indexInSection={i} sectionLength={renderedColumns.length} + gridHasFiller={gridHasFiller} {...rootProps.slotProps?.headerFilterCell} />, ); diff --git a/packages/x-data-grid/src/components/GridRow.tsx b/packages/x-data-grid/src/components/GridRow.tsx index 6763b3c41f13..6157ed735ba3 100644 --- a/packages/x-data-grid/src/components/GridRow.tsx +++ b/packages/x-data-grid/src/components/GridRow.tsx @@ -151,6 +151,7 @@ const GridRow = React.forwardRef(function GridRow( const handleRef = useForkRef(ref, refProp); const rowNode = apiRef.current.getRowNode(rowId); const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0; + const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width; const hasFocusCell = focusedColumnIndex !== undefined; const hasVirtualFocusCellLeft = @@ -420,6 +421,7 @@ const GridRow = React.forwardRef(function GridRow( pinnedPosition={pinnedPosition} sectionIndex={indexInSection} sectionLength={sectionLength} + gridHasFiller={gridHasFiller} {...slotProps?.cell} /> ); diff --git a/packages/x-data-grid/src/components/cell/GridCell.tsx b/packages/x-data-grid/src/components/cell/GridCell.tsx index a62c1aa9ace2..4c1b45ac20aa 100644 --- a/packages/x-data-grid/src/components/cell/GridCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridCell.tsx @@ -67,6 +67,7 @@ export type GridCellProps = { pinnedPosition: PinnedPosition; sectionIndex: number; sectionLength: number; + gridHasFiller: boolean; onClick?: React.MouseEventHandler; onDoubleClick?: React.MouseEventHandler; onMouseDown?: React.MouseEventHandler; @@ -167,6 +168,7 @@ const GridCell = React.forwardRef((props, ref) => pinnedPosition, sectionIndex, sectionLength, + gridHasFiller, onClick, onDoubleClick, onMouseDown, @@ -270,6 +272,7 @@ const GridCell = React.forwardRef((props, ref) => sectionIndex, sectionLength, rootProps.showCellVerticalBorder, + gridHasFiller, ); const ownerState = { @@ -493,6 +496,7 @@ GridCell.propTypes = { isValidating: PropTypes.bool, value: PropTypes.any, }), + gridHasFiller: PropTypes.bool.isRequired, isNotVisible: PropTypes.bool.isRequired, onClick: PropTypes.func, onDoubleClick: PropTypes.func, diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx index cc4ba677c225..f7329b9380f9 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx @@ -30,6 +30,7 @@ interface GridColumnGroupHeaderProps { style?: React.CSSProperties; indexInSection: number; sectionLength: number; + gridHasFiller: boolean; } type OwnerState = { @@ -91,6 +92,7 @@ function GridColumnGroupHeader(props: GridColumnGroupHeaderProps) { style, indexInSection, sectionLength, + gridHasFiller, } = props; const rootProps = useGridRootProps(); @@ -129,6 +131,7 @@ function GridColumnGroupHeader(props: GridColumnGroupHeaderProps) { indexInSection, sectionLength, rootProps.showCellVerticalBorder, + gridHasFiller, ); const ownerState = { diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx index 671f546d6017..3141233b9ec7 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx @@ -36,6 +36,7 @@ interface GridColumnHeaderItemProps { style?: React.CSSProperties; indexInSection: number; sectionLength: number; + gridHasFiller: boolean; } type OwnerState = GridColumnHeaderItemProps & { @@ -104,6 +105,7 @@ function GridColumnHeaderItem(props: GridColumnHeaderItemProps) { pinnedPosition, indexInSection, sectionLength, + gridHasFiller, } = props; const apiRef = useGridPrivateApiContext(); const rootProps = useGridRootProps(); @@ -129,6 +131,7 @@ function GridColumnHeaderItem(props: GridColumnHeaderItemProps) { indexInSection, sectionLength, rootProps.showCellVerticalBorder, + gridHasFiller, ); const ownerState = { @@ -313,6 +316,7 @@ GridColumnHeaderItem.propTypes = { columnMenuOpen: PropTypes.bool.isRequired, disableReorder: PropTypes.bool, filterItemsCounter: PropTypes.number, + gridHasFiller: PropTypes.bool.isRequired, hasFocus: PropTypes.bool, headerHeight: PropTypes.number.isRequired, indexInSection: PropTypes.number.isRequired, diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx index ea85556f5675..92e5504dbedf 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx @@ -61,7 +61,7 @@ function GridColumnHeaderSeparatorRaw(props: GridColumnHeaderSeparatorProps) { // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions

    diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index a6f5075d3d3f..dfd89140efc1 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -646,6 +646,9 @@ export const GridRootStyles = styled('div', { [`& .${c.filler}`]: { flex: 1, }, + [`& .${c['filler--borderTop']}`]: { + borderTop: '1px solid var(--DataGrid-rowBorderColor)', + }, }; return gridStyle; diff --git a/packages/x-data-grid/src/constants/gridClasses.ts b/packages/x-data-grid/src/constants/gridClasses.ts index 1d1e43e31457..eec97ecf063b 100644 --- a/packages/x-data-grid/src/constants/gridClasses.ts +++ b/packages/x-data-grid/src/constants/gridClasses.ts @@ -292,6 +292,11 @@ export interface GridClasses { * @ignore - do not document. */ filler: string; + /** + * Styles applied to the filler row with top border. + * @ignore - do not document. + */ + 'filler--borderTop': string; /** * Styles applied to the filler row pinned left section. * @ignore - do not document. @@ -675,6 +680,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'editBooleanCell', 'editInputCell', 'filler', + 'filler--borderTop', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index 419e8e7e9786..d3c513e248d6 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import clsx from 'clsx'; import { styled, useTheme } from '@mui/material/styles'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { useGridSelector } from '../../utils'; @@ -110,6 +111,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { theme.direction, pinnedColumns.left.length, ); + const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width; React.useEffect(() => { apiRef.current.columnHeadersContainerRef!.current!.scrollLeft = 0; @@ -194,7 +196,12 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { {isNotPinned &&
    } {children} - {isNotPinned &&
    } + {isNotPinned && ( +
    + )} {hasScrollbarFiller && ( )} @@ -275,6 +282,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { style={style} indexInSection={i} sectionLength={renderedColumns.length} + gridHasFiller={gridHasFiller} {...other} />, ); @@ -435,6 +443,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { style={style} indexInSection={indexInSection} sectionLength={renderedColumns.length} + gridHasFiller={gridHasFiller} /> ); }); diff --git a/packages/x-data-grid/src/utils/cellBorderUtils.ts b/packages/x-data-grid/src/utils/cellBorderUtils.ts index 3cf82d37cac3..007e569bf9bd 100644 --- a/packages/x-data-grid/src/utils/cellBorderUtils.ts +++ b/packages/x-data-grid/src/utils/cellBorderUtils.ts @@ -5,14 +5,24 @@ export const shouldCellShowRightBorder = ( indexInSection: number, sectionLength: number, showCellVerticalBorderRootProp: boolean, + gridHasFiller: boolean, ) => { const isSectionLastCell = indexInSection === sectionLength - 1; - return ( - (showCellVerticalBorderRootProp && - (pinnedPosition !== GridPinnedColumnPosition.LEFT ? !isSectionLastCell : true)) || - (pinnedPosition === GridPinnedColumnPosition.LEFT && isSectionLastCell) - ); + if (pinnedPosition === GridPinnedColumnPosition.LEFT && isSectionLastCell) { + return true; + } + if (showCellVerticalBorderRootProp) { + if (pinnedPosition === GridPinnedColumnPosition.LEFT) { + return true; + } + if (pinnedPosition === GridPinnedColumnPosition.RIGHT) { + return !isSectionLastCell; + } + // pinnedPosition === undefined, middle section + return !isSectionLastCell || gridHasFiller; + } + return false; }; export const shouldCellShowLeftBorder = ( From 9f6f6091b012baf1bd9a34a9340512206724e1c4 Mon Sep 17 00:00:00 2001 From: sai chand <60743144+sai6855@users.noreply.github.com> Date: Thu, 11 Apr 2024 19:14:59 +0530 Subject: [PATCH 109/912] [DataGrid] Add missing `api` property to `GridCallbackDetails` (#12742) --- .../src/hooks/core/useGridInitialization.ts | 2 +- .../src/hooks/core/useGridStateInitialization.ts | 14 +++++--------- .../hooks/features/editing/useGridCellEditing.ts | 4 +++- .../hooks/features/editing/useGridRowEditing.ts | 4 +++- .../src/models/api/gridCallbackDetails.ts | 5 +++++ 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/packages/x-data-grid/src/hooks/core/useGridInitialization.ts b/packages/x-data-grid/src/hooks/core/useGridInitialization.ts index 326c90829889..104363f8ba80 100644 --- a/packages/x-data-grid/src/hooks/core/useGridInitialization.ts +++ b/packages/x-data-grid/src/hooks/core/useGridInitialization.ts @@ -25,7 +25,7 @@ export const useGridInitialization = < useGridRefs(privateApiRef); useGridTheme(privateApiRef); useGridLoggerFactory(privateApiRef, props); - useGridStateInitialization(privateApiRef, props); + useGridStateInitialization(privateApiRef); useGridPipeProcessing(privateApiRef); useGridStrategyProcessing(privateApiRef); useGridLocaleText(privateApiRef, props); diff --git a/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts b/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts index 860d4d505578..b33affee0f65 100644 --- a/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts +++ b/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts @@ -1,15 +1,12 @@ import * as React from 'react'; -import { DataGridProcessedProps } from '../../models/props/DataGridProps'; import type { GridPrivateApiCommon } from '../../models/api/gridApiCommon'; import { GridStateApi, GridStatePrivateApi } from '../../models/api/gridStateApi'; import { GridControlStateItem } from '../../models/controlStateItem'; -import { GridSignature } from '../utils/useGridApiEventHandler'; import { useGridApiMethod } from '../utils'; import { isFunction } from '../../utils/utils'; export const useGridStateInitialization = ( apiRef: React.MutableRefObject, - props: Pick, ) => { const controlStateMapRef = React.useRef< Record> @@ -92,11 +89,10 @@ export const useGridStateInitialization = Date: Thu, 11 Apr 2024 16:48:34 +0300 Subject: [PATCH 110/912] [fields] Fix field editing after closing the picker (#12675) --- .../hooks/useEnrichedRangePickerFieldProps.ts | 6 ++--- .../hooks/usePicker/usePickerValue.ts | 10 ++++++-- .../hooks/usePicker/usePickerValue.types.ts | 6 ++--- ...sx => BasicClearableDesktopDatePicker.tsx} | 2 +- test/e2e/index.test.ts | 23 ++++++++++++++++--- 5 files changed, 35 insertions(+), 12 deletions(-) rename test/e2e/fixtures/DatePicker/{BasicDesktopDatePickerV6.tsx => BasicClearableDesktopDatePicker.tsx} (89%) diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts b/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts index c9f7d22249b0..ef1678d4fc68 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts +++ b/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts @@ -198,7 +198,7 @@ const useMultiInputFieldSlotProps = < event.stopPropagation(); onRangePositionChange('start'); if (!readOnly && !disableOpenPicker) { - actions.onOpen(); + actions.onOpen(event); } }; @@ -206,7 +206,7 @@ const useMultiInputFieldSlotProps = < event.stopPropagation(); onRangePositionChange('end'); if (!readOnly && !disableOpenPicker) { - actions.onOpen(); + actions.onOpen(event); } }; @@ -400,7 +400,7 @@ const useSingleInputFieldSlotProps = < event.stopPropagation(); if (!readOnly && !disableOpenPicker) { - actions.onOpen(); + actions.onOpen(event); } }; diff --git a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts index e8627c7a1c19..86b72230ffa5 100644 --- a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts +++ b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.ts @@ -357,9 +357,15 @@ export const usePickerValue = < }); }); - const handleOpen = useEventCallback(() => setIsOpen(true)); + const handleOpen = useEventCallback((event: React.UIEvent) => { + event.preventDefault(); + setIsOpen(true); + }); - const handleClose = useEventCallback(() => setIsOpen(false)); + const handleClose = useEventCallback((event?: React.UIEvent) => { + event?.preventDefault(); + setIsOpen(false); + }); const handleChange = useEventCallback( (newValue: TValue, selectionState: PickerSelectionState = 'partial') => diff --git a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts index b7ba4a2fb6fe..7c878c57e613 100644 --- a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts +++ b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerValue.types.ts @@ -301,8 +301,8 @@ export interface UsePickerValueActions { onDismiss: () => void; onCancel: () => void; onSetToday: () => void; - onOpen: () => void; - onClose: () => void; + onOpen: (event: React.UIEvent) => void; + onClose: (event?: React.UIEvent) => void; } export type UsePickerValueFieldResponse = Required< @@ -316,7 +316,7 @@ export interface UsePickerValueViewsResponse { value: TValue; onChange: (value: TValue, selectionState?: PickerSelectionState) => void; open: boolean; - onClose: () => void; + onClose: (event?: React.MouseEvent) => void; } /** diff --git a/test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx b/test/e2e/fixtures/DatePicker/BasicClearableDesktopDatePicker.tsx similarity index 89% rename from test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx rename to test/e2e/fixtures/DatePicker/BasicClearableDesktopDatePicker.tsx index f94f56265f81..ccfe656d3c16 100644 --- a/test/e2e/fixtures/DatePicker/BasicDesktopDatePickerV6.tsx +++ b/test/e2e/fixtures/DatePicker/BasicClearableDesktopDatePicker.tsx @@ -3,7 +3,7 @@ import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -export default function BasicDesktopDatePickerV6() { +export default function BasicClearableDesktopDatePicker() { return ( { // A simplified version of https://github.com/testing-library/dom-testing-library/blob/main/src/wait-for.js function waitFor(callback: () => Promise): Promise { return new Promise((resolve, reject) => { - let intervalId: NodeJS.Timer | null = null; - let timeoutId: NodeJS.Timer | null = null; + let intervalId: NodeJS.Timeout | null = null; + let timeoutId: NodeJS.Timeout | null = null; let lastError: any = null; function handleTimeout() { @@ -558,6 +558,23 @@ async function initializeEnvironment( ); }); + // assertion for: https://github.com/mui/mui-x/issues/12652 + it('should allow field editing after opening and closing the picker', async () => { + await renderFixture('DatePicker/BasicClearableDesktopDatePicker'); + // open picker + await page.getByRole('button').click(); + await page.waitForSelector('[role="dialog"]', { state: 'attached' }); + // close picker + await page.getByRole('button', { name: 'Choose date' }).click(); + await page.waitForSelector('[role="dialog"]', { state: 'detached' }); + + // click on the input to focus it + await page.getByRole('textbox').click(); + + // test that the input value is set after focus + expect(await page.getByRole('textbox').inputValue()).to.equal('MM/DD/YYYY'); + }); + it('should allow filling in a value and clearing a value', async () => { await renderFixture('DatePicker/BasicDesktopDatePicker'); @@ -648,7 +665,7 @@ async function initializeEnvironment( }); it('should focus the first field section after clearing a value in v6 input', async () => { - await renderFixture('DatePicker/BasicDesktopDatePickerV6'); + await renderFixture('DatePicker/BasicClearableDesktopDatePicker'); await page.getByRole('textbox').fill('2'); await page.getByRole('button', { name: 'Clear value' }).click(); From 52944585814f555e28d0baf5058d9ab3c13edd18 Mon Sep 17 00:00:00 2001 From: Jens <78035313+Jens-Schoen@users.noreply.github.com> Date: Fri, 12 Apr 2024 09:25:10 +0200 Subject: [PATCH 111/912] [l10n] Improve German (de-DE) locale (#12752) --- docs/data/data-grid/localization/data.json | 2 +- docs/data/date-pickers/localization/data.json | 2 +- packages/x-data-grid/src/locales/deDE.ts | 6 ++--- packages/x-date-pickers/src/locales/deDE.ts | 26 +++++++++---------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 4c0a0d9dbcbe..c3353b0f56c0 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -99,7 +99,7 @@ "languageTag": "de-DE", "importName": "deDE", "localeName": "German", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/deDE.ts" }, diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 9f57aab37387..57afc42d751b 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -83,7 +83,7 @@ "languageTag": "de-DE", "importName": "deDE", "localeName": "German", - "missingKeysCount": 13, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/deDE.ts" }, diff --git a/packages/x-data-grid/src/locales/deDE.ts b/packages/x-data-grid/src/locales/deDE.ts index 2d8affd4cdef..6df5801d716d 100644 --- a/packages/x-data-grid/src/locales/deDE.ts +++ b/packages/x-data-grid/src/locales/deDE.ts @@ -39,9 +39,9 @@ const deDEGrid: Partial = { toolbarExportExcel: 'Download als Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Suche', + columnsManagementNoColumns: 'Keine Spalten', + columnsManagementShowHideAllText: 'Alle anzeigen/verbergen', // Filter panel text filterPanelAddFilter: 'Filter hinzufügen', diff --git a/packages/x-date-pickers/src/locales/deDE.ts b/packages/x-date-pickers/src/locales/deDE.ts index 6f7cc84acad8..185963fd7486 100644 --- a/packages/x-date-pickers/src/locales/deDE.ts +++ b/packages/x-date-pickers/src/locales/deDE.ts @@ -26,10 +26,10 @@ const deDEPickers: Partial> = { // DateRange labels start: 'Beginn', end: 'Ende', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Startdatum', + startTime: 'Startzeit', + endDate: 'Enddatum', + endTime: 'Endzeit', // Action bar cancelButtonLabel: 'Abbrechen', @@ -85,17 +85,17 @@ const deDEPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Jahr', + month: 'Monat', + day: 'Tag', + weekDay: 'Wochentag', + hours: 'Stunden', + minutes: 'Minuten', + seconds: 'Sekunden', + meridiem: 'Tageszeit', // Common - // empty: 'Empty', + empty: 'Leer', }; export const deDE = getPickersLocalization(deDEPickers); From a6c5ab7fc3df84021e3f58ef76f3f3551de2186f Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:28:52 +0300 Subject: [PATCH 112/912] [docs] Add file explorer example to rich tree view customization docs (#12707) --- .../customization/FileExplorer.js | 267 +++++++++++++++ .../customization/FileExplorer.tsx | 303 ++++++++++++++++++ .../customization/FileExplorer.tsx.preview | 8 + .../customization/customization.md | 13 + .../customization/CustomizedTreeView.js | 179 ----------- .../customization/CustomizedTreeView.tsx | 194 ----------- .../customization/customization.md | 6 - 7 files changed, 591 insertions(+), 379 deletions(-) create mode 100644 docs/data/tree-view/rich-tree-view/customization/FileExplorer.js create mode 100644 docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx create mode 100644 docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx.preview delete mode 100644 docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.js delete mode 100644 docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.tsx diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js new file mode 100644 index 000000000000..2ac57640beea --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js @@ -0,0 +1,267 @@ +import * as React from 'react'; +import clsx from 'clsx'; +import { animated, useSpring } from '@react-spring/web'; +import { styled, alpha } from '@mui/material/styles'; + +import Box from '@mui/material/Box'; +import Collapse from '@mui/material/Collapse'; +import Typography from '@mui/material/Typography'; +import ArticleIcon from '@mui/icons-material/Article'; +import DeleteIcon from '@mui/icons-material/Delete'; +import FolderOpenIcon from '@mui/icons-material/FolderOpen'; +import FolderRounded from '@mui/icons-material/FolderRounded'; +import ImageIcon from '@mui/icons-material/Image'; +import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf'; +import VideoCameraBackIcon from '@mui/icons-material/VideoCameraBack'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { treeItemClasses } from '@mui/x-tree-view/TreeItem'; +import { unstable_useTreeItem2 as useTreeItem2 } from '@mui/x-tree-view/useTreeItem2'; +import { + TreeItem2Content, + TreeItem2IconContainer, + TreeItem2Label, + TreeItem2Root, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; +import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; + +const ITEMS = [ + { + id: '1', + label: 'Documents', + children: [ + { + id: '1.1', + label: 'Company', + children: [ + { id: '1.1.1', label: 'Invoice', fileType: 'pdf' }, + { id: '1.1.2', label: 'Meeting notes', fileType: 'doc' }, + { id: '1.1.3', label: 'Tasks list', fileType: 'doc' }, + { id: '1.1.4', label: 'Equipment', fileType: 'pdf' }, + { id: '1.1.5', label: 'Video conference', fileType: 'video' }, + ], + }, + { id: '1.2', label: 'Personal', fileType: 'folder' }, + { id: '1.3', label: 'Group photo', fileType: 'image' }, + ], + }, + { + id: '2', + label: 'Bookmarked', + fileType: 'pinned', + children: [ + { id: '2.1', label: 'Learning materials', fileType: 'folder' }, + { id: '2.2', label: 'News', fileType: 'folder' }, + { id: '2.3', label: 'Forums', fileType: 'folder' }, + { id: '2.4', label: 'Travel documents', fileType: 'pdf' }, + ], + }, + { id: '3', label: 'History', fileType: 'folder' }, + { id: '4', label: 'Trash', fileType: 'trash' }, +]; + +function DotIcon() { + return ( + + ); +} + +const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ + color: + theme.palette.mode === 'light' + ? theme.palette.grey[800] + : theme.palette.grey[400], + position: 'relative', + [`& .${treeItemClasses.groupTransition}`]: { + marginLeft: theme.spacing(3.5), + }, +})); + +const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ + flexDirection: 'row-reverse', + borderRadius: theme.spacing(0.7), + marginBottom: theme.spacing(0.5), + marginTop: theme.spacing(0.5), + padding: theme.spacing(0.5), + paddingRight: theme.spacing(1), + fontWeight: 500, + [`& .${treeItemClasses.iconContainer}`]: { + marginRight: theme.spacing(2), + }, + [`&.Mui-expanded `]: { + '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { + color: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + }, + '&::before': { + content: '""', + display: 'block', + position: 'absolute', + left: '16px', + top: '44px', + height: 'calc(100% - 48px)', + width: '1.5px', + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.grey[300] + : theme.palette.grey[700], + }, + }, + '&:hover': { + backgroundColor: alpha(theme.palette.primary.main, 0.1), + color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + }, + [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + color: theme.palette.primary.contrastText, + }, +})); + +const AnimatedCollapse = animated(Collapse); + +function TransitionComponent(props) { + const style = useSpring({ + to: { + opacity: props.in ? 1 : 0, + transform: `translate3d(0,${props.in ? 0 : 20}px,0)`, + }, + }); + + return ; +} + +const StyledTreeItemLabelText = styled(Typography)({ + color: 'inherit', + fontFamily: 'General Sans', + fontWeight: 500, +}); + +function CustomLabel({ icon: Icon, expandable, children, ...other }) { + return ( + + {Icon && ( + + )} + + {children} + {expandable && } + + ); +} + +const isExpandable = (reactChildren) => { + if (Array.isArray(reactChildren)) { + return reactChildren.length > 0 && reactChildren.some(isExpandable); + } + return Boolean(reactChildren); +}; + +const getIconFromFileType = (fileType) => { + switch (fileType) { + case 'image': + return ImageIcon; + case 'pdf': + return PictureAsPdfIcon; + case 'doc': + return ArticleIcon; + case 'video': + return VideoCameraBackIcon; + case 'folder': + return FolderRounded; + case 'pinned': + return FolderOpenIcon; + case 'trash': + return DeleteIcon; + default: + return ArticleIcon; + } +}; + +const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + const { id, itemId, label, disabled, children, ...other } = props; + + const { + getRootProps, + getContentProps, + getIconContainerProps, + getLabelProps, + getGroupTransitionProps, + status, + publicAPI, + } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); + + const item = publicAPI.getItem(itemId); + const expandable = isExpandable(children); + let icon; + if (expandable) { + icon = FolderRounded; + } else if (item.fileType) { + icon = getIconFromFileType(item.fileType); + } + + return ( + + + + + + + + + + {children && } + + + ); +}); + +export default function FileExplorer() { + return ( + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx new file mode 100644 index 000000000000..d12cf981003a --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx @@ -0,0 +1,303 @@ +import * as React from 'react'; +import clsx from 'clsx'; +import { animated, useSpring } from '@react-spring/web'; +import { styled, alpha } from '@mui/material/styles'; +import { TransitionProps } from '@mui/material/transitions'; +import Box from '@mui/material/Box'; +import Collapse from '@mui/material/Collapse'; +import Typography from '@mui/material/Typography'; +import ArticleIcon from '@mui/icons-material/Article'; +import DeleteIcon from '@mui/icons-material/Delete'; +import FolderOpenIcon from '@mui/icons-material/FolderOpen'; +import FolderRounded from '@mui/icons-material/FolderRounded'; +import ImageIcon from '@mui/icons-material/Image'; +import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf'; +import VideoCameraBackIcon from '@mui/icons-material/VideoCameraBack'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { treeItemClasses } from '@mui/x-tree-view/TreeItem'; +import { + unstable_useTreeItem2 as useTreeItem2, + UseTreeItem2Parameters, +} from '@mui/x-tree-view/useTreeItem2'; +import { + TreeItem2Content, + TreeItem2IconContainer, + TreeItem2Label, + TreeItem2Root, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; +import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; + +type FileType = 'image' | 'pdf' | 'doc' | 'video' | 'folder' | 'pinned' | 'trash'; + +type ExtendedTreeItemProps = { + fileType?: FileType; + id: string; + label: string; +}; + +const ITEMS: TreeViewBaseItem[] = [ + { + id: '1', + label: 'Documents', + children: [ + { + id: '1.1', + label: 'Company', + children: [ + { id: '1.1.1', label: 'Invoice', fileType: 'pdf' }, + { id: '1.1.2', label: 'Meeting notes', fileType: 'doc' }, + { id: '1.1.3', label: 'Tasks list', fileType: 'doc' }, + { id: '1.1.4', label: 'Equipment', fileType: 'pdf' }, + { id: '1.1.5', label: 'Video conference', fileType: 'video' }, + ], + }, + { id: '1.2', label: 'Personal', fileType: 'folder' }, + { id: '1.3', label: 'Group photo', fileType: 'image' }, + ], + }, + { + id: '2', + label: 'Bookmarked', + fileType: 'pinned', + children: [ + { id: '2.1', label: 'Learning materials', fileType: 'folder' }, + { id: '2.2', label: 'News', fileType: 'folder' }, + { id: '2.3', label: 'Forums', fileType: 'folder' }, + { id: '2.4', label: 'Travel documents', fileType: 'pdf' }, + ], + }, + { id: '3', label: 'History', fileType: 'folder' }, + { id: '4', label: 'Trash', fileType: 'trash' }, +]; + +function DotIcon() { + return ( + + ); +} +declare module 'react' { + interface CSSProperties { + '--tree-view-color'?: string; + '--tree-view-bg-color'?: string; + } +} + +const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ + color: + theme.palette.mode === 'light' + ? theme.palette.grey[800] + : theme.palette.grey[400], + position: 'relative', + [`& .${treeItemClasses.groupTransition}`]: { + marginLeft: theme.spacing(3.5), + }, +})) as unknown as typeof TreeItem2Root; + +const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ + flexDirection: 'row-reverse', + borderRadius: theme.spacing(0.7), + marginBottom: theme.spacing(0.5), + marginTop: theme.spacing(0.5), + padding: theme.spacing(0.5), + paddingRight: theme.spacing(1), + fontWeight: 500, + [`& .${treeItemClasses.iconContainer}`]: { + marginRight: theme.spacing(2), + }, + [`&.Mui-expanded `]: { + '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { + color: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + }, + '&::before': { + content: '""', + display: 'block', + position: 'absolute', + left: '16px', + top: '44px', + height: 'calc(100% - 48px)', + width: '1.5px', + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.grey[300] + : theme.palette.grey[700], + }, + }, + '&:hover': { + backgroundColor: alpha(theme.palette.primary.main, 0.1), + color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + }, + [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + color: theme.palette.primary.contrastText, + }, +})); + +const AnimatedCollapse = animated(Collapse); + +function TransitionComponent(props: TransitionProps) { + const style = useSpring({ + to: { + opacity: props.in ? 1 : 0, + transform: `translate3d(0,${props.in ? 0 : 20}px,0)`, + }, + }); + + return ; +} + +const StyledTreeItemLabelText = styled(Typography)({ + color: 'inherit', + fontFamily: 'General Sans', + fontWeight: 500, +}) as unknown as typeof Typography; + +interface CustomLabelProps { + children: React.ReactNode; + icon?: React.ElementType; + expandable?: boolean; +} + +function CustomLabel({ + icon: Icon, + expandable, + children, + ...other +}: CustomLabelProps) { + return ( + + {Icon && ( + + )} + + {children} + {expandable && } + + ); +} + +const isExpandable = (reactChildren: React.ReactNode) => { + if (Array.isArray(reactChildren)) { + return reactChildren.length > 0 && reactChildren.some(isExpandable); + } + return Boolean(reactChildren); +}; + +const getIconFromFileType = (fileType: FileType) => { + switch (fileType) { + case 'image': + return ImageIcon; + case 'pdf': + return PictureAsPdfIcon; + case 'doc': + return ArticleIcon; + case 'video': + return VideoCameraBackIcon; + case 'folder': + return FolderRounded; + case 'pinned': + return FolderOpenIcon; + case 'trash': + return DeleteIcon; + default: + return ArticleIcon; + } +}; + +interface CustomTreeItemProps + extends Omit, + Omit, 'onFocus'> {} + +const CustomTreeItem = React.forwardRef(function CustomTreeItem( + props: CustomTreeItemProps, + ref: React.Ref, +) { + const { id, itemId, label, disabled, children, ...other } = props; + + const { + getRootProps, + getContentProps, + getIconContainerProps, + getLabelProps, + getGroupTransitionProps, + status, + publicAPI, + } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); + + const item = publicAPI.getItem(itemId); + const expandable = isExpandable(children); + let icon; + if (expandable) { + icon = FolderRounded; + } else if (item.fileType) { + icon = getIconFromFileType(item.fileType); + } + + return ( + + + + + + + + + + {children && } + + + ); +}); + +export default function FileExplorer() { + return ( + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx.preview b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx.preview new file mode 100644 index 000000000000..5f87458bdbbe --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx.preview @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/customization/customization.md b/docs/data/tree-view/rich-tree-view/customization/customization.md index 5d33efde72b5..da4b3e57a2cc 100644 --- a/docs/data/tree-view/rich-tree-view/customization/customization.md +++ b/docs/data/tree-view/rich-tree-view/customization/customization.md @@ -69,3 +69,16 @@ The demo below shows how to add an avatar and custom typography elements. The demo below shows how to trigger the expansion interaction just by clicking on the icon container instead of the whole Tree Item surface. {{"demo": "IconExpansionTreeView.js", "defaultCodeOpen": false}} + +### File explorer + +:::warning +This example is built using the new `TreeItem2` component +which adds several slots to modify the content of the Tree Item or change its behavior. + +You can learn more about this new component in the [Overview page](/x/react-tree-view/#tree-item-components). +::: + +The demo below shows many of the previous customization examples brought together to make the Tree View component look completely different than its default design. + +{{"demo": "FileExplorer.js", "defaultCodeOpen": false}} diff --git a/docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.js b/docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.js deleted file mode 100644 index 572f804db372..000000000000 --- a/docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.js +++ /dev/null @@ -1,179 +0,0 @@ -import * as React from 'react'; -import { styled, alpha } from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import Typography from '@mui/material/Typography'; -import DeleteIcon from '@mui/icons-material/Delete'; -import Label from '@mui/icons-material/Label'; -import FolderRounded from '@mui/icons-material/FolderRounded'; -import AirplanemodeActiveIcon from '@mui/icons-material/AirplanemodeActive'; -import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; -import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; -import Collapse from '@mui/material/Collapse'; - -import { animated, useSpring } from '@react-spring/web'; - -function DotIcon() { - return ( - - ); -} - -const StyledTreeItemLabel = styled(Typography)({ - color: 'inherit', - fontFamily: 'General Sans', - fontWeight: 'inherit', - flexGrow: 1, -}); - -const StyledTreeItemRoot = styled(TreeItem)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[400], - position: 'relative', - [`& .${treeItemClasses.content}`]: { - flexDirection: 'row-reverse', - borderRadius: theme.spacing(0.7), - marginBottom: theme.spacing(0.5), - marginTop: theme.spacing(0.5), - padding: theme.spacing(0.5), - paddingRight: theme.spacing(1), - fontWeight: 500, - [`& .${treeItemClasses.label}`]: { - fontWeight: 'inherit', - }, - [`& .${treeItemClasses.iconContainer}`]: { - marginRight: theme.spacing(2), - }, - [`&.Mui-expanded `]: { - '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { - color: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.secondary.dark, - }, - '&::before': { - content: '""', - display: 'block', - position: 'absolute', - left: '16px', - top: '44px', - height: 'calc(100% - 48px)', - width: '1.5px', - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.grey[300] - : theme.palette.grey[700], - }, - }, - '&:hover': { - backgroundColor: alpha(theme.palette.primary.main, 0.1), - color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', - }, - [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.secondary.dark, - color: 'white', - }, - }, - [`& .${treeItemClasses.groupTransition}`]: { - marginLeft: theme.spacing(3.5), - [`& .${treeItemClasses.content}`]: { - fontWeight: 500, - }, - }, -})); - -const AnimatedCollapse = animated(Collapse); - -function TransitionComponent(props) { - const style = useSpring({ - to: { - opacity: props.in ? 1 : 0, - transform: `translate3d(0,${props.in ? 0 : 20}px,0)`, - }, - }); - - return ; -} - -const StyledTreeItem = React.forwardRef(function StyledTreeItem(props, ref) { - const { labelIcon: LabelIcon, labelText, ...other } = props; - - return ( - - - {labelText} - - } - {...other} - ref={ref} - /> - ); -}); - -export default function CustomizedTreeView() { - return ( - - - - - - - - - - - - - - - - - - - - - ); -} diff --git a/docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.tsx b/docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.tsx deleted file mode 100644 index f28c321d880f..000000000000 --- a/docs/data/tree-view/simple-tree-view/customization/CustomizedTreeView.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import * as React from 'react'; -import { styled, alpha } from '@mui/material/styles'; -import Box from '@mui/material/Box'; -import Typography from '@mui/material/Typography'; -import DeleteIcon from '@mui/icons-material/Delete'; -import Label from '@mui/icons-material/Label'; -import FolderRounded from '@mui/icons-material/FolderRounded'; -import AirplanemodeActiveIcon from '@mui/icons-material/AirplanemodeActive'; -import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; -import { TreeItem, TreeItemProps, treeItemClasses } from '@mui/x-tree-view/TreeItem'; -import Collapse from '@mui/material/Collapse'; -import { TransitionProps } from '@mui/material/transitions'; -import { animated, useSpring } from '@react-spring/web'; - -function DotIcon() { - return ( - - ); -} - -declare module 'react' { - interface CSSProperties { - '--tree-view-color'?: string; - '--tree-view-bg-color'?: string; - } -} - -type StyledTreeItemProps = Omit & { - labelIcon: React.ElementType; - labelText: string; -}; - -const StyledTreeItemLabel = styled(Typography)({ - color: 'inherit', - fontFamily: 'General Sans', - fontWeight: 'inherit', - flexGrow: 1, -}) as unknown as typeof Typography; - -const StyledTreeItemRoot = styled(TreeItem)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[400], - position: 'relative', - [`& .${treeItemClasses.content}`]: { - flexDirection: 'row-reverse', - borderRadius: theme.spacing(0.7), - marginBottom: theme.spacing(0.5), - marginTop: theme.spacing(0.5), - padding: theme.spacing(0.5), - paddingRight: theme.spacing(1), - fontWeight: 500, - [`& .${treeItemClasses.label}`]: { - fontWeight: 'inherit', - }, - [`& .${treeItemClasses.iconContainer}`]: { - marginRight: theme.spacing(2), - }, - [`&.Mui-expanded `]: { - '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { - color: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.secondary.dark, - }, - '&::before': { - content: '""', - display: 'block', - position: 'absolute', - left: '16px', - top: '44px', - height: 'calc(100% - 48px)', - width: '1.5px', - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.grey[300] - : theme.palette.grey[700], - }, - }, - '&:hover': { - backgroundColor: alpha(theme.palette.primary.main, 0.1), - color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', - }, - [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.secondary.dark, - color: 'white', - }, - }, - [`& .${treeItemClasses.groupTransition}`]: { - marginLeft: theme.spacing(3.5), - [`& .${treeItemClasses.content}`]: { - fontWeight: 500, - }, - }, -})) as unknown as typeof TreeItem; - -const AnimatedCollapse = animated(Collapse); - -function TransitionComponent(props: TransitionProps) { - const style = useSpring({ - to: { - opacity: props.in ? 1 : 0, - transform: `translate3d(0,${props.in ? 0 : 20}px,0)`, - }, - }); - - return ; -} - -const StyledTreeItem = React.forwardRef(function StyledTreeItem( - props: StyledTreeItemProps, - ref: React.Ref, -) { - const { labelIcon: LabelIcon, labelText, ...other } = props; - - return ( - - - {labelText} - - } - {...other} - ref={ref} - /> - ); -}); - -export default function CustomizedTreeView() { - return ( - - - - - - - - - - - - - - - - - - - - - ); -} diff --git a/docs/data/tree-view/simple-tree-view/customization/customization.md b/docs/data/tree-view/simple-tree-view/customization/customization.md index 819205b2d815..4e74f185137d 100644 --- a/docs/data/tree-view/simple-tree-view/customization/customization.md +++ b/docs/data/tree-view/simple-tree-view/customization/customization.md @@ -83,12 +83,6 @@ The demo below shows how to trigger the expansion interaction just by clicking o {{"demo": "IconExpansionTreeView.js", "defaultCodeOpen": false}} -### File explorer - -The demo below shows many of the previous customization examples brought together to make the Tree View component look completely different than its default design. - -{{"demo": "CustomizedTreeView.js"}} - ### Gmail clone :::warning From a3273e34e71019dcb66a8cd1335d5f9722154f74 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 12 Apr 2024 15:08:33 +0300 Subject: [PATCH 113/912] [DateTimeRangePicker] Fix desktop toolbar style (#12760) --- .../src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx index 4d4c6155c38e..196d8c78856d 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx @@ -102,11 +102,8 @@ const DateTimeRangePickerToolbarEnd = styled(DateTimePickerToolbar, { })>({ variants: [ { - props: ({ - ownerState: { toolbarVariant }, - }: { - ownerState: DateTimeRangePickerStartOrEndToolbarProps; - }) => toolbarVariant !== 'desktop', + props: ({ toolbarVariant }: DateTimeRangePickerStartOrEndToolbarProps) => + toolbarVariant !== 'desktop', style: { padding: '12px 8px 12px 12px', }, From 786e334e3d9185642188b67c6c8b6d1257b743bd Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 12 Apr 2024 15:10:06 +0300 Subject: [PATCH 114/912] [pickers] Fix desktop date time Pickers grid layout (#12748) --- .../DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx | 4 +++- .../src/DesktopDateTimePicker/DesktopDateTimePicker.tsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index e151affce95e..b22137768f1d 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -91,8 +91,9 @@ const rendererInterceptor = function rendererInterceptor< availableRangePositions: [rangePosition], view: !isTimeViewActive ? popperView : 'day', views: rendererProps.views.filter(isDatePickerView), + sx: [{ gridColumn: 1 }, ...finalProps.sx], })} - + } + sx={[{ gridColumn: 3 }, ...finalProps.sx]} /> ); diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx index 5b3c2977bab4..5ee528306825 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx @@ -90,16 +90,18 @@ const rendererInterceptor = function rendererInterceptor< view: !isTimeViewActive ? popperView : 'day', focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null, views: rendererProps.views.filter(isDatePickerView), + sx: [{ gridColumn: 1 }, ...finalProps.sx], })} {timeViewsCount > 0 && ( - + {inViewRenderers[isTimeViewActive ? popperView : 'hours']?.({ ...finalProps, view: isTimeViewActive ? popperView : 'hours', focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null, openTo: isInternalTimeView(openTo) ? openTo : 'hours', views: rendererProps.views.filter(isInternalTimeView), + sx: [{ gridColumn: 3 }, ...finalProps.sx], })} )} From d097dc71f97ca36298d3d556030cc98f2a52f152 Mon Sep 17 00:00:00 2001 From: Derek Alvarado Date: Fri, 12 Apr 2024 06:33:41 -0600 Subject: [PATCH 115/912] [l10n] Improve French (fr-FR) locale (#12755) Signed-off-by: Flavien DELANGLE Co-authored-by: Flavien DELANGLE Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/frFR.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index c3353b0f56c0..9a9cdb7c7542 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -91,7 +91,7 @@ "languageTag": "fr-FR", "importName": "frFR", "localeName": "French", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/frFR.ts" }, diff --git a/packages/x-data-grid/src/locales/frFR.ts b/packages/x-data-grid/src/locales/frFR.ts index b7118ef678eb..dc9340fefce1 100644 --- a/packages/x-data-grid/src/locales/frFR.ts +++ b/packages/x-data-grid/src/locales/frFR.ts @@ -21,7 +21,7 @@ const frFRGrid: Partial = { // Filters toolbar button text toolbarFilters: 'Filtres', toolbarFiltersLabel: 'Afficher les filtres', - toolbarFiltersTooltipHide: 'Cacher les filtres', + toolbarFiltersTooltipHide: 'Masquer les filtres', toolbarFiltersTooltipShow: 'Afficher les filtres', toolbarFiltersTooltipActive: (count) => count > 1 ? `${count} filtres actifs` : `${count} filtre actif`, @@ -39,9 +39,9 @@ const frFRGrid: Partial = { toolbarExportExcel: 'Télécharger pour Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Rechercher', + columnsManagementNoColumns: 'Pas de colonnes', + columnsManagementShowHideAllText: 'Afficher/masquer toutes', // Filter panel text filterPanelAddFilter: 'Ajouter un filtre', @@ -107,7 +107,7 @@ const frFRGrid: Partial = { columnMenuShowColumns: 'Afficher les colonnes', columnMenuManageColumns: 'Gérer les colonnes', columnMenuFilter: 'Filtrer', - columnMenuHideColumn: 'Cacher', + columnMenuHideColumn: 'Masquer', columnMenuUnsort: 'Annuler le tri', columnMenuSortAsc: 'Tri ascendant', columnMenuSortDesc: 'Tri descendant', From ec2df5cb3dbea7d494d36bc27f193d5b55275d64 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Fri, 12 Apr 2024 14:44:18 +0200 Subject: [PATCH 116/912] [charts] Fix `tickLabelInterval` not working on YAxis (#12746) --- packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx | 10 +++++----- packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 9 ++++++--- packages/x-charts/src/hooks/useTicks.ts | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx index 967e95415b9a..eeb1383e940b 100644 --- a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx +++ b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx @@ -61,7 +61,7 @@ function addLabelDimension( // Filter label to avoid overlap let currentTextLimit = 0; - let previouseTextLimit = 0; + let previousTextLimit = 0; const direction = reverse ? -1 : 1; return withDimension.map((item, labelIndex) => { const { width, offset, labelOffset, height } = item; @@ -71,12 +71,12 @@ function addLabelDimension( const gapRatio = 1.2; // Ratio applied to the minimal distance to add some margin. currentTextLimit = textPosition - (direction * (gapRatio * distance)) / 2; - if (labelIndex > 0 && direction * currentTextLimit < direction * previouseTextLimit) { + if (labelIndex > 0 && direction * currentTextLimit < direction * previousTextLimit) { // Except for the first label, we skip all label that overlap with the last accepted. - // Notice that the early return prevents `previouseTextLimit` from being updated. + // Notice that the early return prevents `previousTextLimit` from being updated. return { ...item, skipLabel: true }; } - previouseTextLimit = textPosition + (direction * (gapRatio * distance)) / 2; + previousTextLimit = textPosition + (direction * (gapRatio * distance)) / 2; return item; }); } @@ -347,7 +347,7 @@ ChartsXAxis.propTypes = { */ tickMinStep: PropTypes.number, /** - * The number of ticks. This number is not guaranted. + * The number of ticks. This number is not guaranteed. * Not supported by categorical axis (band, points). */ tickNumber: PropTypes.number, diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index e74ad4ab9cca..21d2f0b8f10d 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -69,6 +69,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { tickPlacement, tickLabelPlacement, tickInterval, + tickLabelInterval, } = defaultizedProps; const theme = useTheme(); @@ -143,9 +144,11 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { /> )} - {yTicks.map(({ formattedValue, offset, labelOffset }, index) => { + {yTicks.map(({ formattedValue, offset, labelOffset, value }, index) => { const xTickLabel = positionSign * (tickSize + 2); const yTickLabel = labelOffset; + const skipLabel = + typeof tickLabelInterval === 'function' && !tickLabelInterval?.(value, index); return ( {!disableTicks && ( @@ -156,7 +159,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { /> )} - {formattedValue !== undefined && ( + {formattedValue !== undefined && !skipLabel && ( Date: Fri, 12 Apr 2024 20:37:14 +0300 Subject: [PATCH 117/912] v7.2.0 (#12762) --- CHANGELOG.md | 86 +++++++++++++++++++++ package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 4 +- packages/x-data-grid-premium/package.json | 8 +- packages/x-data-grid-pro/package.json | 6 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 6 +- packages/x-date-pickers/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 6 +- packages/x-tree-view/package.json | 2 +- 12 files changed, 107 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fcd37cfc7b6..de859e4baad7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,92 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.2.0 + +_Apr 12, 2024_ + +We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨: + +- 🎨 Make grid colors customizable through the MUI themes API +- 🌍 Improve French (fr-FR), German (de-DE), and Swedish (sv-SE) locales on the Data Grid and Pickers +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@7.2.0` + +- [DataGrid] Add missing `api` property to `GridCallbackDetails` (#12742) @sai6855 +- [DataGrid] Do not escape double quotes when copying to clipboard (#12722) @cherniavskii +- [DataGrid] Fix column vertical border (#12741) @romgrk +- [DataGrid] Fix invalid date error when filtering `date`/`dateTime` columns (#12709) @cherniavskii +- [DataGrid] Fix overflow with dynamic row height (#12683) @romgrk +- [DataGrid] Make colors customizable (#12614) @romgrk +- [l10n] Improve French (fr-FR) locale (#12755) @derek-0000 +- [l10n] Improve German (de-DE) locale (#12752) @Jens-Schoen +- [l10n] Improve Swedish (sv-SE) locale (#12731) @pontusdacke + +#### `@mui/x-data-grid-pro@7.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.2.0`. + +#### `@mui/x-data-grid-premium@7.2.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.2.0`, plus: + +- [DataGridPremium] Fix clipboard paste not working when cell loses focus (#12724) @cherniavskii + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.2.0` + +- [fields] Fix field editing after closing the picker (#12675) @LukasTy +- [l10n] Improve French (fr-FR) locale (#12692) @FaroukBel +- [l10n] Improve German (de-DE) locale (#12752) @Jens-Schoen +- [l10n] Improve Swedish (sv-SE) locale (#12731) @pontusdacke +- [pickers] Fix desktop date time Pickers grid layout (#12748) @LukasTy + +#### `@mui/x-date-pickers-pro@7.2.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.2.0`, plus: + +- [DateTimeRangePicker] Fix desktop toolbar style (#12760) @LukasTy + +### Charts + +#### `@mui/x-charts@7.2.0` + +- [charts] Fix Bar chart with empty dataset throwing an error (#12708) @JCQuintas +- [charts] Fix `tickLabelInterval` not working on `YAxis` (#12746) @JCQuintas + +### Tree View + +#### `@mui/x-tree-view@7.2.0` + +- [TreeView] Add a new lookup to access an item index without expansive computation (#12729) @flaviendelangle +- [TreeView] Clean up usage of term "node" in internals (#12655) @noraleonte +- [TreeView] Improve performance by removing `getNavigableChildrenIds` method (#12713) @flaviendelangle +- [TreeView] Remove `state.items.itemTree` (#12717) @flaviendelangle +- [TreeView] Remove remaining occurences of the word "node" in the codebase (#12712) @flaviendelangle +- [TreeView] Return `instance` and `publicAPI` methods from plugin and populate the main objects inside `useTreeView` (#12650) @flaviendelangle +- [TreeView] Fix behaviors when the item order changes (#12369) @flaviendelangle + +### Docs + +- [docs] Add `AxisFormatter` documentation for customizing tick/tooltip value formatting (#12700) @JCQuintas +- [docs] Add file explorer example to rich tree view customization docs (#12707) @noraleonte +- [docs] Do not use import of depth 3 in the doc (#12716) @flaviendelangle +- [docs] Explain how to clip plots with composition (#12679) @alexfauquette +- [docs] Fix typo in Data Grid v7 migration page (#12720) @bfaulk96 +- [docs] Fix typo in Pickers v7 migration page (#12721) @bfaulk96 + +### Core + +- [core] Support multiple resolved `l10n` PR packages (#12735) @LukasTy +- [core] Update Netlify release references in release README (#12687) @LukasTy +- [core] Use `describeTreeView` for icons tests (#12672) @flaviendelangle +- [core] Use `describeTreeView` in existing tests for `useTreeViewItems` (#12732) @flaviendelangle + ## 7.1.1 _Apr 5, 2024_ diff --git a/package.json b/package.json index a316b44687fd..ec11d449caa8 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.1.1", + "version": "7.2.0", "private": true, "scripts": { "start": "yarn && yarn docs:dev", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 17ed659a7446..3068015415e2 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.1.1", + "version": "7.2.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 3c8e2381d077..085a21ed33c3 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.1.1", + "version": "7.2.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", @@ -34,7 +34,7 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@mui/base": "^5.0.0-beta.40", - "@mui/x-data-grid-premium": "7.1.1", + "@mui/x-data-grid-premium": "7.2.0", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index c2eebed31acd..81ca5e76cd2d 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.1.1", + "version": "7.2.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,9 +45,9 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.1.1", - "@mui/x-data-grid-pro": "7.1.1", - "@mui/x-license": "7.1.1", + "@mui/x-data-grid": "7.2.0", + "@mui/x-data-grid-pro": "7.2.0", + "@mui/x-license": "7.2.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "exceljs": "^4.4.0", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index a5692779a6b5..5abf622bcac1 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.1.1", + "version": "7.2.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.1.1", - "@mui/x-license": "7.1.1", + "@mui/x-data-grid": "7.2.0", + "@mui/x-license": "7.2.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index acd366c96f3b..d8f9cb3c6d59 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.1.1", + "version": "7.2.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 848f8ed64ac8..c72f516b3bf4 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.1.1", + "version": "7.2.0", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-date-pickers": "7.1.1", - "@mui/x-license": "7.1.1", + "@mui/x-date-pickers": "7.2.0", + "@mui/x-license": "7.2.0", "clsx": "^2.1.0", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 95560a7999f9..a2f8f85412e0 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.1.1", + "version": "7.2.0", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 5f42788179d0..c25f323f11ac 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.1.1", + "version": "7.2.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 7c206cb61686..df1cc086a5fe 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.1.1", + "version": "7.2.0", "private": true, "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", @@ -47,8 +47,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-license": "7.1.1", - "@mui/x-tree-view": "7.1.1", + "@mui/x-license": "7.2.0", + "@mui/x-tree-view": "7.2.0", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index b3b3f32cccbb..ffc06808a4cd 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.1.1", + "version": "7.2.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From 978d54473a7e977bdb10e6383812c05727a31121 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:12:28 +0200 Subject: [PATCH 118/912] [charts] Export more utils (#12744) --- .../src/ChartsClipPath/ChartsClipPath.tsx | 4 +- .../src/ChartsLegend/ChartsLegend.tsx | 4 +- .../ChartsVoronoiHandler.tsx | 6 +- .../x-charts/src/ChartsXAxis/ChartsXAxis.tsx | 5 +- .../x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 4 +- packages/x-charts/src/Gauge/GaugeProvider.tsx | 4 +- .../x-charts/src/LineChart/AnimatedArea.tsx | 5 +- .../x-charts/src/LineChart/AnimatedLine.tsx | 6 +- packages/x-charts/src/LineChart/MarkPlot.tsx | 4 +- packages/x-charts/src/PieChart/PiePlot.tsx | 17 +++-- .../src/PieChart/getPieCoordinates.ts | 17 +++++ packages/x-charts/src/PieChart/index.tsx | 2 + .../src/context/CartesianContextProvider.tsx | 4 +- packages/x-charts/src/hooks/index.ts | 9 +++ packages/x-charts/src/hooks/useAxisEvents.ts | 7 +- packages/x-charts/src/hooks/useChartId.ts | 8 ++ packages/x-charts/src/hooks/useSeries.ts | 75 +++++++++++++++++++ packages/x-charts/src/hooks/useSvgRef.ts | 17 +++++ scripts/x-charts.exports.json | 8 ++ 19 files changed, 176 insertions(+), 30 deletions(-) create mode 100644 packages/x-charts/src/PieChart/getPieCoordinates.ts create mode 100644 packages/x-charts/src/hooks/useChartId.ts create mode 100644 packages/x-charts/src/hooks/useSeries.ts create mode 100644 packages/x-charts/src/hooks/useSvgRef.ts diff --git a/packages/x-charts/src/ChartsClipPath/ChartsClipPath.tsx b/packages/x-charts/src/ChartsClipPath/ChartsClipPath.tsx index fc674f7038c0..cce380818f1d 100644 --- a/packages/x-charts/src/ChartsClipPath/ChartsClipPath.tsx +++ b/packages/x-charts/src/ChartsClipPath/ChartsClipPath.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { DrawingContext } from '../context/DrawingProvider'; +import { useDrawingArea } from '../hooks/useDrawingArea'; export type ChartsClipPathProps = { id: string; @@ -14,7 +14,7 @@ export type ChartsClipPathProps = { */ function ChartsClipPath(props: ChartsClipPathProps) { const { id, offset: offsetProps } = props; - const { left, top, width, height } = React.useContext(DrawingContext); + const { left, top, width, height } = useDrawingArea(); const offset = { top: 0, right: 0, bottom: 0, left: 0, ...offsetProps }; return ( diff --git a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx index 291c13be609e..854bf0db8935 100644 --- a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx @@ -3,12 +3,12 @@ import PropTypes from 'prop-types'; import { useSlotProps } from '@mui/base/utils'; import { unstable_composeClasses as composeClasses } from '@mui/utils'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; -import { DrawingContext } from '../context/DrawingProvider'; import { AnchorPosition, Direction, getSeriesToDisplay } from './utils'; import { SeriesContext } from '../context/SeriesContextProvider'; import { ChartsLegendClasses, getLegendUtilityClass } from './chartsLegendClasses'; import { DefaultizedProps } from '../models/helpers'; import { DefaultChartsLegend, LegendRendererProps } from './DefaultChartsLegend'; +import { useDrawingArea } from '../hooks'; export interface ChartsLegendSlots { /** @@ -82,7 +82,7 @@ function ChartsLegend(inProps: ChartsLegendProps) { const theme = useTheme(); const classes = useUtilityClasses({ ...props, theme }); - const drawingArea = React.useContext(DrawingContext); + const drawingArea = useDrawingArea(); const series = React.useContext(SeriesContext); const seriesToDisplay = getSeriesToDisplay(series); diff --git a/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx b/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx index 015229f63570..48f0fec8417d 100644 --- a/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx +++ b/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx @@ -4,12 +4,12 @@ import { Delaunay } from 'd3-delaunay'; import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { InteractionContext } from '../context/InteractionProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; -import { SvgContext, DrawingContext } from '../context/DrawingProvider'; import { SeriesContext } from '../context/SeriesContextProvider'; import { getValueToPositionMapper } from '../hooks/useScale'; import { getSVGPoint } from '../internals/utils'; import { ScatterItemIdentifier } from '../models'; import { SeriesId } from '../models/seriesType/common'; +import { useDrawingArea, useSvgRef } from '../hooks'; export type ChartsVoronoiHandlerProps = { /** @@ -29,8 +29,8 @@ type VoronoiSeries = { seriesId: SeriesId; startIndex: number; endIndex: number function ChartsVoronoiHandler(props: ChartsVoronoiHandlerProps) { const { voronoiMaxRadius, onItemClick } = props; - const svgRef = React.useContext(SvgContext); - const { width, height, top, left } = React.useContext(DrawingContext); + const svgRef = useSvgRef(); + const { left, top, width, height } = useDrawingArea(); const { xAxis, yAxis, xAxisIds, yAxisIds } = React.useContext(CartesianContext); const { dispatch } = React.useContext(InteractionContext); diff --git a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx index eeb1383e940b..1bd054d7e6e3 100644 --- a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx +++ b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx @@ -4,7 +4,6 @@ import { useSlotProps } from '@mui/base/utils'; import { unstable_composeClasses as composeClasses } from '@mui/utils'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; import { CartesianContext } from '../context/CartesianContextProvider'; -import { DrawingContext } from '../context/DrawingProvider'; import { useTicks, TickItemType } from '../hooks/useTicks'; import { AxisDefaultized, ChartsXAxisProps } from '../models/axis'; import { getAxisUtilityClass } from '../ChartsAxis/axisClasses'; @@ -12,6 +11,7 @@ import { AxisRoot } from '../internals/components/AxisSharedComponents'; import { ChartsText, ChartsTextProps } from '../ChartsText'; import { getMinXTranslation } from '../internals/geometry'; import { useMounted } from '../hooks/useMounted'; +import { useDrawingArea } from '../hooks/useDrawingArea'; import { getWordsByLines } from '../internals/getWordsByLines'; const useUtilityClasses = (ownerState: ChartsXAxisProps & { theme: Theme }) => { @@ -130,8 +130,7 @@ function ChartsXAxis(inProps: ChartsXAxisProps) { const theme = useTheme(); const classes = useUtilityClasses({ ...defaultizedProps, theme }); - - const { left, top, width, height } = React.useContext(DrawingContext); + const { left, top, width, height } = useDrawingArea(); const tickSize = disableTicks ? 4 : tickSizeProp; diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index 21d2f0b8f10d..81fb0caa843d 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -4,8 +4,8 @@ import { useSlotProps } from '@mui/base/utils'; import { unstable_composeClasses as composeClasses } from '@mui/utils'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; import { CartesianContext } from '../context/CartesianContextProvider'; -import { DrawingContext } from '../context/DrawingProvider'; import { useTicks } from '../hooks/useTicks'; +import { useDrawingArea } from '../hooks/useDrawingArea'; import { ChartsYAxisProps } from '../models/axis'; import { AxisRoot } from '../internals/components/AxisSharedComponents'; import { ChartsText, ChartsTextProps } from '../ChartsText'; @@ -75,7 +75,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { const theme = useTheme(); const classes = useUtilityClasses({ ...defaultizedProps, theme }); - const { left, top, width, height } = React.useContext(DrawingContext); + const { left, top, width, height } = useDrawingArea(); const tickSize = disableTicks ? 4 : tickSizeProp; diff --git a/packages/x-charts/src/Gauge/GaugeProvider.tsx b/packages/x-charts/src/Gauge/GaugeProvider.tsx index d89f938906f0..a73efb81a479 100644 --- a/packages/x-charts/src/Gauge/GaugeProvider.tsx +++ b/packages/x-charts/src/Gauge/GaugeProvider.tsx @@ -1,8 +1,8 @@ // @ignore - do not document. import * as React from 'react'; -import { DrawingContext } from '../context/DrawingProvider'; import { getPercentageValue } from '../internals/utils'; import { getArcRatios, getAvailableRadius } from './utils'; +import { useDrawingArea } from '../hooks/useDrawingArea'; interface CircularConfig { /** @@ -148,7 +148,7 @@ export function GaugeProvider(props: GaugeProviderProps) { children, } = props; - const { width, height, top, left } = React.useContext(DrawingContext); + const { left, top, width, height } = useDrawingArea(); const ratios = getArcRatios(startAngle, endAngle); diff --git a/packages/x-charts/src/LineChart/AnimatedArea.tsx b/packages/x-charts/src/LineChart/AnimatedArea.tsx index 1be817047a48..a8ef129952df 100644 --- a/packages/x-charts/src/LineChart/AnimatedArea.tsx +++ b/packages/x-charts/src/LineChart/AnimatedArea.tsx @@ -4,9 +4,9 @@ import { styled } from '@mui/material/styles'; import { color as d3Color } from 'd3-color'; import { animated, useSpring } from '@react-spring/web'; import { useAnimatedPath } from '../internals/useAnimatedPath'; -import { DrawingContext } from '../context/DrawingProvider'; import { cleanId } from '../internals/utils'; import type { AreaElementOwnerState } from './AreaElement'; +import { useChartId, useDrawingArea } from '../hooks'; export const AreaElementPath = styled(animated.path, { name: 'MuiAreaElement', @@ -43,7 +43,8 @@ export interface AnimatedAreaProps extends React.ComponentPropsWithoutRef<'path' */ function AnimatedArea(props: AnimatedAreaProps) { const { d, skipAnimation, ownerState, ...other } = props; - const { left, top, right, bottom, width, height, chartId } = React.useContext(DrawingContext); + const { left, top, right, bottom, width, height } = useDrawingArea(); + const chartId = useChartId(); const path = useAnimatedPath(d!, skipAnimation); diff --git a/packages/x-charts/src/LineChart/AnimatedLine.tsx b/packages/x-charts/src/LineChart/AnimatedLine.tsx index 411e31142a76..ab0817fce3ea 100644 --- a/packages/x-charts/src/LineChart/AnimatedLine.tsx +++ b/packages/x-charts/src/LineChart/AnimatedLine.tsx @@ -4,9 +4,10 @@ import { animated, useSpring } from '@react-spring/web'; import { color as d3Color } from 'd3-color'; import { styled } from '@mui/material/styles'; import { useAnimatedPath } from '../internals/useAnimatedPath'; -import { DrawingContext } from '../context/DrawingProvider'; import { cleanId } from '../internals/utils'; import type { LineElementOwnerState } from './LineElement'; +import { useChartId } from '../hooks/useChartId'; +import { useDrawingArea } from '../hooks/useDrawingArea'; export const LineElementPath = styled(animated.path, { name: 'MuiLineElement', @@ -45,7 +46,8 @@ export interface AnimatedLineProps extends React.ComponentPropsWithoutRef<'path' */ function AnimatedLine(props: AnimatedLineProps) { const { d, skipAnimation, ownerState, ...other } = props; - const { left, top, bottom, width, height, right, chartId } = React.useContext(DrawingContext); + const { left, top, bottom, width, height, right } = useDrawingArea(); + const chartId = useChartId(); const path = useAnimatedPath(d, skipAnimation); diff --git a/packages/x-charts/src/LineChart/MarkPlot.tsx b/packages/x-charts/src/LineChart/MarkPlot.tsx index 59a78bbb4ab2..f63d3cd61f18 100644 --- a/packages/x-charts/src/LineChart/MarkPlot.tsx +++ b/packages/x-charts/src/LineChart/MarkPlot.tsx @@ -4,9 +4,9 @@ import { SeriesContext } from '../context/SeriesContextProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; import { MarkElement, MarkElementProps } from './MarkElement'; import { getValueToPositionMapper } from '../hooks/useScale'; +import { useChartId } from '../hooks/useChartId'; import { DEFAULT_X_AXIS_KEY } from '../constants'; import { LineItemIdentifier } from '../models/seriesType/line'; -import { DrawingContext } from '../context/DrawingProvider'; import { cleanId } from '../internals/utils'; export interface MarkPlotSlots { @@ -56,7 +56,7 @@ function MarkPlot(props: MarkPlotProps) { const seriesData = React.useContext(SeriesContext).line; const axisData = React.useContext(CartesianContext); - const { chartId } = React.useContext(DrawingContext); + const chartId = useChartId(); const Mark = slots?.mark ?? MarkElement; diff --git a/packages/x-charts/src/PieChart/PiePlot.tsx b/packages/x-charts/src/PieChart/PiePlot.tsx index 9b05bc59ef49..5f86ea051357 100644 --- a/packages/x-charts/src/PieChart/PiePlot.tsx +++ b/packages/x-charts/src/PieChart/PiePlot.tsx @@ -5,6 +5,7 @@ import { DrawingContext } from '../context/DrawingProvider'; import { PieArcPlot, PieArcPlotProps, PieArcPlotSlotProps, PieArcPlotSlots } from './PieArcPlot'; import { PieArcLabelPlotSlots, PieArcLabelPlotSlotProps, PieArcLabelPlot } from './PieArcLabelPlot'; import { getPercentageValue } from '../internals/utils'; +import { getPieCoordinates } from './getPieCoordinates'; export interface PiePlotSlots extends PieArcPlotSlots, PieArcLabelPlotSlots {} @@ -41,7 +42,6 @@ function PiePlot(props: PiePlotProps) { if (seriesData === undefined) { return null; } - const availableRadius = Math.min(width, height) / 2; const { series, seriesOrder } = seriesData; @@ -61,13 +61,16 @@ function PiePlot(props: PiePlotProps) { highlightScope, } = series[seriesId]; + const { cx, cy, availableRadius } = getPieCoordinates( + { cx: cxParam, cy: cyParam }, + { width, height }, + ); + const outerRadius = getPercentageValue( outerRadiusParam ?? availableRadius, availableRadius, ); const innerRadius = getPercentageValue(innerRadiusParam ?? 0, availableRadius); - const cx = getPercentageValue(cxParam ?? '50%', width); - const cy = getPercentageValue(cyParam ?? '50%', height); return ( , + drawing: Pick, +): { cx: number; cy: number; availableRadius: number } { + const { height, width } = drawing; + const { cx: cxParam, cy: cyParam } = series; + + const availableRadius = Math.min(width, height) / 2; + const cx = getPercentageValue(cxParam ?? '50%', width); + const cy = getPercentageValue(cyParam ?? '50%', height); + + return { cx, cy, availableRadius }; +} diff --git a/packages/x-charts/src/PieChart/index.tsx b/packages/x-charts/src/PieChart/index.tsx index fcf167a4a57f..68d23ddbe290 100644 --- a/packages/x-charts/src/PieChart/index.tsx +++ b/packages/x-charts/src/PieChart/index.tsx @@ -6,3 +6,5 @@ export * from './PieArcLabelPlot'; export * from './PieArc'; export * from './PieArcLabel'; + +export * from './getPieCoordinates'; diff --git a/packages/x-charts/src/context/CartesianContextProvider.tsx b/packages/x-charts/src/context/CartesianContextProvider.tsx index 9a9cb62b8852..eea608751c35 100644 --- a/packages/x-charts/src/context/CartesianContextProvider.tsx +++ b/packages/x-charts/src/context/CartesianContextProvider.tsx @@ -14,7 +14,6 @@ import { } from '../LineChart/extremums'; import { AxisConfig, AxisDefaultized, isBandScaleConfig, isPointScaleConfig } from '../models/axis'; import { getScale } from '../internals/getScale'; -import { DrawingContext } from './DrawingProvider'; import { SeriesContext } from './SeriesContextProvider'; import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants'; import { @@ -26,6 +25,7 @@ import { } from '../models/seriesType/config'; import { MakeOptional } from '../models/helpers'; import { getTickNumber } from '../hooks/useTicks'; +import { useDrawingArea } from '../hooks/useDrawingArea'; import { SeriesId } from '../models/seriesType/common'; export type CartesianContextProviderProps = { @@ -97,7 +97,7 @@ if (process.env.NODE_ENV !== 'production') { function CartesianContextProvider(props: CartesianContextProviderProps) { const { xAxis: inXAxis, yAxis: inYAxis, dataset, children } = props; const formattedSeries = React.useContext(SeriesContext); - const drawingArea = React.useContext(DrawingContext); + const drawingArea = useDrawingArea(); const xAxis = React.useMemo( () => diff --git a/packages/x-charts/src/hooks/index.ts b/packages/x-charts/src/hooks/index.ts index 36309a114c3b..c052b357e379 100644 --- a/packages/x-charts/src/hooks/index.ts +++ b/packages/x-charts/src/hooks/index.ts @@ -1,2 +1,11 @@ export * from './useDrawingArea'; +export * from './useChartId'; export * from './useScale'; +export * from './useSvgRef'; +export { + useSeries as unstable_useSeries, + usePieSeries as unstable_usePieSeries, + useLineSeries as unstable_useLineSeries, + useBarSeries as unstable_useBarSeries, + useScatterSeries as unstable_useScatterSeries, +} from './useSeries'; diff --git a/packages/x-charts/src/hooks/useAxisEvents.ts b/packages/x-charts/src/hooks/useAxisEvents.ts index d31dc834ec7f..5c9a6fe4c94c 100644 --- a/packages/x-charts/src/hooks/useAxisEvents.ts +++ b/packages/x-charts/src/hooks/useAxisEvents.ts @@ -1,17 +1,18 @@ import * as React from 'react'; import { InteractionContext } from '../context/InteractionProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; -import { SvgContext, DrawingContext } from '../context/DrawingProvider'; import { isBandScale } from '../internals/isBandScale'; import { AxisDefaultized } from '../models/axis'; import { getSVGPoint } from '../internals/utils'; +import { useSvgRef } from './useSvgRef'; +import { useDrawingArea } from './useDrawingArea'; function getAsANumber(value: number | Date) { return value instanceof Date ? value.getTime() : value; } export const useAxisEvents = (disableAxisListener: boolean) => { - const svgRef = React.useContext(SvgContext); - const { width, height, top, left } = React.useContext(DrawingContext); + const svgRef = useSvgRef(); + const { left, top, width, height } = useDrawingArea(); const { xAxis, yAxis, xAxisIds, yAxisIds } = React.useContext(CartesianContext); const { dispatch } = React.useContext(InteractionContext); diff --git a/packages/x-charts/src/hooks/useChartId.ts b/packages/x-charts/src/hooks/useChartId.ts new file mode 100644 index 000000000000..0107a8e8df58 --- /dev/null +++ b/packages/x-charts/src/hooks/useChartId.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import { DrawingContext } from '../context/DrawingProvider'; + +export function useChartId() { + const { chartId } = React.useContext(DrawingContext); + + return React.useMemo(() => chartId, [chartId]); +} diff --git a/packages/x-charts/src/hooks/useSeries.ts b/packages/x-charts/src/hooks/useSeries.ts new file mode 100644 index 000000000000..12817cb944eb --- /dev/null +++ b/packages/x-charts/src/hooks/useSeries.ts @@ -0,0 +1,75 @@ +import * as React from 'react'; +import { SeriesContext } from '../context/SeriesContextProvider'; + +/** + * Get access to the internal state of series. + * Structured by type of series: + * { seriesType?: { series: { id1: precessedValue, ... }, seriesOrder: [id1, ...] } } + * @returns FormattedSeries series + */ +export function useSeries() { + const series = React.useContext(SeriesContext); + + if (series === undefined) { + throw new Error( + [ + 'MUI X: Could not find the series ref context.', + 'It looks like you rendered your component outside of a ChartsContainer parent component.', + ].join('\n'), + ); + } + + return series; +} + +/** + * Get access to the internal state of pie series. + * The returned object contains: + * - series: a mapping from ids to series attributes. + * - seriesOrder: the array of series ids. + * @returns { series: Record; seriesOrder: SeriesId[]; } | undefined pieSeries + */ +export function usePieSeries() { + const series = useSeries(); + + return React.useMemo(() => series.pie, [series.pie]); +} + +/** + * Get access to the internal state of line series. + * The returned object contains: + * - series: a mapping from ids to series attributes. + * - seriesOrder: the array of series ids. + * @returns { series: Record; seriesOrder: SeriesId[]; } | undefined lineSeries + */ +export function useLineSeries() { + const series = useSeries(); + + return React.useMemo(() => series.line, [series.line]); +} + +/** + * Get access to the internal state of bar series. + * The returned object contains: + * - series: a mapping from ids to series attributes. + * - seriesOrder: the array of series ids. + * @returns { series: Record; seriesOrder: SeriesId[]; } | undefined barSeries + */ +export function useBarSeries() { + const series = useSeries(); + + return React.useMemo(() => series.bar, [series.bar]); +} + +/** + * Get access to the internal state of scatter series. + * The returned object contains: + * - series: a mapping from ids to series attributes. + * - seriesOrder: the array of series ids. + * @returns { series: Record; seriesOrder: SeriesId[]; } | undefined scatterSeries + */ +export function useScatterSeries() { + const series = useSeries(); + + return React.useMemo(() => series.scatter, [series.scatter]); +} diff --git a/packages/x-charts/src/hooks/useSvgRef.ts b/packages/x-charts/src/hooks/useSvgRef.ts new file mode 100644 index 000000000000..268222985047 --- /dev/null +++ b/packages/x-charts/src/hooks/useSvgRef.ts @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { SvgContext } from '../context/DrawingProvider'; + +export function useSvgRef(): React.MutableRefObject { + const svgRef = React.useContext(SvgContext); + + if (svgRef === undefined) { + throw new Error( + [ + 'MUI X: Could not find the svg ref context.', + 'It looks like you rendered your component outside of a ChartsContainer parent component.', + ].join('\n'), + ); + } + + return svgRef as React.MutableRefObject; +} diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index 9e48f1f55049..357e3413a04d 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -149,6 +149,7 @@ { "name": "getMarkElementUtilityClass", "kind": "Function" }, { "name": "getPieArcLabelUtilityClass", "kind": "Function" }, { "name": "getPieArcUtilityClass", "kind": "Function" }, + { "name": "getPieCoordinates", "kind": "Function" }, { "name": "getReferenceLineUtilityClass", "kind": "Function" }, { "name": "getSeriesToDisplay", "kind": "Function" }, { "name": "getValueToPositionMapper", "kind": "Function" }, @@ -254,8 +255,15 @@ { "name": "StackableSeriesType", "kind": "TypeAlias" }, { "name": "StackOffsetType", "kind": "TypeAlias" }, { "name": "StackOrderType", "kind": "TypeAlias" }, + { "name": "unstable_useBarSeries", "kind": "Function" }, + { "name": "unstable_useLineSeries", "kind": "Function" }, + { "name": "unstable_usePieSeries", "kind": "Function" }, + { "name": "unstable_useScatterSeries", "kind": "Function" }, + { "name": "unstable_useSeries", "kind": "Function" }, + { "name": "useChartId", "kind": "Function" }, { "name": "useDrawingArea", "kind": "Function" }, { "name": "useGaugeState", "kind": "Function" }, + { "name": "useSvgRef", "kind": "Function" }, { "name": "useXScale", "kind": "Function" }, { "name": "useYScale", "kind": "Function" } ] From 8efee23e8ba67ea1e3c31ab54ac71561b3cd9223 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:25:04 +0200 Subject: [PATCH 119/912] [charts] Add color scale (#12490) --- docs/data/charts/bars/ColorScaleNoSnap.js | 174 ++++++++++++++++ docs/data/charts/bars/ColorScaleNoSnap.tsx | 187 ++++++++++++++++++ docs/data/charts/bars/bars.md | 15 ++ docs/data/charts/lines/ColorScaleNoSnap.js | 155 +++++++++++++++ docs/data/charts/lines/ColorScaleNoSnap.tsx | 165 ++++++++++++++++ docs/data/charts/lines/lines.md | 19 ++ docs/data/charts/scatter/ColorScaleNoSnap.js | 172 ++++++++++++++++ docs/data/charts/scatter/ColorScaleNoSnap.tsx | 185 +++++++++++++++++ docs/data/charts/scatter/scatter.md | 15 ++ docs/data/charts/styling/styling.md | 60 ++++++ docs/pages/x/api/charts/bar-chart.json | 4 +- docs/pages/x/api/charts/chart-container.json | 4 +- .../default-charts-item-tooltip-content.json | 9 + docs/pages/x/api/charts/line-chart.json | 4 +- docs/pages/x/api/charts/pie-chart.json | 4 +- .../charts/responsive-chart-container.json | 4 +- docs/pages/x/api/charts/scatter-chart.json | 4 +- docs/pages/x/api/charts/spark-line-chart.json | 2 +- .../default-charts-item-tooltip-content.json | 7 + packages/x-charts/src/BarChart/BarChart.tsx | 54 +++++ packages/x-charts/src/BarChart/BarPlot.tsx | 33 +++- packages/x-charts/src/BarChart/getColor.ts | 36 ++++ .../src/ChartContainer/ChartContainer.tsx | 56 ++++++ .../ChartsAxisTooltipContent.tsx | 18 +- .../ChartsItemTooltipContent.tsx | 25 +++ .../DefaultChartsAxisTooltipContent.tsx | 50 ++--- .../DefaultChartsItemTooltipContent.tsx | 12 +- packages/x-charts/src/ChartsTooltip/utils.tsx | 5 + .../x-charts/src/LineChart/AnimatedArea.tsx | 8 +- .../x-charts/src/LineChart/AnimatedLine.tsx | 8 +- .../x-charts/src/LineChart/AreaElement.tsx | 4 + packages/x-charts/src/LineChart/AreaPlot.tsx | 11 +- packages/x-charts/src/LineChart/LineChart.tsx | 54 +++++ .../x-charts/src/LineChart/LineElement.tsx | 4 + .../src/LineChart/LineHighlightPlot.tsx | 6 +- packages/x-charts/src/LineChart/LinePlot.tsx | 12 +- packages/x-charts/src/LineChart/MarkPlot.tsx | 5 +- packages/x-charts/src/LineChart/getColor.ts | 34 ++++ packages/x-charts/src/PieChart/PieChart.tsx | 54 +++++ packages/x-charts/src/PieChart/getColor.ts | 7 + .../ResponsiveChartContainer.tsx | 54 +++++ .../x-charts/src/ScatterChart/Scatter.tsx | 20 +- .../src/ScatterChart/ScatterChart.tsx | 54 +++++ .../x-charts/src/ScatterChart/ScatterPlot.tsx | 7 + .../x-charts/src/ScatterChart/getColor.ts | 34 ++++ .../src/SparkLineChart/SparkLineChart.tsx | 25 +++ .../src/context/CartesianContextProvider.tsx | 23 +++ .../x-charts/src/internals/colorGetter.ts | 54 +++++ packages/x-charts/src/internals/colorScale.ts | 34 ++++ .../ChartsAxesGradients.tsx | 96 +++++++++ .../ChartsContinuousGradient.tsx | 65 ++++++ .../ChartsPiecewiseGradient.tsx | 43 ++++ .../components/ChartsAxesGradients/index.tsx | 1 + packages/x-charts/src/internals/getScale.ts | 6 +- packages/x-charts/src/models/axis.ts | 57 +++++- packages/x-charts/src/models/colorMapping.ts | 47 +++++ packages/x-charts/src/models/index.ts | 2 +- .../x-charts/src/models/seriesType/common.ts | 2 +- .../x-charts/src/models/seriesType/index.ts | 10 + scripts/x-charts.exports.json | 4 +- 60 files changed, 2251 insertions(+), 72 deletions(-) create mode 100644 docs/data/charts/bars/ColorScaleNoSnap.js create mode 100644 docs/data/charts/bars/ColorScaleNoSnap.tsx create mode 100644 docs/data/charts/lines/ColorScaleNoSnap.js create mode 100644 docs/data/charts/lines/ColorScaleNoSnap.tsx create mode 100644 docs/data/charts/scatter/ColorScaleNoSnap.js create mode 100644 docs/data/charts/scatter/ColorScaleNoSnap.tsx create mode 100644 packages/x-charts/src/BarChart/getColor.ts create mode 100644 packages/x-charts/src/LineChart/getColor.ts create mode 100644 packages/x-charts/src/PieChart/getColor.ts create mode 100644 packages/x-charts/src/ScatterChart/getColor.ts create mode 100644 packages/x-charts/src/internals/colorGetter.ts create mode 100644 packages/x-charts/src/internals/colorScale.ts create mode 100644 packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx create mode 100644 packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx create mode 100644 packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx create mode 100644 packages/x-charts/src/internals/components/ChartsAxesGradients/index.tsx create mode 100644 packages/x-charts/src/models/colorMapping.ts diff --git a/docs/data/charts/bars/ColorScaleNoSnap.js b/docs/data/charts/bars/ColorScaleNoSnap.js new file mode 100644 index 000000000000..a0062052c275 --- /dev/null +++ b/docs/data/charts/bars/ColorScaleNoSnap.js @@ -0,0 +1,174 @@ +import * as React from 'react'; +import { BarChart } from '@mui/x-charts/BarChart'; +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +// @ts-ignore +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; + +const series = [{ data: [-2, -9, 12, 11, 6, -4] }]; + +export default function ColorScaleNoSnap() { + const [colorX, setColorX] = React.useState('piecewise'); + const [colorY, setColorY] = React.useState('None'); + + return ( + + + setColorX(event.target.value)} + > + None + piecewise + continuous + ordinal + + setColorY(event.target.value)} + > + None + piecewise + continuous + + + + value.getFullYear().toString(), + colorMap: + (colorX === 'ordinal' && { + type: 'ordinal', + colors: [ + '#ccebc5', + '#a8ddb5', + '#7bccc4', + '#4eb3d3', + '#2b8cbe', + '#08589e', + ], + }) || + (colorX === 'continuous' && { + type: 'continuous', + min: new Date(2019, 1, 1), + max: new Date(2024, 1, 1), + color: ['green', 'orange'], + }) || + (colorX === 'piecewise' && { + type: 'piecewise', + thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)], + colors: ['blue', 'red', 'blue'], + }) || + undefined, + }, + ]} + /> + `, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + ); +} diff --git a/docs/data/charts/bars/ColorScaleNoSnap.tsx b/docs/data/charts/bars/ColorScaleNoSnap.tsx new file mode 100644 index 000000000000..bef053df0b9c --- /dev/null +++ b/docs/data/charts/bars/ColorScaleNoSnap.tsx @@ -0,0 +1,187 @@ +import * as React from 'react'; +import { BarChart } from '@mui/x-charts/BarChart'; +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +// @ts-ignore +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; + +const series = [{ data: [-2, -9, 12, 11, 6, -4] }]; + +export default function ColorScaleNoSnap() { + const [colorX, setColorX] = React.useState< + 'None' | 'piecewise' | 'continuous' | 'ordinal' + >('piecewise'); + const [colorY, setColorY] = React.useState<'None' | 'piecewise' | 'continuous'>( + 'None', + ); + + return ( + + + + setColorX( + event.target.value as 'None' | 'piecewise' | 'continuous' | 'ordinal', + ) + } + > + None + piecewise + continuous + ordinal + + + setColorY(event.target.value as 'None' | 'piecewise' | 'continuous') + } + > + None + piecewise + continuous + + + + value.getFullYear().toString(), + colorMap: + (colorX === 'ordinal' && { + type: 'ordinal', + colors: [ + '#ccebc5', + '#a8ddb5', + '#7bccc4', + '#4eb3d3', + '#2b8cbe', + '#08589e', + ], + }) || + (colorX === 'continuous' && { + type: 'continuous', + min: new Date(2019, 1, 1), + max: new Date(2024, 1, 1), + color: ['green', 'orange'], + }) || + (colorX === 'piecewise' && { + type: 'piecewise', + thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)], + colors: ['blue', 'red', 'blue'], + }) || + undefined, + }, + ]} + /> + `, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + ); +} diff --git a/docs/data/charts/bars/bars.md b/docs/data/charts/bars/bars.md index 8c74fde88ac7..3287a06ee42f 100644 --- a/docs/data/charts/bars/bars.md +++ b/docs/data/charts/bars/bars.md @@ -85,6 +85,21 @@ See [Axis—Grid](/x/react-charts/axis/#grid) documentation for more information {{"demo": "GridDemo.js"}} +### Color scale + +As with other charts, you can modify the [series color](/x/react-charts/styling/#colors) either directly, or with the color palette. + +You can also modify the color by using axes `colorMap` which maps values to colors. +The bar charts use by priority: + +1. The value axis color +2. The band axis color +3. The series color + +Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). + +{{"demo": "ColorScaleNoSnap.js"}} + ## Click event Bar charts provides two click handlers: diff --git a/docs/data/charts/lines/ColorScaleNoSnap.js b/docs/data/charts/lines/ColorScaleNoSnap.js new file mode 100644 index 000000000000..79a915a28ded --- /dev/null +++ b/docs/data/charts/lines/ColorScaleNoSnap.js @@ -0,0 +1,155 @@ +import * as React from 'react'; +import { LineChart } from '@mui/x-charts/LineChart'; +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +// @ts-ignore +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; + +export default function ColorScaleNoSnap() { + const [colorX, setColorX] = React.useState('None'); + const [colorY, setColorY] = React.useState('piecewise'); + + return ( + + + setColorX(event.target.value)} + > + None + piecewise + continuous + + setColorY(event.target.value)} + > + None + piecewise + continuous + + + + value.getFullYear().toString(), + colorMap: + (colorX === 'continuous' && { + type: 'continuous', + min: new Date(2019, 1, 1), + max: new Date(2024, 1, 1), + color: ['green', 'orange'], + }) || + (colorX === 'piecewise' && { + type: 'piecewise', + thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)], + colors: ['blue', 'red', 'blue'], + }) || + undefined, + }, + ]} + /> + `, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + ); +} diff --git a/docs/data/charts/lines/ColorScaleNoSnap.tsx b/docs/data/charts/lines/ColorScaleNoSnap.tsx new file mode 100644 index 000000000000..687ba56d7ee9 --- /dev/null +++ b/docs/data/charts/lines/ColorScaleNoSnap.tsx @@ -0,0 +1,165 @@ +import * as React from 'react'; +import { LineChart } from '@mui/x-charts/LineChart'; +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +// @ts-ignore +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; + +export default function ColorScaleNoSnap() { + const [colorX, setColorX] = React.useState< + 'None' | 'piecewise' | 'continuous' | 'ordinal' + >('None'); + const [colorY, setColorY] = React.useState<'None' | 'piecewise' | 'continuous'>( + 'piecewise', + ); + + return ( + + + + setColorX(event.target.value as 'None' | 'piecewise' | 'continuous') + } + > + None + piecewise + continuous + + + setColorY(event.target.value as 'None' | 'piecewise' | 'continuous') + } + > + None + piecewise + continuous + + + + value.getFullYear().toString(), + colorMap: + (colorX === 'continuous' && { + type: 'continuous', + min: new Date(2019, 1, 1), + max: new Date(2024, 1, 1), + color: ['green', 'orange'], + }) || + (colorX === 'piecewise' && { + type: 'piecewise', + thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)], + colors: ['blue', 'red', 'blue'], + }) || + undefined, + }, + ]} + /> + `, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + ); +} diff --git a/docs/data/charts/lines/lines.md b/docs/data/charts/lines/lines.md index 5b949e9b4a4a..9b203541adca 100644 --- a/docs/data/charts/lines/lines.md +++ b/docs/data/charts/lines/lines.md @@ -146,6 +146,25 @@ See [Axis—Grid](/x/react-charts/axis/#grid) documentation for more information {{"demo": "GridDemo.js"}} +### Color scale + +As with other charts, you can modify the [series color](/x/react-charts/styling/#colors) either directly, or with the color palette. + +You can also modify the color by using axes `colorMap` which maps values to colors. +The line charts use by priority: + +1. The y-axis color +2. The x-axis color +3. The series color + +Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). + +{{"demo": "ColorScaleNoSnap.js"}} + +:::warning +For now, ordinal config is not supported for line chart. +::: + ### Interpolation The interpolation between data points can be customized by the `curve` property. diff --git a/docs/data/charts/scatter/ColorScaleNoSnap.js b/docs/data/charts/scatter/ColorScaleNoSnap.js new file mode 100644 index 000000000000..ea446b982627 --- /dev/null +++ b/docs/data/charts/scatter/ColorScaleNoSnap.js @@ -0,0 +1,172 @@ +import * as React from 'react'; +import { ScatterChart } from '@mui/x-charts/ScatterChart'; + +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +// @ts-ignore +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; + +import { Chance } from 'chance'; + +const chance = new Chance(42); + +export default function ColorScaleNoSnap() { + const [colorX, setColorX] = React.useState('piecewise'); + const [colorY, setColorY] = React.useState('None'); + + return ( + + + setColorX(event.target.value)} + > + None + piecewise + continuous + + setColorY(event.target.value)} + > + None + piecewise + continuous + + + + + `, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + ); +} + +const series = [{ data: getGaussianSeriesData([0, 0], [1, 1], 200) }].map((s) => ({ + ...s, + valueFormatter: (v) => `(${v.x.toFixed(1)}, ${v.y.toFixed(1)})`, +})); + +function getGaussianSeriesData(mean, stdev = [0.3, 0.4], N = 50) { + return [...Array(N)].map((_, i) => { + const x = + Math.sqrt(-2.0 * Math.log(1 - chance.floating({ min: 0, max: 0.99 }))) * + Math.cos(2.0 * Math.PI * chance.floating({ min: 0, max: 0.99 })) * + stdev[0] + + mean[0]; + const y = + Math.sqrt(-2.0 * Math.log(1 - chance.floating({ min: 0, max: 0.99 }))) * + Math.cos(2.0 * Math.PI * chance.floating({ min: 0, max: 0.99 })) * + stdev[1] + + mean[1]; + return { x, y, id: i }; + }); +} diff --git a/docs/data/charts/scatter/ColorScaleNoSnap.tsx b/docs/data/charts/scatter/ColorScaleNoSnap.tsx new file mode 100644 index 000000000000..3ab5d985ef84 --- /dev/null +++ b/docs/data/charts/scatter/ColorScaleNoSnap.tsx @@ -0,0 +1,185 @@ +import * as React from 'react'; +import { ScatterChart } from '@mui/x-charts/ScatterChart'; +import { ScatterValueType } from '@mui/x-charts'; +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +// @ts-ignore +import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; + +import { Chance } from 'chance'; + +const chance = new Chance(42); + +export default function ColorScaleNoSnap() { + const [colorX, setColorX] = React.useState<'None' | 'piecewise' | 'continuous'>( + 'piecewise', + ); + const [colorY, setColorY] = React.useState<'None' | 'piecewise' | 'continuous'>( + 'None', + ); + + return ( + + + + setColorX(event.target.value as 'None' | 'piecewise' | 'continuous') + } + > + None + piecewise + continuous + + + setColorY(event.target.value as 'None' | 'piecewise' | 'continuous') + } + > + None + piecewise + continuous + + + + + `, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + ); +} + +const series = [{ data: getGaussianSeriesData([0, 0], [1, 1], 200) }].map((s) => ({ + ...s, + valueFormatter: (v: ScatterValueType) => `(${v.x.toFixed(1)}, ${v.y.toFixed(1)})`, +})); + +function getGaussianSeriesData( + mean: [number, number], + stdev: [number, number] = [0.3, 0.4], + N: number = 50, +) { + return [...Array(N)].map((_, i) => { + const x = + Math.sqrt(-2.0 * Math.log(1 - chance.floating({ min: 0, max: 0.99 }))) * + Math.cos(2.0 * Math.PI * chance.floating({ min: 0, max: 0.99 })) * + stdev[0] + + mean[0]; + const y = + Math.sqrt(-2.0 * Math.log(1 - chance.floating({ min: 0, max: 0.99 }))) * + Math.cos(2.0 * Math.PI * chance.floating({ min: 0, max: 0.99 })) * + stdev[1] + + mean[1]; + return { x, y, id: i }; + }); +} diff --git a/docs/data/charts/scatter/scatter.md b/docs/data/charts/scatter/scatter.md index 75e038b43e04..89dbca75e8a1 100644 --- a/docs/data/charts/scatter/scatter.md +++ b/docs/data/charts/scatter/scatter.md @@ -53,6 +53,21 @@ Otherwise, the click behavior will be the same as defined in the [interaction se ## Styling +### Color scale + +As with other charts, you can modify the [series color](/x/react-charts/styling/#colors) either directly, or with the color palette. + +You can also modify the color by using axes `colorMap` which maps values to colors. +The scatter charts use by priority: + +1. The y-axis color +2. The x-axis color +3. The series color + +Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). + +{{"demo": "ColorScaleNoSnap.js"}} + ### Grid You can add a grid in the background of the chart with the `grid` prop. diff --git a/docs/data/charts/styling/styling.md b/docs/data/charts/styling/styling.md index 1892ccce2dce..22d64de01465 100644 --- a/docs/data/charts/styling/styling.md +++ b/docs/data/charts/styling/styling.md @@ -42,6 +42,66 @@ Here is an example of the d3 Categorical color palette. {{"demo": "ColorTemplate.js"}} +### Values color + +Colors can also be set according to item values using the `colorMap` property of the corresponding axis. + +Learn more about how to use this feature with each chart component in their dedicated docs section: + +- [bar charts](/x/react-charts/bars/#color-scale) +- [line charts](/x/react-charts/lines/#color-scale) +- [scatter charts](/x/react-charts/scatter/#color-scale) + +The `colorMap` property can accept three kinds of objects defined below. + +#### Piecewise color map + +The piecewise configuration takes an array of _n_ `thresholds` values and _n+1_ `colors`. + +```ts +{ + type: 'piecewise'; + thresholds: Value[]; + colors: string[]; +} +``` + +#### Continuous color map + +The continuous configuration lets you map values from `min` to `max` properties to their corresponding colors. + +The `color` property can either be an array of two colors to interpolate, or an interpolation function that returns a color corresponding to a number _t_ with a value between 0 and 1. +The [d3-scale-chromatic](https://d3js.org/d3-scale-chromatic) offers a lot of those functions. + +Values lower than the `min` get the color of the `min` value; similarly, values higher than the `max` get the color of the `max` value. +By default the `min`/`max` range is set to 0 / 100. + +```ts +{ + type: 'continuous'; + min?: Value; + max?: Value; + color: [string, string] | ((t: number) => string); +} +``` + +#### Ordinal color map + +This configuration takes two properties—`values` and `colors`—and maps those values to their respective colors. + +If a value is not defined, it will fall back to the `unknownColor`, and if this is also undefined, then it falls back on the series color. + +This configuration can be used in Bar Charts to set colors according to string categories. + +```ts +{ + type: 'ordinal'; + values: Value[]; + colors: string[]; + unknownColor?: string; +} +``` + ## Styling ### Size diff --git a/docs/pages/x/api/charts/bar-chart.json b/docs/pages/x/api/charts/bar-chart.json index f5440ca898e9..9098d9ca0a4a 100644 --- a/docs/pages/x/api/charts/bar-chart.json +++ b/docs/pages/x/api/charts/bar-chart.json @@ -95,13 +95,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/chart-container.json b/docs/pages/x/api/charts/chart-container.json index 74e710cbacf8..ac92c9e28613 100644 --- a/docs/pages/x/api/charts/chart-container.json +++ b/docs/pages/x/api/charts/chart-container.json @@ -22,13 +22,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/default-charts-item-tooltip-content.json b/docs/pages/x/api/charts/default-charts-item-tooltip-content.json index b97bee2e777d..9f4c4bdaaa54 100644 --- a/docs/pages/x/api/charts/default-charts-item-tooltip-content.json +++ b/docs/pages/x/api/charts/default-charts-item-tooltip-content.json @@ -5,6 +5,15 @@ "required": true, "additionalInfo": { "cssApi": true } }, + "getColor": { + "type": { "name": "func" }, + "required": true, + "signature": { + "type": "function(dataIndex: number) => string", + "describedArgs": ["dataIndex"], + "returned": "string" + } + }, "itemData": { "type": { "name": "shape", diff --git a/docs/pages/x/api/charts/line-chart.json b/docs/pages/x/api/charts/line-chart.json index dd15be4e5d23..700a593f0242 100644 --- a/docs/pages/x/api/charts/line-chart.json +++ b/docs/pages/x/api/charts/line-chart.json @@ -90,13 +90,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/pie-chart.json b/docs/pages/x/api/charts/pie-chart.json index 1e974abe72a0..3291f4fec6cb 100644 --- a/docs/pages/x/api/charts/pie-chart.json +++ b/docs/pages/x/api/charts/pie-chart.json @@ -86,13 +86,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/responsive-chart-container.json b/docs/pages/x/api/charts/responsive-chart-container.json index 216f02afe84b..a1b720b5030c 100644 --- a/docs/pages/x/api/charts/responsive-chart-container.json +++ b/docs/pages/x/api/charts/responsive-chart-container.json @@ -22,13 +22,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/scatter-chart.json b/docs/pages/x/api/charts/scatter-chart.json index 81ca7241fd46..b0314f723843 100644 --- a/docs/pages/x/api/charts/scatter-chart.json +++ b/docs/pages/x/api/charts/scatter-chart.json @@ -87,13 +87,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/spark-line-chart.json b/docs/pages/x/api/charts/spark-line-chart.json index 73fa87be1352..2ac3ba9a0e18 100644 --- a/docs/pages/x/api/charts/spark-line-chart.json +++ b/docs/pages/x/api/charts/spark-line-chart.json @@ -44,7 +44,7 @@ "xAxis": { "type": { "name": "shape", - "description": "{ axisId?: number
    | string, classes?: object, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }" + "description": "{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }" } } }, diff --git a/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json b/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json index a1b46326cba0..36fe7b5f92e5 100644 --- a/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json +++ b/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json @@ -2,6 +2,13 @@ "componentDescription": "", "propDescriptions": { "classes": { "description": "Override or extend the styles applied to the component." }, + "getColor": { + "description": "Get the color of the item with index dataIndex.", + "typeDescriptions": { + "dataIndex": "The data index of the item.", + "string": "The color to display." + } + }, "itemData": { "description": "The data used to identify the triggered item." }, "series": { "description": "The series linked to the triggered axis." } }, diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 4ffa35775888..8dc68161a1b0 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -491,6 +491,33 @@ BarChart.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, @@ -534,6 +561,33 @@ BarChart.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, diff --git a/packages/x-charts/src/BarChart/BarPlot.tsx b/packages/x-charts/src/BarChart/BarPlot.tsx index ed56665c69ad..627993b0931f 100644 --- a/packages/x-charts/src/BarChart/BarPlot.tsx +++ b/packages/x-charts/src/BarChart/BarPlot.tsx @@ -4,12 +4,13 @@ import { useTransition } from '@react-spring/web'; import { SeriesContext } from '../context/SeriesContextProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; import { BarElement, BarElementProps, BarElementSlotProps, BarElementSlots } from './BarElement'; -import { isBandScaleConfig } from '../models/axis'; +import { AxisDefaultized, isBandScaleConfig, isPointScaleConfig } from '../models/axis'; import { FormatterResult } from '../models/seriesType/config'; import { HighlightScope } from '../context/HighlightProvider'; import { BarItemIdentifier, BarSeriesType } from '../models'; import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants'; import { SeriesId } from '../models/seriesType/common'; +import getColor from './getColor'; /** * Solution of the equations @@ -98,7 +99,8 @@ const useAggregatedData = (): CompletedBarData[] => { const yAxisConfig = yAxis[yAxisKey]; const verticalLayout = series[seriesId].layout === 'vertical'; - let baseScaleConfig; + let baseScaleConfig: AxisDefaultized<'band'>; + if (verticalLayout) { if (!isBandScaleConfig(xAxisConfig)) { throw new Error( @@ -118,7 +120,16 @@ const useAggregatedData = (): CompletedBarData[] => { } shoud have data property.`, ); } - baseScaleConfig = xAxisConfig; + baseScaleConfig = xAxisConfig as AxisDefaultized<'band'>; + if (isBandScaleConfig(yAxisConfig) || isPointScaleConfig(yAxisConfig)) { + throw new Error( + `MUI X Charts: ${ + yAxisKey === DEFAULT_Y_AXIS_KEY + ? 'The first `yAxis`' + : `The y-axis with id "${yAxisKey}"` + } shoud be a continuous type to display the bar series of id "${seriesId}".`, + ); + } } else { if (!isBandScaleConfig(yAxisConfig)) { throw new Error( @@ -139,12 +150,22 @@ const useAggregatedData = (): CompletedBarData[] => { } shoud have data property.`, ); } - baseScaleConfig = yAxisConfig; + baseScaleConfig = yAxisConfig as AxisDefaultized<'band'>; + if (isBandScaleConfig(xAxisConfig) || isPointScaleConfig(xAxisConfig)) { + throw new Error( + `MUI X Charts: ${ + xAxisKey === DEFAULT_X_AXIS_KEY + ? 'The first `xAxis`' + : `The x-axis with id "${xAxisKey}"` + } shoud be a continuous type to display the bar series of id "${seriesId}".`, + ); + } } const xScale = xAxisConfig.scale; const yScale = yAxisConfig.scale; + const colorGetter = getColor(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]); const bandWidth = baseScaleConfig.scale.bandwidth(); const { barWidth, offset } = getBandSize({ @@ -154,7 +175,7 @@ const useAggregatedData = (): CompletedBarData[] => { }); const barOffset = groupIndex * (barWidth + offset); - const { stackedData, color } = series[seriesId]; + const { stackedData } = series[seriesId]; return stackedData.map((values, dataIndex: number) => { const valueCoordinates = values.map((v) => (verticalLayout ? yScale(v)! : xScale(v)!)); @@ -176,7 +197,7 @@ const useAggregatedData = (): CompletedBarData[] => { yOrigin: yScale(0)!, height: verticalLayout ? maxValueCoord - minValueCoord : barWidth, width: verticalLayout ? barWidth : maxValueCoord - minValueCoord, - color, + color: colorGetter(dataIndex), highlightScope: series[seriesId].highlightScope, }; }); diff --git a/packages/x-charts/src/BarChart/getColor.ts b/packages/x-charts/src/BarChart/getColor.ts new file mode 100644 index 000000000000..31a06feac93b --- /dev/null +++ b/packages/x-charts/src/BarChart/getColor.ts @@ -0,0 +1,36 @@ +import { AxisDefaultized } from '../models/axis'; +import { DefaultizedBarSeriesType } from '../models/seriesType/bar'; + +export default function getColor( + series: DefaultizedBarSeriesType, + xAxis: AxisDefaultized, + yAxis: AxisDefaultized, +) { + const verticalLayout = series.layout === 'vertical'; + + const bandColorScale = verticalLayout ? xAxis.colorScale : yAxis.colorScale; + const valueColorScale = verticalLayout ? yAxis.colorScale : xAxis.colorScale; + const bandValues = verticalLayout ? xAxis.data! : yAxis.data!; + + if (valueColorScale) { + return (dataIndex: number) => { + const value = series.data[dataIndex]; + const color = value === null ? series.color : valueColorScale(value); + if (color === null) { + return series.color; + } + return color; + }; + } + if (bandColorScale) { + return (dataIndex: number) => { + const value = bandValues[dataIndex]; + const color = value === null ? series.color : bandColorScale(value); + if (color === null) { + return series.color; + } + return color; + }; + } + return () => series.color; +} diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index 8a129a397954..cd499d714ebe 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -14,6 +14,7 @@ import { CartesianContextProviderProps, } from '../context/CartesianContextProvider'; import { HighlightProvider } from '../context/HighlightProvider'; +import { ChartsAxesGradients } from '../internals/components/ChartsAxesGradients'; export type ChartContainerProps = Omit< ChartsSurfaceProps & @@ -61,6 +62,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont desc={desc} disableAxisListener={disableAxisListener} > + {children} @@ -140,6 +142,33 @@ ChartContainer.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, @@ -183,6 +212,33 @@ ChartContainer.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 1ea632481856..3ec415c3409d 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -10,6 +10,11 @@ import { AxisDefaultized } from '../models/axis'; import { ChartsTooltipClasses } from './chartsTooltipClasses'; import { DefaultChartsAxisTooltipContent } from './DefaultChartsAxisTooltipContent'; import { isCartesianSeriesType } from './utils'; +import colorGetter from '../internals/colorGetter'; + +type ChartSeriesDefaultizedWithColorGetter = ChartSeriesDefaultized & { + getColor: (dataIndex: number) => string; +}; export type ChartsAxisContentProps = { /** @@ -19,7 +24,7 @@ export type ChartsAxisContentProps = { /** * The series linked to the triggered axis. */ - series: ChartSeriesDefaultized[]; + series: ChartSeriesDefaultizedWithColorGetter[]; /** * The properties of the triggered axis. */ @@ -67,12 +72,19 @@ function ChartsAxisTooltipContent(props: { const item = series[seriesType]!.series[seriesId]; const axisKey = isXaxis ? item.xAxisKey : item.yAxisKey; if (axisKey === undefined || axisKey === USED_AXIS_ID) { - rep.push(series[seriesType]!.series[seriesId]); + const seriesToAdd = series[seriesType]!.series[seriesId]; + + const color = colorGetter( + seriesToAdd, + xAxis[seriesToAdd.xAxisKey ?? xAxisIds[0]], + yAxis[seriesToAdd.yAxisKey ?? yAxisIds[0]], + ); + rep.push({ ...seriesToAdd, getColor: color }); } }); }); return rep; - }, [USED_AXIS_ID, isXaxis, series]); + }, [USED_AXIS_ID, isXaxis, series, xAxis, xAxisIds, yAxis, yAxisIds]); const relevantAxis = React.useMemo(() => { return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID]; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx index aa01fc563374..cdf2ff3a0105 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx @@ -7,6 +7,8 @@ import { SeriesContext } from '../context/SeriesContextProvider'; import { ChartSeriesDefaultized, ChartSeriesType } from '../models/seriesType/config'; import { ChartsTooltipClasses } from './chartsTooltipClasses'; import { DefaultChartsItemTooltipContent } from './DefaultChartsItemTooltipContent'; +import { CartesianContext } from '../context/CartesianContextProvider'; +import colorGetter from '../internals/colorGetter'; export type ChartsItemContentProps = { /** @@ -21,6 +23,12 @@ export type ChartsItemContentProps * Override or extend the styles applied to the component. */ classes: ChartsTooltipClasses; + /** + * Get the color of the item with index `dataIndex`. + * @param {number} dataIndex The data index of the item. + * @returns {string} The color to display. + */ + getColor: (dataIndex: number) => string; sx?: SxProps; }; @@ -37,6 +45,21 @@ function ChartsItemTooltipContent(props: { itemData.seriesId ] as ChartSeriesDefaultized; + const axisData = React.useContext(CartesianContext); + + const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; + const defaultXAxisId = xAxisIds[0]; + const defaultYAxisId = yAxisIds[0]; + + const getColor = + series.type === 'pie' + ? colorGetter(series) + : colorGetter( + series, + xAxis[series.xAxisKey ?? defaultXAxisId], + yAxis[series.yAxisKey ?? defaultYAxisId], + ); + const Content = content ?? DefaultChartsItemTooltipContent; const chartTooltipContentProps = useSlotProps({ elementType: Content, @@ -46,6 +69,7 @@ function ChartsItemTooltipContent(props: { series, sx, classes, + getColor, }, ownerState: {}, }); @@ -61,6 +85,7 @@ ChartsItemTooltipContent.propTypes = { content: PropTypes.elementType, contentProps: PropTypes.shape({ classes: PropTypes.object, + getColor: PropTypes.func, itemData: PropTypes.shape({ dataIndex: PropTypes.number, seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx index 856a45da8138..6625792e4aee 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx @@ -38,32 +38,34 @@ function DefaultChartsAxisTooltipContent(props: ChartsAxisContentProps) { )} - {series.filter(isCartesianSeries).map(({ color, id, label, valueFormatter, data }) => { - // @ts-ignore - const formattedValue = valueFormatter(data[dataIndex] ?? null); - if (formattedValue == null) { - return null; - } - return ( - - - - + {series + .filter(isCartesianSeries) + .map(({ color, id, label, valueFormatter, data, getColor }) => { + // @ts-ignore + const formattedValue = valueFormatter(data[dataIndex] ?? null); + if (formattedValue == null) { + return null; + } + return ( + + + + - - {label ? {label} : null} - + + {label ? {label} : null} + - - {formattedValue} - - - ); - })} + + {formattedValue} + + + ); + })} diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx index 4cb6774720c1..eb269cb9fe1a 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx @@ -15,7 +15,7 @@ import { CommonSeriesType } from '../models/seriesType/common'; function DefaultChartsItemTooltipContent( props: ChartsItemContentProps, ) { - const { series, itemData, sx, classes } = props; + const { series, itemData, sx, classes, getColor } = props; if (itemData.dataIndex === undefined || !series.data[itemData.dataIndex]) { return null; @@ -23,11 +23,11 @@ function DefaultChartsItemTooltipContent & { getColor: (dataIndex: number) => string }, +): series is ChartSeriesDefaultized & { + getColor: (dataIndex: number) => string; +}; export function isCartesianSeries( series: ChartSeriesDefaultized, ): series is ChartSeriesDefaultized { diff --git a/packages/x-charts/src/LineChart/AnimatedArea.tsx b/packages/x-charts/src/LineChart/AnimatedArea.tsx index a8ef129952df..b46bb933a5ba 100644 --- a/packages/x-charts/src/LineChart/AnimatedArea.tsx +++ b/packages/x-charts/src/LineChart/AnimatedArea.tsx @@ -14,9 +14,10 @@ export const AreaElementPath = styled(animated.path, { overridesResolver: (_, styles) => styles.root, })<{ ownerState: AreaElementOwnerState }>(({ ownerState }) => ({ stroke: 'none', - fill: ownerState.isHighlighted - ? d3Color(ownerState.color)!.brighter(1).formatHex() - : d3Color(ownerState.color)!.brighter(0.5).formatHex(), + fill: + (ownerState.gradientId && `url(#${ownerState.gradientId})`) || + (ownerState.isHighlighted && d3Color(ownerState.color)!.brighter(1).formatHex()) || + d3Color(ownerState.color)!.brighter(0.5).formatHex(), transition: 'opacity 0.2s ease-in, fill 0.2s ease-in', opacity: ownerState.isFaded ? 0.3 : 1, })); @@ -77,6 +78,7 @@ AnimatedArea.propTypes = { ownerState: PropTypes.shape({ classes: PropTypes.object, color: PropTypes.string.isRequired, + gradientId: PropTypes.string, id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, isFaded: PropTypes.bool.isRequired, isHighlighted: PropTypes.bool.isRequired, diff --git a/packages/x-charts/src/LineChart/AnimatedLine.tsx b/packages/x-charts/src/LineChart/AnimatedLine.tsx index ab0817fce3ea..ceb5fc9456c3 100644 --- a/packages/x-charts/src/LineChart/AnimatedLine.tsx +++ b/packages/x-charts/src/LineChart/AnimatedLine.tsx @@ -17,9 +17,10 @@ export const LineElementPath = styled(animated.path, { strokeWidth: 2, strokeLinejoin: 'round', fill: 'none', - stroke: ownerState.isHighlighted - ? d3Color(ownerState.color)!.brighter(0.5).formatHex() - : ownerState.color, + stroke: + (ownerState.gradientId && `url(#${ownerState.gradientId})`) || + (ownerState.isHighlighted && d3Color(ownerState.color)!.brighter(0.5).formatHex()) || + ownerState.color, transition: 'opacity 0.2s ease-in, stroke 0.2s ease-in', opacity: ownerState.isFaded ? 0.3 : 1, })); @@ -80,6 +81,7 @@ AnimatedLine.propTypes = { ownerState: PropTypes.shape({ classes: PropTypes.object, color: PropTypes.string.isRequired, + gradientId: PropTypes.string, id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, isFaded: PropTypes.bool.isRequired, isHighlighted: PropTypes.bool.isRequired, diff --git a/packages/x-charts/src/LineChart/AreaElement.tsx b/packages/x-charts/src/LineChart/AreaElement.tsx index 8536941dd886..bd62f4ab8b28 100644 --- a/packages/x-charts/src/LineChart/AreaElement.tsx +++ b/packages/x-charts/src/LineChart/AreaElement.tsx @@ -28,6 +28,7 @@ export type AreaElementClassKey = keyof AreaElementClasses; export interface AreaElementOwnerState { id: SeriesId; color: string; + gradientId?: string; isFaded: boolean; isHighlighted: boolean; classes?: Partial; @@ -97,6 +98,7 @@ function AreaElement(props: AreaElementProps) { id, classes: innerClasses, color, + gradientId, highlightScope, slots, slotProps, @@ -116,6 +118,7 @@ function AreaElement(props: AreaElementProps) { id, classes: innerClasses, color, + gradientId, isFaded, isHighlighted, }; @@ -146,6 +149,7 @@ AreaElement.propTypes = { classes: PropTypes.object, color: PropTypes.string.isRequired, d: PropTypes.string.isRequired, + gradientId: PropTypes.string, highlightScope: PropTypes.shape({ faded: PropTypes.oneOf(['global', 'none', 'series']), highlighted: PropTypes.oneOf(['item', 'none', 'series']), diff --git a/packages/x-charts/src/LineChart/AreaPlot.tsx b/packages/x-charts/src/LineChart/AreaPlot.tsx index f441e340e118..d704a0dd33ce 100644 --- a/packages/x-charts/src/LineChart/AreaPlot.tsx +++ b/packages/x-charts/src/LineChart/AreaPlot.tsx @@ -13,6 +13,7 @@ import { getValueToPositionMapper } from '../hooks/useScale'; import getCurveFactory from '../internals/getCurve'; import { DEFAULT_X_AXIS_KEY } from '../constants'; import { LineItemIdentifier } from '../models/seriesType/line'; +import { useChartGradient } from '../internals/components/ChartsAxesGradients'; export interface AreaPlotSlots extends AreaElementSlots {} @@ -59,6 +60,11 @@ const useAggregatedData = () => { const yScale = yAxis[yAxisKey].scale; const xData = xAxis[xAxisKey].data; + const gradientUsed: [string, 'x' | 'y'] | undefined = + (yAxis[yAxisKey].colorScale && [yAxisKey, 'y']) || + (xAxis[xAxisKey].colorScale && [xAxisKey, 'x']) || + undefined; + if (process.env.NODE_ENV !== 'production') { if (xData === undefined) { throw new Error( @@ -92,6 +98,7 @@ const useAggregatedData = () => { const d = areaPath.curve(curve)(d3Data) || ''; return { ...series[seriesId], + gradientUsed, d, seriesId, }; @@ -113,6 +120,7 @@ const useAggregatedData = () => { function AreaPlot(props: AreaPlotProps) { const { slots, slotProps, onItemClick, skipAnimation, ...other } = props; + const getGradientId = useChartGradient(); const completedData = useAggregatedData(); return ( @@ -120,13 +128,14 @@ function AreaPlot(props: AreaPlotProps) { {completedData .reverse() .map( - ({ d, seriesId, color, highlightScope, area }) => + ({ d, seriesId, color, highlightScope, area, gradientUsed }) => !!area && ( ; @@ -97,6 +98,7 @@ function LineElement(props: LineElementProps) { id, classes: innerClasses, color, + gradientId, highlightScope, slots, slotProps, @@ -115,6 +117,7 @@ function LineElement(props: LineElementProps) { id, classes: innerClasses, color, + gradientId, isFaded, isHighlighted, }; @@ -145,6 +148,7 @@ LineElement.propTypes = { classes: PropTypes.object, color: PropTypes.string.isRequired, d: PropTypes.string.isRequired, + gradientId: PropTypes.string, highlightScope: PropTypes.shape({ faded: PropTypes.oneOf(['global', 'none', 'series']), highlighted: PropTypes.oneOf(['item', 'none', 'series']), diff --git a/packages/x-charts/src/LineChart/LineHighlightPlot.tsx b/packages/x-charts/src/LineChart/LineHighlightPlot.tsx index 05fb06dca704..6dd72d93d680 100644 --- a/packages/x-charts/src/LineChart/LineHighlightPlot.tsx +++ b/packages/x-charts/src/LineChart/LineHighlightPlot.tsx @@ -6,6 +6,7 @@ import { LineHighlightElement, LineHighlightElementProps } from './LineHighlight import { getValueToPositionMapper } from '../hooks/useScale'; import { InteractionContext } from '../context/InteractionProvider'; import { DEFAULT_X_AXIS_KEY } from '../constants'; +import getColor from './getColor'; export interface LineHighlightPlotSlots { lineHighlight?: React.JSXElementConstructor; @@ -88,13 +89,16 @@ function LineHighlightPlot(props: LineHighlightPlotProps) { } should have data property to be able to display a line plot.`, ); } + const x = xScale(xData[highlightedIndex]); const y = yScale(stackedData[highlightedIndex][1])!; // This should not be undefined since y should not be a band scale + + const colorGetter = getColor(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]); return ( { const yScale = yAxis[yAxisKey].scale; const xData = xAxis[xAxisKey].data; + const gradientUsed: [string, 'x' | 'y'] | undefined = + (yAxis[yAxisKey].colorScale && [yAxisKey, 'y']) || + (xAxis[xAxisKey].colorScale && [xAxisKey, 'x']) || + undefined; + if (process.env.NODE_ENV !== 'production') { if (xData === undefined) { throw new Error( @@ -90,6 +96,7 @@ const useAggregatedData = () => { const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || ''; return { ...series[seriesId], + gradientUsed, d, seriesId, }; @@ -110,17 +117,18 @@ const useAggregatedData = () => { function LinePlot(props: LinePlotProps) { const { slots, slotProps, skipAnimation, onItemClick, ...other } = props; + const getGradientId = useChartGradient(); const completedData = useAggregatedData(); - return ( - {completedData.map(({ d, seriesId, color, highlightScope }) => { + {completedData.map(({ d, seriesId, color, highlightScope, gradientUsed }) => { return ( ; @@ -113,6 +114,8 @@ function MarkPlot(props: MarkPlotProps) { const clipId = cleanId(`${chartId}-${seriesId}-line-clip`); // We assume that if displaying line mark, the line will also be rendered + const colorGetter = getColor(series[seriesId], xAxis[xAxisKey], yAxis[yAxisKey]); + return ( {xData @@ -153,7 +156,7 @@ function MarkPlot(props: MarkPlotProps) { id={seriesId} dataIndex={index} shape="circle" - color={series[seriesId].color} + color={colorGetter(index)} x={x} y={y!} // Don't know why TS doesn't get from the filter that y can't be null highlightScope={series[seriesId].highlightScope} diff --git a/packages/x-charts/src/LineChart/getColor.ts b/packages/x-charts/src/LineChart/getColor.ts new file mode 100644 index 000000000000..af924c4fc574 --- /dev/null +++ b/packages/x-charts/src/LineChart/getColor.ts @@ -0,0 +1,34 @@ +import { AxisDefaultized } from '../models/axis'; +import { DefaultizedLineSeriesType } from '../models/seriesType/line'; + +export default function getColor( + series: DefaultizedLineSeriesType, + xAxis: AxisDefaultized, + yAxis: AxisDefaultized, +) { + const yColorScale = yAxis.colorScale; + const xColorScale = xAxis.colorScale; + + if (yColorScale) { + return (dataIndex: number) => { + const value = series.data[dataIndex]; + const color = value === null ? series.color : yColorScale(value); + if (color === null) { + return series.color; + } + return color; + }; + } + if (xColorScale) { + return (dataIndex: number) => { + const value = xAxis.data?.[dataIndex]; + const color = value === null ? series.color : xColorScale(value); + if (color === null) { + return series.color; + } + return color; + }; + } + + return () => series.color; +} diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 2100b6f194a9..49280eda5a3b 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -456,6 +456,33 @@ PieChart.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, @@ -499,6 +526,33 @@ PieChart.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, diff --git a/packages/x-charts/src/PieChart/getColor.ts b/packages/x-charts/src/PieChart/getColor.ts new file mode 100644 index 000000000000..937bd6d45407 --- /dev/null +++ b/packages/x-charts/src/PieChart/getColor.ts @@ -0,0 +1,7 @@ +import { DefaultizedPieSeriesType } from '../models/seriesType/pie'; + +export default function getColor(series: DefaultizedPieSeriesType) { + return (dataIndex: number) => { + return series.data[dataIndex].color; + }; +} diff --git a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx index 332bfbe77e1d..8ab25c02c01b 100644 --- a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx +++ b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx @@ -120,6 +120,33 @@ ResponsiveChartContainer.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, @@ -163,6 +190,33 @@ ResponsiveChartContainer.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, diff --git a/packages/x-charts/src/ScatterChart/Scatter.tsx b/packages/x-charts/src/ScatterChart/Scatter.tsx index a931e81c1406..e5884bccaf3e 100644 --- a/packages/x-charts/src/ScatterChart/Scatter.tsx +++ b/packages/x-charts/src/ScatterChart/Scatter.tsx @@ -21,6 +21,7 @@ export interface ScatterProps { yScale: D3Scale; markerSize: number; color: string; + colorGetter?: (dataIndex: number) => string; /** * Callback fired when clicking on a scatter item. * @param {MouseEvent} event Mouse event recorded on the `` element. @@ -43,7 +44,7 @@ export interface ScatterProps { * - [Scatter API](https://mui.com/x/api/charts/scatter/) */ function Scatter(props: ScatterProps) { - const { series, xScale, yScale, color, markerSize, onItemClick } = props; + const { series, xScale, yScale, color, colorGetter, markerSize, onItemClick } = props; const highlightScope: HighlightScope = React.useMemo( () => ({ highlighted: 'item', faded: 'global', ...series.highlightScope }), @@ -68,6 +69,7 @@ function Scatter(props: ScatterProps) { const temp: (ScatterValueType & { dataIndex: number; + color: string; isHighlighted: boolean; isFaded: boolean; interactionProps: ReturnType; @@ -93,12 +95,23 @@ function Scatter(props: ScatterProps) { interactionProps: getInteractionItemProps(pointCtx), id: scatterPoint.id, dataIndex: i, + color: colorGetter ? colorGetter(i) : color, }); } } return temp; - }, [xScale, yScale, series.data, series.id, item, highlightScope, getInteractionItemProps]); + }, [ + xScale, + yScale, + series.data, + series.id, + item, + highlightScope, + getInteractionItemProps, + color, + colorGetter, + ]); return ( @@ -109,7 +122,7 @@ function Scatter(props: ScatterProps) { cy={0} r={(dataPoint.isHighlighted ? 1.2 : 1) * markerSize} transform={`translate(${dataPoint.x}, ${dataPoint.y})`} - fill={color} + fill={dataPoint.color} opacity={(dataPoint.isFaded && 0.3) || 1} onClick={ onItemClick && @@ -134,6 +147,7 @@ Scatter.propTypes = { // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- color: PropTypes.string.isRequired, + colorGetter: PropTypes.func, markerSize: PropTypes.number.isRequired, /** * Callback fired when clicking on a scatter item. diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index 6ed8c16779db..843fc7dc9d2d 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -451,6 +451,33 @@ ScatterChart.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, @@ -494,6 +521,33 @@ ScatterChart.propTypes = { PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, diff --git a/packages/x-charts/src/ScatterChart/ScatterPlot.tsx b/packages/x-charts/src/ScatterChart/ScatterPlot.tsx index 4f8298474103..5c19c2cca9c6 100644 --- a/packages/x-charts/src/ScatterChart/ScatterPlot.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterPlot.tsx @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { Scatter, ScatterProps } from './Scatter'; import { SeriesContext } from '../context/SeriesContextProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; +import getColor from './getColor'; export interface ScatterPlotSlots { scatter?: React.JSXElementConstructor; @@ -55,6 +56,11 @@ function ScatterPlot(props: ScatterPlotProps) { {seriesOrder.map((seriesId) => { const { id, xAxisKey, yAxisKey, markerSize, color } = series[seriesId]; + const colorGetter = getColor( + series[seriesId], + xAxis[xAxisKey ?? defaultXAxisId], + yAxis[yAxisKey ?? defaultYAxisId], + ); const xScale = xAxis[xAxisKey ?? defaultXAxisId].scale; const yScale = yAxis[yAxisKey ?? defaultYAxisId].scale; return ( @@ -63,6 +69,7 @@ function ScatterPlot(props: ScatterPlotProps) { xScale={xScale} yScale={yScale} color={color} + colorGetter={colorGetter} markerSize={markerSize ?? 4} series={series[seriesId]} onItemClick={onItemClick} diff --git a/packages/x-charts/src/ScatterChart/getColor.ts b/packages/x-charts/src/ScatterChart/getColor.ts new file mode 100644 index 000000000000..38cb1dc07f41 --- /dev/null +++ b/packages/x-charts/src/ScatterChart/getColor.ts @@ -0,0 +1,34 @@ +import { AxisDefaultized } from '../models/axis'; +import { DefaultizedScatterSeriesType } from '../models/seriesType/scatter'; + +export default function getColor( + series: DefaultizedScatterSeriesType, + xAxis: AxisDefaultized, + yAxis: AxisDefaultized, +) { + const yColorScale = yAxis.colorScale; + const xColorScale = xAxis.colorScale; + + if (yColorScale) { + return (dataIndex: number) => { + const value = series.data[dataIndex]; + const color = value === null ? series.color : yColorScale(value.y); + if (color === null) { + return series.color; + } + return color; + }; + } + if (xColorScale) { + return (dataIndex: number) => { + const value = series.data[dataIndex]; + const color = value === null ? series.color : xColorScale(value.x); + if (color === null) { + return series.color; + } + return color; + }; + } + + return () => series.color; +} diff --git a/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx b/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx index d9c036d02185..977dc7510855 100644 --- a/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx +++ b/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx @@ -347,6 +347,31 @@ SparkLineChart.propTypes = { xAxis: PropTypes.shape({ axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]) + .isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), data: PropTypes.array, dataKey: PropTypes.string, disableLine: PropTypes.bool, diff --git a/packages/x-charts/src/context/CartesianContextProvider.tsx b/packages/x-charts/src/context/CartesianContextProvider.tsx index eea608751c35..f0498ec11b63 100644 --- a/packages/x-charts/src/context/CartesianContextProvider.tsx +++ b/packages/x-charts/src/context/CartesianContextProvider.tsx @@ -27,6 +27,7 @@ import { MakeOptional } from '../models/helpers'; import { getTickNumber } from '../hooks/useTicks'; import { useDrawingArea } from '../hooks/useDrawingArea'; import { SeriesId } from '../models/seriesType/common'; +import { getColorScale, getOrdinalColorScale } from '../internals/colorScale'; export type CartesianContextProviderProps = { /** @@ -206,6 +207,11 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { .paddingInner(categoryGapRatio) .paddingOuter(categoryGapRatio / 2), tickNumber: axis.data!.length, + colorScale: + axis.colorMap && + (axis.colorMap.type === 'ordinal' + ? getOrdinalColorScale({ values: axis.data, ...axis.colorMap }) + : getColorScale(axis.colorMap)), }; } if (isPointScaleConfig(axis)) { @@ -213,6 +219,11 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { ...axis, scale: scalePoint(axis.data!, range), tickNumber: axis.data!.length, + colorScale: + axis.colorMap && + (axis.colorMap.type === 'ordinal' + ? getOrdinalColorScale({ values: axis.data, ...axis.colorMap }) + : getColorScale(axis.colorMap)), }; } if (axis.scaleType === 'band' || axis.scaleType === 'point') { @@ -234,6 +245,7 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { scaleType, scale: niceScale.domain(domain), tickNumber, + colorScale: axis.colorMap && getColorScale(axis.colorMap), } as AxisDefaultized; }); @@ -262,6 +274,11 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { .paddingInner(categoryGapRatio) .paddingOuter(categoryGapRatio / 2), tickNumber: axis.data!.length, + colorScale: + axis.colorMap && + (axis.colorMap.type === 'ordinal' + ? getOrdinalColorScale({ values: axis.data, ...axis.colorMap }) + : getColorScale(axis.colorMap)), }; } if (isPointScaleConfig(axis)) { @@ -269,6 +286,11 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { ...axis, scale: scalePoint(axis.data!, [range[1], range[0]]), tickNumber: axis.data!.length, + colorScale: + axis.colorMap && + (axis.colorMap.type === 'ordinal' + ? getOrdinalColorScale({ values: axis.data, ...axis.colorMap }) + : getColorScale(axis.colorMap)), }; } if (axis.scaleType === 'band' || axis.scaleType === 'point') { @@ -290,6 +312,7 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { scaleType, scale: niceScale.domain(domain), tickNumber, + colorScale: axis.colorMap && getColorScale(axis.colorMap), } as AxisDefaultized; }); diff --git a/packages/x-charts/src/internals/colorGetter.ts b/packages/x-charts/src/internals/colorGetter.ts new file mode 100644 index 000000000000..27aa84b3c1a1 --- /dev/null +++ b/packages/x-charts/src/internals/colorGetter.ts @@ -0,0 +1,54 @@ +import getBarColor from '../BarChart/getColor'; +import getLineColor from '../LineChart/getColor'; +import getScatterColor from '../ScatterChart/getColor'; +import getPieColor from '../PieChart/getColor'; +import { + DefaultizedBarSeriesType, + DefaultizedLineSeriesType, + DefaultizedPieSeriesType, + DefaultizedScatterSeriesType, +} from '../models'; +import { AxisDefaultized } from '../models/axis'; + +function getColor(series: DefaultizedPieSeriesType): (dataIndex: number) => string; +function getColor( + series: + | DefaultizedBarSeriesType + | DefaultizedLineSeriesType + | DefaultizedScatterSeriesType + | DefaultizedPieSeriesType, + xAxis: AxisDefaultized, + yAxis: AxisDefaultized, +): (dataIndex: number) => string; +function getColor( + series: + | DefaultizedBarSeriesType + | DefaultizedLineSeriesType + | DefaultizedScatterSeriesType + | DefaultizedPieSeriesType, + xAxis?: AxisDefaultized, + yAxis?: AxisDefaultized, +): (dataIndex: number) => string { + if (xAxis !== undefined && yAxis !== undefined) { + if (series.type === 'bar') { + return getBarColor(series, xAxis, yAxis); + } + + if (series.type === 'line') { + return getLineColor(series, xAxis, yAxis); + } + + if (series.type === 'scatter') { + return getScatterColor(series, xAxis, yAxis); + } + } + if (series.type === 'pie') { + return getPieColor(series); + } + + throw Error( + `MUI X Charts: getColor called with unexpected arguments for series with id "${series.id}"`, + ); +} + +export default getColor; diff --git a/packages/x-charts/src/internals/colorScale.ts b/packages/x-charts/src/internals/colorScale.ts new file mode 100644 index 000000000000..a0c2807e9dfd --- /dev/null +++ b/packages/x-charts/src/internals/colorScale.ts @@ -0,0 +1,34 @@ +import { scaleOrdinal, scaleThreshold, scaleSequential, ScaleOrdinal } from 'd3-scale'; +import { + ContinuousColorConfig, + PiecewiseColorConfig, + OrdinalColorConfig, +} from '../models/colorMapping'; + +export function getSequentialColorScale( + config: ContinuousColorConfig | PiecewiseColorConfig, +) { + if (config.type === 'piecewise') { + return scaleThreshold(config.thresholds, config.colors); + } + + return scaleSequential([config.min ?? 0, config.max ?? 100], config.color); +} + +export function getOrdinalColorScale( + config: OrdinalColorConfig, +): ScaleOrdinal | ScaleOrdinal { + if (config.values) { + return scaleOrdinal(config.values, config.colors).unknown(config.unknownColor ?? null); + } + return scaleOrdinal( + config.colors.map((_, index) => index), + config.colors, + ).unknown(config.unknownColor ?? null); +} + +export function getColorScale( + config: ContinuousColorConfig | PiecewiseColorConfig | OrdinalColorConfig, +) { + return config.type === 'ordinal' ? getOrdinalColorScale(config) : getSequentialColorScale(config); +} diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx new file mode 100644 index 000000000000..ce79c1fb89b0 --- /dev/null +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx @@ -0,0 +1,96 @@ +import * as React from 'react'; +import { CartesianContext } from '../../../context/CartesianContextProvider'; +import { DrawingContext } from '../../../context/DrawingProvider'; +import { useDrawingArea } from '../../../hooks'; +import ChartsPiecewiseGradient from './ChartsPiecewiseGradient'; +import ChartsContinuousGradient from './ChartsContinuousGradient'; + +export function useChartGradient() { + const { chartId } = React.useContext(DrawingContext); + return React.useCallback( + (axisId: string, direction: 'x' | 'y') => `${chartId}-graient-${direction}-${axisId}`, + [chartId], + ); +} + +export function ChartsAxesGradients() { + const { top, height, bottom, left, width, right } = useDrawingArea(); + + const svgHeight = top + height + bottom; + const svgWidth = left + width + right; + const getGradientId = useChartGradient(); + const { xAxisIds, xAxis, yAxisIds, yAxis } = React.useContext(CartesianContext); + + return ( + + {yAxisIds + .filter((axisId) => yAxis[axisId].colorMap !== undefined) + .map((axisId) => { + const gradientId = getGradientId(axisId, 'y'); + const { colorMap, scale, colorScale, reverse } = yAxis[axisId]; + if (colorMap?.type === 'piecewise') { + return ( + + ); + } + if (colorMap?.type === 'continuous') { + return ( + + ); + } + return null; + })} + {xAxisIds + .filter((axisId) => xAxis[axisId].colorMap !== undefined) + .map((axisId) => { + const gradientId = getGradientId(axisId, 'x'); + const { colorMap, scale, reverse, colorScale } = xAxis[axisId]; + if (colorMap?.type === 'piecewise') { + return ( + + ); + } + if (colorMap?.type === 'continuous') { + return ( + + ); + } + return null; + })} + + ); +} diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx new file mode 100644 index 000000000000..55d7e9d45657 --- /dev/null +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx @@ -0,0 +1,65 @@ +import * as React from 'react'; +import { interpolateDate, interpolateNumber } from 'd3-interpolate'; +import { ContinuousColorConfig } from '../../../models/colorMapping'; + +const PX_PRECISION = 10; + +type ChartsContinuousGradientProps = { + isReveresed?: boolean; + gradientId: string; + size: number; + direction: 'x' | 'y'; + scale: (value: any) => number | undefined; + colorMap: ContinuousColorConfig; + colorScale: (value: any) => string | null; +}; + +export default function ChartsContinuousGradient(props: ChartsContinuousGradientProps) { + const { isReveresed, gradientId, size, direction, scale, colorScale, colorMap } = props; + + const extremValues = [colorMap.min ?? 0, colorMap.max ?? 100] as [number, number] | [Date, Date]; + const extremPositions = extremValues.map(scale).filter((p): p is number => p !== undefined); + + if (extremPositions.length !== 2) { + return null; + } + + const interpolator = + typeof extremValues[0] === 'number' + ? interpolateNumber(extremValues[0], extremValues[1]) + : interpolateDate(extremValues[0], extremValues[1] as Date); + const numberOfPoints = Math.round( + (Math.max(...extremPositions) - Math.min(...extremPositions)) / PX_PRECISION, + ); + + const keyPrefix = `${extremValues[0]}-${extremValues[1]}-`; + return ( + + {Array.from({ length: numberOfPoints + 1 }, (_, index) => { + const value = interpolator(index / numberOfPoints); + if (value === undefined) { + return null; + } + const x = scale(value); + if (x === undefined) { + return null; + } + const offset = isReveresed ? 1 - x / size : x / size; + const color = colorScale(value); + + if (color === null) { + return null; + } + return ; + })} + + ); +} diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx new file mode 100644 index 000000000000..d2c27c35dc5d --- /dev/null +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx @@ -0,0 +1,43 @@ +import * as React from 'react'; +import { PiecewiseColorConfig } from '../../../models/colorMapping'; + +type ChartsPiecewiseGradientProps = { + isReveresed?: boolean; + gradientId: string; + size: number; + direction: 'x' | 'y'; + scale: (value: any) => number | undefined; + colorMap: PiecewiseColorConfig; +}; + +export default function ChartsPiecewiseGradient(props: ChartsPiecewiseGradientProps) { + const { isReveresed, gradientId, size, direction, scale, colorMap } = props; + + return ( + + {colorMap.thresholds.map((threshold, index) => { + const x = scale(threshold); + + if (x === undefined) { + return null; + } + const offset = isReveresed ? 1 - x / size : x / size; + + return ( + + + + + ); + })} + + ); +} diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/index.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/index.tsx new file mode 100644 index 000000000000..4ba9bf5f96ca --- /dev/null +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/index.tsx @@ -0,0 +1 @@ +export * from './ChartsAxesGradients'; diff --git a/packages/x-charts/src/internals/getScale.ts b/packages/x-charts/src/internals/getScale.ts index 16f9073e0233..68ab1d5e4fbc 100644 --- a/packages/x-charts/src/internals/getScale.ts +++ b/packages/x-charts/src/internals/getScale.ts @@ -1,11 +1,11 @@ import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from 'd3-scale'; -import { ContinuouseScaleName, D3ContinuouseScale } from '../models/axis'; +import { ContinuousScaleName, D3ContinuousScale } from '../models/axis'; export function getScale( - scaleType: ContinuouseScaleName, + scaleType: ContinuousScaleName, domain: any[], range: any[], -): D3ContinuouseScale { +): D3ContinuousScale { switch (scaleType) { case 'log': return scaleLog(domain, range); diff --git a/packages/x-charts/src/models/axis.ts b/packages/x-charts/src/models/axis.ts index 060ff07b87f1..5ca24d025543 100644 --- a/packages/x-charts/src/models/axis.ts +++ b/packages/x-charts/src/models/axis.ts @@ -5,10 +5,14 @@ import type { ScaleTime, ScaleLinear, ScalePoint, + ScaleOrdinal, + ScaleSequential, + ScaleThreshold, } from 'd3-scale'; import { ChartsAxisClasses } from '../ChartsAxis/axisClasses'; import type { TickParams } from '../hooks/useTicks'; import { ChartsTextProps } from '../ChartsText'; +import { ContinuousColorConfig, OrdinalColorConfig, PiecewiseColorConfig } from './colorMapping'; export type AxisId = string | number; @@ -24,7 +28,7 @@ export type D3Scale< | ScaleTime | ScaleLinear; -export type D3ContinuouseScale = +export type D3ContinuousScale = | ScaleLogarithmic | ScalePower | ScaleTime @@ -153,7 +157,7 @@ export interface ChartsXAxisProps extends ChartsAxisProps { } export type ScaleName = 'linear' | 'band' | 'point' | 'log' | 'pow' | 'sqrt' | 'time' | 'utc'; -export type ContinuouseScaleName = 'linear' | 'log' | 'pow' | 'sqrt' | 'time' | 'utc'; +export type ContinuousScaleName = 'linear' | 'log' | 'pow' | 'sqrt' | 'time' | 'utc'; interface AxisScaleConfig { band: { @@ -171,37 +175,83 @@ interface AxisScaleConfig { * @default 0.1 */ barGapRatio: number; + colorMap?: OrdinalColorConfig | ContinuousColorConfig | PiecewiseColorConfig; } & Pick; point: { scaleType: 'point'; scale: ScalePoint; + colorMap?: OrdinalColorConfig | ContinuousColorConfig | PiecewiseColorConfig; }; log: { scaleType: 'log'; scale: ScaleLogarithmic; + colorMap?: ContinuousColorConfig | PiecewiseColorConfig; }; pow: { scaleType: 'pow'; scale: ScalePower; + colorMap?: ContinuousColorConfig | PiecewiseColorConfig; }; sqrt: { scaleType: 'sqrt'; scale: ScalePower; + colorMap?: ContinuousColorConfig | PiecewiseColorConfig; }; time: { scaleType: 'time'; scale: ScaleTime; + colorMap?: ContinuousColorConfig | PiecewiseColorConfig; }; utc: { scaleType: 'utc'; scale: ScaleTime; + colorMap?: ContinuousColorConfig | PiecewiseColorConfig; }; linear: { scaleType: 'linear'; scale: ScaleLinear; + colorMap?: ContinuousColorConfig | PiecewiseColorConfig; }; } +interface AxisScaleComputedConfig { + band: { + colorScale?: + | ScaleOrdinal + | ScaleOrdinal + | ScaleSequential + | ScaleThreshold; + }; + point: { + colorScale?: + | ScaleOrdinal + | ScaleOrdinal + | ScaleSequential + | ScaleThreshold; + }; + log: { + colorScale?: ScaleSequential | ScaleThreshold; + }; + pow: { + colorScale?: ScaleSequential | ScaleThreshold; + }; + sqrt: { + colorScale?: ScaleSequential | ScaleThreshold; + }; + time: { + colorScale?: + | ScaleSequential + | ScaleThreshold; + }; + utc: { + colorScale?: + | ScaleSequential + | ScaleThreshold; + }; + linear: { + colorScale?: ScaleSequential | ScaleThreshold; + }; +} export type AxisValueFormatterContext = { location: 'tick' | 'tooltip'; }; @@ -252,7 +302,8 @@ export type AxisDefaultized = Omit< AxisConfig, 'scaleType' > & - AxisScaleConfig[S] & { + AxisScaleConfig[S] & + AxisScaleComputedConfig[S] & { /** * An indication of the expected number of ticks. */ diff --git a/packages/x-charts/src/models/colorMapping.ts b/packages/x-charts/src/models/colorMapping.ts new file mode 100644 index 000000000000..045de15faa73 --- /dev/null +++ b/packages/x-charts/src/models/colorMapping.ts @@ -0,0 +1,47 @@ +export interface ContinuousColorConfig { + type: 'continuous'; + /** + * The minimal value of the color scale. + * @default 0 + */ + min?: Value; + /** + * The maximal value of the color scale. + * @default 100 + */ + max?: Value; + /** + * The colors to render. Can either be and array with the extrem colors, or an interpolation function. + */ + color: [string, string] | ((t: number) => string); +} + +export interface PiecewiseColorConfig { + type: 'piecewise'; + /** + * The thresholds where color should change from one category to another. + */ + thresholds: Value[]; + /** + * The colors used for each band defined by `thresholds`. + * Should contain N+1 colors with N the number of thresholds. + */ + colors: string[]; +} + +export interface OrdinalColorConfig { + type: 'ordinal'; + /** + * The value to map. + * If undefined, it will be integers from 0 to the number of colors. + */ + values?: Value[]; + /** + * The color palette. + */ + colors: string[]; + /** + * The color to use when an element is not part of the values. + */ + unknownColor?: string; +} diff --git a/packages/x-charts/src/models/index.ts b/packages/x-charts/src/models/index.ts index 9dd7d43710d0..abb5d36002f6 100644 --- a/packages/x-charts/src/models/index.ts +++ b/packages/x-charts/src/models/index.ts @@ -6,5 +6,5 @@ export type { ChartsYAxisProps, ChartsXAxisProps, ScaleName, - ContinuouseScaleName, + ContinuousScaleName, } from './axis'; diff --git a/packages/x-charts/src/models/seriesType/common.ts b/packages/x-charts/src/models/seriesType/common.ts index 97a51b204792..3ce9e1479e1e 100644 --- a/packages/x-charts/src/models/seriesType/common.ts +++ b/packages/x-charts/src/models/seriesType/common.ts @@ -11,7 +11,7 @@ export type CommonSeriesType = { * @param {TValue} value The series' value to render. * @returns {string} The string to dispaly. */ - valueFormatter?: (value: V) => string; + valueFormatter?: (value: Value) => string; highlightScope?: Partial; }; diff --git a/packages/x-charts/src/models/seriesType/index.ts b/packages/x-charts/src/models/seriesType/index.ts index fc960e50f729..c6c848eb9165 100644 --- a/packages/x-charts/src/models/seriesType/index.ts +++ b/packages/x-charts/src/models/seriesType/index.ts @@ -38,3 +38,13 @@ export type { DefaultizedCartesianSeriesType, StackableSeriesType, }; + +export function isDefaultizedBarSeries( + series: DefaultizedSeriesType, +): series is DefaultizedBarSeriesType { + return series.type === 'bar'; +} + +export function isBarSeries(series: AllSeriesType): series is BarSeriesType { + return series.type === 'bar'; +} diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index 357e3413a04d..a58bf1eee63c 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -107,7 +107,7 @@ { "name": "cheerfulFiestaPaletteDark", "kind": "Variable" }, { "name": "cheerfulFiestaPaletteLight", "kind": "Variable" }, { "name": "ComputedPieRadius", "kind": "Interface" }, - { "name": "ContinuouseScaleName", "kind": "TypeAlias" }, + { "name": "ContinuousScaleName", "kind": "TypeAlias" }, { "name": "CurveType", "kind": "TypeAlias" }, { "name": "DEFAULT_MARGINS", "kind": "Variable" }, { "name": "DEFAULT_X_AXIS_KEY", "kind": "Variable" }, @@ -156,6 +156,8 @@ { "name": "HighlightElementClassKey", "kind": "TypeAlias" }, { "name": "HighlightOptions", "kind": "TypeAlias" }, { "name": "HighlightScope", "kind": "TypeAlias" }, + { "name": "isBarSeries", "kind": "Function" }, + { "name": "isDefaultizedBarSeries", "kind": "Function" }, { "name": "LayoutConfig", "kind": "TypeAlias" }, { "name": "legendClasses", "kind": "Variable" }, { "name": "LegendRendererProps", "kind": "Interface" }, From 93e7245a7e2c9aebb9e564cd0acf6aee94bcc45d Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 15 Apr 2024 13:39:36 +0200 Subject: [PATCH 120/912] [charts] Do not document the usage of `DEFAULT_X_AXIS_KEY` and `DEFAULT_Y_AXIS_KEY` (#12780) --- docs/data/charts/axis/AxisCustomizationNoSnap.js | 2 -- docs/data/charts/axis/ModifyAxisPosition.js | 5 ++--- docs/data/charts/axis/ModifyAxisPosition.tsx | 5 ++--- docs/data/charts/axis/ModifyAxisPosition.tsx.preview | 4 ++-- docs/data/charts/axis/axis.md | 4 +++- docs/data/charts/styling/MarginNoSnap.js | 7 +++---- docs/translations/api-docs/charts/bar-chart/bar-chart.json | 4 ++-- .../api-docs/charts/chart-container/chart-container.json | 4 ++-- .../api-docs/charts/line-chart/line-chart.json | 4 ++-- docs/translations/api-docs/charts/pie-chart/pie-chart.json | 4 ++-- .../responsive-chart-container.json | 4 ++-- .../api-docs/charts/scatter-chart/scatter-chart.json | 4 ++-- packages/x-charts/src/BarChart/BarChart.tsx | 4 ++-- packages/x-charts/src/ChartContainer/ChartContainer.tsx | 4 ++-- packages/x-charts/src/ChartsAxis/ChartsAxis.tsx | 7 ++++--- packages/x-charts/src/LineChart/LineChart.tsx | 4 ++-- packages/x-charts/src/PieChart/PieChart.tsx | 4 ++-- .../ResponsiveChartContainer/ResponsiveChartContainer.tsx | 4 ++-- packages/x-charts/src/ScatterChart/ScatterChart.tsx | 4 ++-- packages/x-charts/src/context/CartesianContextProvider.tsx | 4 ++-- 20 files changed, 42 insertions(+), 44 deletions(-) diff --git a/docs/data/charts/axis/AxisCustomizationNoSnap.js b/docs/data/charts/axis/AxisCustomizationNoSnap.js index f33f0352d481..c5d485e2286f 100644 --- a/docs/data/charts/axis/AxisCustomizationNoSnap.js +++ b/docs/data/charts/axis/AxisCustomizationNoSnap.js @@ -1,7 +1,6 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import ChartsUsageDemo from 'docsx/src/modules/components/ChartsUsageDemo'; -import { DEFAULT_X_AXIS_KEY } from '@mui/x-charts/constants'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; import { Chance } from 'chance'; @@ -41,7 +40,6 @@ export default function AxisCustomizationNoSnap() { ]} leftAxis={null} bottomAxis={{ - axisId: DEFAULT_X_AXIS_KEY, ...defaultXAxis, ...props, }} diff --git a/docs/data/charts/axis/ModifyAxisPosition.js b/docs/data/charts/axis/ModifyAxisPosition.js index e1d52c3d5ac8..dcbd3e3db6cc 100644 --- a/docs/data/charts/axis/ModifyAxisPosition.js +++ b/docs/data/charts/axis/ModifyAxisPosition.js @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '@mui/x-charts/constants'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; import { Chance } from 'chance'; @@ -22,8 +21,8 @@ export default function ModifyAxisPosition() { {...params} leftAxis={null} bottomAxis={null} - topAxis={DEFAULT_X_AXIS_KEY} - rightAxis={DEFAULT_Y_AXIS_KEY} + topAxis={{}} + rightAxis={{}} margin={{ top: 30, bottom: 10 }} />
    diff --git a/docs/data/charts/axis/ModifyAxisPosition.tsx b/docs/data/charts/axis/ModifyAxisPosition.tsx index e1d52c3d5ac8..dcbd3e3db6cc 100644 --- a/docs/data/charts/axis/ModifyAxisPosition.tsx +++ b/docs/data/charts/axis/ModifyAxisPosition.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '@mui/x-charts/constants'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; import { Chance } from 'chance'; @@ -22,8 +21,8 @@ export default function ModifyAxisPosition() { {...params} leftAxis={null} bottomAxis={null} - topAxis={DEFAULT_X_AXIS_KEY} - rightAxis={DEFAULT_Y_AXIS_KEY} + topAxis={{}} + rightAxis={{}} margin={{ top: 30, bottom: 10 }} />
    diff --git a/docs/data/charts/axis/ModifyAxisPosition.tsx.preview b/docs/data/charts/axis/ModifyAxisPosition.tsx.preview index 3f5c3cd0a5fb..2c7210171b72 100644 --- a/docs/data/charts/axis/ModifyAxisPosition.tsx.preview +++ b/docs/data/charts/axis/ModifyAxisPosition.tsx.preview @@ -2,7 +2,7 @@ {...params} leftAxis={null} bottomAxis={null} - topAxis={DEFAULT_X_AXIS_KEY} - rightAxis={DEFAULT_Y_AXIS_KEY} + topAxis={{}} + rightAxis={{}} margin={{ top: 30, bottom: 10 }} /> \ No newline at end of file diff --git a/docs/data/charts/axis/axis.md b/docs/data/charts/axis/axis.md index c514ecf23580..10bb97df86c3 100644 --- a/docs/data/charts/axis/axis.md +++ b/docs/data/charts/axis/axis.md @@ -197,7 +197,9 @@ Those pros can accept three type of value: - `null` to not display the axis - `string` which should correspond to the id of a `xAxis` for top and bottom. Or to the id of a `yAxis` for left and right. -- `object` which will be passed as props to `` or ``. It allows to specify which axis should be represent, and to customize the design of the axis. +- `object` which will be passed as props to `` or ``. It allows to specify which axis should be represent with the `axisId` property, and to customize the design of the axis. + +The demo below uses `leftAxis={null}` to remove the left axis, and `rightAxis={{}}` to set a right axis without overriding the default y-axis configuration. {{"demo": "ModifyAxisPosition.js"}} diff --git a/docs/data/charts/styling/MarginNoSnap.js b/docs/data/charts/styling/MarginNoSnap.js index a3d650272b81..6e00cc274bf9 100644 --- a/docs/data/charts/styling/MarginNoSnap.js +++ b/docs/data/charts/styling/MarginNoSnap.js @@ -1,7 +1,6 @@ import * as React from 'react'; import ChartsUsageDemo from 'docsx/src/modules/components/ChartsUsageDemo'; import { BarChart } from '@mui/x-charts/BarChart'; -import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '@mui/x-charts/constants'; const data = ['left', 'right', 'top', 'bottom'].map((propName) => ({ propName, @@ -29,13 +28,13 @@ export default function MarginNoSnap() { }} xAxis={[ { - id: DEFAULT_X_AXIS_KEY, + id: 'x-axis', scaleType: 'band', data: ['Page 1', 'Page 2', 'Page 3'], }, ]} - topAxis={DEFAULT_X_AXIS_KEY} - rightAxis={DEFAULT_Y_AXIS_KEY} + topAxis="x-axis" + rightAxis={{}} />
    )} diff --git a/docs/translations/api-docs/charts/bar-chart/bar-chart.json b/docs/translations/api-docs/charts/bar-chart/bar-chart.json index 37cbf6fb2c98..3d356906dd2b 100644 --- a/docs/translations/api-docs/charts/bar-chart/bar-chart.json +++ b/docs/translations/api-docs/charts/bar-chart/bar-chart.json @@ -58,10 +58,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used with id set to DEFAULT_X_AXIS_KEY." + "description": "The configuration of the x-axes. If not provided, a default axis config is used." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used with id set to DEFAULT_Y_AXIS_KEY." + "description": "The configuration of the y-axes. If not provided, a default axis config is used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/charts/chart-container/chart-container.json b/docs/translations/api-docs/charts/chart-container/chart-container.json index 1f9d070e16d5..8080d75cf213 100644 --- a/docs/translations/api-docs/charts/chart-container/chart-container.json +++ b/docs/translations/api-docs/charts/chart-container/chart-container.json @@ -17,10 +17,10 @@ }, "width": { "description": "The width of the chart in px." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used with id set to DEFAULT_X_AXIS_KEY." + "description": "The configuration of the x-axes. If not provided, a default axis config is used." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used with id set to DEFAULT_Y_AXIS_KEY." + "description": "The configuration of the y-axes. If not provided, a default axis config is used." } }, "classDescriptions": {} diff --git a/docs/translations/api-docs/charts/line-chart/line-chart.json b/docs/translations/api-docs/charts/line-chart/line-chart.json index 8da425ba637d..1c0594fce5e7 100644 --- a/docs/translations/api-docs/charts/line-chart/line-chart.json +++ b/docs/translations/api-docs/charts/line-chart/line-chart.json @@ -56,10 +56,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used with id set to DEFAULT_X_AXIS_KEY." + "description": "The configuration of the x-axes. If not provided, a default axis config is used." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used with id set to DEFAULT_Y_AXIS_KEY." + "description": "The configuration of the y-axes. If not provided, a default axis config is used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/charts/pie-chart/pie-chart.json b/docs/translations/api-docs/charts/pie-chart/pie-chart.json index 8293d8d7baaa..a968d77da360 100644 --- a/docs/translations/api-docs/charts/pie-chart/pie-chart.json +++ b/docs/translations/api-docs/charts/pie-chart/pie-chart.json @@ -44,10 +44,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used with id set to DEFAULT_X_AXIS_KEY." + "description": "The configuration of the x-axes. If not provided, a default axis config is used." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used with id set to DEFAULT_Y_AXIS_KEY." + "description": "The configuration of the y-axes. If not provided, a default axis config is used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json b/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json index b27956f7f741..c2d27fe6a10a 100644 --- a/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json +++ b/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json @@ -21,10 +21,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used with id set to DEFAULT_X_AXIS_KEY." + "description": "The configuration of the x-axes. If not provided, a default axis config is used." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used with id set to DEFAULT_Y_AXIS_KEY." + "description": "The configuration of the y-axes. If not provided, a default axis config is used." } }, "classDescriptions": {} diff --git a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json index 4aa4a64d3ea6..ad851d29ce89 100644 --- a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json +++ b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json @@ -55,10 +55,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used with id set to DEFAULT_X_AXIS_KEY." + "description": "The configuration of the x-axes. If not provided, a default axis config is used." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used with id set to DEFAULT_Y_AXIS_KEY." + "description": "The configuration of the y-axes. If not provided, a default axis config is used." } }, "classDescriptions": {}, diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 8dc68161a1b0..066d34f3c752 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -485,7 +485,7 @@ BarChart.propTypes = { width: PropTypes.number, /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -555,7 +555,7 @@ BarChart.propTypes = { ), /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index cd499d714ebe..9eacd20c1684 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -136,7 +136,7 @@ ChartContainer.propTypes = { width: PropTypes.number.isRequired, /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -206,7 +206,7 @@ ChartContainer.propTypes = { ), /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx b/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx index 463256ba2939..8e1111814712 100644 --- a/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx +++ b/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx @@ -50,12 +50,13 @@ export interface ChartsAxisProps { const getAxisId = ( propsValue: undefined | null | string | ChartsXAxisProps | ChartsYAxisProps, + defaultAxisId?: string, ): AxisId | null => { if (propsValue == null) { return null; } if (typeof propsValue === 'object') { - return propsValue.axisId ?? null; + return propsValue.axisId ?? defaultAxisId ?? null; } return propsValue; }; @@ -92,8 +93,8 @@ function ChartsAxis(props: ChartsAxisProps) { const leftId = getAxisId(leftAxis === undefined ? yAxisIds[0] : leftAxis); const bottomId = getAxisId(bottomAxis === undefined ? xAxisIds[0] : bottomAxis); - const topId = getAxisId(topAxis); - const rightId = getAxisId(rightAxis); + const topId = getAxisId(topAxis, xAxisIds[0]); + const rightId = getAxisId(rightAxis, yAxisIds[0]); if (topId !== null && !xAxis[topId]) { throw Error( diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index 6a024b342c6a..2ae0942c1b95 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -519,7 +519,7 @@ LineChart.propTypes = { width: PropTypes.number, /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -589,7 +589,7 @@ LineChart.propTypes = { ), /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 49280eda5a3b..b582925577c4 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -450,7 +450,7 @@ PieChart.propTypes = { width: PropTypes.number, /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -520,7 +520,7 @@ PieChart.propTypes = { ), /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx index 8ab25c02c01b..4319acdb555a 100644 --- a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx +++ b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx @@ -114,7 +114,7 @@ ResponsiveChartContainer.propTypes = { width: PropTypes.number, /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -184,7 +184,7 @@ ResponsiveChartContainer.propTypes = { ), /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index 843fc7dc9d2d..9f14ccef431e 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -445,7 +445,7 @@ ScatterChart.propTypes = { width: PropTypes.number, /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -515,7 +515,7 @@ ScatterChart.propTypes = { ), /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/context/CartesianContextProvider.tsx b/packages/x-charts/src/context/CartesianContextProvider.tsx index f0498ec11b63..2cc81afd655f 100644 --- a/packages/x-charts/src/context/CartesianContextProvider.tsx +++ b/packages/x-charts/src/context/CartesianContextProvider.tsx @@ -32,12 +32,12 @@ import { getColorScale, getOrdinalColorScale } from '../internals/colorScale'; export type CartesianContextProviderProps = { /** * The configuration of the x-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`. + * If not provided, a default axis config is used. */ xAxis?: MakeOptional[]; /** * The configuration of the y-axes. - * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`. + * If not provided, a default axis config is used. */ yAxis?: MakeOptional[]; /** From b540a36ca104387c556ede7841dfd9fde1b8e722 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 15 Apr 2024 13:39:46 +0200 Subject: [PATCH 121/912] [docs] Use charts classes objects (#12781) --- docs/data/charts/areas-demo/AreaChartFillByValue.js | 6 +++--- docs/data/charts/areas-demo/AreaChartFillByValue.tsx | 6 +++--- docs/data/charts/areas-demo/SimpleAreaChart.js | 4 ++-- docs/data/charts/areas-demo/SimpleAreaChart.tsx | 4 ++-- .../charts/areas-demo/SimpleAreaChart.tsx.preview | 2 +- docs/data/charts/areas-demo/StackedAreaChart.js | 4 ++-- docs/data/charts/areas-demo/StackedAreaChart.tsx | 4 ++-- docs/data/charts/line-demo/DashedLineChart.js | 12 ++++++++---- docs/data/charts/line-demo/DashedLineChart.tsx | 12 ++++++++---- docs/data/charts/line-demo/TinyLineChart.js | 11 ++++++++--- docs/data/charts/line-demo/TinyLineChart.tsx | 11 ++++++++--- docs/data/charts/lines/CSSCustomization.js | 4 ++-- docs/data/charts/lines/CSSCustomization.tsx | 4 ++-- 13 files changed, 51 insertions(+), 33 deletions(-) diff --git a/docs/data/charts/areas-demo/AreaChartFillByValue.js b/docs/data/charts/areas-demo/AreaChartFillByValue.js index 8104aba8162c..7561daa0e7a6 100644 --- a/docs/data/charts/areas-demo/AreaChartFillByValue.js +++ b/docs/data/charts/areas-demo/AreaChartFillByValue.js @@ -3,7 +3,7 @@ import * as React from 'react'; import { green, red } from '@mui/material/colors'; import Stack from '@mui/material/Stack'; import { useYScale, useDrawingArea } from '@mui/x-charts/hooks'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, areaElementClasses } from '@mui/x-charts/LineChart'; const data = [4000, 3000, -1000, 500, -2100, -250, 3490]; const xData = ['Page A', 'Page B', 'Page C', 'Page D', 'Page E', 'Page F', 'Page G']; @@ -43,7 +43,7 @@ export default function AreaChartFillByValue() { height={200} margin={{ top: 20, bottom: 30, left: 75 }} sx={{ - '& .MuiAreaElement-root': { + [`& .${areaElementClasses.root}`]: { fill: 'url(#swich-color-id-1)', }, }} @@ -64,7 +64,7 @@ export default function AreaChartFillByValue() { height={200} margin={{ top: 20, bottom: 30, left: 75 }} sx={{ - '& .MuiAreaElement-root': { + [`& .${areaElementClasses.root}`]: { fill: 'url(#swich-color-id-2)', }, }} diff --git a/docs/data/charts/areas-demo/AreaChartFillByValue.tsx b/docs/data/charts/areas-demo/AreaChartFillByValue.tsx index bf4e7a9fc07a..97fc2f78ff59 100644 --- a/docs/data/charts/areas-demo/AreaChartFillByValue.tsx +++ b/docs/data/charts/areas-demo/AreaChartFillByValue.tsx @@ -3,7 +3,7 @@ import { ScaleLinear } from 'd3-scale'; import { green, red } from '@mui/material/colors'; import Stack from '@mui/material/Stack'; import { useYScale, useDrawingArea } from '@mui/x-charts/hooks'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, areaElementClasses } from '@mui/x-charts/LineChart'; const data = [4000, 3000, -1000, 500, -2100, -250, 3490]; const xData = ['Page A', 'Page B', 'Page C', 'Page D', 'Page E', 'Page F', 'Page G']; @@ -50,7 +50,7 @@ export default function AreaChartFillByValue() { height={200} margin={{ top: 20, bottom: 30, left: 75 }} sx={{ - '& .MuiAreaElement-root': { + [`& .${areaElementClasses.root}`]: { fill: 'url(#swich-color-id-1)', }, }} @@ -71,7 +71,7 @@ export default function AreaChartFillByValue() { height={200} margin={{ top: 20, bottom: 30, left: 75 }} sx={{ - '& .MuiAreaElement-root': { + [`& .${areaElementClasses.root}`]: { fill: 'url(#swich-color-id-2)', }, }} diff --git a/docs/data/charts/areas-demo/SimpleAreaChart.js b/docs/data/charts/areas-demo/SimpleAreaChart.js index f85ed043ba44..89cc76fb7cb8 100644 --- a/docs/data/charts/areas-demo/SimpleAreaChart.js +++ b/docs/data/charts/areas-demo/SimpleAreaChart.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; const uData = [4000, 3000, 2000, 2780, 1890, 2390, 3490]; const xLabels = [ @@ -20,7 +20,7 @@ export default function SimpleAreaChart() { series={[{ data: uData, label: 'uv', area: true, showMark: false }]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { display: 'none', }, }} diff --git a/docs/data/charts/areas-demo/SimpleAreaChart.tsx b/docs/data/charts/areas-demo/SimpleAreaChart.tsx index f85ed043ba44..89cc76fb7cb8 100644 --- a/docs/data/charts/areas-demo/SimpleAreaChart.tsx +++ b/docs/data/charts/areas-demo/SimpleAreaChart.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; const uData = [4000, 3000, 2000, 2780, 1890, 2390, 3490]; const xLabels = [ @@ -20,7 +20,7 @@ export default function SimpleAreaChart() { series={[{ data: uData, label: 'uv', area: true, showMark: false }]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { display: 'none', }, }} diff --git a/docs/data/charts/areas-demo/SimpleAreaChart.tsx.preview b/docs/data/charts/areas-demo/SimpleAreaChart.tsx.preview index ed7e1c1e212f..9cb309cab20e 100644 --- a/docs/data/charts/areas-demo/SimpleAreaChart.tsx.preview +++ b/docs/data/charts/areas-demo/SimpleAreaChart.tsx.preview @@ -4,7 +4,7 @@ series={[{ data: uData, label: 'uv', area: true, showMark: false }]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { display: 'none', }, }} diff --git a/docs/data/charts/areas-demo/StackedAreaChart.js b/docs/data/charts/areas-demo/StackedAreaChart.js index 799a62195199..11e420c3dc1a 100644 --- a/docs/data/charts/areas-demo/StackedAreaChart.js +++ b/docs/data/charts/areas-demo/StackedAreaChart.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; const uData = [4000, 3000, 2000, 2780, 1890, 2390, 3490]; const pData = [2400, 1398, 9800, 3908, 4800, 3800, 4300]; @@ -32,7 +32,7 @@ export default function StackedAreaChart() { ]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { display: 'none', }, }} diff --git a/docs/data/charts/areas-demo/StackedAreaChart.tsx b/docs/data/charts/areas-demo/StackedAreaChart.tsx index 799a62195199..11e420c3dc1a 100644 --- a/docs/data/charts/areas-demo/StackedAreaChart.tsx +++ b/docs/data/charts/areas-demo/StackedAreaChart.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; const uData = [4000, 3000, 2000, 2780, 1890, 2390, 3490]; const pData = [2400, 1398, 9800, 3908, 4800, 3800, 4300]; @@ -32,7 +32,7 @@ export default function StackedAreaChart() { ]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { display: 'none', }, }} diff --git a/docs/data/charts/line-demo/DashedLineChart.js b/docs/data/charts/line-demo/DashedLineChart.js index 52a2530897c0..9544f962c77f 100644 --- a/docs/data/charts/line-demo/DashedLineChart.js +++ b/docs/data/charts/line-demo/DashedLineChart.js @@ -1,5 +1,9 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { + LineChart, + lineElementClasses, + markElementClasses, +} from '@mui/x-charts/LineChart'; const uData = [4000, 3000, 2000, 2780, 1890, 2390, 3490]; const pData = [2400, 1398, 9800, 3908, 4800, 3800, 4300]; @@ -24,7 +28,7 @@ export default function DashedLineChart() { ]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root, .MuiMarkElement-root': { + [`.${lineElementClasses.root}, .${markElementClasses.root}`]: { strokeWidth: 1, }, '.MuiLineElement-series-pvId': { @@ -33,10 +37,10 @@ export default function DashedLineChart() { '.MuiLineElement-series-uvId': { strokeDasharray: '3 4 5 2', }, - '.MuiMarkElement-root:not(.MuiMarkElement-highlighted)': { + [`.${markElementClasses.root}:not(.${markElementClasses.highlighted})`]: { fill: '#fff', }, - '& .MuiMarkElement-highlighted': { + [`& .${markElementClasses.highlighted}`]: { stroke: 'none', }, }} diff --git a/docs/data/charts/line-demo/DashedLineChart.tsx b/docs/data/charts/line-demo/DashedLineChart.tsx index 52a2530897c0..9544f962c77f 100644 --- a/docs/data/charts/line-demo/DashedLineChart.tsx +++ b/docs/data/charts/line-demo/DashedLineChart.tsx @@ -1,5 +1,9 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { + LineChart, + lineElementClasses, + markElementClasses, +} from '@mui/x-charts/LineChart'; const uData = [4000, 3000, 2000, 2780, 1890, 2390, 3490]; const pData = [2400, 1398, 9800, 3908, 4800, 3800, 4300]; @@ -24,7 +28,7 @@ export default function DashedLineChart() { ]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root, .MuiMarkElement-root': { + [`.${lineElementClasses.root}, .${markElementClasses.root}`]: { strokeWidth: 1, }, '.MuiLineElement-series-pvId': { @@ -33,10 +37,10 @@ export default function DashedLineChart() { '.MuiLineElement-series-uvId': { strokeDasharray: '3 4 5 2', }, - '.MuiMarkElement-root:not(.MuiMarkElement-highlighted)': { + [`.${markElementClasses.root}:not(.${markElementClasses.highlighted})`]: { fill: '#fff', }, - '& .MuiMarkElement-highlighted': { + [`& .${markElementClasses.highlighted}`]: { stroke: 'none', }, }} diff --git a/docs/data/charts/line-demo/TinyLineChart.js b/docs/data/charts/line-demo/TinyLineChart.js index 3b33df37e940..0dee6bfee644 100644 --- a/docs/data/charts/line-demo/TinyLineChart.js +++ b/docs/data/charts/line-demo/TinyLineChart.js @@ -1,6 +1,11 @@ import * as React from 'react'; import { ChartContainer } from '@mui/x-charts'; -import { LinePlot, MarkPlot } from '@mui/x-charts/LineChart'; +import { + LinePlot, + MarkPlot, + lineElementClasses, + markElementClasses, +} from '@mui/x-charts/LineChart'; const pData = [2400, 1398, 9800, 3908, 4800, 3800, 4300]; const xLabels = [ @@ -21,11 +26,11 @@ export default function TinyLineChart() { series={[{ type: 'line', data: pData }]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { stroke: '#8884d8', strokeWidth: 2, }, - '.MuiMarkElement-root': { + [`& .${markElementClasses.root}`]: { stroke: '#8884d8', scale: '0.6', fill: '#fff', diff --git a/docs/data/charts/line-demo/TinyLineChart.tsx b/docs/data/charts/line-demo/TinyLineChart.tsx index 3b33df37e940..0dee6bfee644 100644 --- a/docs/data/charts/line-demo/TinyLineChart.tsx +++ b/docs/data/charts/line-demo/TinyLineChart.tsx @@ -1,6 +1,11 @@ import * as React from 'react'; import { ChartContainer } from '@mui/x-charts'; -import { LinePlot, MarkPlot } from '@mui/x-charts/LineChart'; +import { + LinePlot, + MarkPlot, + lineElementClasses, + markElementClasses, +} from '@mui/x-charts/LineChart'; const pData = [2400, 1398, 9800, 3908, 4800, 3800, 4300]; const xLabels = [ @@ -21,11 +26,11 @@ export default function TinyLineChart() { series={[{ type: 'line', data: pData }]} xAxis={[{ scaleType: 'point', data: xLabels }]} sx={{ - '.MuiLineElement-root': { + [`& .${lineElementClasses.root}`]: { stroke: '#8884d8', strokeWidth: 2, }, - '.MuiMarkElement-root': { + [`& .${markElementClasses.root}`]: { stroke: '#8884d8', scale: '0.6', fill: '#fff', diff --git a/docs/data/charts/lines/CSSCustomization.js b/docs/data/charts/lines/CSSCustomization.js index 480e020b8956..933eaa75f501 100644 --- a/docs/data/charts/lines/CSSCustomization.js +++ b/docs/data/charts/lines/CSSCustomization.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import { LineChart } from '@mui/x-charts/LineChart'; +import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; const years = [ new Date(1990, 0, 1), @@ -58,7 +58,7 @@ export default function CSSCustomization() { return ( Date: Mon, 15 Apr 2024 14:51:21 +0200 Subject: [PATCH 122/912] [charts] Add `dataIndex` to series `valueFormatter` (#12745) Signed-off-by: Jose C Quintas Jr Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/charts/tooltip/Formatting.js | 6 +-- docs/data/charts/tooltip/Formatting.tsx | 6 +-- .../charts/tooltip/Formatting.tsx.preview | 6 +-- docs/data/charts/tooltip/SeriesFormatter.js | 38 +++++++++++++++++++ docs/data/charts/tooltip/SeriesFormatter.tsx | 38 +++++++++++++++++++ .../tooltip/SeriesFormatter.tsx.preview | 12 ++++++ docs/data/charts/tooltip/tooltip.md | 8 ++++ .../DefaultChartsAxisTooltipContent.tsx | 2 +- .../DefaultChartsItemTooltipContent.tsx | 2 +- packages/x-charts/src/PieChart/formatter.ts | 6 ++- .../src/internals/defaultizeValueFormatter.ts | 15 +++++--- packages/x-charts/src/models/axis.ts | 5 +++ .../x-charts/src/models/seriesType/common.ts | 17 ++++++++- 13 files changed, 140 insertions(+), 21 deletions(-) create mode 100644 docs/data/charts/tooltip/SeriesFormatter.js create mode 100644 docs/data/charts/tooltip/SeriesFormatter.tsx create mode 100644 docs/data/charts/tooltip/SeriesFormatter.tsx.preview diff --git a/docs/data/charts/tooltip/Formatting.js b/docs/data/charts/tooltip/Formatting.js index e9ff77e25254..cc6d43e98ccd 100644 --- a/docs/data/charts/tooltip/Formatting.js +++ b/docs/data/charts/tooltip/Formatting.js @@ -87,9 +87,9 @@ export default function Formatting() { ({ - ...serie, - valueFormatter: currencyFormatter, + series={lineChartsParams.series.map((series) => ({ + ...series, + valueFormatter: (v) => (v === null ? '' : currencyFormatter(v)), }))} /> ); diff --git a/docs/data/charts/tooltip/Formatting.tsx b/docs/data/charts/tooltip/Formatting.tsx index 6384957f71a6..880f305e857b 100644 --- a/docs/data/charts/tooltip/Formatting.tsx +++ b/docs/data/charts/tooltip/Formatting.tsx @@ -87,9 +87,9 @@ export default function Formatting() { ({ - ...serie, - valueFormatter: currencyFormatter, + series={lineChartsParams.series.map((series) => ({ + ...series, + valueFormatter: (v) => (v === null ? '' : currencyFormatter(v)), }))} /> ); diff --git a/docs/data/charts/tooltip/Formatting.tsx.preview b/docs/data/charts/tooltip/Formatting.tsx.preview index 0c659b2551fb..934617577916 100644 --- a/docs/data/charts/tooltip/Formatting.tsx.preview +++ b/docs/data/charts/tooltip/Formatting.tsx.preview @@ -1,8 +1,8 @@ ({ - ...serie, - valueFormatter: currencyFormatter, + series={lineChartsParams.series.map((series) => ({ + ...series, + valueFormatter: (v) => (v === null ? '' : currencyFormatter(v)), }))} /> \ No newline at end of file diff --git a/docs/data/charts/tooltip/SeriesFormatter.js b/docs/data/charts/tooltip/SeriesFormatter.js new file mode 100644 index 000000000000..dbb58a71b719 --- /dev/null +++ b/docs/data/charts/tooltip/SeriesFormatter.js @@ -0,0 +1,38 @@ +import * as React from 'react'; +import { PieChart } from '@mui/x-charts/PieChart'; +import { legendClasses } from '@mui/x-charts'; + +const otherProps = { + width: 400, + height: 200, + sx: { + [`.${legendClasses.root}`]: { + transform: 'translate(20px, 0)', + }, + }, +}; + +const data = [ + { team: 'Amber Ants', rank: 3, points: 31 }, + { team: 'Eagle Warriors', rank: 1, points: 50 }, + { team: 'Elephant Trunk', rank: 4, points: 18 }, + { team: 'Jaguars', rank: 2, points: 37 }, + { team: 'Smooth Pandas', rank: 5, points: 6 }, +]; + +export default function SeriesFormatter() { + return ( + ({ label: d.team, id: d.team, value: d.points })), + valueFormatter: (v, { dataIndex }) => { + const { rank } = data[dataIndex]; + return `has ${v.value} points and is ranked ${rank}.`; + }, + }, + ]} + {...otherProps} + /> + ); +} diff --git a/docs/data/charts/tooltip/SeriesFormatter.tsx b/docs/data/charts/tooltip/SeriesFormatter.tsx new file mode 100644 index 000000000000..801c7add0551 --- /dev/null +++ b/docs/data/charts/tooltip/SeriesFormatter.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; +import { PieChart, PieChartProps } from '@mui/x-charts/PieChart'; +import { legendClasses } from '@mui/x-charts'; + +const otherProps: Partial = { + width: 400, + height: 200, + sx: { + [`.${legendClasses.root}`]: { + transform: 'translate(20px, 0)', + }, + }, +}; + +const data = [ + { team: 'Amber Ants', rank: 3, points: 31 }, + { team: 'Eagle Warriors', rank: 1, points: 50 }, + { team: 'Elephant Trunk', rank: 4, points: 18 }, + { team: 'Jaguars', rank: 2, points: 37 }, + { team: 'Smooth Pandas', rank: 5, points: 6 }, +]; + +export default function SeriesFormatter() { + return ( + ({ label: d.team, id: d.team, value: d.points })), + valueFormatter: (v, { dataIndex }) => { + const { rank } = data[dataIndex]; + return `has ${v.value} points and is ranked ${rank}.`; + }, + }, + ]} + {...otherProps} + /> + ); +} diff --git a/docs/data/charts/tooltip/SeriesFormatter.tsx.preview b/docs/data/charts/tooltip/SeriesFormatter.tsx.preview new file mode 100644 index 000000000000..e7784e08ebfe --- /dev/null +++ b/docs/data/charts/tooltip/SeriesFormatter.tsx.preview @@ -0,0 +1,12 @@ + ({ label: d.team, id: d.team, value: d.points })), + valueFormatter: (v, { dataIndex }) => { + const { rank } = data[dataIndex]; + return `has ${v.value} points and is ranked ${rank}.`; + }, + }, + ]} + {...otherProps} +/> \ No newline at end of file diff --git a/docs/data/charts/tooltip/tooltip.md b/docs/data/charts/tooltip/tooltip.md index a3c463c96dcf..b61cef8290f8 100644 --- a/docs/data/charts/tooltip/tooltip.md +++ b/docs/data/charts/tooltip/tooltip.md @@ -69,6 +69,14 @@ Here is a demo with: {{"demo": "Formatting.js"}} +### Advanced formatting + +The series `valueFormatter` provides a context as its second argument containing a `dataIndex` property which you can use to calculate other data-related values. + +In the demo below you can notice we use `dataIndex` to add each team's rank in the tooltip. + +{{"demo": "SeriesFormatter.js"}} + ### Axis formatter To modify how data is displayed in the axis use the `valueFormatter` property. diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx index 6625792e4aee..c59d6a0d5ac3 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx @@ -42,7 +42,7 @@ function DefaultChartsAxisTooltipContent(props: ChartsAxisContentProps) { .filter(isCartesianSeries) .map(({ color, id, label, valueFormatter, data, getColor }) => { // @ts-ignore - const formattedValue = valueFormatter(data[dataIndex] ?? null); + const formattedValue = valueFormatter(data[dataIndex] ?? null, { dataIndex }); if (formattedValue == null) { return null; } diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx index eb269cb9fe1a..50ae8cae130a 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx @@ -34,7 +34,7 @@ function DefaultChartsItemTooltipContent['valueFormatter'] - )?.(value); + )?.(value, { dataIndex: itemData.dataIndex }); return ( diff --git a/packages/x-charts/src/PieChart/formatter.ts b/packages/x-charts/src/PieChart/formatter.ts index 6df6aa01072b..0b4115b39aed 100644 --- a/packages/x-charts/src/PieChart/formatter.ts +++ b/packages/x-charts/src/PieChart/formatter.ts @@ -40,9 +40,11 @@ const formatter: Formatter<'pie'> = (params) => { id: item.id ?? `auto-generated-pie-id-${seriesId}-${index}`, ...arcs[index], })) - .map((item) => ({ + .map((item, index) => ({ ...item, - formattedValue: series[seriesId].valueFormatter?.(item) ?? item.value.toLocaleString(), + formattedValue: + series[seriesId].valueFormatter?.(item, { dataIndex: index }) ?? + item.value.toLocaleString(), })), }; }); diff --git a/packages/x-charts/src/internals/defaultizeValueFormatter.ts b/packages/x-charts/src/internals/defaultizeValueFormatter.ts index b3ce7c4e7196..b9fa91ba8810 100644 --- a/packages/x-charts/src/internals/defaultizeValueFormatter.ts +++ b/packages/x-charts/src/internals/defaultizeValueFormatter.ts @@ -1,13 +1,16 @@ -import { SeriesId } from '../models/seriesType/common'; +import { SeriesId, SeriesValueFormatter } from '../models/seriesType/common'; function defaultizeValueFormatter< - ISeries extends { valueFormatter?: IFormatter }, - IFormatter extends (v: any) => string, + TValue, + ISeries extends { valueFormatter?: SeriesValueFormatter }, >( series: Record, - defaultValueFormatter: IFormatter, -): Record { - const defaultizedSeries: Record = {}; + defaultValueFormatter: SeriesValueFormatter, +): Record }> { + const defaultizedSeries: Record< + SeriesId, + ISeries & { valueFormatter: SeriesValueFormatter } + > = {}; Object.keys(series).forEach((seriesId) => { defaultizedSeries[seriesId] = { ...series[seriesId], diff --git a/packages/x-charts/src/models/axis.ts b/packages/x-charts/src/models/axis.ts index 5ca24d025543..fe9bba7b5109 100644 --- a/packages/x-charts/src/models/axis.ts +++ b/packages/x-charts/src/models/axis.ts @@ -253,6 +253,11 @@ interface AxisScaleComputedConfig { }; } export type AxisValueFormatterContext = { + /** + * Location indicates where the value will be displayed. + * - `'tick'` The value is displayed on the axis ticks. + * - `'tooltip'` The value is displayed in the tooltip when hovering the chart. + */ location: 'tick' | 'tooltip'; }; diff --git a/packages/x-charts/src/models/seriesType/common.ts b/packages/x-charts/src/models/seriesType/common.ts index 3ce9e1479e1e..830d3e7add0c 100644 --- a/packages/x-charts/src/models/seriesType/common.ts +++ b/packages/x-charts/src/models/seriesType/common.ts @@ -3,15 +3,28 @@ import type { StackOffsetType, StackOrderType } from '../stacking'; export type SeriesId = number | string; +export type SeriesValueFormatterContext = { + /** + * The index of the value in the data array. + */ + dataIndex: number; +}; + +export type SeriesValueFormatter = ( + value: TValue, + context: SeriesValueFormatterContext, +) => string; + export type CommonSeriesType = { id?: SeriesId; color?: string; /** * Formatter used to render values in tooltip or other data display. * @param {TValue} value The series' value to render. - * @returns {string} The string to dispaly. + * @param {SeriesValueFormatterContext} context The rendering context of the value. + * @returns {string} The string to display. */ - valueFormatter?: (value: Value) => string; + valueFormatter?: SeriesValueFormatter; highlightScope?: Partial; }; From 559ae0984dfe3fe96c646a62fc48130349009349 Mon Sep 17 00:00:00 2001 From: sai chand <60743144+sai6855@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:03:12 +0530 Subject: [PATCH 123/912] [DataGrid] Fix calling onCellEditStop on error (#12747) Signed-off-by: Andrew Cherniavskii Co-authored-by: Andrew Cherniavskii --- .../tests/cellEditing.DataGridPro.test.tsx | 27 +++++++++++++++++++ .../features/editing/useGridCellEditing.ts | 17 +++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/packages/x-data-grid-pro/src/tests/cellEditing.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/cellEditing.DataGridPro.test.tsx index 6c5ccec2e339..0e495c379482 100644 --- a/packages/x-data-grid-pro/src/tests/cellEditing.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/cellEditing.DataGridPro.test.tsx @@ -190,6 +190,33 @@ describe(' - Cell editing', () => { }); }); + it('should not publish onCellEditStop if field has error', async () => { + columnProps.preProcessEditCellProps = spy(({ props }: GridPreProcessEditCellProps) => ({ + ...props, + error: true, + })); + + const handleEditCellStop = spy(); + + render(); + act(() => apiRef.current.startCellEditMode({ id: 0, field: 'currencyPair' })); + await act(() => + apiRef.current.setEditCellValue({ + id: 0, + field: 'currencyPair', + value: 'USD GBP', + }), + ); + const cell = getCell(0, 1); + cell.focus(); + + await act(() => { + fireEvent.keyDown(cell, { key: 'Enter' }); + }); + + expect(handleEditCellStop.callCount).to.equal(0); + }); + it('should pass to renderEditCell the props returned by preProcessEditCellProps', async () => { columnProps.preProcessEditCellProps = ({ props }: GridPreProcessEditCellProps) => ({ ...props, diff --git a/packages/x-data-grid/src/hooks/features/editing/useGridCellEditing.ts b/packages/x-data-grid/src/hooks/features/editing/useGridCellEditing.ts index d1f4f06b5da9..8220068b7d35 100644 --- a/packages/x-data-grid/src/hooks/features/editing/useGridCellEditing.ts +++ b/packages/x-data-grid/src/hooks/features/editing/useGridCellEditing.ts @@ -234,6 +234,21 @@ export const useGridCellEditing = ( [apiRef], ); + const runIfNoFieldErrors = + >>( + callback?: (...args: Args) => void, + ) => + async (...args: Args) => { + if (callback) { + const { id, field } = args[0]; + const editRowsState = apiRef.current.state.editRows; + const hasFieldErrors = editRowsState[id][field]?.error; + if (!hasFieldErrors) { + callback(...args); + } + } + }; + useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsCell(handleCellDoubleClick)); useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsCell(handleCellFocusOut)); useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsCell(handleCellKeyDown)); @@ -242,7 +257,7 @@ export const useGridCellEditing = ( useGridApiEventHandler(apiRef, 'cellEditStop', runIfEditModeIsCell(handleCellEditStop)); useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart); - useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop); + useGridApiOptionHandler(apiRef, 'cellEditStop', runIfNoFieldErrors(props.onCellEditStop)); const getCellMode = React.useCallback( (id, field) => { From 4d4ff0e4093b4475c5bc66bcd9795b325795c4ed Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Mon, 15 Apr 2024 18:07:31 +0200 Subject: [PATCH 124/912] [DataGrid] Remove unused file (#12765) --- .../detailPanel/useGridDetailPanelCache.ts | 79 ------------------- 1 file changed, 79 deletions(-) delete mode 100644 packages/x-data-grid-pro/src/hooks/features/detailPanel/useGridDetailPanelCache.ts diff --git a/packages/x-data-grid-pro/src/hooks/features/detailPanel/useGridDetailPanelCache.ts b/packages/x-data-grid-pro/src/hooks/features/detailPanel/useGridDetailPanelCache.ts deleted file mode 100644 index e628d22aa460..000000000000 --- a/packages/x-data-grid-pro/src/hooks/features/detailPanel/useGridDetailPanelCache.ts +++ /dev/null @@ -1,79 +0,0 @@ -import * as React from 'react'; -import { useGridApiEventHandler, gridDataRowIdsSelector, GridRowId } from '@mui/x-data-grid'; -import { GridApiPro } from '../../../models/gridApiPro'; -import { DataGridProProcessedProps } from '../../../models/dataGridProProps'; -import { GridDetailPanelState } from './gridDetailPanelInterface'; - -function cacheContentAndHeight( - apiRef: React.MutableRefObject, - getDetailPanelContent: DataGridProProcessedProps['getDetailPanelContent'], - getDetailPanelHeight: DataGridProProcessedProps['getDetailPanelHeight'], - previousHeightCache: GridDetailPanelState['heightCache'], -) { - if (typeof getDetailPanelContent !== 'function') { - return {}; - } - - // TODO change to lazy approach using a Proxy - // only call getDetailPanelContent when asked for an id - const rowIds = gridDataRowIdsSelector(apiRef); - const contentCache = rowIds.reduce>>( - (acc, id) => { - const params = apiRef.current.getRowParams(id); - acc[id] = getDetailPanelContent(params); - return acc; - }, - {}, - ); - - const heightCache = rowIds.reduce((acc, id) => { - if (contentCache[id] == null) { - return acc; - } - const params = apiRef.current.getRowParams(id); - const height = getDetailPanelHeight(params); - const autoHeight = height === 'auto'; - acc[id] = { autoHeight, height: !autoHeight ? height : previousHeightCache[id]?.height }; - return acc; - }, {}); - - return { contentCache, heightCache }; -} - -export const useGridDetailPanelCache = ( - apiRef: React.MutableRefObject, - props: Pick, -) => { - const updateCaches = React.useCallback(() => { - apiRef.current.setState((state) => { - return { - ...state, - detailPanel: { - ...state.detailPanel, - ...cacheContentAndHeight( - apiRef, - props.getDetailPanelContent, - props.getDetailPanelHeight, - state.detailPanel.heightCache, - ), - }, - }; - }); - apiRef.current.forceUpdate(); - }, [apiRef, props.getDetailPanelContent, props.getDetailPanelHeight]); - - useGridApiEventHandler(apiRef, 'sortedRowsSet', updateCaches); - - const isFirstRender = React.useRef(true); - if (isFirstRender.current) { - isFirstRender.current = false; - updateCaches(); - } - - React.useEffect(() => { - if (isFirstRender.current) { - return; - } - updateCaches(); - }, [updateCaches]); -}; From 38917d9f8a7101cb2380a3b6165a2096387af04e Mon Sep 17 00:00:00 2001 From: Emil Bahnsen <103197299+EmilBahnsen@users.noreply.github.com> Date: Mon, 15 Apr 2024 20:19:42 +0200 Subject: [PATCH 125/912] [l10n] Improve Danish (da-DK) locale (#12784) Signed-off-by: Emil Bahnsen <103197299+EmilBahnsen@users.noreply.github.com> Co-authored-by: alexandre --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/daDK.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 9a9cdb7c7542..6726ad619312 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -67,7 +67,7 @@ "languageTag": "da-DK", "importName": "daDK", "localeName": "Danish", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/daDK.ts" }, diff --git a/packages/x-data-grid/src/locales/daDK.ts b/packages/x-data-grid/src/locales/daDK.ts index 2632d030210d..577fc80f2d5c 100644 --- a/packages/x-data-grid/src/locales/daDK.ts +++ b/packages/x-data-grid/src/locales/daDK.ts @@ -39,9 +39,9 @@ const daDKGrid: Partial = { toolbarExportExcel: 'Download som Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Søg', + columnsManagementNoColumns: 'Ingen søjler', + columnsManagementShowHideAllText: 'Vis/Shjul Alle', // Filter panel text filterPanelAddFilter: 'Tilføj filter', From d42fae1def4cd17217f0e959df75a3ea15fc9a45 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Mon, 15 Apr 2024 23:50:21 +0500 Subject: [PATCH 126/912] [DataGrid] Support state export and restore on grid density (#12671) --- .../statePersistence.DataGridPro.test.tsx | 5 ++ .../hooks/features/density/useGridDensity.tsx | 56 ++++++++++++++++--- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx index 091f51a8697c..85880a295f63 100644 --- a/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx @@ -78,6 +78,7 @@ const FULL_INITIAL_STATE: GridInitialState = { sorting: { sortModel: [{ field: 'id', sort: 'desc' }], }, + density: 'compact', }; describe(' - State persistence', () => { @@ -135,6 +136,7 @@ describe(' - State persistence', () => { sorting: { sortModel: [], }, + density: 'standard', }); }); @@ -165,6 +167,7 @@ describe(' - State persistence', () => { paginationMode="server" rowCount={FULL_INITIAL_STATE.pagination?.rowCount} pinnedColumns={FULL_INITIAL_STATE.pinnedColumns} + density={FULL_INITIAL_STATE.density} // Some portable states don't have a controllable model initialState={{ columns: { @@ -191,6 +194,7 @@ describe(' - State persistence', () => { paginationMode="server" rowCount={FULL_INITIAL_STATE.pagination?.rowCount} pinnedColumns={FULL_INITIAL_STATE.pinnedColumns} + density={FULL_INITIAL_STATE.density} // Some portable states don't have a controllable model initialState={{ columns: { @@ -226,6 +230,7 @@ describe(' - State persistence', () => { apiRef.current.setColumnIndex('category', 1); apiRef.current.setColumnWidth('category', 75); apiRef.current.setColumnVisibilityModel({ idBis: false }); + apiRef.current.setDensity('compact'); }); expect(apiRef.current.exportState()).to.deep.equal(FULL_INITIAL_STATE); }); diff --git a/packages/x-data-grid/src/hooks/features/density/useGridDensity.tsx b/packages/x-data-grid/src/hooks/features/density/useGridDensity.tsx index 172b161c2cdb..0d21ec3a071c 100644 --- a/packages/x-data-grid/src/hooks/features/density/useGridDensity.tsx +++ b/packages/x-data-grid/src/hooks/features/density/useGridDensity.tsx @@ -7,6 +7,7 @@ import { GridDensityApi } from '../../../models/api/gridDensityApi'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { gridDensitySelector } from './densitySelector'; import { GridStateInitializer } from '../../utils/useGridInitializeState'; +import { GridPipeProcessor, useGridRegisterPipeProcessor } from '../../core/pipeProcessing'; export const densityStateInitializer: GridStateInitializer< Pick @@ -17,7 +18,7 @@ export const densityStateInitializer: GridStateInitializer< export const useGridDensity = ( apiRef: React.MutableRefObject, - props: Pick, + props: Pick, ): void => { const logger = useGridLogger(apiRef, 'useDensity'); @@ -43,15 +44,56 @@ export const useGridDensity = ( })); }); - React.useEffect(() => { - if (props.density) { - apiRef.current.setDensity(props.density); - } - }, [apiRef, props.density]); - const densityApi: GridDensityApi = { setDensity, }; useGridApiMethod(apiRef, densityApi, 'public'); + + const stateExportPreProcessing = React.useCallback>( + (prevState, context) => { + const exportedDensity = gridDensitySelector(apiRef.current.state); + + const shouldExportRowCount = + // Always export if the `exportOnlyDirtyModels` property is not activated + !context.exportOnlyDirtyModels || + // Always export if the `density` is controlled + props.density != null || + // Always export if the `density` has been initialized + props.initialState?.density != null; + + if (!shouldExportRowCount) { + return prevState; + } + + return { + ...prevState, + density: exportedDensity, + }; + }, + [apiRef, props.density, props.initialState?.density], + ); + + const stateRestorePreProcessing = React.useCallback>( + (params, context) => { + const restoredDensity = context.stateToRestore?.density + ? context.stateToRestore.density + : gridDensitySelector(apiRef.current.state); + apiRef.current.setState((state) => ({ + ...state, + density: restoredDensity, + })); + return params; + }, + [apiRef], + ); + + useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing); + useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing); + + React.useEffect(() => { + if (props.density) { + apiRef.current.setDensity(props.density); + } + }, [apiRef, props.density]); }; From 9c2716847b9662a3f84e12041100ed2f15b7dbbb Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Mon, 15 Apr 2024 23:54:13 -0400 Subject: [PATCH 127/912] [DataGridPro] Implement header filter height (#12666) Signed-off-by: Rom Grk Co-authored-by: Bilal Shafi --- .../data-grid/filtering/header-filters.md | 9 +++++++ .../x/api/data-grid/data-grid-premium.json | 1 + docs/pages/x/api/data-grid/data-grid-pro.json | 1 + .../data-grid-premium/data-grid-premium.json | 1 + .../data-grid-pro/data-grid-pro.json | 1 + .../src/DataGridPremium/DataGridPremium.tsx | 4 ++++ .../cellSelection/useGridCellSelection.ts | 2 +- .../src/DataGridPro/DataGridPro.tsx | 4 ++++ .../columnHeaders/useGridColumnHeaders.tsx | 2 +- .../src/models/dataGridProProps.ts | 8 ++++--- .../src/tests/layout.DataGridPro.test.tsx | 16 +++++++++++++ .../x-data-grid/src/components/GridRow.tsx | 1 + .../src/components/GridScrollArea.tsx | 2 +- .../src/components/cell/GridCell.tsx | 7 ++---- .../columnHeaders/useGridColumnHeaders.tsx | 1 - .../features/columns/gridColumnsUtils.ts | 12 +++++++--- .../features/dimensions/gridDimensionsApi.ts | 6 ++++- .../features/dimensions/useGridDimensions.ts | 9 ++++++- .../features/export/useGridPrintExport.tsx | 6 ++--- .../headerFiltering/useGridHeaderFiltering.ts | 6 ++--- .../useGridKeyboardNavigation.ts | 4 ++-- packages/x-data-grid/src/internals/index.ts | 10 +------- .../src/models/props/DataGridProps.ts | 24 ++++++++++--------- 23 files changed, 92 insertions(+), 45 deletions(-) diff --git a/docs/data/data-grid/filtering/header-filters.md b/docs/data/data-grid/filtering/header-filters.md index 4022fffdfdd7..fea11f2b5452 100644 --- a/docs/data/data-grid/filtering/header-filters.md +++ b/docs/data/data-grid/filtering/header-filters.md @@ -67,6 +67,15 @@ Additionally, `slots.headerFilterMenu` could also be used to customize the menu {{"demo": "CustomHeaderFilterDataGridPro.js", "bg": "inline", "defaultCodeOpen": false}} +### Custom header filter height + +By default, the height of the header filter row is the same as the header row (represented by `columnHeaderHeight` prop). +You can customize the height of the header filter cell using the `headerFilterHeight` prop. + +```tsx + +``` + ## Ignore diacritics (accents) You can ignore diacritics (accents) when filtering the rows. See [Quick filter - Ignore diacritics (accents)](/x/react-data-grid/filtering/quick-filter/#ignore-diacritics-accents). diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index 56215024f027..d680b3db5462 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -163,6 +163,7 @@ } }, "groupingColDef": { "type": { "name": "union", "description": "func
    | object" } }, + "headerFilterHeight": { "type": { "name": "number" } }, "headerFilters": { "type": { "name": "bool" }, "default": "false" }, "hideFooter": { "type": { "name": "bool" }, "default": "false" }, "hideFooterPagination": { "type": { "name": "bool" }, "default": "false" }, diff --git a/docs/pages/x/api/data-grid/data-grid-pro.json b/docs/pages/x/api/data-grid/data-grid-pro.json index 2de559b31451..1c430f5a3052 100644 --- a/docs/pages/x/api/data-grid/data-grid-pro.json +++ b/docs/pages/x/api/data-grid/data-grid-pro.json @@ -140,6 +140,7 @@ } }, "groupingColDef": { "type": { "name": "union", "description": "func
    | object" } }, + "headerFilterHeight": { "type": { "name": "number" } }, "headerFilters": { "type": { "name": "bool" }, "default": "false" }, "hideFooter": { "type": { "name": "bool" }, "default": "false" }, "hideFooterPagination": { "type": { "name": "bool" }, "default": "false" }, diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index e4650258c745..f62380f50c38 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -179,6 +179,7 @@ } }, "groupingColDef": { "description": "The grouping column used by the tree data." }, + "headerFilterHeight": { "description": "Override the height of the header filters." }, "headerFilters": { "description": "If true, enables the data grid filtering on header feature." }, diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index 44babc11d794..6898229f45b3 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -160,6 +160,7 @@ } }, "groupingColDef": { "description": "The grouping column used by the tree data." }, + "headerFilterHeight": { "description": "Override the height of the header filters." }, "headerFilters": { "description": "If true, enables the data grid filtering on header feature." }, diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 1f3caece0f9a..ed9e568c6f46 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -422,6 +422,10 @@ DataGridPremiumRaw.propTypes = { * The grouping column used by the tree data. */ groupingColDef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]), + /** + * Override the height of the header filters. + */ + headerFilterHeight: PropTypes.number, /** * If `true`, enables the data grid filtering on header feature. * @default false diff --git a/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts b/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts index ad700ae7eca1..e83cd6834b8b 100644 --- a/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts +++ b/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts @@ -68,7 +68,7 @@ export const useGridCellSelection = ( const autoScrollRAF = React.useRef(); const sortedRowIds = useGridSelector(apiRef, gridSortedRowIdsSelector); const dimensions = useGridSelector(apiRef, gridDimensionsSelector); - const totalHeaderHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight); + const totalHeaderHeight = getTotalHeaderHeight(apiRef, props); const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport; const ignoreValueFormatter = diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index 1b9dce1dbcf4..272316b357e7 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -363,6 +363,10 @@ DataGridProRaw.propTypes = { * The grouping column used by the tree data. */ groupingColDef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]), + /** + * Override the height of the header filters. + */ + headerFilterHeight: PropTypes.number, /** * If `true`, enables the data grid filtering on header feature. * @default false diff --git a/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index 9e9a6b446ea3..5465063b1a27 100644 --- a/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -127,7 +127,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { extends Omit< - DataGridPropsWithoutDefaultValue, - 'initialState' | 'componentsProps' | 'slotProps' - > { + DataGridPropsWithoutDefaultValue, + 'initialState' | 'componentsProps' | 'slotProps' + >, + DataGridProSharedPropsWithoutDefaultValue { /** * The ref object that allows grid manipulation. Can be instantiated with `useGridApiRef()`. */ diff --git a/packages/x-data-grid-pro/src/tests/layout.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/layout.DataGridPro.test.tsx index 3471efe273e6..dc631df9fe10 100644 --- a/packages/x-data-grid-pro/src/tests/layout.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/layout.DataGridPro.test.tsx @@ -143,6 +143,22 @@ describe(' - Layout', () => { }); }); + it('should work with `headerFilterHeight` prop', () => { + render( +
    + +
    , + ); + expect(grid('main')!.clientHeight).to.equal(baselineProps.rows.length * 20 + 20 + 32); + }); + it('should support translations in the theme', () => { render( diff --git a/packages/x-data-grid/src/components/GridRow.tsx b/packages/x-data-grid/src/components/GridRow.tsx index 6157ed735ba3..5e9854587a4e 100644 --- a/packages/x-data-grid/src/components/GridRow.tsx +++ b/packages/x-data-grid/src/components/GridRow.tsx @@ -545,6 +545,7 @@ GridRow.propTypes = { }).isRequired, hasScrollX: PropTypes.bool.isRequired, hasScrollY: PropTypes.bool.isRequired, + headerFilterHeight: PropTypes.number.isRequired, headerHeight: PropTypes.number.isRequired, headersTotalHeight: PropTypes.number.isRequired, isReady: PropTypes.bool.isRequired, diff --git a/packages/x-data-grid/src/components/GridScrollArea.tsx b/packages/x-data-grid/src/components/GridScrollArea.tsx index 8abd78dfb49d..59752fd21305 100644 --- a/packages/x-data-grid/src/components/GridScrollArea.tsx +++ b/packages/x-data-grid/src/components/GridScrollArea.tsx @@ -97,7 +97,7 @@ function GridScrollAreaRaw(props: ScrollAreaProps) { const rootProps = useGridRootProps(); const ownerState = { ...rootProps, scrollDirection }; const classes = useUtilityClasses(ownerState); - const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight); + const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps); const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor); const style: React.CSSProperties = { diff --git a/packages/x-data-grid/src/components/cell/GridCell.tsx b/packages/x-data-grid/src/components/cell/GridCell.tsx index 4c1b45ac20aa..0a84b3eb627e 100644 --- a/packages/x-data-grid/src/components/cell/GridCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridCell.tsx @@ -31,10 +31,7 @@ import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { gridFocusCellSelector } from '../../hooks/features/focus/gridFocusStateSelector'; import { MissingRowIdError } from '../../hooks/features/rows/useGridParamsApi'; -import type { - DataGridProcessedProps, - DataGridProcessedPropsWithShared, -} from '../../models/props/DataGridProps'; +import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils'; import { GridPinnedColumnPosition } from '../../hooks/features/columns/gridColumnsInterfaces'; @@ -182,7 +179,7 @@ const GridCell = React.forwardRef((props, ref) => } = props; const apiRef = useGridApiContext(); - const rootProps = useGridRootProps() as DataGridProcessedPropsWithShared; + const rootProps = useGridRootProps(); const field = column.field; diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index d3c513e248d6..e748eb161570 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -74,7 +74,6 @@ export const GridColumnHeaderRow = styled('div', { overridesResolver: (_, styles) => styles.columnHeaderRow, })<{ ownerState: OwnerState }>({ display: 'flex', - height: 'var(--DataGrid-headerHeight)', }); export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { diff --git a/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts b/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts index 7da63d617fef..94ec07bb341a 100644 --- a/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts +++ b/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts @@ -12,6 +12,7 @@ import { GRID_STRING_COL_DEF, getGridDefaultColumnTypes, } from '../../../colDef'; +import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { GridApiCommunity } from '../../../models/api/gridApiCommunity'; import { GridColDef, GridStateColDef } from '../../../models/colDef/gridColDef'; import { gridColumnsStateSelector, gridColumnVisibilityModelSelector } from './gridColumnsSelector'; @@ -431,11 +432,16 @@ export function getFirstNonSpannedColumnToRender({ export function getTotalHeaderHeight( apiRef: React.MutableRefObject, - headerHeight: number, + props: Pick, ) { const densityFactor = gridDensityFactorSelector(apiRef); const maxDepth = gridColumnGroupsHeaderMaxDepthSelector(apiRef); const isHeaderFilteringEnabled = gridHeaderFilteringEnabledSelector(apiRef); - const multiplicationFactor = isHeaderFilteringEnabled ? 2 : 1; - return Math.floor(headerHeight * densityFactor) * ((maxDepth ?? 0) + multiplicationFactor); + + const columnHeadersHeight = Math.floor(props.columnHeaderHeight * densityFactor); + const filterHeadersHeight = isHeaderFilteringEnabled + ? Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor) + : 0; + + return columnHeadersHeight * (1 + (maxDepth ?? 0)) + filterHeadersHeight; } diff --git a/packages/x-data-grid/src/hooks/features/dimensions/gridDimensionsApi.ts b/packages/x-data-grid/src/hooks/features/dimensions/gridDimensionsApi.ts index 277b71145688..c7b5bdd3815c 100644 --- a/packages/x-data-grid/src/hooks/features/dimensions/gridDimensionsApi.ts +++ b/packages/x-data-grid/src/hooks/features/dimensions/gridDimensionsApi.ts @@ -59,9 +59,13 @@ export interface GridDimensions { */ rightPinnedWidth: number; /** - * Height of one headers. + * Height of one column header. */ headerHeight: number; + /** + * Height of header filters. + */ + headerFilterHeight: number; /** * Height of all the column headers. */ diff --git a/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts b/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts index 86c21a6195dc..1c3a96e97712 100644 --- a/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts +++ b/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts @@ -42,6 +42,7 @@ type RootProps = Pick< | 'rowHeight' | 'resizeThrottleMs' | 'columnHeaderHeight' + | 'headerFilterHeight' >; export type GridDimensionsState = GridDimensions; @@ -58,6 +59,7 @@ const EMPTY_DIMENSIONS: GridDimensions = { hasScrollY: false, scrollbarSize: 0, headerHeight: 0, + headerFilterHeight: 0, rowWidth: 0, rowHeight: 0, columnsTotalWidth: 0, @@ -89,8 +91,11 @@ export function useGridDimensions( const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector); const rowHeight = Math.floor(props.rowHeight * densityFactor); const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor); + const headerFilterHeight = Math.floor( + (props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor, + ); const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6); - const headersTotalHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight); + const headersTotalHeight = getTotalHeaderHeight(apiRef, props); const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0); const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0); @@ -244,6 +249,7 @@ export function useGridDimensions( hasScrollY, scrollbarSize, headerHeight, + headerFilterHeight, rowWidth, rowHeight, columnsTotalWidth, @@ -273,6 +279,7 @@ export function useGridDimensions( rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, + headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, diff --git a/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx b/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx index 68957d6884cb..909ecae28e8c 100644 --- a/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx +++ b/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx @@ -64,7 +64,7 @@ function buildPrintWindow(title?: string): HTMLIFrameElement { */ export const useGridPrintExport = ( apiRef: React.MutableRefObject, - props: Pick, + props: Pick, ): void => { const logger = useGridLogger(apiRef, 'useGridPrintExport'); const doc = React.useRef(null); @@ -160,7 +160,7 @@ export const useGridPrintExport = ( // Expand container height to accommodate all rows const computedTotalHeight = rowsMeta.currentPageTotalHeight + - getTotalHeaderHeight(apiRef, props.columnHeaderHeight) + + getTotalHeaderHeight(apiRef, props) + gridToolbarElementHeight + gridFooterElementHeight; gridClone.style.height = `${computedTotalHeight}px`; @@ -256,7 +256,7 @@ export const useGridPrintExport = ( }); } }, - [apiRef, doc, props.columnHeaderHeight], + [apiRef, doc, props], ); const handlePrintWindowAfterPrint = React.useCallback( diff --git a/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts b/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts index fccdbb154952..dae3a8542487 100644 --- a/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts +++ b/packages/x-data-grid/src/hooks/features/headerFiltering/useGridHeaderFiltering.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; -import { DataGridProcessedPropsWithShared } from '../../../models/props/DataGridProps'; +import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { GridHeaderFilteringState } from '../../../models/gridHeaderFilteringModel'; import { useGridApiMethod } from '../../utils/useGridApiMethod'; import { GridStateInitializer } from '../../utils/useGridInitializeState'; @@ -17,7 +17,7 @@ import { export const headerFilteringStateInitializer: GridStateInitializer = ( state, - props: DataGridProcessedPropsWithShared, + props: DataGridProcessedProps, ) => ({ ...state, headerFiltering: { enabled: props.headerFilters ?? false, editing: null, menuOpen: null }, @@ -25,7 +25,7 @@ export const headerFilteringStateInitializer: GridStateInitializer = ( export const useGridHeaderFiltering = ( apiRef: React.MutableRefObject, - props: Pick, + props: Pick, ) => { const logger = useGridLogger(apiRef, 'useGridHeaderFiltering'); const setHeaderFilterState = React.useCallback( diff --git a/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts b/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts index 1a2d4d606823..1854e8a134b0 100644 --- a/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts +++ b/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts @@ -6,7 +6,7 @@ import { GridCellParams } from '../../../models/params/gridCellParams'; import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector'; import { useGridLogger } from '../../utils/useGridLogger'; import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler'; -import { DataGridProcessedPropsWithShared } from '../../../models/props/DataGridProps'; +import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { gridExpandedSortedRowEntriesSelector } from '../filter/gridFilterSelector'; import { useGridVisibleRows } from '../../utils/useGridVisibleRows'; import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSelectionColDef'; @@ -92,7 +92,7 @@ const getRightColumnIndex = ({ export const useGridKeyboardNavigation = ( apiRef: React.MutableRefObject, props: Pick< - DataGridProcessedPropsWithShared, + DataGridProcessedProps, | 'pagination' | 'paginationMode' | 'getRowId' diff --git a/packages/x-data-grid/src/internals/index.ts b/packages/x-data-grid/src/internals/index.ts index bee9fac100d2..88b4d71bf80f 100644 --- a/packages/x-data-grid/src/internals/index.ts +++ b/packages/x-data-grid/src/internals/index.ts @@ -129,15 +129,7 @@ export { useGridVisibleRows, getVisibleRows } from '../hooks/utils/useGridVisibl export { useGridInitializeState } from '../hooks/utils/useGridInitializeState'; export type { GridStateInitializer } from '../hooks/utils/useGridInitializeState'; -export type { - DataGridProSharedPropsWithDefaultValue, - DataGridPremiumSharedPropsWithDefaultValue, - GridExperimentalFeatures, - DataGridPropsWithoutDefaultValue, - DataGridPropsWithDefaultValues, - DataGridPropsWithComplexDefaultValueAfterProcessing, - DataGridPropsWithComplexDefaultValueBeforeProcessing, -} from '../models/props/DataGridProps'; +export type * from '../models/props/DataGridProps'; export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils'; export * from '../utils/createControllablePromise'; diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index 47619a4c8db1..84f1c3f9456a 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -53,14 +53,6 @@ export type DataGridProps = Omit< pagination?: true; }; -/** - * The props of the `DataGrid` component after the pre-processing phase. - */ -export interface DataGridProcessedProps - extends DataGridPropsWithDefaultValues, - DataGridPropsWithComplexDefaultValueAfterProcessing, - DataGridPropsWithoutDefaultValue {} - /** * The props of the `DataGrid` component after the pre-processing phase that the user should not be able to override. * Those are usually used in feature-hook for which the pro-plan has more advanced features (eg: multi-sorting, multi-filtering, ...). @@ -799,6 +791,13 @@ export interface DataGridProSharedPropsWithDefaultValue { headerFilters: boolean; } +export interface DataGridProSharedPropsWithoutDefaultValue { + /** + * Override the height of the header filters. + */ + headerFilterHeight?: number; +} + export interface DataGridPremiumSharedPropsWithDefaultValue { /** * If `true`, the cell selection mode is enabled. @@ -808,9 +807,12 @@ export interface DataGridPremiumSharedPropsWithDefaultValue { } /** - * Contains the commercial packages' props shared in the MIT version. + * The props of the `DataGrid` component after the pre-processing phase. */ -export interface DataGridProcessedPropsWithShared - extends DataGridProcessedProps, +export interface DataGridProcessedProps + extends DataGridPropsWithDefaultValues, + DataGridPropsWithComplexDefaultValueAfterProcessing, + DataGridPropsWithoutDefaultValue, + DataGridProSharedPropsWithoutDefaultValue, Partial, Partial {} From ba86d885595a3b8c2f963d33921d29e5b5099ac7 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Tue, 16 Apr 2024 05:45:16 -0400 Subject: [PATCH 128/912] [docs] Add grid cell display example to the migration guide (#12793) --- .../migration-data-grid-v6.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 6f52bc1d05ab..cdfd95277d1f 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -510,7 +510,20 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) - The `.MuiDataGrid--pinnedColumns-(left\|right)` class for pinned columns has been removed. - The `.MuiDataGrid-cell--withRenderer` class has been removed. - The cell element isn't `display: flex` by default. You can add `display: 'flex'` on the column definition to restore the behavior. - NOTE: If you're using **dynamic row height**, this also means cells aren't vertically centered by default anymore, you might want to set the `display: 'flex'` for all non-dynamic columns. This may also affect text-ellipsis, which you can restore by adding your own wrapper with `text-overflow: ellipsis;`. + + **NOTE**: If you're using **dynamic row height**, this also means cells aren't vertically centered by default anymore, you might want to set the `display: 'flex'` for all non-dynamic columns. This may also affect text-ellipsis, which you can restore by adding your own wrapper with `text-overflow: ellipsis`. + + ```tsx + { + display: 'flex', + renderCell: ({ value }) => ( +
    + {value} +
    + ), + }, + ``` + - The `columnHeader--showColumnBorder` class was replaced by `columnHeader--withLeftBorder` and `columnHeader--withRightBorder`. - The `columnHeadersInner`, `columnHeadersInner--scrollable`, and `columnHeaderDropZone` classes were removed since the inner wrapper was removed in our effort to simplify the DOM structure and improve accessibility. - The `pinnedColumnHeaders`, `pinnedColumnHeaders--left`, and `pinnedColumnHeaders--right` classes were removed along with the element they were applied to. From aaa02d6b7b5c42dc82ba9e661131d6c65f544af8 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Wed, 17 Apr 2024 10:27:15 +0200 Subject: [PATCH 129/912] [charts] Fix passing slot props down to PieArcLabel (#12806) --- packages/x-charts/src/PieChart/PiePlot.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/x-charts/src/PieChart/PiePlot.tsx b/packages/x-charts/src/PieChart/PiePlot.tsx index 5f86ea051357..5ed37cb0fcec 100644 --- a/packages/x-charts/src/PieChart/PiePlot.tsx +++ b/packages/x-charts/src/PieChart/PiePlot.tsx @@ -136,6 +136,8 @@ function PiePlot(props: PiePlotProps) { arcLabel={arcLabel} arcLabelMinAngle={arcLabelMinAngle} highlightScope={highlightScope} + slots={slots} + slotProps={slotProps} /> ); From f8fb68e12f36b654484be047b92f1ba3d7a447ba Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Wed, 17 Apr 2024 04:45:33 -0400 Subject: [PATCH 130/912] [DataGrid] Fix column resize (#12792) --- .../columnResize/useGridColumnResize.tsx | 162 +++++++++--------- 1 file changed, 85 insertions(+), 77 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx b/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx index c547c07b93e7..7595d08380aa 100644 --- a/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx +++ b/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx @@ -3,6 +3,7 @@ import { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback, } from '@mui/utils'; +import useLazyRef from '@mui/utils/useLazyRef'; import { useTheme, Direction } from '@mui/material/styles'; import { findGridCellElementsFromCol, @@ -264,6 +265,26 @@ export const columnResizeStateInitializer: GridStateInitializer = (state) => ({ ...state, columnResize: { resizingColumnField: '' }, }); + +function createResizeRefs() { + return { + colDef: undefined as undefined | GridStateColDef, + initialColWidth: 0, + initialTotalWidth: 0, + previousMouseClickEvent: undefined as undefined | MouseEvent, + columnHeaderElement: undefined as undefined | HTMLDivElement, + headerFilterElement: undefined as undefined | HTMLDivElement, + groupHeaderElements: [] as Element[], + cellElements: [] as Element[], + leftPinnedCellsAfter: [] as HTMLElement[], + rightPinnedCellsBefore: [] as HTMLElement[], + fillerLeft: undefined as undefined | HTMLElement, + fillerRight: undefined as undefined | HTMLElement, + leftPinnedHeadersAfter: [] as HTMLElement[], + rightPinnedHeadersBefore: [] as HTMLElement[], + }; +} + /** * @requires useGridColumns (method, event) * TODO: improve experience for last column @@ -282,18 +303,7 @@ export const useGridColumnResize = ( const theme = useTheme(); const logger = useGridLogger(apiRef, 'useGridColumnResize'); - const colDefRef = React.useRef(); - const previousMouseClickEvent = React.useRef(); - const columnHeaderElementRef = React.useRef(); - const headerFilterElementRef = React.useRef(); - const groupHeaderElementsRef = React.useRef([]); - const cellElementsRef = React.useRef([]); - const leftPinnedCellsAfterRef = React.useRef([]); - const rightPinnedCellsBeforeRef = React.useRef([]); - const fillerLeftRef = React.useRef(); - const fillerRightRef = React.useRef(); - const leftPinnedHeadersAfterRef = React.useRef([]); - const rightPinnedHeadersBeforeRef = React.useRef([]); + const refs = useLazyRef(createResizeRefs).current; // To improve accessibility, the separator has padding on both sides. // Clicking inside the padding area should be treated as a click in the separator. @@ -305,27 +315,34 @@ export const useGridColumnResize = ( const touchId = React.useRef(); const updateWidth = (newWidth: number) => { - logger.debug(`Updating width to ${newWidth} for col ${colDefRef.current!.field}`); + logger.debug(`Updating width to ${newWidth} for col ${refs.colDef!.field}`); - const prevWidth = columnHeaderElementRef.current!.offsetWidth; + const prevWidth = refs.columnHeaderElement!.offsetWidth; const widthDiff = newWidth - prevWidth; + const columnWidthDiff = newWidth - refs.initialColWidth; + const newTotalWidth = refs.initialTotalWidth + columnWidthDiff; - colDefRef.current!.computedWidth = newWidth; - colDefRef.current!.width = newWidth; - colDefRef.current!.flex = 0; + apiRef.current.rootElementRef?.current?.style.setProperty( + '--DataGrid-rowWidth', + `${newTotalWidth}px`, + ); + + refs.colDef!.computedWidth = newWidth; + refs.colDef!.width = newWidth; + refs.colDef!.flex = 0; - columnHeaderElementRef.current!.style.width = `${newWidth}px`; - columnHeaderElementRef.current!.style.minWidth = `${newWidth}px`; - columnHeaderElementRef.current!.style.maxWidth = `${newWidth}px`; + refs.columnHeaderElement!.style.width = `${newWidth}px`; + refs.columnHeaderElement!.style.minWidth = `${newWidth}px`; + refs.columnHeaderElement!.style.maxWidth = `${newWidth}px`; - const headerFilterElement = headerFilterElementRef.current; + const headerFilterElement = refs.headerFilterElement; if (headerFilterElement) { headerFilterElement.style.width = `${newWidth}px`; headerFilterElement.style.minWidth = `${newWidth}px`; headerFilterElement.style.maxWidth = `${newWidth}px`; } - groupHeaderElementsRef.current!.forEach((element) => { + refs.groupHeaderElements!.forEach((element) => { const div = element as HTMLDivElement; let finalWidth: `${number}px`; @@ -342,7 +359,7 @@ export const useGridColumnResize = ( div.style.maxWidth = finalWidth; }); - cellElementsRef.current!.forEach((element) => { + refs.cellElements!.forEach((element) => { const div = element as HTMLDivElement; let finalWidth: `${number}px`; @@ -360,27 +377,27 @@ export const useGridColumnResize = ( const pinnedPosition = apiRef.current.unstable_applyPipeProcessors( 'isColumnPinned', false, - colDefRef.current!.field, + refs.colDef!.field, ); if (pinnedPosition === GridPinnedColumnPosition.LEFT) { - updateProperty(fillerLeftRef.current, 'width', widthDiff); + updateProperty(refs.fillerLeft, 'width', widthDiff); - leftPinnedCellsAfterRef.current.forEach((cell) => { + refs.leftPinnedCellsAfter.forEach((cell) => { updateProperty(cell, 'left', widthDiff); }); - leftPinnedHeadersAfterRef.current.forEach((header) => { + refs.leftPinnedHeadersAfter.forEach((header) => { updateProperty(header, 'left', widthDiff); }); } if (pinnedPosition === GridPinnedColumnPosition.RIGHT) { - updateProperty(fillerRightRef.current, 'width', widthDiff); + updateProperty(refs.fillerRight, 'width', widthDiff); - rightPinnedCellsBeforeRef.current.forEach((cell) => { + refs.rightPinnedCellsBefore.forEach((cell) => { updateProperty(cell, 'right', widthDiff); }); - rightPinnedHeadersBeforeRef.current.forEach((header) => { + refs.rightPinnedHeadersBefore.forEach((header) => { updateProperty(header, 'right', widthDiff); }); } @@ -391,8 +408,8 @@ export const useGridColumnResize = ( stopListening(); // Prevent double-clicks from being interpreted as two separate clicks - if (previousMouseClickEvent.current) { - const prevEvent = previousMouseClickEvent.current; + if (refs.previousMouseClickEvent) { + const prevEvent = refs.previousMouseClickEvent; const prevTimeStamp = prevEvent.timeStamp; const prevClientX = prevEvent.clientX; const prevClientY = prevEvent.clientY; @@ -403,16 +420,14 @@ export const useGridColumnResize = ( nativeEvent.clientX === prevClientX && nativeEvent.clientY === prevClientY ) { - previousMouseClickEvent.current = undefined; + refs.previousMouseClickEvent = undefined; return; } } - if (colDefRef.current) { - apiRef.current.setColumnWidth(colDefRef.current.field, colDefRef.current.width!); - logger.debug( - `Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`, - ); + if (refs.colDef) { + apiRef.current.setColumnWidth(refs.colDef.field, refs.colDef.width!); + logger.debug(`Updating col ${refs.colDef.field} with new width: ${refs.colDef.width}`); } stopResizeEventTimeout.start(0, () => { @@ -423,9 +438,12 @@ export const useGridColumnResize = ( const storeReferences = (colDef: GridStateColDef, separator: HTMLElement, xStart: number) => { const root = apiRef.current.rootElementRef.current!; - colDefRef.current = colDef as GridStateColDef; + refs.initialColWidth = colDef.computedWidth; + refs.initialTotalWidth = apiRef.current.getRootDimensions().rowWidth; + + refs.colDef = colDef as GridStateColDef; - columnHeaderElementRef.current = findHeaderElementFromField( + refs.columnHeaderElement = findHeaderElementFromField( apiRef.current.columnHeadersContainerRef!.current!, colDef.field, ); @@ -434,51 +452,48 @@ export const useGridColumnResize = ( `.${gridClasses.headerFilterRow} [data-field="${colDef.field}"]`, ); if (headerFilterElement) { - headerFilterElementRef.current = headerFilterElement as HTMLDivElement; + refs.headerFilterElement = headerFilterElement as HTMLDivElement; } - groupHeaderElementsRef.current = findGroupHeaderElementsFromField( + refs.groupHeaderElements = findGroupHeaderElementsFromField( apiRef.current.columnHeadersContainerRef?.current!, colDef.field, ); - cellElementsRef.current = findGridCellElementsFromCol( - columnHeaderElementRef.current, - apiRef.current, - ); + refs.cellElements = findGridCellElementsFromCol(refs.columnHeaderElement, apiRef.current); - fillerLeftRef.current = findGridElement(apiRef.current, 'filler--pinnedLeft'); - fillerRightRef.current = findGridElement(apiRef.current, 'filler--pinnedRight'); + refs.fillerLeft = findGridElement(apiRef.current, 'filler--pinnedLeft'); + refs.fillerRight = findGridElement(apiRef.current, 'filler--pinnedRight'); const pinnedPosition = apiRef.current.unstable_applyPipeProcessors( 'isColumnPinned', false, - colDefRef.current!.field, + refs.colDef!.field, ); - leftPinnedCellsAfterRef.current = + refs.leftPinnedCellsAfter = pinnedPosition !== GridPinnedColumnPosition.LEFT ? [] - : findLeftPinnedCellsAfterCol(apiRef.current, columnHeaderElementRef.current); - rightPinnedCellsBeforeRef.current = + : findLeftPinnedCellsAfterCol(apiRef.current, refs.columnHeaderElement); + refs.rightPinnedCellsBefore = pinnedPosition !== GridPinnedColumnPosition.RIGHT ? [] - : findRightPinnedCellsBeforeCol(apiRef.current, columnHeaderElementRef.current); + : findRightPinnedCellsBeforeCol(apiRef.current, refs.columnHeaderElement); - leftPinnedHeadersAfterRef.current = + refs.leftPinnedHeadersAfter = pinnedPosition !== GridPinnedColumnPosition.LEFT ? [] - : findLeftPinnedHeadersAfterCol(apiRef.current, columnHeaderElementRef.current); - rightPinnedHeadersBeforeRef.current = + : findLeftPinnedHeadersAfterCol(apiRef.current, refs.columnHeaderElement); + refs.rightPinnedHeadersBefore = pinnedPosition !== GridPinnedColumnPosition.RIGHT ? [] - : findRightPinnedHeadersBeforeCol(apiRef.current, columnHeaderElementRef.current); + : findRightPinnedHeadersBeforeCol(apiRef.current, refs.columnHeaderElement); resizeDirection.current = getResizeDirection(separator, theme.direction); initialOffsetToSeparator.current = computeOffsetToSeparator( xStart, - columnHeaderElementRef.current!.getBoundingClientRect(), + refs.columnHeaderElement!.getBoundingClientRect(), resizeDirection.current, ); }; @@ -495,16 +510,16 @@ export const useGridColumnResize = ( let newWidth = computeNewWidth( initialOffsetToSeparator.current!, nativeEvent.clientX, - columnHeaderElementRef.current!.getBoundingClientRect(), + refs.columnHeaderElement!.getBoundingClientRect(), resizeDirection.current!, ); - newWidth = clamp(newWidth, colDefRef.current!.minWidth!, colDefRef.current!.maxWidth!); + newWidth = clamp(newWidth, refs.colDef!.minWidth!, refs.colDef!.maxWidth!); updateWidth(newWidth); const params: GridColumnResizeParams = { - element: columnHeaderElementRef.current, - colDef: colDefRef.current!, + element: refs.columnHeaderElement, + colDef: refs.colDef!, width: newWidth, }; apiRef.current.publishEvent('columnResize', params, nativeEvent); @@ -535,16 +550,16 @@ export const useGridColumnResize = ( let newWidth = computeNewWidth( initialOffsetToSeparator.current!, (finger as CursorCoordinates).x, - columnHeaderElementRef.current!.getBoundingClientRect(), + refs.columnHeaderElement!.getBoundingClientRect(), resizeDirection.current!, ); - newWidth = clamp(newWidth, colDefRef.current!.minWidth!, colDefRef.current!.maxWidth!); + newWidth = clamp(newWidth, refs.colDef!.minWidth!, refs.colDef!.maxWidth!); updateWidth(newWidth); const params: GridColumnResizeParams = { - element: columnHeaderElementRef.current, - colDef: colDefRef.current!, + element: refs.columnHeaderElement, + colDef: refs.colDef!, width: newWidth, }; apiRef.current.publishEvent('columnResize', params, nativeEvent); @@ -599,17 +614,10 @@ export const useGridColumnResize = ( setTimeout(() => { doc.removeEventListener('click', preventClick, true); }, 100); - if (columnHeaderElementRef.current) { - columnHeaderElementRef.current!.style.pointerEvents = 'unset'; + if (refs.columnHeaderElement) { + refs.columnHeaderElement!.style.pointerEvents = 'unset'; } - }, [ - apiRef, - columnHeaderElementRef, - handleResizeMouseMove, - handleResizeMouseUp, - handleTouchMove, - handleTouchEnd, - ]); + }, [apiRef, refs, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]); const handleResizeStart = React.useCallback>( ({ field }) => { @@ -653,7 +661,7 @@ export const useGridColumnResize = ( const doc = ownerDocument(apiRef.current.rootElementRef!.current); doc.body.style.cursor = 'col-resize'; - previousMouseClickEvent.current = event.nativeEvent; + refs.previousMouseClickEvent = event.nativeEvent; doc.addEventListener('mousemove', handleResizeMouseMove); doc.addEventListener('mouseup', handleResizeMouseUp); From 23f912d16f6838e0c5271006d22060ce4939f6f8 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Wed, 17 Apr 2024 11:52:12 +0200 Subject: [PATCH 131/912] [DataGrid] Limit panel width to not exceed screen width (#12799) --- packages/x-data-grid/src/components/panel/GridPanel.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/x-data-grid/src/components/panel/GridPanel.tsx b/packages/x-data-grid/src/components/panel/GridPanel.tsx index b6f549609514..a169fd4ea6c1 100644 --- a/packages/x-data-grid/src/components/panel/GridPanel.tsx +++ b/packages/x-data-grid/src/components/panel/GridPanel.tsx @@ -51,6 +51,8 @@ const GridPaperRoot = styled(Paper, { minWidth: 300, maxHeight: 450, display: 'flex', + maxWidth: `calc(100vw - ${theme.spacing(0.5)})`, + overflow: 'auto', })); const GridPanel = React.forwardRef((props, ref) => { From f047a849edb7ca6c41646eb4fb7e20473ba0f963 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Wed, 17 Apr 2024 06:07:43 -0400 Subject: [PATCH 132/912] [DataGrid] Fix column separators (#12808) Co-authored-by: Andrew Cherniavskyi --- docs/pages/x/api/data-grid/data-grid-premium.json | 6 ++++++ docs/pages/x/api/data-grid/data-grid-pro.json | 6 ++++++ docs/pages/x/api/data-grid/data-grid.json | 6 ++++++ .../data-grid-premium/data-grid-premium.json | 4 ++++ .../data-grid/data-grid-pro/data-grid-pro.json | 4 ++++ .../api-docs/data-grid/data-grid/data-grid.json | 4 ++++ .../components/columnHeaders/GridColumnHeaderItem.tsx | 8 ++++++-- .../columnHeaders/GridColumnHeaderSeparator.tsx | 2 +- .../src/components/containers/GridRootStyles.ts | 2 ++ packages/x-data-grid/src/constants/gridClasses.ts | 11 ++++++++--- .../features/columnHeaders/useGridColumnHeaders.tsx | 1 + 11 files changed, 48 insertions(+), 6 deletions(-) diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index d680b3db5462..5d72c3f2e9fc 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -1269,6 +1269,12 @@ "description": "Styles applied to the column header if the column has a filter applied to it.", "isGlobal": false }, + { + "key": "columnHeader--last", + "className": "MuiDataGridPremium-columnHeader--last", + "description": "Styles applied to the last column header element.", + "isGlobal": false + }, { "key": "columnHeader--moving", "className": "MuiDataGridPremium-columnHeader--moving", diff --git a/docs/pages/x/api/data-grid/data-grid-pro.json b/docs/pages/x/api/data-grid/data-grid-pro.json index 1c430f5a3052..732f9d1513e9 100644 --- a/docs/pages/x/api/data-grid/data-grid-pro.json +++ b/docs/pages/x/api/data-grid/data-grid-pro.json @@ -1186,6 +1186,12 @@ "description": "Styles applied to the column header if the column has a filter applied to it.", "isGlobal": false }, + { + "key": "columnHeader--last", + "className": "MuiDataGridPro-columnHeader--last", + "description": "Styles applied to the last column header element.", + "isGlobal": false + }, { "key": "columnHeader--moving", "className": "MuiDataGridPro-columnHeader--moving", diff --git a/docs/pages/x/api/data-grid/data-grid.json b/docs/pages/x/api/data-grid/data-grid.json index 4ca488287bf5..4b7fc7836b78 100644 --- a/docs/pages/x/api/data-grid/data-grid.json +++ b/docs/pages/x/api/data-grid/data-grid.json @@ -1072,6 +1072,12 @@ "description": "Styles applied to the column header if the column has a filter applied to it.", "isGlobal": false }, + { + "key": "columnHeader--last", + "className": "MuiDataGrid-columnHeader--last", + "description": "Styles applied to the last column header element.", + "isGlobal": false + }, { "key": "columnHeader--moving", "className": "MuiDataGrid-columnHeader--moving", diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index f62380f50c38..db2671217fab 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -802,6 +802,10 @@ "nodeName": "the column header", "conditions": "the column has a filter applied to it" }, + "columnHeader--last": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the last column header element" + }, "columnHeader--moving": { "description": "Styles applied to {{nodeName}} if {{conditions}}.", "nodeName": "the column header", diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index 6898229f45b3..d95a4ffd05e3 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -740,6 +740,10 @@ "nodeName": "the column header", "conditions": "the column has a filter applied to it" }, + "columnHeader--last": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the last column header element" + }, "columnHeader--moving": { "description": "Styles applied to {{nodeName}} if {{conditions}}.", "nodeName": "the column header", diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index 957595b1a9a8..4f472991918d 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -629,6 +629,10 @@ "nodeName": "the column header", "conditions": "the column has a filter applied to it" }, + "columnHeader--last": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the last column header element" + }, "columnHeader--moving": { "description": "Styles applied to {{nodeName}} if {{conditions}}.", "nodeName": "the column header", diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx index 3141233b9ec7..e11e6b273345 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import clsx from 'clsx'; import { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils'; import { fastMemo } from '../../utils/fastMemo'; import { GridStateColDef } from '../../models/colDef/gridColDef'; @@ -9,7 +10,7 @@ import { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon'; import { GridColumnHeaderSeparatorProps } from './GridColumnHeaderSeparator'; import { ColumnHeaderMenuIcon } from './ColumnHeaderMenuIcon'; import { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu'; -import { getDataGridUtilityClass } from '../../constants/gridClasses'; +import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem'; @@ -25,6 +26,7 @@ interface GridColumnHeaderItemProps { headerHeight: number; isDragging: boolean; isResizing: boolean; + isLast: boolean; sortDirection: GridSortDirection; sortIndex?: number; filterItemsCounter?: number; @@ -94,6 +96,7 @@ function GridColumnHeaderItem(props: GridColumnHeaderItemProps) { colIndex, headerHeight, isResizing, + isLast, sortDirection, sortIndex, filterItemsCounter, @@ -293,7 +296,7 @@ function GridColumnHeaderItem(props: GridColumnHeaderItemProps) { width={colDef.computedWidth} columnMenuIconButton={columnMenuIconButton} columnTitleIconButtons={columnTitleIconButtons} - headerClassName={headerClassName} + headerClassName={clsx(headerClassName, isLast && gridClasses['columnHeader--last'])} label={label} resizable={!rootProps.disableColumnResize && !!colDef.resizable} data-field={colDef.field} @@ -321,6 +324,7 @@ GridColumnHeaderItem.propTypes = { headerHeight: PropTypes.number.isRequired, indexInSection: PropTypes.number.isRequired, isDragging: PropTypes.bool.isRequired, + isLast: PropTypes.bool.isRequired, isResizing: PropTypes.bool.isRequired, pinnedPosition: PropTypes.oneOf(['left', 'right']), sectionLength: PropTypes.number.isRequired, diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx index 92e5504dbedf..ea85556f5675 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx @@ -61,7 +61,7 @@ function GridColumnHeaderSeparatorRaw(props: GridColumnHeaderSeparatorProps) { // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
    diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index dfd89140efc1..0d5e88de51f6 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -279,6 +279,8 @@ export const GridRootStyles = styled('div', { position: 'relative', display: 'flex', alignItems: 'center', + }, + [`& .${c['columnHeader--last']}`]: { overflow: 'hidden', }, [`& .${c['columnHeader--sorted']} .${c.iconButtonContainer}, & .${c['columnHeader--filtered']} .${c.iconButtonContainer}`]: diff --git a/packages/x-data-grid/src/constants/gridClasses.ts b/packages/x-data-grid/src/constants/gridClasses.ts index eec97ecf063b..c795ccda8336 100644 --- a/packages/x-data-grid/src/constants/gridClasses.ts +++ b/packages/x-data-grid/src/constants/gridClasses.ts @@ -117,6 +117,10 @@ export interface GridClasses { * Styles applied to the selection checkbox element. */ checkboxInput: string; + /** + * Styles applied to the column header element. + */ + columnHeader: string; /** * Styles applied to the column header if `headerAlign="center"`. */ @@ -156,9 +160,9 @@ export interface GridClasses { 'columnHeader--pinnedLeft': string; 'columnHeader--pinnedRight': string; /** - * Styles applied to the column header element. + * Styles applied to the last column header element. */ - columnHeader: string; + 'columnHeader--last': string; /** * Styles applied to the header checkbox cell element. */ @@ -635,6 +639,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', + 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', @@ -646,7 +651,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', - 'columnHeader', + 'columnHeader--last', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index e748eb161570..02e089fcd55e 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -275,6 +275,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { colDef={colDef} colIndex={columnIndex} isResizing={resizeCol === colDef.field} + isLast={columnIndex === columnPositions.length - 1} hasFocus={hasFocus} tabIndex={tabIndex} pinnedPosition={pinnedPosition} From 55870b4b5b8b8a3db86f6d294cdeeff47b155830 Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 17 Apr 2024 16:02:55 +0300 Subject: [PATCH 133/912] [test] Increase timeout for test that sometimes fail on DateTimeRangePicker (#12786) --- .../pickers/describeValue/testPickerOpenCloseLifeCycle.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx b/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx index 24ef112fc206..d6ac1bcd576c 100644 --- a/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx +++ b/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx @@ -180,7 +180,9 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite expect(onClose.callCount).to.equal(1); }); - it('should not call onClose or onAccept when selecting a date and `props.closeOnSelect` is false', () => { + it('should not call onClose or onAccept when selecting a date and `props.closeOnSelect` is false', function test() { + // increase the timeout of this test as it tends to sometimes fail on CI with `DesktopDateTimeRangePicker` or `MobileDateTimeRangePicker` + this.timeout(10000); const onChange = spy(); const onAccept = spy(); const onClose = spy(); From 5899fbb311cc4c1bb953234687389740e835b493 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Wed, 17 Apr 2024 16:53:20 +0200 Subject: [PATCH 134/912] [docs-infra] Prepare infra to document charts interfaces (#12653) --- docs/scripts/api/buildApi.ts | 75 ++-- .../api/buildGridEventsDocumentation.ts | 9 +- .../api/buildInterfacesDocumentation.ts | 320 +++++++++--------- docs/scripts/api/utils.ts | 3 +- docs/scripts/createXTypeScriptProjects.ts | 63 ++++ 5 files changed, 292 insertions(+), 178 deletions(-) diff --git a/docs/scripts/api/buildApi.ts b/docs/scripts/api/buildApi.ts index 522ca590c81f..ea6e3628864a 100644 --- a/docs/scripts/api/buildApi.ts +++ b/docs/scripts/api/buildApi.ts @@ -1,13 +1,22 @@ +/* eslint-disable no-await-in-loop */ import * as yargs from 'yargs'; import path from 'path'; import fs from 'fs'; import * as prettier from 'prettier'; import kebabCase from 'lodash/kebabCase'; -import buildInterfacesDocumentation from './buildInterfacesDocumentation'; +import { + buildApiInterfacesJson, + buildInterfacesDocumentationPage, +} from './buildInterfacesDocumentation'; import buildExportsDocumentation from './buildExportsDocumentation'; import buildGridSelectorsDocumentation from './buildGridSelectorsDocumentation'; import buildGridEventsDocumentation from './buildGridEventsDocumentation'; -import { createXTypeScriptProjects } from '../createXTypeScriptProjects'; +import { + XTypeScriptProjects, + createXTypeScriptProjects, + datagridApiToDocument, + interfacesToDocument, +} from '../createXTypeScriptProjects'; import { DocumentedInterfaces } from './utils'; const DEFAULT_PRETTIER_CONFIG_PATH = path.join(process.cwd(), 'prettier.config.js'); @@ -47,6 +56,7 @@ const bracketsRegexp = /\[\[([^\]]+)\]\]/g; export default async function linkifyTranslation( directory: string, documentedInterfaces: DocumentedInterfaces, + folder: string, ) { const items = fs.readdirSync(directory); @@ -55,7 +65,7 @@ export default async function linkifyTranslation( const itemPath = path.resolve(directory, item); if (fs.statSync(itemPath).isDirectory()) { - await linkifyTranslation(itemPath, documentedInterfaces); + await linkifyTranslation(itemPath, documentedInterfaces, folder); return; } @@ -69,7 +79,7 @@ export default async function linkifyTranslation( if (!documentedInterfaces.get(content)) { return content; } - const url = `/x/api/data-grid/${kebabCase(content)}/`; + const url = `/x/api/${folder}/${kebabCase(content)}/`; return `${content}`; }); @@ -83,24 +93,51 @@ async function run() { // Create documentation folder if it does not exist const apiPagesFolder = path.resolve('./docs/pages/x/api'); - const dataGridTranslationFolder = path.resolve('./docs/translations/api-docs/data-grid/'); - const documentedInterfaces = await buildInterfacesDocumentation({ - projects, - apiPagesFolder, - }); - - await linkifyTranslation(dataGridTranslationFolder, documentedInterfaces); + // eslint-disable-next-line no-restricted-syntax + for (const { folder, packages, documentedInterfaces } of interfacesToDocument) { + const subProjects: XTypeScriptProjects = new Map(); + + packages.forEach((pck) => { + subProjects.set(pck, projects.get(pck)!); + }); + + // Create translation folder if it does not exist + const translationFolder = path.resolve(`./docs/translations/api-docs/${folder}/`); + + const interfacesWithDedicatedPage = await buildInterfacesDocumentationPage({ + projects: subProjects, + translationPagesDirectory: `docs/translations/api-docs/${folder}`, + importTranslationPagesDirectory: `docsx/translations/api-docs/${folder}`, + apiPagesDirectory: path.join(process.cwd(), `docs/pages/x/api/${folder}`), + folder, + interfaces: documentedInterfaces, + }); + + await linkifyTranslation(translationFolder, interfacesWithDedicatedPage, folder); + + if (folder === 'data-grid') { + // Generate JSON for some API inerfaces rendered in the `` components. + // This is API insterted inside some demo pages, and not dedicated pages. + await buildApiInterfacesJson({ + projects: subProjects, + apiPagesFolder, + folder, + interfaces: datagridApiToDocument, + interfacesWithDedicatedPage, + }); - await buildGridEventsDocumentation({ - projects, - documentedInterfaces, - }); + await buildGridEventsDocumentation({ + projects: subProjects, + interfacesWithDedicatedPage, + }); - await buildGridSelectorsDocumentation({ - project: projects.get('x-data-grid-premium')!, - apiPagesFolder, - }); + await buildGridSelectorsDocumentation({ + project: projects.get('x-data-grid-premium')!, + apiPagesFolder, + }); + } + } buildExportsDocumentation({ projects, diff --git a/docs/scripts/api/buildGridEventsDocumentation.ts b/docs/scripts/api/buildGridEventsDocumentation.ts index 3e5ae19392a1..3459c6a9fcda 100644 --- a/docs/scripts/api/buildGridEventsDocumentation.ts +++ b/docs/scripts/api/buildGridEventsDocumentation.ts @@ -13,7 +13,7 @@ import { XProjectNames, XTypeScriptProjects } from '../createXTypeScriptProjects interface BuildEventsDocumentationOptions { projects: XTypeScriptProjects; - documentedInterfaces: DocumentedInterfaces; + interfacesWithDedicatedPage: DocumentedInterfaces; } const GRID_PROJECTS: XProjectNames[] = ['x-data-grid', 'x-data-grid-pro', 'x-data-grid-premium']; @@ -21,7 +21,7 @@ const GRID_PROJECTS: XProjectNames[] = ['x-data-grid', 'x-data-grid-pro', 'x-dat export default async function buildGridEventsDocumentation( options: BuildEventsDocumentationOptions, ) { - const { projects, documentedInterfaces } = options; + const { projects, interfacesWithDedicatedPage } = options; const events: { [eventName: string]: { @@ -61,8 +61,9 @@ export default async function buildGridEventsDocumentation( const description = linkify( getSymbolDescription(event, project), - documentedInterfaces, + interfacesWithDedicatedPage, 'html', + 'data-grid', ); const eventParams: { [key: string]: string } = {}; @@ -80,7 +81,7 @@ export default async function buildGridEventsDocumentation( projects: [project.name], name: event.name, description: renderMarkdown(description), - params: linkify(eventParams.params, documentedInterfaces, 'html'), + params: linkify(eventParams.params, interfacesWithDedicatedPage, 'html', 'data-grid'), event: `MuiEvent<${eventParams.event ?? '{}'}>`, }; } diff --git a/docs/scripts/api/buildInterfacesDocumentation.ts b/docs/scripts/api/buildInterfacesDocumentation.ts index e994cba656c0..01fd502ecdf1 100644 --- a/docs/scripts/api/buildInterfacesDocumentation.ts +++ b/docs/scripts/api/buildInterfacesDocumentation.ts @@ -39,57 +39,6 @@ interface ParsedProperty { projects: XProjectNames[]; } -const translationPagesDirectory = 'docs/translations/api-docs/data-grid'; -const importTranslationPagesDirectory = 'docsx/translations/api-docs/data-grid'; -const apiPagesDirectory = path.join(process.cwd(), `docs/pages/x/api/data-grid`); - -const GRID_API_INTERFACES_WITH_DEDICATED_PAGES = [ - 'GridCellSelectionApi', - 'GridColumnPinningApi', - 'GridColumnResizeApi', - 'GridCsvExportApi', - 'GridDetailPanelApi', - 'GridEditingApi', - 'GridExcelExportApi', - 'GridFilterApi', - 'GridPaginationApi', - 'GridPrintExportApi', - 'GridRowGroupingApi', - 'GridRowMultiSelectionApi', - 'GridRowSelectionApi', - 'GridScrollApi', - 'GridSortApi', - 'GridVirtualizationApi', -]; - -const OTHER_GRID_INTERFACES_WITH_DEDICATED_PAGES = [ - // apiRef - 'GridApi', - - // Params - 'GridCellParams', - 'GridRowParams', - 'GridRowClassNameParams', - 'GridRowSpacingParams', - 'GridExportStateParams', - - // Others - 'GridColDef', - 'GridSingleSelectColDef', - 'GridActionsColDef', - 'GridCsvExportOptions', - 'GridPrintExportOptions', - 'GridExcelExportOptions', - - // Filters - 'GridFilterModel', - 'GridFilterItem', - 'GridFilterOperator', - - // Aggregation - 'GridAggregationFunction', -]; - const parseProperty = async ( propertySymbol: ts.Symbol, project: XTypeScriptProject, @@ -111,11 +60,10 @@ interface ProjectInterface { const parseInterfaceSymbol = async ( interfaceName: string, - documentedInterfaces: DocumentedInterfaces, + packagesWithThisInterface: XProjectNames[], projects: XTypeScriptProjects, ): Promise => { - const projectInterfaces = documentedInterfaces - .get(interfaceName)! + const projectInterfaces = packagesWithThisInterface .map((projectName) => { const project = projects.get(projectName)!; @@ -177,14 +125,17 @@ const parseInterfaceSymbol = async ( return parsedInterface; }; +const isPro = (project: string) => project.includes('-pro'); +const isPremium = (project: string) => project.includes('-premium'); + function getPlanLevel(property: ParsedProperty) { - if (property.projects.includes('x-data-grid')) { + if (property.projects.some((project) => !isPro(project) && !isPremium(project))) { return ''; } - if (property.projects.includes('x-data-grid-pro')) { + if (property.projects.some(isPro)) { return 'pro'; } - if (property.projects.includes('x-data-grid-premium')) { + if (property.projects.some(isPremium)) { return 'premium'; } throw new Error(`No valid plan found for ${property.name} property`); @@ -228,23 +179,99 @@ function extractDemos(tagInfo: ts.JSDocTagInfo): { demos?: string } { return { demos: `
      ${demos.join('\n')}
    ` }; } -interface BuildInterfacesDocumentationOptions { +interface BuildInterfacesCommonOptions { projects: XTypeScriptProjects; + folder: string; + /** + * An array of the interfaces to process. + */ + interfaces: string[]; +} + +type BuildApiInterfacesJsonOptions = BuildInterfacesCommonOptions & { apiPagesFolder: string; + interfacesWithDedicatedPage: DocumentedInterfaces; +}; + +export async function buildApiInterfacesJson(options: BuildApiInterfacesJsonOptions) { + const { projects, apiPagesFolder, folder, interfaces, interfacesWithDedicatedPage } = options; + + const allProjectsName = Array.from(projects.keys()); + + await Promise.all( + interfaces.map(async (interfaceName) => { + const packagesWithThisInterface = allProjectsName.filter( + (projectName) => !!projects.get(projectName)!.exports[interfaceName], + ); + + if (packagesWithThisInterface.length === 0) { + throw new Error(`Can't find symbol for ${interfaceName}`); + } + + const project = projects.get(packagesWithThisInterface[0])!; + + const parsedInterface = await parseInterfaceSymbol( + interfaceName, + packagesWithThisInterface, + projects, + ); + if (!parsedInterface) { + return; + } + + const slug = kebabCase(parsedInterface.name); + + const json = { + name: parsedInterface.name, + description: linkify( + parsedInterface.description, + interfacesWithDedicatedPage, + 'html', + folder, + ), + properties: parsedInterface.properties.map((property) => ({ + name: property.name, + description: renderMarkdown( + linkify(property.description, interfacesWithDedicatedPage, 'html', folder), + ), + type: property.typeStr, + })), + }; + + await writePrettifiedFile( + path.resolve(apiPagesFolder, project.documentationFolderName, `${slug}.json`), + JSON.stringify(json), + project, + ); + // eslint-disable-next-line no-console + console.log('Built JSON file for', parsedInterface.name); + }), + ); } -export default async function buildInterfacesDocumentation( - options: BuildInterfacesDocumentationOptions, +type BuildInterfacesDocumentationPageOptions = BuildInterfacesCommonOptions & { + apiPagesDirectory: string; + translationPagesDirectory: string; + importTranslationPagesDirectory: string; +}; + +export async function buildInterfacesDocumentationPage( + options: BuildInterfacesDocumentationPageOptions, ) { - const { projects, apiPagesFolder } = options; + const { + projects, + apiPagesDirectory, + translationPagesDirectory, + importTranslationPagesDirectory, + folder, + interfaces, + } = options; const allProjectsName = Array.from(projects.keys()); const documentedInterfaces: DocumentedInterfaces = new Map(); - [ - ...OTHER_GRID_INTERFACES_WITH_DEDICATED_PAGES, - ...GRID_API_INTERFACES_WITH_DEDICATED_PAGES, - ].forEach((interfaceName) => { + + interfaces.forEach((interfaceName) => { const packagesWithThisInterface = allProjectsName.filter( (projectName) => !!projects.get(projectName)!.exports[interfaceName], ); @@ -264,7 +291,7 @@ export default async function buildInterfacesDocumentation( // eslint-disable-next-line no-await-in-loop const parsedInterface = await parseInterfaceSymbol( interfaceName, - documentedInterfaces, + packagesWithThisInterface, projects, ); if (!parsedInterface) { @@ -273,94 +300,80 @@ export default async function buildInterfacesDocumentation( const slug = kebabCase(parsedInterface.name); - if (GRID_API_INTERFACES_WITH_DEDICATED_PAGES.includes(parsedInterface.name)) { - const json = { - name: parsedInterface.name, - description: linkify(parsedInterface.description, documentedInterfaces, 'html'), - properties: parsedInterface.properties.map((property) => ({ - name: property.name, - description: renderMarkdown(linkify(property.description, documentedInterfaces, 'html')), - type: property.typeStr, - })), - }; - // eslint-disable-next-line no-await-in-loop - await writePrettifiedFile( - path.resolve(apiPagesFolder, project.documentationFolderName, `${slug}.json`), - JSON.stringify(json), - project, - ); - // eslint-disable-next-line no-console - console.log('Built JSON file for', parsedInterface.name); - } else { - const content = { - name: parsedInterface.name, - imports: generateImportStatement(parsedInterface, projects), - ...extractDemos(parsedInterface.tags.demos), - properties: {}, - }; + const content = { + name: parsedInterface.name, + imports: generateImportStatement(parsedInterface, projects), + ...extractDemos(parsedInterface.tags.demos), + properties: {}, + }; - const translations = { - interfaceDescription: renderMarkdown( - linkify(escapeCell(parsedInterface.description || ''), documentedInterfaces, 'html'), + const translations = { + interfaceDescription: renderMarkdown( + linkify( + escapeCell(parsedInterface.description || ''), + documentedInterfaces, + 'html', + folder, ), - propertiesDescriptions: {}, - }; + ), + propertiesDescriptions: {}, + }; - parsedInterface.properties - .map((property) => ({ - name: property.name, - description: renderMarkdown( - linkify(escapeCell(property.description), documentedInterfaces, 'html'), - ), - type: { description: escapeCell(property.typeStr) }, - default: getDefaultValue(property), - planLevel: getPlanLevel(property), - required: property.required, - })) - .sort((a, b) => { - if ((a.required && b.required) || (!a.required && !b.required)) { - return a.name.localeCompare(b.name); - } - if (a.required) { - return -1; - } - return 1; - }) - .forEach(({ name, description, type, default: defaultValue, required, planLevel }) => { - content.properties[name] = { type }; - if (defaultValue) { - content.properties[name].default = defaultValue; - } - if (required) { - content.properties[name].required = required; - } - if (planLevel === 'pro') { - content.properties[name].isProPlan = true; - } - if (planLevel === 'premium') { - content.properties[name].isPremiumPlan = true; - } - translations.propertiesDescriptions[name] = { description }; - }); - - // eslint-disable-next-line no-await-in-loop - await writePrettifiedFile( - path.resolve(apiPagesDirectory, `${slug}.json`), - JSON.stringify(content), - project, - ); + parsedInterface.properties + .map((property) => ({ + name: property.name, + description: renderMarkdown( + linkify(escapeCell(property.description), documentedInterfaces, 'html', folder), + ), + type: { description: escapeCell(property.typeStr) }, + default: getDefaultValue(property), + planLevel: getPlanLevel(property), + required: property.required, + })) + .sort((a, b) => { + if ((a.required && b.required) || (!a.required && !b.required)) { + return a.name.localeCompare(b.name); + } + if (a.required) { + return -1; + } + return 1; + }) + .forEach(({ name, description, type, default: defaultValue, required, planLevel }) => { + content.properties[name] = { type }; + if (defaultValue) { + content.properties[name].default = defaultValue; + } + if (required) { + content.properties[name].required = required; + } + if (planLevel === 'pro') { + content.properties[name].isProPlan = true; + } + if (planLevel === 'premium') { + content.properties[name].isPremiumPlan = true; + } + translations.propertiesDescriptions[name] = { description }; + }); - // eslint-disable-next-line no-await-in-loop - await writePrettifiedFile( - path.resolve(translationPagesDirectory, `${slug}.json`), - JSON.stringify(translations), - project, - ); + // eslint-disable-next-line no-await-in-loop + await writePrettifiedFile( + path.resolve(apiPagesDirectory, `${slug}.json`), + JSON.stringify(content), + project, + ); - // eslint-disable-next-line no-await-in-loop - await writePrettifiedFile( - path.resolve(apiPagesDirectory, `${slug}.js`), - `import * as React from 'react'; + // eslint-disable-next-line no-await-in-loop + await writePrettifiedFile( + path.resolve(translationPagesDirectory, `${slug}.json`), + JSON.stringify(translations), + project, + ); + + // eslint-disable-next-line no-await-in-loop + await writePrettifiedFile( + path.resolve(apiPagesDirectory, `${slug}.js`), + `import * as React from 'react'; import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; @@ -385,12 +398,11 @@ export default async function buildInterfacesDocumentation( }; }; `.replace(/\r?\n/g, EOL), - project, - ); + project, + ); - // eslint-disable-next-line no-console - console.log('Built API docs for', parsedInterface.name); - } + // eslint-disable-next-line no-console + console.log('Built API docs for', parsedInterface.name); } return documentedInterfaces; diff --git a/docs/scripts/api/utils.ts b/docs/scripts/api/utils.ts index 7f060a3805e5..cf41a4d81f4c 100644 --- a/docs/scripts/api/utils.ts +++ b/docs/scripts/api/utils.ts @@ -69,6 +69,7 @@ export function linkify( text: string | undefined, documentedInterfaces: DocumentedInterfaces, format: 'markdown' | 'html', + folder: string, ) { if (text == null) { return ''; @@ -79,7 +80,7 @@ export function linkify( if (!documentedInterfaces.get(content)) { return content; } - const url = `/x/api/data-grid/${kebabCase(content)}/`; + const url = `/x/api/${folder}/${kebabCase(content)}/`; return format === 'markdown' ? `[${content}](${url})` : `${content}`; }); } diff --git a/docs/scripts/createXTypeScriptProjects.ts b/docs/scripts/createXTypeScriptProjects.ts index a997d7689b42..c3fb3d16e9ff 100644 --- a/docs/scripts/createXTypeScriptProjects.ts +++ b/docs/scripts/createXTypeScriptProjects.ts @@ -114,6 +114,69 @@ const getComponentPaths = return paths; }; +type InterfacesToDocumentType = { + folder: string; + packages: XProjectNames[]; + documentedInterfaces: string[]; +}; + +export const interfacesToDocument: InterfacesToDocumentType[] = [ + { + folder: 'data-grid', + packages: ['x-data-grid', 'x-data-grid-pro', 'x-data-grid-premium', 'x-data-grid-generator'], + documentedInterfaces: [ + // apiRef + 'GridApi', + + // Params + 'GridCellParams', + 'GridRowParams', + 'GridRowClassNameParams', + 'GridRowSpacingParams', + 'GridExportStateParams', + + // Others + 'GridColDef', + 'GridSingleSelectColDef', + 'GridActionsColDef', + 'GridCsvExportOptions', + 'GridPrintExportOptions', + 'GridExcelExportOptions', + + // Filters + 'GridFilterModel', + 'GridFilterItem', + 'GridFilterOperator', + + // Aggregation + 'GridAggregationFunction', + ], + }, + // { + // folder: 'charts', + // packages: ['x-charts'], + // }, +]; + +export const datagridApiToDocument = [ + 'GridCellSelectionApi', + 'GridColumnPinningApi', + 'GridColumnResizeApi', + 'GridCsvExportApi', + 'GridDetailPanelApi', + 'GridEditingApi', + 'GridExcelExportApi', + 'GridFilterApi', + 'GridPaginationApi', + 'GridPrintExportApi', + 'GridRowGroupingApi', + 'GridRowMultiSelectionApi', + 'GridRowSelectionApi', + 'GridScrollApi', + 'GridSortApi', + 'GridVirtualizationApi', +]; + export const createXTypeScriptProjects = () => { const projects: XTypeScriptProjects = new Map(); From de609203e6c4a73202f8f2c80274537c2edbd6e6 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 18 Apr 2024 13:41:33 +0200 Subject: [PATCH 135/912] [TreeView] Support `defaultMuiPrevented` on the `onFocus` prop of the root slot (#12813) --- .../useTreeViewFocus/useTreeViewFocus.ts | 12 +++++++++--- .../useTreeViewJSXItems/useTreeViewJSXItems.tsx | 17 ++++++++--------- .../src/useTreeItem2/useTreeItem2.ts | 5 ----- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 63f51c998778..7f579a85adf9 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -7,6 +7,7 @@ import { UseTreeViewFocusSignature } from './useTreeViewFocus.types'; import { useInstanceEventHandler } from '../../hooks/useInstanceEventHandler'; import { getActiveElement } from '../../utils/utils'; import { getFirstNavigableItem } from '../../utils/tree'; +import { MuiCancellableEvent } from '../../models/MuiCancellableEvent'; const useTabbableItemId = ( instance: TreeViewUsedInstance, @@ -128,9 +129,14 @@ export const useTreeViewFocus: TreeViewPlugin = ({ } }); - const createHandleFocus = - (otherHandlers: EventHandlers) => (event: React.FocusEvent) => { + const createRootHandleFocus = + (otherHandlers: EventHandlers) => + (event: React.FocusEvent & MuiCancellableEvent) => { otherHandlers.onFocus?.(event); + if (event.defaultMuiPrevented) { + return; + } + // if the event bubbled (which is React specific) we don't want to steal focus if (event.target === event.currentTarget) { instance.focusDefaultItem(event); @@ -144,7 +150,7 @@ export const useTreeViewFocus: TreeViewPlugin = ({ return { getRootProps: (otherHandlers) => ({ - onFocus: createHandleFocus(otherHandlers), + onFocus: createRootHandleFocus(otherHandlers), 'aria-activedescendant': activeDescendant ?? undefined, }), publicAPI: { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index 5b2775a94cfc..e28b703fbed8 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -110,6 +110,13 @@ export const useTreeViewJSXItems: TreeViewPlugin = }; }; +const isItemExpandable = (reactChildren: React.ReactNode) => { + if (Array.isArray(reactChildren)) { + return reactChildren.length > 0 && reactChildren.some(isItemExpandable); + } + return Boolean(reactChildren); +}; + const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin = ({ props, rootRef, @@ -130,15 +137,7 @@ const useTreeViewJSXItemsItemPlugin: TreeViewItemPlugin { - if (Array.isArray(reactChildren)) { - return reactChildren.length > 0 && reactChildren.some(isExpandable); - } - return Boolean(reactChildren); - }; - - const expandable = isExpandable(children); - + const expandable = isItemExpandable(children); const pluginContentRef = React.useRef(null); const handleContentRef = useForkRef(pluginContentRef, contentRef); diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index b2c5ebbe8992..fe2dc1e70f76 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -37,7 +37,6 @@ export const useTreeItem2 = (event: React.FocusEvent & MuiCancellableEvent) => { otherHandlers.onFocus?.(event); - if (event.defaultMuiPrevented) { return; } @@ -52,7 +51,6 @@ export const useTreeItem2 = (event: React.FocusEvent & MuiCancellableEvent) => { otherHandlers.onBlur?.(event); - if (event.defaultMuiPrevented) { return; } @@ -64,7 +62,6 @@ export const useTreeItem2 = (event: React.KeyboardEvent & MuiCancellableEvent) => { otherHandlers.onKeyDown?.(event); - if (event.defaultMuiPrevented) { return; } @@ -75,7 +72,6 @@ export const useTreeItem2 = (event: React.MouseEvent & MuiCancellableEvent) => { otherHandlers.onClick?.(event); - if (event.defaultMuiPrevented) { return; } @@ -87,7 +83,6 @@ export const useTreeItem2 = (event: React.MouseEvent & MuiCancellableEvent) => { otherHandlers.onMouseDown?.(event); - if (event.defaultMuiPrevented) { return; } From 70faafce1ba79820d62172d4ae2b538dff4c2178 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 18 Apr 2024 17:10:44 +0500 Subject: [PATCH 136/912] [DataGrid] Support advanced server-side pagination use cases (#12474) --- docs/data/data-grid/events/events.json | 7 + .../data-grid/localization/localization.md | 2 +- .../pagination/CursorPaginationGrid.js | 115 ++++++++++--- .../pagination/CursorPaginationGrid.tsx | 124 +++++++++++--- .../CursorPaginationGrid.tsx.preview | 10 -- .../pagination/ServerPaginationGrid.js | 22 ++- .../pagination/ServerPaginationGrid.tsx | 22 ++- .../ServerPaginationGrid.tsx.preview | 2 +- .../ServerPaginationGridEstimated.js | 58 +++++++ .../ServerPaginationGridEstimated.tsx | 58 +++++++ .../ServerPaginationGridEstimated.tsx.preview | 16 ++ .../ServerPaginationGridNoRowCount.js | 55 ++++++ .../ServerPaginationGridNoRowCount.tsx | 55 ++++++ ...ServerPaginationGridNoRowCount.tsx.preview | 12 ++ docs/data/data-grid/pagination/pagination.md | 156 ++++++++++++++++-- .../x/api/data-grid/data-grid-premium.json | 9 + docs/pages/x/api/data-grid/data-grid-pro.json | 9 + docs/pages/x/api/data-grid/data-grid.json | 9 + docs/pages/x/api/data-grid/grid-api.json | 4 + .../x/api/data-grid/grid-pagination-api.json | 5 + docs/pages/x/api/data-grid/selectors.json | 7 + .../data-grid-premium/data-grid-premium.json | 12 +- .../data-grid-pro/data-grid-pro.json | 12 +- .../data-grid/data-grid/data-grid.json | 12 +- .../api-docs/data-grid/grid-api.json | 1 + .../src/hooks/useQuery.ts | 7 +- .../src/DataGridPremium/DataGridPremium.tsx | 19 +++ .../src/DataGridPro/DataGridPro.tsx | 19 +++ .../statePersistence.DataGridPro.test.tsx | 3 + .../x-data-grid/src/DataGrid/DataGrid.tsx | 19 +++ .../src/components/GridPagination.tsx | 63 ++++++- packages/x-data-grid/src/components/index.ts | 2 +- .../pagination/gridPaginationInterfaces.ts | 20 ++- .../pagination/gridPaginationSelector.ts | 14 +- .../pagination/gridPaginationUtils.ts | 16 +- .../features/pagination/useGridPagination.ts | 11 +- .../pagination/useGridPaginationMeta.ts | 113 +++++++++++++ .../pagination/useGridPaginationModel.ts | 3 +- .../features/pagination/useGridRowCount.ts | 68 +++++--- .../src/hooks/utils/useGridSelector.ts | 2 +- .../src/internals/utils/propValidation.ts | 21 ++- .../src/models/api/gridApiCommon.ts | 2 +- .../src/models/api/gridLocaleTextApi.ts | 17 +- packages/x-data-grid/src/models/api/index.ts | 2 +- .../src/models/events/gridEventLookup.ts | 6 +- .../src/models/gridPaginationProps.ts | 4 + .../src/models/props/DataGridProps.ts | 19 ++- .../src/tests/pagination.DataGrid.test.tsx | 67 ++++++-- .../src/utils/getGridLocalization.ts | 9 +- scripts/x-data-grid-premium.exports.json | 2 + scripts/x-data-grid-pro.exports.json | 2 + scripts/x-data-grid.exports.json | 2 + 52 files changed, 1145 insertions(+), 181 deletions(-) delete mode 100644 docs/data/data-grid/pagination/CursorPaginationGrid.tsx.preview create mode 100644 docs/data/data-grid/pagination/ServerPaginationGridEstimated.js create mode 100644 docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx create mode 100644 docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx.preview create mode 100644 docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.js create mode 100644 docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx create mode 100644 docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx.preview create mode 100644 packages/x-data-grid/src/hooks/features/pagination/useGridPaginationMeta.ts diff --git a/docs/data/data-grid/events/events.json b/docs/data/data-grid/events/events.json index 64c820e1c397..935d9560a69a 100644 --- a/docs/data/data-grid/events/events.json +++ b/docs/data/data-grid/events/events.json @@ -254,6 +254,13 @@ "event": "MuiEvent<{}>", "componentProp": "onMenuOpen" }, + { + "projects": ["x-data-grid", "x-data-grid-pro", "x-data-grid-premium"], + "name": "paginationMetaChange", + "description": "Fired when the pagination meta change.", + "params": "GridPaginationMeta", + "event": "MuiEvent<{}>" + }, { "projects": ["x-data-grid", "x-data-grid-pro", "x-data-grid-premium"], "name": "paginationModelChange", diff --git a/docs/data/data-grid/localization/localization.md b/docs/data/data-grid/localization/localization.md index 117d8792a96d..28197aed4c87 100644 --- a/docs/data/data-grid/localization/localization.md +++ b/docs/data/data-grid/localization/localization.md @@ -24,7 +24,7 @@ One example is the table pagination component used in the Data Grid footer when localeText={{ MuiTablePagination: { labelDisplayedRows: ({ from, to, count }) => - `${from} - ${to} of more than ${count}`, + `${from} - ${to} of ${count === -1 ? `more than ${to}` : count}`, }, }} /> diff --git a/docs/data/data-grid/pagination/CursorPaginationGrid.js b/docs/data/data-grid/pagination/CursorPaginationGrid.js index cf369037fa5f..04caad836070 100644 --- a/docs/data/data-grid/pagination/CursorPaginationGrid.js +++ b/docs/data/data-grid/pagination/CursorPaginationGrid.js @@ -1,5 +1,10 @@ import * as React from 'react'; import { DataGrid } from '@mui/x-data-grid'; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; import { createFakeServer } from '@mui/x-data-grid-generator'; const PAGE_SIZE = 5; @@ -11,6 +16,8 @@ const SERVER_OPTIONS = { const { useQuery, ...data } = createFakeServer({}, SERVER_OPTIONS); export default function CursorPaginationGrid() { + const [rowCountType, setRowCountType] = React.useState('known'); + const mapPageToNextCursor = React.useRef({}); const [paginationModel, setPaginationModel] = React.useState({ @@ -25,7 +32,11 @@ export default function CursorPaginationGrid() { }), [paginationModel], ); - const { isLoading, rows, pageInfo } = useQuery(queryOptions); + const { + isLoading, + rows, + pageInfo: { hasNextPage, nextCursor, totalRowCount }, + } = useQuery(queryOptions); const handlePaginationModelChange = (newPaginationModel) => { // We have the cursor, we can allow the page transition. @@ -37,38 +48,94 @@ export default function CursorPaginationGrid() { } }; + const paginationMetaRef = React.useRef(); + + // Memoize to avoid flickering when the `hasNextPage` is `undefined` during refetch + const paginationMeta = React.useMemo(() => { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; + }, [hasNextPage]); + React.useEffect(() => { - if (!isLoading && pageInfo?.nextCursor) { + if (!isLoading && nextCursor) { // We add nextCursor when available - mapPageToNextCursor.current[paginationModel.page] = pageInfo?.nextCursor; + mapPageToNextCursor.current[paginationModel.page] = nextCursor; } - }, [paginationModel.page, isLoading, pageInfo?.nextCursor]); + }, [paginationModel.page, isLoading, nextCursor]); // Some API clients return undefined while loading // Following lines are here to prevent `rowCountState` from being undefined during the loading - const [rowCountState, setRowCountState] = React.useState( - pageInfo?.totalRowCount || 0, - ); + const [rowCountState, setRowCountState] = React.useState(totalRowCount || 0); React.useEffect(() => { - setRowCountState((prevRowCountState) => - pageInfo?.totalRowCount !== undefined - ? pageInfo?.totalRowCount - : prevRowCountState, - ); - }, [pageInfo?.totalRowCount, setRowCountState]); + if (rowCountType === 'known') { + setRowCountState((prevRowCountState) => + totalRowCount !== undefined ? totalRowCount : prevRowCountState, + ); + } + if ( + (rowCountType === 'unknown' || rowCountType === 'estimated') && + paginationMeta?.hasNextPage !== false + ) { + setRowCountState(-1); + } + }, [paginationMeta?.hasNextPage, rowCountType, totalRowCount]); + + const prevEstimatedRowCount = React.useRef(undefined); + const estimatedRowCount = React.useMemo(() => { + if (rowCountType === 'estimated') { + if (totalRowCount !== undefined) { + if (prevEstimatedRowCount.current === undefined) { + prevEstimatedRowCount.current = totalRowCount / 2; + } + return totalRowCount / 2; + } + return prevEstimatedRowCount.current; + } + return undefined; + }, [rowCountType, totalRowCount]); return ( -
    - +
    + + + Row count + + setRowCountType(e.target.value)} + > + } label="Known" /> + } label="Unknown" /> + } + label="Estimated" + /> + + +
    + setRowCountState(newRowCount)} + estimatedRowCount={estimatedRowCount} + paginationMeta={paginationMeta} + paginationMode="server" + onPaginationModelChange={handlePaginationModelChange} + paginationModel={paginationModel} + loading={isLoading} + /> +
    ); } diff --git a/docs/data/data-grid/pagination/CursorPaginationGrid.tsx b/docs/data/data-grid/pagination/CursorPaginationGrid.tsx index 5aff7d9779f2..d54e3e806c7d 100644 --- a/docs/data/data-grid/pagination/CursorPaginationGrid.tsx +++ b/docs/data/data-grid/pagination/CursorPaginationGrid.tsx @@ -1,5 +1,15 @@ import * as React from 'react'; -import { DataGrid, GridRowId, GridPaginationModel } from '@mui/x-data-grid'; +import { + DataGrid, + GridRowId, + GridPaginationModel, + GridPaginationMeta, +} from '@mui/x-data-grid'; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; import { createFakeServer } from '@mui/x-data-grid-generator'; const PAGE_SIZE = 5; @@ -10,7 +20,11 @@ const SERVER_OPTIONS = { const { useQuery, ...data } = createFakeServer({}, SERVER_OPTIONS); +type RowCountType = 'known' | 'unknown' | 'estimated'; + export default function CursorPaginationGrid() { + const [rowCountType, setRowCountType] = React.useState('known'); + const mapPageToNextCursor = React.useRef<{ [page: number]: GridRowId }>({}); const [paginationModel, setPaginationModel] = React.useState({ @@ -25,7 +39,11 @@ export default function CursorPaginationGrid() { }), [paginationModel], ); - const { isLoading, rows, pageInfo } = useQuery(queryOptions); + const { + isLoading, + rows, + pageInfo: { hasNextPage, nextCursor, totalRowCount }, + } = useQuery(queryOptions); const handlePaginationModelChange = (newPaginationModel: GridPaginationModel) => { // We have the cursor, we can allow the page transition. @@ -37,38 +55,94 @@ export default function CursorPaginationGrid() { } }; + const paginationMetaRef = React.useRef(); + + // Memoize to avoid flickering when the `hasNextPage` is `undefined` during refetch + const paginationMeta = React.useMemo(() => { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; + }, [hasNextPage]); + React.useEffect(() => { - if (!isLoading && pageInfo?.nextCursor) { + if (!isLoading && nextCursor) { // We add nextCursor when available - mapPageToNextCursor.current[paginationModel.page] = pageInfo?.nextCursor; + mapPageToNextCursor.current[paginationModel.page] = nextCursor; } - }, [paginationModel.page, isLoading, pageInfo?.nextCursor]); + }, [paginationModel.page, isLoading, nextCursor]); // Some API clients return undefined while loading // Following lines are here to prevent `rowCountState` from being undefined during the loading - const [rowCountState, setRowCountState] = React.useState( - pageInfo?.totalRowCount || 0, - ); + const [rowCountState, setRowCountState] = React.useState(totalRowCount || 0); React.useEffect(() => { - setRowCountState((prevRowCountState) => - pageInfo?.totalRowCount !== undefined - ? pageInfo?.totalRowCount - : prevRowCountState, - ); - }, [pageInfo?.totalRowCount, setRowCountState]); + if (rowCountType === 'known') { + setRowCountState((prevRowCountState) => + totalRowCount !== undefined ? totalRowCount : prevRowCountState, + ); + } + if ( + (rowCountType === 'unknown' || rowCountType === 'estimated') && + paginationMeta?.hasNextPage !== false + ) { + setRowCountState(-1); + } + }, [paginationMeta?.hasNextPage, rowCountType, totalRowCount]); + + const prevEstimatedRowCount = React.useRef(undefined); + const estimatedRowCount = React.useMemo(() => { + if (rowCountType === 'estimated') { + if (totalRowCount !== undefined) { + if (prevEstimatedRowCount.current === undefined) { + prevEstimatedRowCount.current = totalRowCount / 2; + } + return totalRowCount / 2; + } + return prevEstimatedRowCount.current; + } + return undefined; + }, [rowCountType, totalRowCount]); return ( -
    - +
    + + + Row count + + setRowCountType(e.target.value as RowCountType)} + > + } label="Known" /> + } label="Unknown" /> + } + label="Estimated" + /> + + +
    + setRowCountState(newRowCount)} + estimatedRowCount={estimatedRowCount} + paginationMeta={paginationMeta} + paginationMode="server" + onPaginationModelChange={handlePaginationModelChange} + paginationModel={paginationModel} + loading={isLoading} + /> +
    ); } diff --git a/docs/data/data-grid/pagination/CursorPaginationGrid.tsx.preview b/docs/data/data-grid/pagination/CursorPaginationGrid.tsx.preview deleted file mode 100644 index 32c24513f995..000000000000 --- a/docs/data/data-grid/pagination/CursorPaginationGrid.tsx.preview +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/docs/data/data-grid/pagination/ServerPaginationGrid.js b/docs/data/data-grid/pagination/ServerPaginationGrid.js index 0bcb826f4034..6b142879e4f9 100644 --- a/docs/data/data-grid/pagination/ServerPaginationGrid.js +++ b/docs/data/data-grid/pagination/ServerPaginationGrid.js @@ -17,24 +17,22 @@ export default function ServerPaginationGrid() { const { isLoading, rows, pageInfo } = useQuery(paginationModel); // Some API clients return undefined while loading - // Following lines are here to prevent `rowCountState` from being undefined during the loading - const [rowCountState, setRowCountState] = React.useState( - pageInfo?.totalRowCount || 0, - ); - React.useEffect(() => { - setRowCountState((prevRowCountState) => - pageInfo?.totalRowCount !== undefined - ? pageInfo?.totalRowCount - : prevRowCountState, - ); - }, [pageInfo?.totalRowCount, setRowCountState]); + // Following lines are here to prevent `rowCount` from being undefined during the loading + const rowCountRef = React.useRef(pageInfo?.totalRowCount || 0); + + const rowCount = React.useMemo(() => { + if (pageInfo?.totalRowCount !== undefined) { + rowCountRef.current = pageInfo.totalRowCount; + } + return rowCountRef.current; + }, [pageInfo?.totalRowCount]); return (
    { - setRowCountState((prevRowCountState) => - pageInfo?.totalRowCount !== undefined - ? pageInfo?.totalRowCount - : prevRowCountState, - ); - }, [pageInfo?.totalRowCount, setRowCountState]); + // Following lines are here to prevent `rowCount` from being undefined during the loading + const rowCountRef = React.useRef(pageInfo?.totalRowCount || 0); + + const rowCount = React.useMemo(() => { + if (pageInfo?.totalRowCount !== undefined) { + rowCountRef.current = pageInfo.totalRowCount; + } + return rowCountRef.current; + }, [pageInfo?.totalRowCount]); return (
    { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; + }, [hasNextPage]); + + return ( +
    + +
    + +
    +
    + ); +} diff --git a/docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx b/docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx new file mode 100644 index 000000000000..6191eb8232a8 --- /dev/null +++ b/docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx @@ -0,0 +1,58 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; +import type { GridPaginationMeta } from '@mui/x-data-grid'; +import { createFakeServer } from '@mui/x-data-grid-generator'; + +const SERVER_OPTIONS = { + useCursorPagination: false, +}; + +const { useQuery, ...data } = createFakeServer({ rowLength: 1000 }, SERVER_OPTIONS); + +export default function ServerPaginationGridEstimated() { + const apiRef = useGridApiRef(); + const [paginationModel, setPaginationModel] = React.useState({ + page: 0, + pageSize: 50, + }); + + const { + isLoading, + rows, + pageInfo: { hasNextPage }, + } = useQuery(paginationModel); + + const paginationMetaRef = React.useRef({}); + // Memoize to avoid flickering when the `hasNextPage` is `undefined` during refetch + const paginationMeta = React.useMemo(() => { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; + }, [hasNextPage]); + + return ( +
    + +
    + +
    +
    + ); +} diff --git a/docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx.preview b/docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx.preview new file mode 100644 index 000000000000..82b7e4ec6ffe --- /dev/null +++ b/docs/data/data-grid/pagination/ServerPaginationGridEstimated.tsx.preview @@ -0,0 +1,16 @@ + +
    + +
    \ No newline at end of file diff --git a/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.js b/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.js new file mode 100644 index 000000000000..2de106edc5d3 --- /dev/null +++ b/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.js @@ -0,0 +1,55 @@ +import * as React from 'react'; +import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; +import { createFakeServer } from '@mui/x-data-grid-generator'; + +const SERVER_OPTIONS = { + useCursorPagination: false, +}; + +const rowLength = 98; + +const { useQuery, ...data } = createFakeServer({ rowLength }, SERVER_OPTIONS); + +export default function ServerPaginationGridNoRowCount() { + const apiRef = useGridApiRef(); + const [paginationModel, setPaginationModel] = React.useState({ + page: 0, + pageSize: 5, + }); + + const { + isLoading, + rows, + pageInfo: { hasNextPage }, + } = useQuery(paginationModel); + + const paginationMetaRef = React.useRef(); + + // Memoize to avoid flickering when the `hasNextPage` is `undefined` during refetch + const paginationMeta = React.useMemo(() => { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; + }, [hasNextPage]); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx b/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx new file mode 100644 index 000000000000..bb35ce14cebd --- /dev/null +++ b/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx @@ -0,0 +1,55 @@ +import * as React from 'react'; +import { DataGrid, GridPaginationMeta, useGridApiRef } from '@mui/x-data-grid'; +import { createFakeServer } from '@mui/x-data-grid-generator'; + +const SERVER_OPTIONS = { + useCursorPagination: false, +}; + +const rowLength = 98; + +const { useQuery, ...data } = createFakeServer({ rowLength }, SERVER_OPTIONS); + +export default function ServerPaginationGridNoRowCount() { + const apiRef = useGridApiRef(); + const [paginationModel, setPaginationModel] = React.useState({ + page: 0, + pageSize: 5, + }); + + const { + isLoading, + rows, + pageInfo: { hasNextPage }, + } = useQuery(paginationModel); + + const paginationMetaRef = React.useRef(); + + // Memoize to avoid flickering when the `hasNextPage` is `undefined` during refetch + const paginationMeta = React.useMemo(() => { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; + }, [hasNextPage]); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx.preview b/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx.preview new file mode 100644 index 000000000000..5c6f399b3aa0 --- /dev/null +++ b/docs/data/data-grid/pagination/ServerPaginationGridNoRowCount.tsx.preview @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/docs/data/data-grid/pagination/pagination.md b/docs/data/data-grid/pagination/pagination.md index a3af0fb6ac26..d23efc50aa1f 100644 --- a/docs/data/data-grid/pagination/pagination.md +++ b/docs/data/data-grid/pagination/pagination.md @@ -94,40 +94,160 @@ const [paginationModel, setPaginationModel] = React.useState({ By default, the pagination is handled on the client. This means you have to give the rows of all pages to the data grid. -If your dataset is too big, and you only want to fetch the current page, you can use server-side pagination. +If your dataset is too big, and you want to fetch the pages on demand, you can use server-side pagination. + +In general, the server-side pagination could be categorized into two types: + +- Index-based pagination +- Cursor-based pagination :::info Check out [Selection—Usage with server-side pagination](/x/react-data-grid/row-selection/#usage-with-server-side-pagination) for more details. ::: -### Basic implementation +### Index-based pagination -- Set the prop `paginationMode` to `server` -- Provide a `rowCount` prop to let the data grid know how many pages there are -- Use the `onPaginationModelChange` prop callback to load the rows when the page changes +The index-based pagination uses the `page` and `pageSize` to fetch the data from the server page by page. -Since the `rowCount` prop is used to compute the number of available pages, switching it to `undefined` during loading resets the page to zero. -To avoid this problem, you can keep the previous value of `rowCount` while loading as follows: +To enable server-side pagination, you need to: -```jsx -const [rowCountState, setRowCountState] = React.useState(rowCount); -React.useEffect(() => { - setRowCountState((prevRowCountState) => - rowCount !== undefined ? rowCount : prevRowCountState, - ); -}, [rowCount, setRowCountState]); - -; -``` +- Set the `paginationMode` prop to `server` +- Use the `onPaginationModelChange` prop to react to the page changes and load the data from the server + +The server-side pagination can be further categorized into sub-types based on the availability of the total number of rows or `rowCount`. + +The Data Grid uses the `rowCount` to calculate the number of pages and to show the information about the current state of the pagination in the footer. +You can provide the `rowCount` in one of the following ways: + +- **Initialize.** + Use the `initialState.pagination.rowCount` prop to initialize the `rowCount`. +- **Control.** + Use the `rowCount` prop along with `onRowCountChange` to control the `rowCount` and reflect the changes when the row count is updated. +- **Set using the API.** + Use the `apiRef.current.setRowCount` method to set the `rowCount` after the Grid is initialized. + +There can be three different possibilities regarding the availability of the `rowCount` on the server-side: + +1. Row count is available (known) +2. Row count is not available (unknown) +3. Row count is available but is not accurate and may update later on (estimated) :::warning The `rowCount` prop is used in server-side pagination mode to inform the DataGrid about the total number of rows in your dataset. This prop is ignored when the `paginationMode` is set to `client`, i.e. when the pagination is handled on the client-side. ::: +You can configure `rowCount`, `paginationMeta.hasNextPage`, and `estimatedRowCount` props to handle the above scenarios. + +| | `rowCount` | `paginationMeta.hasNextPage` | `estimatedRowCount` | +| :------------------ | :--------- | :--------------------------- | :------------------ | +| Known row count | `number` | — | — | +| Unknown row count | `-1` | `boolean` | — | +| Estimated row count | `-1` | `boolean` | `number` | + +#### Known row count + +Pass the props to the Data Grid as explained in the table above to handle the case when the actual row count is known, as the following example demonstrates. + {{"demo": "ServerPaginationGrid.js", "bg": "inline"}} -### Cursor implementation +:::warning +If the value `rowCount` becomes `undefined` during loading, it will reset the page to zero. +To avoid this issue, you can memoize the `rowCount` value to ensure it doesn't change during loading: + +```jsx +const rowCountRef = React.useRef(pageInfo?.totalRowCount || 0); + +const rowCount = React.useMemo(() => { + if (pageInfo?.totalRowCount !== undefined) { + rowCountRef.current = pageInfo.totalRowCount; + } + return rowCountRef.current; +}, [pageInfo?.totalRowCount]); + +; +``` + +::: + +#### Unknown row count + +Pass the props to the Data Grid as explained in the table above to handle the case when the actual row count is unknown, as the following example demonstrates. + +{{"demo": "ServerPaginationGridNoRowCount.js", "bg": "inline"}} + +:::warning +The value of the `hasNextPage` variable might become `undefined` during loading if it's handled by some external fetching hook resulting in unwanted computations, one possible solution could be to memoize the `paginationMeta`: + +```tsx +const paginationMetaRef = React.useRef(); + +const paginationMeta = React.useMemo(() => { + if ( + hasNextPage !== undefined && + paginationMetaRef.current?.hasNextPage !== hasNextPage + ) { + paginationMetaRef.current = { hasNextPage }; + } + return paginationMetaRef.current; +}, [hasNextPage]); +``` + +::: + +#### Estimated row count + +Estimated row count could be considered a hybrid approach that switches between the "Known row count" and "Unknown row count" use cases. + +Initially, when an `estimatedRowCount` is set and `rowCount={-1}`, the Data Grid behaves as in the "Unknown row count" use case, but with the `estimatedRowCount` value shown in the pagination footer. + +If the number of rows loaded exceeds the `estimatedRowCount`, the Data Grid ignores the `estimatedRowCount` and the behavior is identical to the "Unknown row count" use case. + +When the `hasNextPage` returns `false` or `rowCount` is set to a positive number, the Data Grid switches to the "Known row count" behavior. + +In the following example, the actual row count is `1000` but the Data Grid is initially provided with `estimatedRowCount={100}`. +You can set the `rowCount` to the actual row count by pressing the "Set Row Count" button. + +{{"demo": "ServerPaginationGridEstimated.js", "bg": "inline"}} + +:::warning +The `hasNextPage` must not be set to `false` until there are _actually_ no records left to fetch, because when `hasNextPage` becomes `false`, the Grid considers this as the last page and tries to set the `rowCount` value to a finite value. + +If an external data fetching library sets the values to undefined during loading, you can memoize the `paginationMeta` value to ensure it doesn't change during loading as shown in the "Unknown row count" section. +::: + +:::info + +🌍 **Localization of the estimated row count** + +The Data Grid uses the [Table Pagination](/material-ui/api/table-pagination/) component from the Material UI library which doesn't support `estimated` row count. Until this is supported natively by the Table Pagination component, a workaround to make the localization work is to provide the `labelDisplayedRows` function to the `localeText.MuiTablePagination` property as per the locale you are interested in. + +The Grid injects an additional variable `estimated` to the `labelDisplayedRows` function which you can use to accomodate the estimated row count. +The following example demonstrates how to show the estimated row count in the pagination footer in the Croatian (hr-HR) language. + +```jsx +const labelDisplayedRows = ({ from, to, count, estimated }) => { + if (!estimated) { + return `${from}–${to} od ${count !== -1 ? count : `više nego ${to}`}`, + } + return `${from}–${to} od ${count !== -1 ? count : `više nego ${estimated > to ? estimated : to}`}`; +} + + +``` + +For more information, see [Translation keys](/x/react-data-grid/localization/#translation-keys) section of the localization documentation. + +::: + +### Cursor-based pagination You can also handle servers with cursor-based pagination. To do so, you just have to keep track of the next cursor associated with each page you fetched. diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index 5d72c3f2e9fc..5800b14cc52f 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -73,6 +73,7 @@ "type": { "name": "enum", "description": "'cell'
    | 'row'" }, "default": "\"cell\"" }, + "estimatedRowCount": { "type": { "name": "number" } }, "experimentalFeatures": { "type": { "name": "shape", "description": "{ warnIfFocusStateIsNotSynced?: bool }" } }, @@ -406,6 +407,13 @@ "describedArgs": ["params", "event", "details"] } }, + "onPaginationMetaChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(paginationMeta: GridPaginationMeta) => void", + "describedArgs": ["paginationMeta"] + } + }, "onPaginationModelChange": { "type": { "name": "func" }, "signature": { @@ -527,6 +535,7 @@ "default": "[25, 50, 100]" }, "pagination": { "type": { "name": "bool" }, "default": "false" }, + "paginationMeta": { "type": { "name": "shape", "description": "{ hasNextPage?: bool }" } }, "paginationMode": { "type": { "name": "enum", "description": "'client'
    | 'server'" }, "default": "\"client\"" diff --git a/docs/pages/x/api/data-grid/data-grid-pro.json b/docs/pages/x/api/data-grid/data-grid-pro.json index 732f9d1513e9..5e96f8adbe84 100644 --- a/docs/pages/x/api/data-grid/data-grid-pro.json +++ b/docs/pages/x/api/data-grid/data-grid-pro.json @@ -59,6 +59,7 @@ "type": { "name": "enum", "description": "'cell'
    | 'row'" }, "default": "\"cell\"" }, + "estimatedRowCount": { "type": { "name": "number" } }, "experimentalFeatures": { "type": { "name": "shape", "description": "{ warnIfFocusStateIsNotSynced?: bool }" } }, @@ -356,6 +357,13 @@ "describedArgs": ["params", "event", "details"] } }, + "onPaginationMetaChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(paginationMeta: GridPaginationMeta) => void", + "describedArgs": ["paginationMeta"] + } + }, "onPaginationModelChange": { "type": { "name": "func" }, "signature": { @@ -470,6 +478,7 @@ "default": "[25, 50, 100]" }, "pagination": { "type": { "name": "bool" }, "default": "false" }, + "paginationMeta": { "type": { "name": "shape", "description": "{ hasNextPage?: bool }" } }, "paginationMode": { "type": { "name": "enum", "description": "'client'
    | 'server'" }, "default": "\"client\"" diff --git a/docs/pages/x/api/data-grid/data-grid.json b/docs/pages/x/api/data-grid/data-grid.json index 4b7fc7836b78..8fad1a4c4063 100644 --- a/docs/pages/x/api/data-grid/data-grid.json +++ b/docs/pages/x/api/data-grid/data-grid.json @@ -48,6 +48,7 @@ "type": { "name": "enum", "description": "'cell'
    | 'row'" }, "default": "\"cell\"" }, + "estimatedRowCount": { "type": { "name": "number" } }, "experimentalFeatures": { "type": { "name": "shape", "description": "{ warnIfFocusStateIsNotSynced?: bool }" } }, @@ -301,6 +302,13 @@ "describedArgs": ["params", "event", "details"] } }, + "onPaginationMetaChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(paginationMeta: GridPaginationMeta) => void", + "describedArgs": ["paginationMeta"] + } + }, "onPaginationModelChange": { "type": { "name": "func" }, "signature": { @@ -393,6 +401,7 @@ }, "default": "[25, 50, 100]" }, + "paginationMeta": { "type": { "name": "shape", "description": "{ hasNextPage?: bool }" } }, "paginationMode": { "type": { "name": "enum", "description": "'client'
    | 'server'" }, "default": "\"client\"" diff --git a/docs/pages/x/api/data-grid/grid-api.json b/docs/pages/x/api/data-grid/grid-api.json index 4acb3f3986bb..a4fc87914cd1 100644 --- a/docs/pages/x/api/data-grid/grid-api.json +++ b/docs/pages/x/api/data-grid/grid-api.json @@ -346,6 +346,10 @@ }, "setPage": { "type": { "description": "(page: number) => void" }, "required": true }, "setPageSize": { "type": { "description": "(pageSize: number) => void" }, "required": true }, + "setPaginationMeta": { + "type": { "description": "(paginationMeta: GridPaginationMeta) => void" }, + "required": true + }, "setPaginationModel": { "type": { "description": "(model: GridPaginationModel) => void" }, "required": true diff --git a/docs/pages/x/api/data-grid/grid-pagination-api.json b/docs/pages/x/api/data-grid/grid-pagination-api.json index b782ce762515..47f7684b511e 100644 --- a/docs/pages/x/api/data-grid/grid-pagination-api.json +++ b/docs/pages/x/api/data-grid/grid-pagination-api.json @@ -12,6 +12,11 @@ "description": "Sets the number of displayed rows to the value given by pageSize.", "type": "(pageSize: number) => void" }, + { + "name": "setPaginationMeta", + "description": "Sets the paginationMeta to a new value.", + "type": "(paginationMeta: GridPaginationMeta) => void" + }, { "name": "setPaginationModel", "description": "Sets the paginationModel to a new value.", diff --git a/docs/pages/x/api/data-grid/selectors.json b/docs/pages/x/api/data-grid/selectors.json index 1140b1bf1d94..e10bb19d717b 100644 --- a/docs/pages/x/api/data-grid/selectors.json +++ b/docs/pages/x/api/data-grid/selectors.json @@ -311,6 +311,13 @@ "description": "Get the id of each row to include in the current page if the pagination is enabled.", "supportsApiRef": true }, + { + "name": "gridPaginationMetaSelector", + "returnType": "GridPaginationMeta", + "category": "Pagination", + "description": "Get the pagination meta", + "supportsApiRef": true + }, { "name": "gridPaginationModelSelector", "returnType": "GridPaginationModel", diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index db2671217fab..dc1028649c3e 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -104,6 +104,9 @@ "description": "If true, the virtualization is disabled." }, "editMode": { "description": "Controls whether to use the cell or row editing." }, + "estimatedRowCount": { + "description": "Use if the actual rowCount is not known upfront, but an estimation is available. If some rows have children (for instance in the tree data), this number represents the amount of top level rows. Applicable only with paginationMode="server" and when rowCount="-1"" + }, "experimentalFeatures": { "description": "Unstable features, breaking changes might be introduced. For each feature, if the flag is not explicitly set to true, then the feature is fully disabled, and neither property nor method calls will have any effect." }, @@ -438,6 +441,10 @@ "details": "Additional details for this callback." } }, + "onPaginationMetaChange": { + "description": "Callback fired when the pagination meta has changed.", + "typeDescriptions": { "paginationMeta": "Updated pagination meta." } + }, "onPaginationModelChange": { "description": "Callback fired when the pagination model has changed.", "typeDescriptions": { @@ -560,6 +567,9 @@ }, "pageSizeOptions": { "description": "Select the pageSize dynamically using the component UI." }, "pagination": { "description": "If true, pagination is enabled." }, + "paginationMeta": { + "description": "The extra information about the pagination state of the Data Grid. Only applicable with paginationMode="server"." + }, "paginationMode": { "description": "Pagination can be processed on the server or client-side. Set it to 'client' if you would like to handle the pagination on the client-side. Set it to 'server' if you would like to handle the pagination on the server-side." }, @@ -579,7 +589,7 @@ "resizeThrottleMs": { "description": "The milliseconds throttle delay for resizing the grid." }, "rowBufferPx": { "description": "Row region in pixels to render before/after the viewport" }, "rowCount": { - "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows." + "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows. Only works with paginationMode="server", ignored when paginationMode="client"." }, "rowGroupingColumnMode": { "description": "If single, all the columns that are grouped are represented in the same grid column. If multiple, each column that is grouped is represented in its own grid column." diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index d95a4ffd05e3..3bc27f5060e0 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -92,6 +92,9 @@ "description": "If true, the virtualization is disabled." }, "editMode": { "description": "Controls whether to use the cell or row editing." }, + "estimatedRowCount": { + "description": "Use if the actual rowCount is not known upfront, but an estimation is available. If some rows have children (for instance in the tree data), this number represents the amount of top level rows. Applicable only with paginationMode="server" and when rowCount="-1"" + }, "experimentalFeatures": { "description": "Unstable features, breaking changes might be introduced. For each feature, if the flag is not explicitly set to true, the feature will be fully disabled and any property / method call will not have any effect." }, @@ -391,6 +394,10 @@ "details": "Additional details for this callback." } }, + "onPaginationMetaChange": { + "description": "Callback fired when the pagination meta has changed.", + "typeDescriptions": { "paginationMeta": "Updated pagination meta." } + }, "onPaginationModelChange": { "description": "Callback fired when the pagination model has changed.", "typeDescriptions": { @@ -506,6 +513,9 @@ }, "pageSizeOptions": { "description": "Select the pageSize dynamically using the component UI." }, "pagination": { "description": "If true, pagination is enabled." }, + "paginationMeta": { + "description": "The extra information about the pagination state of the Data Grid. Only applicable with paginationMode="server"." + }, "paginationMode": { "description": "Pagination can be processed on the server or client-side. Set it to 'client' if you would like to handle the pagination on the client-side. Set it to 'server' if you would like to handle the pagination on the server-side." }, @@ -525,7 +535,7 @@ "resizeThrottleMs": { "description": "The milliseconds throttle delay for resizing the grid." }, "rowBufferPx": { "description": "Row region in pixels to render before/after the viewport" }, "rowCount": { - "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows." + "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows. Only works with paginationMode="server", ignored when paginationMode="client"." }, "rowHeight": { "description": "Sets the height in pixel of a row in the Data Grid." }, "rowModesModel": { "description": "Controls the modes of the rows." }, diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index 4f472991918d..abe89e1a6073 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -67,6 +67,9 @@ "description": "If true, the virtualization is disabled." }, "editMode": { "description": "Controls whether to use the cell or row editing." }, + "estimatedRowCount": { + "description": "Use if the actual rowCount is not known upfront, but an estimation is available. If some rows have children (for instance in the tree data), this number represents the amount of top level rows. Applicable only with paginationMode="server" and when rowCount="-1"" + }, "experimentalFeatures": { "description": "Unstable features, breaking changes might be introduced. For each feature, if the flag is not explicitly set to true, the feature will be fully disabled and any property / method call will not have any effect." }, @@ -319,6 +322,10 @@ "details": "Additional details for this callback." } }, + "onPaginationMetaChange": { + "description": "Callback fired when the pagination meta has changed.", + "typeDescriptions": { "paginationMeta": "Updated pagination meta." } + }, "onPaginationModelChange": { "description": "Callback fired when the pagination model has changed.", "typeDescriptions": { @@ -410,6 +417,9 @@ } }, "pageSizeOptions": { "description": "Select the pageSize dynamically using the component UI." }, + "paginationMeta": { + "description": "The extra information about the pagination state of the Data Grid. Only applicable with paginationMode="server"." + }, "paginationMode": { "description": "Pagination can be processed on the server or client-side. Set it to 'client' if you would like to handle the pagination on the client-side. Set it to 'server' if you would like to handle the pagination on the server-side." }, @@ -427,7 +437,7 @@ "resizeThrottleMs": { "description": "The milliseconds throttle delay for resizing the grid." }, "rowBufferPx": { "description": "Row region in pixels to render before/after the viewport" }, "rowCount": { - "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows." + "description": "Set the total number of rows, if it is different from the length of the value rows prop. If some rows have children (for instance in the tree data), this number represents the amount of top level rows. Only works with paginationMode="server", ignored when paginationMode="client"." }, "rowHeight": { "description": "Sets the height in pixel of a row in the Data Grid." }, "rowModesModel": { "description": "Controls the modes of the rows." }, diff --git a/docs/translations/api-docs/data-grid/grid-api.json b/docs/translations/api-docs/data-grid/grid-api.json index ba27c6f79b3a..02e89d3757ea 100644 --- a/docs/translations/api-docs/data-grid/grid-api.json +++ b/docs/translations/api-docs/data-grid/grid-api.json @@ -184,6 +184,7 @@ "setPageSize": { "description": "Sets the number of displayed rows to the value given by pageSize." }, + "setPaginationMeta": { "description": "Sets the paginationMeta to a new value." }, "setPaginationModel": { "description": "Sets the paginationModel to a new value." }, diff --git a/packages/x-data-grid-generator/src/hooks/useQuery.ts b/packages/x-data-grid-generator/src/hooks/useQuery.ts index c000f6cfab76..55adae6cb6a7 100644 --- a/packages/x-data-grid-generator/src/hooks/useQuery.ts +++ b/packages/x-data-grid-generator/src/hooks/useQuery.ts @@ -146,9 +146,11 @@ export const loadServerRows = ( firstRowIndex = page * pageSize; lastRowIndex = (page + 1) * pageSize; } + const hasNextPage = lastRowIndex < filteredRows.length - 1; const response: FakeServerResponse = { returnedRows: filteredRows.slice(firstRowIndex, lastRowIndex), nextCursor, + hasNextPage, totalRowCount, }; @@ -162,12 +164,14 @@ export const loadServerRows = ( interface FakeServerResponse { returnedRows: GridRowModel[]; nextCursor?: string; + hasNextPage: boolean; totalRowCount: number; } interface PageInfo { totalRowCount?: number; nextCursor?: string; + hasNextPage?: boolean; pageSize?: number; } @@ -249,7 +253,7 @@ export const createFakeServer = ( ); (async function fetchData() { - const { returnedRows, nextCursor, totalRowCount } = await loadServerRows( + const { returnedRows, nextCursor, totalRowCount, hasNextPage } = await loadServerRows( rows, queryOptions, serverOptionsWithDefault, @@ -263,6 +267,7 @@ export const createFakeServer = ( pageInfo: { totalRowCount, nextCursor, + hasNextPage, pageSize: returnedRows.length, }, }; diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index ed9e568c6f46..9e3f04214546 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -313,6 +313,12 @@ DataGridPremiumRaw.propTypes = { * @default "cell" */ editMode: PropTypes.oneOf(['cell', 'row']), + /** + * Use if the actual rowCount is not known upfront, but an estimation is available. + * If some rows have children (for instance in the tree data), this number represents the amount of top level rows. + * Applicable only with `paginationMode="server"` and when `rowCount="-1"` + */ + estimatedRowCount: PropTypes.number, /** * Unstable features, breaking changes might be introduced. * For each feature, if the flag is not explicitly set to `true`, then the feature is fully disabled, and neither property nor method calls will have any effect. @@ -720,6 +726,11 @@ DataGridPremiumRaw.propTypes = { * @param {GridCallbackDetails} details Additional details for this callback. */ onMenuOpen: PropTypes.func, + /** + * Callback fired when the pagination meta has changed. + * @param {GridPaginationMeta} paginationMeta Updated pagination meta. + */ + onPaginationMetaChange: PropTypes.func, /** * Callback fired when the pagination model has changed. * @param {GridPaginationModel} model Updated pagination model. @@ -854,6 +865,13 @@ DataGridPremiumRaw.propTypes = { * @default false */ pagination: PropTypes.bool, + /** + * The extra information about the pagination state of the Data Grid. + * Only applicable with `paginationMode="server"`. + */ + paginationMeta: PropTypes.shape({ + hasNextPage: PropTypes.bool, + }), /** * Pagination can be processed on the server or client-side. * Set it to 'client' if you would like to handle the pagination on the client-side. @@ -900,6 +918,7 @@ DataGridPremiumRaw.propTypes = { /** * Set the total number of rows, if it is different from the length of the value `rows` prop. * If some rows have children (for instance in the tree data), this number represents the amount of top level rows. + * Only works with `paginationMode="server"`, ignored when `paginationMode="client"`. */ rowCount: PropTypes.number, /** diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index 272316b357e7..cd6c469747b2 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -261,6 +261,12 @@ DataGridProRaw.propTypes = { * @default "cell" */ editMode: PropTypes.oneOf(['cell', 'row']), + /** + * Use if the actual rowCount is not known upfront, but an estimation is available. + * If some rows have children (for instance in the tree data), this number represents the amount of top level rows. + * Applicable only with `paginationMode="server"` and when `rowCount="-1"` + */ + estimatedRowCount: PropTypes.number, /** * Unstable features, breaking changes might be introduced. * For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect. @@ -628,6 +634,11 @@ DataGridProRaw.propTypes = { * @param {GridCallbackDetails} details Additional details for this callback. */ onMenuOpen: PropTypes.func, + /** + * Callback fired when the pagination meta has changed. + * @param {GridPaginationMeta} paginationMeta Updated pagination meta. + */ + onPaginationMetaChange: PropTypes.func, /** * Callback fired when the pagination model has changed. * @param {GridPaginationModel} model Updated pagination model. @@ -756,6 +767,13 @@ DataGridProRaw.propTypes = { * @default false */ pagination: PropTypes.bool, + /** + * The extra information about the pagination state of the Data Grid. + * Only applicable with `paginationMode="server"`. + */ + paginationMeta: PropTypes.shape({ + hasNextPage: PropTypes.bool, + }), /** * Pagination can be processed on the server or client-side. * Set it to 'client' if you would like to handle the pagination on the client-side. @@ -802,6 +820,7 @@ DataGridProRaw.propTypes = { /** * Set the total number of rows, if it is different from the length of the value `rows` prop. * If some rows have children (for instance in the tree data), this number represents the amount of top level rows. + * Only works with `paginationMode="server"`, ignored when `paginationMode="client"`. */ rowCount: PropTypes.number, /** diff --git a/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx index 85880a295f63..6472bd21f8df 100644 --- a/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/statePersistence.DataGridPro.test.tsx @@ -63,6 +63,7 @@ const FULL_INITIAL_STATE: GridInitialState = { }, }, pagination: { + meta: {}, paginationModel: { page: 1, pageSize: 2 }, rowCount: 6, }, @@ -126,6 +127,7 @@ describe(' - State persistence', () => { filterModel: getDefaultGridFilterModel(), }, pagination: { + meta: {}, paginationModel: { page: 0, pageSize: 100 }, rowCount: 6, }, @@ -193,6 +195,7 @@ describe(' - State persistence', () => { }} paginationMode="server" rowCount={FULL_INITIAL_STATE.pagination?.rowCount} + paginationMeta={FULL_INITIAL_STATE.pagination?.meta} pinnedColumns={FULL_INITIAL_STATE.pinnedColumns} density={FULL_INITIAL_STATE.density} // Some portable states don't have a controllable model diff --git a/packages/x-data-grid/src/DataGrid/DataGrid.tsx b/packages/x-data-grid/src/DataGrid/DataGrid.tsx index 8742dd514ba6..56a9868fa182 100644 --- a/packages/x-data-grid/src/DataGrid/DataGrid.tsx +++ b/packages/x-data-grid/src/DataGrid/DataGrid.tsx @@ -220,6 +220,12 @@ DataGridRaw.propTypes = { * @default "cell" */ editMode: PropTypes.oneOf(['cell', 'row']), + /** + * Use if the actual rowCount is not known upfront, but an estimation is available. + * If some rows have children (for instance in the tree data), this number represents the amount of top level rows. + * Applicable only with `paginationMode="server"` and when `rowCount="-1"` + */ + estimatedRowCount: PropTypes.number, /** * Unstable features, breaking changes might be introduced. * For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect. @@ -526,6 +532,11 @@ DataGridRaw.propTypes = { * @param {GridCallbackDetails} details Additional details for this callback. */ onMenuOpen: PropTypes.func, + /** + * Callback fired when the pagination meta has changed. + * @param {GridPaginationMeta} paginationMeta Updated pagination meta. + */ + onPaginationMetaChange: PropTypes.func, /** * Callback fired when the pagination model has changed. * @param {GridPaginationModel} model Updated pagination model. @@ -630,6 +641,13 @@ DataGridRaw.propTypes = { ]).isRequired, ), pagination: PropTypes.oneOf([true]), + /** + * The extra information about the pagination state of the Data Grid. + * Only applicable with `paginationMode="server"`. + */ + paginationMeta: PropTypes.shape({ + hasNextPage: PropTypes.bool, + }), /** * Pagination can be processed on the server or client-side. * Set it to 'client' if you would like to handle the pagination on the client-side. @@ -665,6 +683,7 @@ DataGridRaw.propTypes = { /** * Set the total number of rows, if it is different from the length of the value `rows` prop. * If some rows have children (for instance in the tree data), this number represents the amount of top level rows. + * Only works with `paginationMode="server"`, ignored when `paginationMode="client"`. */ rowCount: PropTypes.number, /** diff --git a/packages/x-data-grid/src/components/GridPagination.tsx b/packages/x-data-grid/src/components/GridPagination.tsx index 9fe8e5cf2f93..8a5c5fd0e763 100644 --- a/packages/x-data-grid/src/components/GridPagination.tsx +++ b/packages/x-data-grid/src/components/GridPagination.tsx @@ -1,16 +1,18 @@ import * as React from 'react'; +import { styled } from '@mui/material/styles'; import PropTypes from 'prop-types'; import TablePagination, { tablePaginationClasses, TablePaginationProps, + LabelDisplayedRowsArgs, } from '@mui/material/TablePagination'; -import { styled } from '@mui/material/styles'; import { useGridSelector } from '../hooks/utils/useGridSelector'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { gridPaginationModelSelector, gridPaginationRowCountSelector, + gridPageCountSelector, } from '../hooks/features/pagination/gridPaginationSelector'; const GridPaginationRoot = styled(TablePagination)(({ theme }) => ({ @@ -28,6 +30,25 @@ const GridPaginationRoot = styled(TablePagination)(({ theme }) => ({ }, })) as typeof TablePagination; +export type WrappedLabelDisplayedRows = ( + args: LabelDisplayedRowsArgs & { estimated?: number }, +) => React.ReactNode; + +const wrapLabelDisplayedRows = ( + labelDisplayedRows: WrappedLabelDisplayedRows, + estimated?: number, +): TablePaginationProps['labelDisplayedRows'] => { + return ({ from, to, count, page }: LabelDisplayedRowsArgs) => + labelDisplayedRows({ from, to, count, page, estimated }); +}; + +const defaultLabelDisplayedRows: WrappedLabelDisplayedRows = ({ from, to, count, estimated }) => { + if (!estimated) { + return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`; + } + return `${from}–${to} of ${count !== -1 ? count : `more than ${estimated > to ? estimated : to}`}`; +}; + // A mutable version of a readonly array. type MutableArray = A extends readonly (infer T)[] ? T[] : never; @@ -48,11 +69,29 @@ const GridPagination = React.forwardRef< const rootProps = useGridRootProps(); const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector); const rowCount = useGridSelector(apiRef, gridPaginationRowCountSelector); + const pageCount = useGridSelector(apiRef, gridPageCountSelector); + + const { paginationMode, loading, estimatedRowCount } = rootProps; + + const computedProps: Partial = React.useMemo(() => { + if (rowCount === -1 && paginationMode === 'server' && loading) { + return { + backIconButtonProps: { disabled: true }, + nextIconButtonProps: { disabled: true }, + }; + } + + return {}; + }, [loading, paginationMode, rowCount]); + + const lastPage = React.useMemo(() => Math.max(0, pageCount - 1), [pageCount]); - const lastPage = React.useMemo(() => { - const calculatedValue = Math.ceil(rowCount / (paginationModel.pageSize || 1)) - 1; - return Math.max(0, calculatedValue); - }, [rowCount, paginationModel.pageSize]); + const computedPage = React.useMemo(() => { + if (rowCount === -1) { + return paginationModel.page; + } + return paginationModel.page <= lastPage ? paginationModel.page : lastPage; + }, [lastPage, paginationModel.page, rowCount]); const handlePageSizeChange = React.useCallback( (event: React.ChangeEvent) => { @@ -95,7 +134,7 @@ const GridPagination = React.forwardRef< ) { console.warn( [ - `MUI X: The page size \`${paginationModel.pageSize}\` is not preset in the \`pageSizeOptions\`.`, + `MUI X: The page size \`${paginationModel.pageSize}\` is not present in the \`pageSizeOptions\`.`, `Add it to show the pagination select.`, ].join('\n'), ); @@ -108,12 +147,18 @@ const GridPagination = React.forwardRef< ? rootProps.pageSizeOptions : []; + const locales = apiRef.current.getLocaleText('MuiTablePagination'); + const wrappedLabelDisplayedRows = wrapLabelDisplayedRows( + locales.labelDisplayedRows || defaultLabelDisplayedRows, + estimatedRowCount, + ); + return ( ); diff --git a/packages/x-data-grid/src/components/index.ts b/packages/x-data-grid/src/components/index.ts index 6313a66231b5..2657dac0cd89 100644 --- a/packages/x-data-grid/src/components/index.ts +++ b/packages/x-data-grid/src/components/index.ts @@ -14,7 +14,7 @@ export * from './GridFooter'; export * from './GridHeader'; export * from './GridLoadingOverlay'; export * from './GridNoRowsOverlay'; -export * from './GridPagination'; +export { GridPagination } from './GridPagination'; export * from './GridRowCount'; export * from './GridRow'; export * from './GridSelectedRowCount'; diff --git a/packages/x-data-grid/src/hooks/features/pagination/gridPaginationInterfaces.ts b/packages/x-data-grid/src/hooks/features/pagination/gridPaginationInterfaces.ts index 310c659870fa..a47c14ea4454 100644 --- a/packages/x-data-grid/src/hooks/features/pagination/gridPaginationInterfaces.ts +++ b/packages/x-data-grid/src/hooks/features/pagination/gridPaginationInterfaces.ts @@ -1,13 +1,15 @@ -import { GridPaginationModel } from '../../../models/gridPaginationProps'; +import { GridPaginationMeta, GridPaginationModel } from '../../../models/gridPaginationProps'; export interface GridPaginationState { paginationModel: GridPaginationModel; rowCount: number; + meta: GridPaginationMeta; } export interface GridPaginationInitialState { paginationModel?: Partial; rowCount?: number; + meta?: GridPaginationMeta; } /** @@ -42,7 +44,21 @@ export interface GridPaginationRowCountApi { setRowCount: (rowCount: number) => void; } +/** + * The pagination meta API interface that is available in the grid `apiRef`. + */ +export interface GridPaginationMetaApi { + /** + * Sets the `paginationMeta` to a new value. + * @param {GridPaginationMeta} paginationMeta The new pagination meta value. + */ + setPaginationMeta: (paginationMeta: GridPaginationMeta) => void; +} + /** * The pagination API interface that is available in the grid `apiRef`. */ -export interface GridPaginationApi extends GridPaginationModelApi, GridPaginationRowCountApi {} +export interface GridPaginationApi + extends GridPaginationModelApi, + GridPaginationRowCountApi, + GridPaginationMetaApi {} diff --git a/packages/x-data-grid/src/hooks/features/pagination/gridPaginationSelector.ts b/packages/x-data-grid/src/hooks/features/pagination/gridPaginationSelector.ts index bc0b8ef20d2e..786ba8881b45 100644 --- a/packages/x-data-grid/src/hooks/features/pagination/gridPaginationSelector.ts +++ b/packages/x-data-grid/src/hooks/features/pagination/gridPaginationSelector.ts @@ -32,6 +32,15 @@ export const gridPaginationRowCountSelector = createSelector( (pagination) => pagination.rowCount, ); +/** + * Get the pagination meta + * @category Pagination + */ +export const gridPaginationMetaSelector = createSelector( + gridPaginationSelector, + (pagination) => pagination.meta, +); + /** * Get the index of the page to render if the pagination is enabled * @category Pagination @@ -55,9 +64,10 @@ export const gridPageSizeSelector = createSelector( * @category Pagination */ export const gridPageCountSelector = createSelector( - gridPageSizeSelector, + gridPaginationModelSelector, gridPaginationRowCountSelector, - (pageSize, rowCount) => getPageCount(rowCount, pageSize), + (paginationModel, rowCount) => + getPageCount(rowCount, paginationModel.pageSize, paginationModel.page), ); /** diff --git a/packages/x-data-grid/src/hooks/features/pagination/gridPaginationUtils.ts b/packages/x-data-grid/src/hooks/features/pagination/gridPaginationUtils.ts index c68819a261ac..61c43af8df96 100644 --- a/packages/x-data-grid/src/hooks/features/pagination/gridPaginationUtils.ts +++ b/packages/x-data-grid/src/hooks/features/pagination/gridPaginationUtils.ts @@ -1,27 +1,23 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; -import { buildWarning } from '../../../utils/warning'; import { GridSignature } from '../../utils'; const MAX_PAGE_SIZE = 100; export const defaultPageSize = (autoPageSize: boolean) => (autoPageSize ? 0 : 100); -export const getPageCount = (rowCount: number, pageSize: number): number => { +export const getPageCount = (rowCount: number, pageSize: number, page: number): number => { if (pageSize > 0 && rowCount > 0) { return Math.ceil(rowCount / pageSize); } + if (rowCount === -1) { + // With unknown row-count, we can assume a page after the current one + return page + 2; + } + return 0; }; -export const noRowCountInServerMode = buildWarning( - [ - "MUI X: the 'rowCount' prop is undefined while using paginationMode='server'", - 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation', - ], - 'error', -); - export const getDefaultGridPaginationModel = (autoPageSize: boolean) => ({ page: 0, pageSize: autoPageSize ? 0 : 100, diff --git a/packages/x-data-grid/src/hooks/features/pagination/useGridPagination.ts b/packages/x-data-grid/src/hooks/features/pagination/useGridPagination.ts index 9abbeab5301c..50524ac4e656 100644 --- a/packages/x-data-grid/src/hooks/features/pagination/useGridPagination.ts +++ b/packages/x-data-grid/src/hooks/features/pagination/useGridPagination.ts @@ -9,11 +9,17 @@ import { } from './gridPaginationUtils'; import { useGridPaginationModel } from './useGridPaginationModel'; import { useGridRowCount } from './useGridRowCount'; +import { useGridPaginationMeta } from './useGridPaginationMeta'; export const paginationStateInitializer: GridStateInitializer< Pick< DataGridProcessedProps, - 'paginationModel' | 'rowCount' | 'initialState' | 'autoPageSize' | 'signature' + | 'paginationModel' + | 'rowCount' + | 'initialState' + | 'autoPageSize' + | 'signature' + | 'paginationMeta' > > = (state, props) => { const paginationModel = { @@ -24,11 +30,13 @@ export const paginationStateInitializer: GridStateInitializer< throwIfPageSizeExceedsTheLimit(paginationModel.pageSize, props.signature); const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount; + const meta = props.paginationMeta ?? props.initialState?.pagination?.meta ?? {}; return { ...state, pagination: { paginationModel, rowCount, + meta, }, }; }; @@ -41,6 +49,7 @@ export const useGridPagination = ( apiRef: React.MutableRefObject, props: DataGridProcessedProps, ) => { + useGridPaginationMeta(apiRef, props); useGridPaginationModel(apiRef, props); useGridRowCount(apiRef, props); }; diff --git a/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationMeta.ts b/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationMeta.ts new file mode 100644 index 000000000000..c87aa8ea6322 --- /dev/null +++ b/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationMeta.ts @@ -0,0 +1,113 @@ +import * as React from 'react'; +import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; +import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; +import { GridPaginationMetaApi } from './gridPaginationInterfaces'; +import { useGridLogger, useGridSelector, useGridApiMethod } from '../../utils'; +import { GridPipeProcessor, useGridRegisterPipeProcessor } from '../../core/pipeProcessing'; +import { gridPaginationMetaSelector } from './gridPaginationSelector'; + +export const useGridPaginationMeta = ( + apiRef: React.MutableRefObject, + props: Pick< + DataGridProcessedProps, + 'paginationMeta' | 'initialState' | 'paginationMode' | 'onPaginationMetaChange' + >, +) => { + const logger = useGridLogger(apiRef, 'useGridPaginationMeta'); + + const paginationMeta = useGridSelector(apiRef, gridPaginationMetaSelector); + + apiRef.current.registerControlState({ + stateId: 'paginationMeta', + propModel: props.paginationMeta, + propOnChange: props.onPaginationMetaChange, + stateSelector: gridPaginationMetaSelector, + changeEvent: 'paginationMetaChange', + }); + + /** + * API METHODS + */ + const setPaginationMeta = React.useCallback( + (newPaginationMeta) => { + if (paginationMeta === newPaginationMeta) { + return; + } + logger.debug("Setting 'paginationMeta' to", newPaginationMeta); + + apiRef.current.setState((state) => ({ + ...state, + pagination: { + ...state.pagination, + meta: newPaginationMeta, + }, + })); + }, + [apiRef, logger, paginationMeta], + ); + + const paginationMetaApi: GridPaginationMetaApi = { + setPaginationMeta, + }; + + useGridApiMethod(apiRef, paginationMetaApi, 'public'); + + /** + * PRE-PROCESSING + */ + const stateExportPreProcessing = React.useCallback>( + (prevState, context) => { + const exportedPaginationMeta = gridPaginationMetaSelector(apiRef); + + const shouldExportRowCount = + // Always export if the `exportOnlyDirtyModels` property is not activated + !context.exportOnlyDirtyModels || + // Always export if the `paginationMeta` is controlled + props.paginationMeta != null || + // Always export if the `paginationMeta` has been initialized + props.initialState?.pagination?.meta != null; + + if (!shouldExportRowCount) { + return prevState; + } + + return { + ...prevState, + pagination: { + ...prevState.pagination, + meta: exportedPaginationMeta, + }, + }; + }, + [apiRef, props.paginationMeta, props.initialState?.pagination?.meta], + ); + + const stateRestorePreProcessing = React.useCallback>( + (params, context) => { + const restoredPaginationMeta = context.stateToRestore.pagination?.meta + ? context.stateToRestore.pagination.meta + : gridPaginationMetaSelector(apiRef); + apiRef.current.setState((state) => ({ + ...state, + pagination: { + ...state.pagination, + meta: restoredPaginationMeta, + }, + })); + return params; + }, + [apiRef], + ); + + useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing); + useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing); + + /** + * EFFECTS + */ + React.useEffect(() => { + if (props.paginationMeta) { + apiRef.current.setPaginationMeta(props.paginationMeta); + } + }, [apiRef, props.paginationMeta]); +}; diff --git a/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationModel.ts b/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationModel.ts index 579eacf8cfd8..c482999e44ac 100644 --- a/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationModel.ts +++ b/packages/x-data-grid/src/hooks/features/pagination/useGridPaginationModel.ts @@ -29,7 +29,8 @@ export const getDerivedPaginationModel = ( let paginationModel = paginationState.paginationModel; const rowCount = paginationState.rowCount; const pageSize = paginationModelProp?.pageSize ?? paginationModel.pageSize; - const pageCount = getPageCount(rowCount, pageSize); + const page = paginationModelProp?.page ?? paginationModel.page; + const pageCount = getPageCount(rowCount, pageSize, page); if ( paginationModelProp && diff --git a/packages/x-data-grid/src/hooks/features/pagination/useGridRowCount.ts b/packages/x-data-grid/src/hooks/features/pagination/useGridRowCount.ts index 0e8e76533dbc..39f950032ade 100644 --- a/packages/x-data-grid/src/hooks/features/pagination/useGridRowCount.ts +++ b/packages/x-data-grid/src/hooks/features/pagination/useGridRowCount.ts @@ -1,17 +1,22 @@ import * as React from 'react'; +import useLazyRef from '@mui/utils/useLazyRef'; import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; -import { GridPaginationRowCountApi } from './gridPaginationInterfaces'; +import { GridPaginationRowCountApi, GridPaginationState } from './gridPaginationInterfaces'; import { gridFilteredTopLevelRowCountSelector } from '../filter'; -import { useGridLogger, useGridSelector, useGridApiMethod } from '../../utils'; +import { + useGridLogger, + useGridSelector, + useGridApiMethod, + useGridApiEventHandler, +} from '../../utils'; import { GridPipeProcessor, useGridRegisterPipeProcessor } from '../../core/pipeProcessing'; -import { gridPaginationRowCountSelector } from './gridPaginationSelector'; -import { noRowCountInServerMode } from './gridPaginationUtils'; +import { + gridPaginationRowCountSelector, + gridPaginationMetaSelector, + gridPaginationModelSelector, +} from './gridPaginationSelector'; -/** - * @requires useGridFilter (state) - * @requires useGridDimensions (event) - can be after - */ export const useGridRowCount = ( apiRef: React.MutableRefObject, props: Pick< @@ -22,7 +27,10 @@ export const useGridRowCount = ( const logger = useGridLogger(apiRef, 'useGridRowCount'); const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector); - const rowCount = useGridSelector(apiRef, gridPaginationRowCountSelector); + const rowCountState = useGridSelector(apiRef, gridPaginationRowCountSelector); + const paginationMeta = useGridSelector(apiRef, gridPaginationMetaSelector); + const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector); + const previousPageSize = useLazyRef(() => gridPaginationModelSelector(apiRef).pageSize); apiRef.current.registerControlState({ stateId: 'paginationRowCount', @@ -37,7 +45,7 @@ export const useGridRowCount = ( */ const setRowCount = React.useCallback( (newRowCount) => { - if (rowCount === newRowCount) { + if (rowCountState === newRowCount) { return; } logger.debug("Setting 'rowCount' to", newRowCount); @@ -50,7 +58,7 @@ export const useGridRowCount = ( }, })); }, - [apiRef, logger, rowCount], + [apiRef, logger, rowCountState], ); const paginationRowCountApi: GridPaginationRowCountApi = { @@ -110,21 +118,43 @@ export const useGridRowCount = ( useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing); /** - * EFFECTS + * EVENTS */ - React.useEffect(() => { - if (process.env.NODE_ENV !== 'production') { - if (props.paginationMode === 'server' && props.rowCount == null) { - noRowCountInServerMode(); + const handlePaginationModelChange = React.useCallback( + (model: GridPaginationState['paginationModel']) => { + if (props.paginationMode === 'client' || !previousPageSize.current) { + return; } - } - }, [props.rowCount, props.paginationMode]); + if (model.pageSize !== previousPageSize.current) { + previousPageSize.current = model.pageSize; + if (rowCountState === -1) { + // Row count unknown and page size changed, reset the page + apiRef.current.setPage(0); + } + } + }, + [props.paginationMode, previousPageSize, rowCountState, apiRef], + ); + useGridApiEventHandler(apiRef, 'paginationModelChange', handlePaginationModelChange); + + /** + * EFFECTS + */ React.useEffect(() => { if (props.paginationMode === 'client') { apiRef.current.setRowCount(visibleTopLevelRowCount); } else if (props.rowCount != null) { apiRef.current.setRowCount(props.rowCount); } - }, [apiRef, visibleTopLevelRowCount, props.paginationMode, props.rowCount]); + }, [apiRef, props.paginationMode, visibleTopLevelRowCount, props.rowCount]); + + const isLastPage = paginationMeta.hasNextPage === false; + React.useEffect(() => { + if (isLastPage && rowCountState === -1) { + apiRef.current.setRowCount( + paginationModel.pageSize * paginationModel.page + visibleTopLevelRowCount, + ); + } + }, [apiRef, visibleTopLevelRowCount, isLastPage, rowCountState, paginationModel]); }; diff --git a/packages/x-data-grid/src/hooks/utils/useGridSelector.ts b/packages/x-data-grid/src/hooks/utils/useGridSelector.ts index a5337ea3c74c..859167dcfb24 100644 --- a/packages/x-data-grid/src/hooks/utils/useGridSelector.ts +++ b/packages/x-data-grid/src/hooks/utils/useGridSelector.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { GridApiCommon } from '../../models/api/gridApiCommon'; +import type { GridApiCommon } from '../../models/api/gridApiCommon'; import { OutputSelector } from '../../utils/createSelector'; import { useLazyRef } from './useLazyRef'; import { useOnMount } from './useOnMount'; diff --git a/packages/x-data-grid/src/internals/utils/propValidation.ts b/packages/x-data-grid/src/internals/utils/propValidation.ts index 427a2db0692e..ee4d70e09949 100644 --- a/packages/x-data-grid/src/internals/utils/propValidation.ts +++ b/packages/x-data-grid/src/internals/utils/propValidation.ts @@ -15,11 +15,30 @@ export const propValidatorsDataGrid: PropValidator[] = [ 'Please remove one of these two props.', ].join('\n')) || undefined, + (props) => + (props.paginationMode === 'client' && + props.paginationMeta != null && + [ + 'MUI X: Usage of the `paginationMeta` prop with client-side pagination (`paginationMode="client"`) has no effect.', + '`paginationMeta` is only meant to be used with `paginationMode="server"`.', + ].join('\n')) || + undefined, (props) => (props.signature === GridSignature.DataGrid && props.paginationMode === 'client' && isNumber(props.rowCount) && - 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.') || + [ + 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect.', + '`rowCount` is only meant to be used with `paginationMode="server"`.', + ].join('\n')) || + undefined, + (props) => + (props.paginationMode === 'server' && + props.rowCount == null && + [ + "MUI X: The `rowCount` prop must be passed using `paginationMode='server'`", + 'For more detail, see http://mui.com/components/data-grid/pagination/#index-based-pagination', + ].join('\n')) || undefined, ]; diff --git a/packages/x-data-grid/src/models/api/gridApiCommon.ts b/packages/x-data-grid/src/models/api/gridApiCommon.ts index 05cf1bd6bda7..1e59d123c8a5 100644 --- a/packages/x-data-grid/src/models/api/gridApiCommon.ts +++ b/packages/x-data-grid/src/models/api/gridApiCommon.ts @@ -6,7 +6,7 @@ import { GridDensityApi } from './gridDensityApi'; import { GridEditingApi, GridEditingPrivateApi } from './gridEditingApi'; import type { GridFilterApi } from './gridFilterApi'; import { GridFocusApi, GridFocusPrivateApi } from './gridFocusApi'; -import { GridLocaleTextApi } from './gridLocaleTextApi'; +import type { GridLocaleTextApi } from './gridLocaleTextApi'; import type { GridParamsApi } from './gridParamsApi'; import { GridPreferencesPanelApi } from './gridPreferencesPanelApi'; import { GridPrintExportApi } from './gridPrintExportApi'; diff --git a/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts b/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts index b25858988c0a..97735a52eb0f 100644 --- a/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts +++ b/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts @@ -1,6 +1,14 @@ import * as React from 'react'; -import { ComponentsPropsList } from '@mui/material/styles'; -import { GridColDef } from '../colDef'; +import type { ComponentsPropsList } from '@mui/material/styles'; +import type { WrappedLabelDisplayedRows } from '../../components/GridPagination'; +import type { GridColDef } from '../colDef'; + +export type MuiTablePaginationLocalizedProps = Omit< + ComponentsPropsList['MuiTablePagination'], + 'page' | 'count' | 'onChangePage' | 'rowsPerPage' | 'onPageChange' | 'labelDisplayedRows' +> & { + labelDisplayedRows?: WrappedLabelDisplayedRows; +}; /** * Set the types of the texts in the grid. @@ -174,10 +182,7 @@ export interface GridLocaleText { aggregationFunctionLabelSize: string; // Used core components translation keys - MuiTablePagination: Omit< - ComponentsPropsList['MuiTablePagination'], - 'page' | 'count' | 'onChangePage' | 'rowsPerPage' | 'onPageChange' - >; + MuiTablePagination: MuiTablePaginationLocalizedProps; } export type GridTranslationKeys = keyof GridLocaleText; diff --git a/packages/x-data-grid/src/models/api/index.ts b/packages/x-data-grid/src/models/api/index.ts index 16cae502d7ec..38a051fc1f05 100644 --- a/packages/x-data-grid/src/models/api/index.ts +++ b/packages/x-data-grid/src/models/api/index.ts @@ -9,7 +9,7 @@ export type { GridRowsMetaApi } from './gridRowsMetaApi'; export * from './gridRowSelectionApi'; export * from './gridSortApi'; export type { GridStateApi } from './gridStateApi'; -export * from './gridLocaleTextApi'; +export type { GridLocaleText, GridLocaleTextApi, GridTranslationKeys } from './gridLocaleTextApi'; export * from './gridCsvExportApi'; export type { GridFocusApi } from './gridFocusApi'; export * from './gridFilterApi'; diff --git a/packages/x-data-grid/src/models/events/gridEventLookup.ts b/packages/x-data-grid/src/models/events/gridEventLookup.ts index 5f29dceffb45..0ffc296f66fd 100644 --- a/packages/x-data-grid/src/models/events/gridEventLookup.ts +++ b/packages/x-data-grid/src/models/events/gridEventLookup.ts @@ -24,7 +24,7 @@ import type { GridColumnVisibilityModel } from '../../hooks/features/columns'; import type { GridStrategyProcessorName } from '../../hooks/core/strategyProcessing'; import { GridRowEditStartParams, GridRowEditStopParams } from '../params/gridRowParams'; import { GridCellModesModel, GridRowModesModel } from '../api/gridEditingApi'; -import { GridPaginationModel } from '../gridPaginationProps'; +import { GridPaginationMeta, GridPaginationModel } from '../gridPaginationProps'; import { GridDensity } from '../gridDensity'; export interface GridRowEventLookup { @@ -367,6 +367,10 @@ export interface GridControlledStateEventLookup { * Fired when the density changes. */ densityChange: { params: GridDensity }; + /** + * Fired when the pagination meta change. + */ + paginationMetaChange: { params: GridPaginationMeta }; } export interface GridControlledStateReasonLookup { diff --git a/packages/x-data-grid/src/models/gridPaginationProps.ts b/packages/x-data-grid/src/models/gridPaginationProps.ts index 543323ac86b1..0e9395f39a9f 100644 --- a/packages/x-data-grid/src/models/gridPaginationProps.ts +++ b/packages/x-data-grid/src/models/gridPaginationProps.ts @@ -11,3 +11,7 @@ export interface GridPaginationModel { */ page: number; } + +export interface GridPaginationMeta { + hasNextPage?: boolean; +} diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index 84f1c3f9456a..3d80dcdb101c 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -30,7 +30,7 @@ import { GridSlotsComponentsProps } from '../gridSlotsComponentsProps'; import { GridColumnVisibilityModel } from '../../hooks/features/columns/gridColumnsInterfaces'; import { GridCellModesModel, GridRowModesModel } from '../api/gridEditingApi'; import { GridColumnGroupingModel } from '../gridColumnGrouping'; -import { GridPaginationModel } from '../gridPaginationProps'; +import { GridPaginationMeta, GridPaginationModel } from '../gridPaginationProps'; import type { GridAutosizeOptions } from '../../hooks/features/columnResize'; export interface GridExperimentalFeatures { @@ -403,8 +403,15 @@ export interface DataGridPropsWithoutDefaultValue void; + /** + * Callback fired when the pagination meta has changed. + * @param {GridPaginationMeta} paginationMeta Updated pagination meta. + */ + onPaginationMetaChange?: (paginationMeta: GridPaginationMeta) => void; /** * Callback fired when the preferences panel is closed. * @param {GridPreferencePanelParams} params With all properties from [[GridPreferencePanelParams]]. diff --git a/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx b/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx index 8f60c3d159cc..d2ba0c6e840e 100644 --- a/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx @@ -322,8 +322,8 @@ describe(' - Pagination', () => { />, ); }).toWarnDev([ - `MUI X: The page size \`${pageSize}\` is not preset in the \`pageSizeOptions\``, - `MUI X: The page size \`${pageSize}\` is not preset in the \`pageSizeOptions\``, + `MUI X: The page size \`${pageSize}\` is not present in the \`pageSizeOptions\``, + `MUI X: The page size \`${pageSize}\` is not present in the \`pageSizeOptions\``, ]); }); @@ -350,8 +350,8 @@ describe(' - Pagination', () => { expect(() => { render(); }).toWarnDev([ - `MUI X: The page size \`${pageSize}\` is not preset in the \`pageSizeOptions\``, - `MUI X: The page size \`${pageSize}\` is not preset in the \`pageSizeOptions\``, + `MUI X: The page size \`${pageSize}\` is not present in the \`pageSizeOptions\``, + `MUI X: The page size \`${pageSize}\` is not present in the \`pageSizeOptions\``, ]); }); @@ -359,8 +359,8 @@ describe(' - Pagination', () => { expect(() => { render(); }).toWarnDev([ - `MUI X: The page size \`100\` is not preset in the \`pageSizeOptions\``, - `MUI X: The page size \`100\` is not preset in the \`pageSizeOptions\``, + `MUI X: The page size \`100\` is not present in the \`pageSizeOptions\``, + `MUI X: The page size \`100\` is not present in the \`pageSizeOptions\``, ]); }); @@ -538,8 +538,8 @@ describe(' - Pagination', () => { expect(document.querySelector('.MuiTablePagination-root')).to.have.text('1–1 of 21'); }); - it('should support server side pagination', () => { - function ServerPaginationGrid() { + describe('server-side pagination', () => { + function ServerPaginationGrid(props: Partial) { const [rows, setRows] = React.useState([]); const [paginationModel, setPaginationModel] = React.useState({ page: 0, pageSize: 1 }); @@ -576,20 +576,52 @@ describe(' - Pagination', () => {
    ); } - render(); - expect(getColumnValues(0)).to.deep.equal(['0']); - fireEvent.click(screen.getByRole('button', { name: /next page/i })); - expect(getColumnValues(0)).to.deep.equal(['1']); + it('should support server side pagination with known row count', () => { + render(); + expect(getColumnValues(0)).to.deep.equal(['0']); + fireEvent.click(screen.getByRole('button', { name: /next page/i })); + expect(getColumnValues(0)).to.deep.equal(['1']); + }); + + it('should support server side pagination with unknown row count', () => { + const { setProps } = render(); + expect(getColumnValues(0)).to.deep.equal(['0']); + expect(screen.getByText('1–1 of more than 1')).to.not.equal(null); + fireEvent.click(screen.getByRole('button', { name: /next page/i })); + expect(getColumnValues(0)).to.deep.equal(['1']); + expect(screen.getByText('2–2 of more than 2')).to.not.equal(null); + fireEvent.click(screen.getByRole('button', { name: /next page/i })); + setProps({ rowCount: 3 }); + expect(getColumnValues(0)).to.deep.equal(['2']); + expect(screen.getByText('3–3 of 3')).to.not.equal(null); + }); + + it('should support server side pagination with estimated row count', () => { + const { setProps } = render(); + expect(getColumnValues(0)).to.deep.equal(['0']); + expect(screen.getByText('1–1 of more than 2')).to.not.equal(null); + fireEvent.click(screen.getByRole('button', { name: /next page/i })); + expect(getColumnValues(0)).to.deep.equal(['1']); + expect(screen.getByText('2–2 of more than 2')).to.not.equal(null); + fireEvent.click(screen.getByRole('button', { name: /next page/i })); + expect(getColumnValues(0)).to.deep.equal(['2']); + expect(screen.getByText('3–3 of more than 3')).to.not.equal(null); + fireEvent.click(screen.getByRole('button', { name: /next page/i })); + setProps({ rowCount: 4 }); + expect(getColumnValues(0)).to.deep.equal(['3']); + expect(screen.getByText('4–4 of 4')).to.not.equal(null); + }); }); it('should make the first cell focusable after changing the page', () => { @@ -712,8 +744,11 @@ describe(' - Pagination', () => { it('should log an error if rowCount is used with client-side pagination', () => { expect(() => { render(); - }).toErrorDev([ - 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.', - ]); + }).toErrorDev( + [ + 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect.', + '`rowCount` is only meant to be used with `paginationMode="server"`.', + ].join('\n'), + ); }); }); diff --git a/packages/x-data-grid/src/utils/getGridLocalization.ts b/packages/x-data-grid/src/utils/getGridLocalization.ts index 8bc8e2f22c61..e28c5c454327 100644 --- a/packages/x-data-grid/src/utils/getGridLocalization.ts +++ b/packages/x-data-grid/src/utils/getGridLocalization.ts @@ -1,5 +1,8 @@ import { Localization as CoreLocalization } from '@mui/material/locale'; -import { GridLocaleText } from '../models/api/gridLocaleTextApi'; +import type { + GridLocaleText, + MuiTablePaginationLocalizedProps, +} from '../models/api/gridLocaleTextApi'; export interface Localization { components: { @@ -20,7 +23,9 @@ export const getGridLocalization = ( defaultProps: { localeText: { ...gridTranslations, - MuiTablePagination: coreTranslations?.components?.MuiTablePagination?.defaultProps || {}, + MuiTablePagination: + (coreTranslations?.components?.MuiTablePagination + ?.defaultProps as MuiTablePaginationLocalizedProps) || {}, }, }, }, diff --git a/scripts/x-data-grid-premium.exports.json b/scripts/x-data-grid-premium.exports.json index b82e069ad3be..9723176f8754 100644 --- a/scripts/x-data-grid-premium.exports.json +++ b/scripts/x-data-grid-premium.exports.json @@ -409,6 +409,8 @@ { "name": "GridPagination", "kind": "Variable" }, { "name": "GridPaginationApi", "kind": "Interface" }, { "name": "GridPaginationInitialState", "kind": "Interface" }, + { "name": "GridPaginationMeta", "kind": "Interface" }, + { "name": "gridPaginationMetaSelector", "kind": "Variable" }, { "name": "GridPaginationModel", "kind": "Interface" }, { "name": "gridPaginationModelSelector", "kind": "Variable" }, { "name": "gridPaginationRowCountSelector", "kind": "Variable" }, diff --git a/scripts/x-data-grid-pro.exports.json b/scripts/x-data-grid-pro.exports.json index 676755c5d1b3..314428c421b6 100644 --- a/scripts/x-data-grid-pro.exports.json +++ b/scripts/x-data-grid-pro.exports.json @@ -373,6 +373,8 @@ { "name": "GridPagination", "kind": "Variable" }, { "name": "GridPaginationApi", "kind": "Interface" }, { "name": "GridPaginationInitialState", "kind": "Interface" }, + { "name": "GridPaginationMeta", "kind": "Interface" }, + { "name": "gridPaginationMetaSelector", "kind": "Variable" }, { "name": "GridPaginationModel", "kind": "Interface" }, { "name": "gridPaginationModelSelector", "kind": "Variable" }, { "name": "gridPaginationRowCountSelector", "kind": "Variable" }, diff --git a/scripts/x-data-grid.exports.json b/scripts/x-data-grid.exports.json index 16c223ee5de3..16a74ef16850 100644 --- a/scripts/x-data-grid.exports.json +++ b/scripts/x-data-grid.exports.json @@ -344,6 +344,8 @@ { "name": "GridPagination", "kind": "Variable" }, { "name": "GridPaginationApi", "kind": "Interface" }, { "name": "GridPaginationInitialState", "kind": "Interface" }, + { "name": "GridPaginationMeta", "kind": "Interface" }, + { "name": "gridPaginationMetaSelector", "kind": "Variable" }, { "name": "GridPaginationModel", "kind": "Interface" }, { "name": "gridPaginationModelSelector", "kind": "Variable" }, { "name": "gridPaginationRowCountSelector", "kind": "Variable" }, From 61575eef407c10a6cd4913a19d5176b7fbe64a13 Mon Sep 17 00:00:00 2001 From: Victor Zanivan Monteiro Date: Thu, 18 Apr 2024 09:58:10 -0300 Subject: [PATCH 137/912] [TreeView][docs] Fix layout shift on demos (#12816) --- .../rich-tree-view/expansion/TrackItemExpansionToggle.js | 2 +- .../rich-tree-view/expansion/TrackItemExpansionToggle.tsx | 2 +- .../expansion/TrackItemExpansionToggle.tsx.preview | 2 +- .../rich-tree-view/selection/TrackItemSelectionToggle.js | 2 +- .../rich-tree-view/selection/TrackItemSelectionToggle.tsx | 2 +- .../selection/TrackItemSelectionToggle.tsx.preview | 2 +- .../simple-tree-view/expansion/TrackItemExpansionToggle.js | 2 +- .../simple-tree-view/expansion/TrackItemExpansionToggle.tsx | 2 +- .../simple-tree-view/selection/TrackItemSelectionToggle.js | 2 +- .../simple-tree-view/selection/TrackItemSelectionToggle.tsx | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/data/tree-view/rich-tree-view/expansion/TrackItemExpansionToggle.js b/docs/data/tree-view/rich-tree-view/expansion/TrackItemExpansionToggle.js index 10e6f0dc3a5e..22ab08e87b2a 100644 --- a/docs/data/tree-view/rich-tree-view/expansion/TrackItemExpansionToggle.js +++ b/docs/data/tree-view/rich-tree-view/expansion/TrackItemExpansionToggle.js @@ -52,7 +52,7 @@ export default function TrackItemExpansionToggle() { )} - + )} - + )} - + - + - + - + )} - + diff --git a/docs/data/tree-view/simple-tree-view/expansion/TrackItemExpansionToggle.tsx b/docs/data/tree-view/simple-tree-view/expansion/TrackItemExpansionToggle.tsx index 6f257acad9b9..549b9e66e477 100644 --- a/docs/data/tree-view/simple-tree-view/expansion/TrackItemExpansionToggle.tsx +++ b/docs/data/tree-view/simple-tree-view/expansion/TrackItemExpansionToggle.tsx @@ -28,7 +28,7 @@ export default function TrackItemExpansionToggle() { Last action: {action.isExpanded ? 'expand' : 'collapse'} {action.itemId} )} - + diff --git a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js index 4bc39db3cf23..55c76b326e22 100644 --- a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js +++ b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js @@ -21,7 +21,7 @@ export default function TrackItemSelectionToggle() { ? 'No item selection recorded' : `Last selected item: ${lastSelectedItem}`} - + diff --git a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx index ebd584ed1b69..ccc5bde9bfed 100644 --- a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx +++ b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx @@ -27,7 +27,7 @@ export default function TrackItemSelectionToggle() { ? 'No item selection recorded' : `Last selected item: ${lastSelectedItem}`} - + From 3a938a1aa36cb267a2fb3c743ea6c60edc370be4 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Thu, 18 Apr 2024 17:18:51 +0200 Subject: [PATCH 138/912] v7.3.0 (#12831) --- CHANGELOG.md | 125 ++++++++++++++++++++ package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 4 +- packages/x-data-grid-premium/package.json | 6 +- packages/x-data-grid-pro/package.json | 4 +- packages/x-data-grid/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 9 files changed, 137 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de859e4baad7..a50dfd077059 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,81 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.3.0 + +_Apr 18, 2024_ + +We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨: + +- 📄 Support [unknown and estimated row count in server-side pagination](https://mui.com/x/react-data-grid/pagination/#index-based-pagination) (#12490) @MBilalShafi +- 🎨 Support color scales in Charts (#12490) @alexfauquette + Add a [`colorMap` configuration](https://mui.com/x/react-charts/styling/#values-color) to an axis, and the chart will use it to select colors. + Each impacted chart ([bar charts](https://mui.com/x/react-charts/bars/#color-scale), [line charts](https://mui.com/x/react-charts/lines/#color-scale), [scatter charts](https://mui.com/x/react-charts/scatter/#color-scale)) has a dedicated section explaining how this color map is impacting it. + + scatter chart with gradient along y-axis + +- 🌍 Improve Danish (da-DK) locale on the Data Grid +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@7.3.0` + +- [DataGrid] Fix calling `onCellEditStop` on error (#12747) @sai6855 +- [DataGrid] Fix column resize (#12792) @romgrk +- [DataGrid] Fix column separators (#12808) @romgrk +- [DataGrid] Limit panel width to not exceed screen width (#12799) @cherniavskii +- [DataGrid] Support advanced server-side pagination use cases (#12474) @MBilalShafi +- [DataGrid] Support state export and restore on grid density (#12671) @MBilalShafi +- [l10n] Improve Danish (da-DK) locale (#12784) @EmilBahnsen + +#### `@mui/x-data-grid-pro@7.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.3.0`, plus: + +- [DataGridPro] Implement header filter height (#12666) @romgrk + +#### `@mui/x-data-grid-premium@7.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.3.0`. + +### Charts + +#### Breaking change + +A typo fix: + +```diff +- ContinuouseScaleName ++ ContinuousScaleName +``` + +#### `@mui/x-charts@7.3.0` + +- [charts] Add `dataIndex` to series `valueFormatter` (#12745) @JCQuintas +- [charts] Add color scale (#12490) @alexfauquette +- [charts] Do not document the usage of `DEFAULT_X_AXIS_KEY` and `DEFAULT_Y_AXIS_KEY` (#12780) @alexfauquette +- [charts] Export more utils (#12744) @alexfauquette +- [charts] Fix passing slot props down to `PieArcLabel` (#12806) @JCQuintas + +### Tree View + +#### `@mui/x-tree-view@7.3.0` + +- [TreeView] Support `defaultMuiPrevented` on the `onFocus` prop of the root slot (#12813) @flaviendelangle + +### Docs + +- [docs] Add grid cell display example to the migration guide (#12793) @romgrk +- [docs] Use charts classes objects (#12781) @alexfauquette +- [docs] Fix layout shift on demos (#12816) @zanivan +- [test] Increase timeout for test that sometimes fail on `DateTimeRangePicker` (#12786) @LukasTy + +### Core + +- [docs-infra] Prepare infra to document charts interfaces (#12653) @alexfauquette + ## 7.2.0 _Apr 12, 2024_ @@ -3058,6 +3133,56 @@ Here is an example of the renaming for the `` component. - [core] Update release instructions as per v7 configuration (#10962) @MBilalShafi - [license] Correctly throw errors (#10924) @oliviertassinari +## 6.19.11 + +_Apr 18, 2024_ + +We'd like to offer a big thanks to the 1 contributor who made this release possible. Here are some highlights ✨: + +- 🐞 Bugfixes + +### Data Grid + +#### `@mui/x-data-grid@6.19.11` + +- [DataGrid] Fix virtualization memory leak (#12812) @romgrk + +#### `@mui/x-data-grid-pro@6.19.11` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@6.19.11`. + +#### `@mui/x-data-grid-premium@6.19.11` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@6.19.11`. + +## 6.19.10 + +_Apr 12, 2024_ + +We'd like to offer a big thanks to the 2 contributors who made this release possible. Here are some highlights ✨: + +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@6.19.10` + +- [DataGrid] Do not escape double quotes when copying to clipboard (#12734) @cherniavskii +- [DataGrid] Fix bug in suspense (#12754) @cherniavskii + +#### `@mui/x-data-grid-pro@6.19.10` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@6.19.10`. + +#### `@mui/x-data-grid-premium@6.19.10` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@6.19.10`. + +### Core + +- [core] Update the docs release source branch (#12685) @LukasTy + ## 6.19.9 _Apr 5, 2024_ diff --git a/package.json b/package.json index ec11d449caa8..2c9100241348 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.0", + "version": "7.3.0", "private": true, "scripts": { "start": "yarn && yarn docs:dev", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 3068015415e2..b2ac0637c3d5 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.2.0", + "version": "7.3.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 085a21ed33c3..fc20fd22c5e8 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.2.0", + "version": "7.3.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", @@ -34,7 +34,7 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@mui/base": "^5.0.0-beta.40", - "@mui/x-data-grid-premium": "7.2.0", + "@mui/x-data-grid-premium": "7.3.0", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 81ca5e76cd2d..8e097ceb001c 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.2.0", + "version": "7.3.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,8 +45,8 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.2.0", - "@mui/x-data-grid-pro": "7.2.0", + "@mui/x-data-grid": "7.3.0", + "@mui/x-data-grid-pro": "7.3.0", "@mui/x-license": "7.2.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 5abf622bcac1..39abee3ee6bd 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.2.0", + "version": "7.3.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -45,7 +45,7 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.2.0", + "@mui/x-data-grid": "7.3.0", "@mui/x-license": "7.2.0", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index d8f9cb3c6d59..79a08ae51fd3 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.2.0", + "version": "7.3.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index df1cc086a5fe..741bb2d3726c 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -48,7 +48,7 @@ "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", "@mui/x-license": "7.2.0", - "@mui/x-tree-view": "7.2.0", + "@mui/x-tree-view": "7.3.0", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "prop-types": "^15.8.1", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index ffc06808a4cd..32b8855de0b9 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.2.0", + "version": "7.3.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From bdcf079e98a4c586ece1e14de93268bbc179dbc7 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 19 Apr 2024 10:47:22 +0200 Subject: [PATCH 139/912] [charts] Add z-axis to colorize scatter charts (#12738) --- docs/data/charts/bars/ColorScaleNoSnap.js | 34 +++-- docs/data/charts/bars/ColorScaleNoSnap.tsx | 36 ++--- docs/data/charts/lines/ColorScaleNoSnap.js | 28 ++-- docs/data/charts/lines/ColorScaleNoSnap.tsx | 29 ++-- docs/data/charts/scatter/ColorScaleNoSnap.js | 126 ++++++++++++++-- docs/data/charts/scatter/ColorScaleNoSnap.tsx | 134 ++++++++++++++++-- docs/data/charts/scatter/scatter.md | 28 +++- docs/pages/x/api/charts/scatter-chart.json | 6 + .../charts/scatter-chart/scatter-chart.json | 3 +- .../ChartsAxisTooltipContent.tsx | 30 +++- .../ChartsItemTooltipContent.tsx | 35 +++-- .../src/ScatterChart/ScatterChart.tsx | 92 ++++++++---- .../x-charts/src/ScatterChart/ScatterPlot.tsx | 7 +- .../x-charts/src/ScatterChart/getColor.ts | 19 +++ .../src/context/ZAxisContextProvider.tsx | 134 ++++++++++++++++++ packages/x-charts/src/context/index.ts | 2 + .../x-charts/src/internals/colorGetter.ts | 16 ++- packages/x-charts/src/models/colorMapping.ts | 5 +- .../x-charts/src/models/seriesType/scatter.ts | 5 + packages/x-charts/src/models/z-axis.ts | 20 +++ scripts/x-charts.exports.json | 4 +- 21 files changed, 651 insertions(+), 142 deletions(-) create mode 100644 packages/x-charts/src/context/ZAxisContextProvider.tsx create mode 100644 packages/x-charts/src/models/z-axis.ts diff --git a/docs/data/charts/bars/ColorScaleNoSnap.js b/docs/data/charts/bars/ColorScaleNoSnap.js index a0062052c275..810588162df1 100644 --- a/docs/data/charts/bars/ColorScaleNoSnap.js +++ b/docs/data/charts/bars/ColorScaleNoSnap.js @@ -112,32 +112,34 @@ export default function ColorScaleNoSnap() { ...(colorX === 'None' ? [' xAxis={[{}]}'] : []), ...(colorX === 'ordinal' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'ordinal',`, ` colors: ['#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#08589e']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'continuous' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: new Date(2019, 1, 1),`, ` max: new Date(2024, 1, 1),`, ` color: ['green', 'orange']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'piecewise' ? [ ' xAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, - ` colors: ['blue', 'red', 'blue'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, + ` colors: ['blue', 'red', 'blue'],`, + ` }`, ' }]}', ] : []), @@ -145,22 +147,24 @@ export default function ColorScaleNoSnap() { ...(colorY === 'None' ? [' yAxis={[{}]}'] : []), ...(colorY === 'continuous' ? [ - ' yAxis={[', - ` {`, + ' yAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -10,`, ` max: 10,`, ` color: ['red', 'green'],`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorY === 'piecewise' ? [ ' yAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [0],`, - ` colors: ['red', 'green'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [0],`, + ` colors: ['red', 'green'],`, + ` }`, ' }]}', ] : []), diff --git a/docs/data/charts/bars/ColorScaleNoSnap.tsx b/docs/data/charts/bars/ColorScaleNoSnap.tsx index bef053df0b9c..2b2594dc2cee 100644 --- a/docs/data/charts/bars/ColorScaleNoSnap.tsx +++ b/docs/data/charts/bars/ColorScaleNoSnap.tsx @@ -122,32 +122,34 @@ export default function ColorScaleNoSnap() { ...(colorX === 'None' ? [' xAxis={[{}]}'] : []), ...(colorX === 'ordinal' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'ordinal',`, ` colors: ['#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#08589e']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'continuous' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: new Date(2019, 1, 1),`, ` max: new Date(2024, 1, 1),`, ` color: ['green', 'orange']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'piecewise' ? [ ' xAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, - ` colors: ['blue', 'red', 'blue'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, + ` colors: ['blue', 'red', 'blue'],`, + ` }`, ' }]}', ] : []), @@ -156,24 +158,24 @@ export default function ColorScaleNoSnap() { ...(colorY === 'None' ? [' yAxis={[{}]}'] : []), ...(colorY === 'continuous' ? [ - ' yAxis={[', - ` {`, - + ' yAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -10,`, ` max: 10,`, ` color: ['red', 'green'],`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorY === 'piecewise' ? [ ' yAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [0],`, - ` colors: ['red', 'green'],`, - + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [0],`, + ` colors: ['red', 'green'],`, + ` }`, ' }]}', ] : []), diff --git a/docs/data/charts/lines/ColorScaleNoSnap.js b/docs/data/charts/lines/ColorScaleNoSnap.js index 79a915a28ded..b88e8815f141 100644 --- a/docs/data/charts/lines/ColorScaleNoSnap.js +++ b/docs/data/charts/lines/ColorScaleNoSnap.js @@ -103,22 +103,24 @@ export default function ColorScaleNoSnap() { ...(colorX === 'None' ? [' xAxis={[{}]}'] : []), ...(colorX === 'continuous' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: new Date(2019, 1, 1),`, ` max: new Date(2024, 1, 1),`, ` color: ['green', 'orange']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'piecewise' ? [ ' xAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, - ` colors: ['blue', 'red', 'blue'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, + ` colors: ['blue', 'red', 'blue'],`, + ` }`, ' }]}', ] : []), @@ -126,22 +128,24 @@ export default function ColorScaleNoSnap() { ...(colorY === 'None' ? [' yAxis={[{}]}'] : []), ...(colorY === 'continuous' ? [ - ' yAxis={[', - ` {`, + ' yAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -10,`, ` max: 10,`, ` color: ['red', 'green'],`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorY === 'piecewise' ? [ ' yAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [0, 10],`, - ` colors: ['red', 'green', 'blue'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [0, 10],`, + ` colors: ['red', 'green', 'blue'],`, + ` }`, ' }]}', ] : []), diff --git a/docs/data/charts/lines/ColorScaleNoSnap.tsx b/docs/data/charts/lines/ColorScaleNoSnap.tsx index 687ba56d7ee9..164b1c1430e8 100644 --- a/docs/data/charts/lines/ColorScaleNoSnap.tsx +++ b/docs/data/charts/lines/ColorScaleNoSnap.tsx @@ -111,22 +111,24 @@ export default function ColorScaleNoSnap() { ...(colorX === 'None' ? [' xAxis={[{}]}'] : []), ...(colorX === 'continuous' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: new Date(2019, 1, 1),`, ` max: new Date(2024, 1, 1),`, ` color: ['green', 'orange']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'piecewise' ? [ ' xAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, - ` colors: ['blue', 'red', 'blue'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [new Date(2021, 1, 1), new Date(2023, 1, 1)],`, + ` colors: ['blue', 'red', 'blue'],`, + ` }`, ' }]}', ] : []), @@ -135,23 +137,24 @@ export default function ColorScaleNoSnap() { ...(colorY === 'None' ? [' yAxis={[{}]}'] : []), ...(colorY === 'continuous' ? [ - ' yAxis={[', - ` {`, + ' yAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -10,`, ` max: 10,`, ` color: ['red', 'green'],`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorY === 'piecewise' ? [ ' yAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [0, 10],`, - ` colors: ['red', 'green', 'blue'],`, - + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [0, 10],`, + ` colors: ['red', 'green', 'blue'],`, + ` }`, ' }]}', ] : []), diff --git a/docs/data/charts/scatter/ColorScaleNoSnap.js b/docs/data/charts/scatter/ColorScaleNoSnap.js index ea446b982627..b51c3e27dc99 100644 --- a/docs/data/charts/scatter/ColorScaleNoSnap.js +++ b/docs/data/charts/scatter/ColorScaleNoSnap.js @@ -9,11 +9,13 @@ import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; import { Chance } from 'chance'; +const POINTS_NUMBER = 50; const chance = new Chance(42); export default function ColorScaleNoSnap() { const [colorX, setColorX] = React.useState('piecewise'); const [colorY, setColorY] = React.useState('None'); + const [colorZ, setColorZ] = React.useState('None'); return ( @@ -40,6 +42,18 @@ export default function ColorScaleNoSnap() { piecewise continuous + setColorZ(event.target.value)} + > + None + piecewise + continuous + ordinal + 'A'), + ...[...Array(POINTS_NUMBER)].map(() => 'B'), + ...[...Array(POINTS_NUMBER)].map(() => 'C'), + ...[...Array(POINTS_NUMBER)].map(() => 'D'), + ] + : undefined, + colorMap: + (colorZ === 'continuous' && { + type: 'continuous', + min: -2, + max: 2, + color: ['green', 'orange'], + }) || + (colorZ === 'piecewise' && { + type: 'piecewise', + thresholds: [-1.5, 0, 1.5], + colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'], + }) || + (colorZ === 'ordinal' && { + type: 'ordinal', + values: ['A', 'B', 'C', 'D'], + colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'], + }) || + undefined, + }, + ]} /> ({...point, z: point.x + point.y})) }]}', // ColorX ...(colorX === 'None' ? [' xAxis={[{}]}'] : []), ...(colorX === 'continuous' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -2,`, ` max: 2,`, ` color: ['green', 'orange']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'piecewise' ? [ ' xAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [-1.5, 0, 1.5],`, - ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [-1.5, 0, 1.5],`, + ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` }`, ' }]}', ] : []), @@ -122,22 +170,61 @@ export default function ColorScaleNoSnap() { ...(colorY === 'None' ? [' yAxis={[{}]}'] : []), ...(colorY === 'continuous' ? [ - ' yAxis={[', - ` {`, + ' yAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -2,`, ` max: 2,`, ` color: ['blue', 'red']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorY === 'piecewise' ? [ ' yAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [-1.5, 0, 1.5],`, - ` colors: ['lightblue', 'blue', 'orange', 'red'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [-1.5, 0, 1.5],`, + ` colors: ['lightblue', 'blue', 'orange', 'red'],`, + ` }`, + ' }]}', + ] + : []), + // ColorZ + ...(colorZ === 'None' ? [' zAxis={[{}]}'] : []), + ...(colorZ === 'continuous' + ? [ + ' zAxis={[{', + ` colorMap: {`, + ` type: 'continuous',`, + ` min: -2,`, + ` max: 2,`, + ` color: ['green', 'orange'],`, + ` }`, + ' }]}', + ] + : []), + ...(colorZ === 'piecewise' + ? [ + ' zAxis={[{', + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [-1.5, 0, 1.5],`, + ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` }`, + ' }]}', + ] + : []), + ...(colorZ === 'ordinal' + ? [ + ' zAxis={[{', + ` data: ['A', ..., 'B', ..., 'C', ..., 'D', ...],`, + ` colorMap: {`, + ` type: 'ordinal',`, + ` values: ['A', 'B', 'C', 'D'],`, + ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` }`, ' }]}', ] : []), @@ -150,12 +237,21 @@ export default function ColorScaleNoSnap() { ); } -const series = [{ data: getGaussianSeriesData([0, 0], [1, 1], 200) }].map((s) => ({ +const series = [ + { + data: [ + ...getGaussianSeriesData([-1, -1]), + ...getGaussianSeriesData([-1, 1]), + ...getGaussianSeriesData([1, 1]), + ...getGaussianSeriesData([1, -1]), + ], + }, +].map((s) => ({ ...s, valueFormatter: (v) => `(${v.x.toFixed(1)}, ${v.y.toFixed(1)})`, })); -function getGaussianSeriesData(mean, stdev = [0.3, 0.4], N = 50) { +function getGaussianSeriesData(mean, stdev = [0.5, 0.5], N = 50) { return [...Array(N)].map((_, i) => { const x = Math.sqrt(-2.0 * Math.log(1 - chance.floating({ min: 0, max: 0.99 }))) * @@ -167,6 +263,6 @@ function getGaussianSeriesData(mean, stdev = [0.3, 0.4], N = 50) { Math.cos(2.0 * Math.PI * chance.floating({ min: 0, max: 0.99 })) * stdev[1] + mean[1]; - return { x, y, id: i }; + return { x, y, z: x + y, id: i }; }); } diff --git a/docs/data/charts/scatter/ColorScaleNoSnap.tsx b/docs/data/charts/scatter/ColorScaleNoSnap.tsx index 3ab5d985ef84..db875306f935 100644 --- a/docs/data/charts/scatter/ColorScaleNoSnap.tsx +++ b/docs/data/charts/scatter/ColorScaleNoSnap.tsx @@ -9,6 +9,7 @@ import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; import { Chance } from 'chance'; +const POINTS_NUMBER = 50; const chance = new Chance(42); export default function ColorScaleNoSnap() { @@ -18,6 +19,9 @@ export default function ColorScaleNoSnap() { const [colorY, setColorY] = React.useState<'None' | 'piecewise' | 'continuous'>( 'None', ); + const [colorZ, setColorZ] = React.useState< + 'None' | 'piecewise' | 'continuous' | 'ordinal' + >('None'); return ( @@ -48,6 +52,22 @@ export default function ColorScaleNoSnap() { piecewise continuous + + setColorZ( + event.target.value as 'None' | 'piecewise' | 'continuous' | 'ordinal', + ) + } + > + None + piecewise + continuous + ordinal + 'A'), + ...[...Array(POINTS_NUMBER)].map(() => 'B'), + ...[...Array(POINTS_NUMBER)].map(() => 'C'), + ...[...Array(POINTS_NUMBER)].map(() => 'D'), + ] + : undefined, + colorMap: + (colorZ === 'continuous' && { + type: 'continuous', + min: -2, + max: 2, + color: ['green', 'orange'], + }) || + (colorZ === 'piecewise' && { + type: 'piecewise', + thresholds: [-1.5, 0, 1.5], + colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'], + }) || + (colorZ === 'ordinal' && { + type: 'ordinal', + + values: ['A', 'B', 'C', 'D'], + colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'], + }) || + undefined, + }, + ]} /> ({...point, z: point.x + point.y})) }]}', // ColorX ...(colorX === 'None' ? [' xAxis={[{}]}'] : []), ...(colorX === 'continuous' ? [ - ' xAxis={[', - ` {`, + ' xAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -2,`, ` max: 2,`, ` color: ['green', 'orange']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorX === 'piecewise' ? [ ' xAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [-1.5, 0, 1.5],`, - ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [-1.5, 0, 1.5],`, + ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` }`, ' }]}', ] : []), @@ -131,22 +186,62 @@ export default function ColorScaleNoSnap() { ...(colorY === 'None' ? [' yAxis={[{}]}'] : []), ...(colorY === 'continuous' ? [ - ' yAxis={[', - ` {`, + ' yAxis={[{', + ` colorMap: {`, ` type: 'continuous',`, ` min: -2,`, ` max: 2,`, ` color: ['blue', 'red']`, ` }`, - ' ]}', + ' }]}', ] : []), ...(colorY === 'piecewise' ? [ ' yAxis={[{', - ` type: 'piecewise',`, - ` thresholds: [-1.5, 0, 1.5],`, - ` colors: ['lightblue', 'blue', 'orange', 'red'],`, + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [-1.5, 0, 1.5],`, + ` colors: ['lightblue', 'blue', 'orange', 'red'],`, + ` }`, + ' }]}', + ] + : []), + + // ColorZ + ...(colorZ === 'None' ? [' zAxis={[{}]}'] : []), + ...(colorZ === 'continuous' + ? [ + ' zAxis={[{', + ` colorMap: {`, + ` type: 'continuous',`, + ` min: -2,`, + ` max: 2,`, + ` color: ['green', 'orange'],`, + ` }`, + ' }]}', + ] + : []), + ...(colorZ === 'piecewise' + ? [ + ' zAxis={[{', + ` colorMap: {`, + ` type: 'piecewise',`, + ` thresholds: [-1.5, 0, 1.5],`, + ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` }`, + ' }]}', + ] + : []), + ...(colorZ === 'ordinal' + ? [ + ' zAxis={[{', + ` data: ['A', ..., 'B', ..., 'C', ..., 'D', ...],`, + ` colorMap: {`, + ` type: 'ordinal',`, + ` values: ['A', 'B', 'C', 'D'],`, + ` colors: ['#d01c8b', '#f1b6da', '#b8e186', '#4dac26'],`, + ` }`, ' }]}', ] : []), @@ -159,14 +254,23 @@ export default function ColorScaleNoSnap() { ); } -const series = [{ data: getGaussianSeriesData([0, 0], [1, 1], 200) }].map((s) => ({ +const series = [ + { + data: [ + ...getGaussianSeriesData([-1, -1]), + ...getGaussianSeriesData([-1, 1]), + ...getGaussianSeriesData([1, 1]), + ...getGaussianSeriesData([1, -1]), + ], + }, +].map((s) => ({ ...s, valueFormatter: (v: ScatterValueType) => `(${v.x.toFixed(1)}, ${v.y.toFixed(1)})`, })); function getGaussianSeriesData( mean: [number, number], - stdev: [number, number] = [0.3, 0.4], + stdev: [number, number] = [0.5, 0.5], N: number = 50, ) { return [...Array(N)].map((_, i) => { @@ -180,6 +284,6 @@ function getGaussianSeriesData( Math.cos(2.0 * Math.PI * chance.floating({ min: 0, max: 0.99 })) * stdev[1] + mean[1]; - return { x, y, id: i }; + return { x, y, z: x + y, id: i }; }); } diff --git a/docs/data/charts/scatter/scatter.md b/docs/data/charts/scatter/scatter.md index 89dbca75e8a1..1ebeebf8ec9f 100644 --- a/docs/data/charts/scatter/scatter.md +++ b/docs/data/charts/scatter/scatter.md @@ -60,9 +60,31 @@ As with other charts, you can modify the [series color](/x/react-charts/styling/ You can also modify the color by using axes `colorMap` which maps values to colors. The scatter charts use by priority: -1. The y-axis color -2. The x-axis color -3. The series color +1. The z-axis color +2. The y-axis color +3. The x-axis color +4. The series color + +:::info +The z-axis is a third axis that allows to customize scatter points independently from their position. +It can be provided with `zAxis` props, or with `ZAxisContextProvider` when using composition. + +The value to map can either come from the `z` property of series data, or from the zAxis data. +Here are three ways to set z value to 5. + +```jsx + +``` + +::: Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). diff --git a/docs/pages/x/api/charts/scatter-chart.json b/docs/pages/x/api/charts/scatter-chart.json index b0314f723843..c2e6985c1e8c 100644 --- a/docs/pages/x/api/charts/scatter-chart.json +++ b/docs/pages/x/api/charts/scatter-chart.json @@ -95,6 +95,12 @@ "name": "arrayOf", "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'left'
    | 'right'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } + }, + "zAxis": { + "type": { + "name": "arrayOf", + "description": "Array<{ colorMap?: { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }
    | { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }, data?: array, dataKey?: string, id?: string }>" + } } }, "name": "ScatterChart", diff --git a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json index ad851d29ce89..06e037d0ed66 100644 --- a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json +++ b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json @@ -59,7 +59,8 @@ }, "yAxis": { "description": "The configuration of the y-axes. If not provided, a default axis config is used." - } + }, + "zAxis": { "description": "The configuration of the z-axes." } }, "classDescriptions": {}, "slotDescriptions": { diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 3ec415c3409d..8eaadafc69c0 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -11,6 +11,7 @@ import { ChartsTooltipClasses } from './chartsTooltipClasses'; import { DefaultChartsAxisTooltipContent } from './DefaultChartsAxisTooltipContent'; import { isCartesianSeriesType } from './utils'; import colorGetter from '../internals/colorGetter'; +import { ZAxisContext } from '../context/ZAxisContextProvider'; type ChartSeriesDefaultizedWithColorGetter = ChartSeriesDefaultized & { getColor: (dataIndex: number) => string; @@ -59,6 +60,7 @@ function ChartsAxisTooltipContent(props: { const axisValue = isXaxis ? axisData.x && axisData.x.value : axisData.y && axisData.y.value; const { xAxisIds, xAxis, yAxisIds, yAxis } = React.useContext(CartesianContext); + const { zAxisIds, zAxis } = React.useContext(ZAxisContext); const series = React.useContext(SeriesContext); const USED_AXIS_ID = isXaxis ? xAxisIds[0] : yAxisIds[0]; @@ -74,17 +76,31 @@ function ChartsAxisTooltipContent(props: { if (axisKey === undefined || axisKey === USED_AXIS_ID) { const seriesToAdd = series[seriesType]!.series[seriesId]; - const color = colorGetter( - seriesToAdd, - xAxis[seriesToAdd.xAxisKey ?? xAxisIds[0]], - yAxis[seriesToAdd.yAxisKey ?? yAxisIds[0]], - ); - rep.push({ ...seriesToAdd, getColor: color }); + let getColor: (index: number) => string; + switch (seriesToAdd.type) { + case 'scatter': + getColor = colorGetter( + seriesToAdd, + xAxis[seriesToAdd.xAxisKey ?? xAxisIds[0]], + yAxis[seriesToAdd.yAxisKey ?? yAxisIds[0]], + zAxis[seriesToAdd.zAxisKey ?? zAxisIds[0]], + ); + break; + default: + getColor = colorGetter( + seriesToAdd, + xAxis[seriesToAdd.xAxisKey ?? xAxisIds[0]], + yAxis[seriesToAdd.yAxisKey ?? yAxisIds[0]], + ); + break; + } + + rep.push({ ...seriesToAdd, getColor }); } }); }); return rep; - }, [USED_AXIS_ID, isXaxis, series, xAxis, xAxisIds, yAxis, yAxisIds]); + }, [USED_AXIS_ID, isXaxis, series, xAxis, xAxisIds, yAxis, yAxisIds, zAxis, zAxisIds]); const relevantAxis = React.useMemo(() => { return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID]; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx index cdf2ff3a0105..a61a08294ebc 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx @@ -9,6 +9,7 @@ import { ChartsTooltipClasses } from './chartsTooltipClasses'; import { DefaultChartsItemTooltipContent } from './DefaultChartsItemTooltipContent'; import { CartesianContext } from '../context/CartesianContextProvider'; import colorGetter from '../internals/colorGetter'; +import { ZAxisContext } from '../context/ZAxisContextProvider'; export type ChartsItemContentProps = { /** @@ -45,20 +46,34 @@ function ChartsItemTooltipContent(props: { itemData.seriesId ] as ChartSeriesDefaultized; - const axisData = React.useContext(CartesianContext); + const { xAxis, yAxis, xAxisIds, yAxisIds } = React.useContext(CartesianContext); + const { zAxis, zAxisIds } = React.useContext(ZAxisContext); - const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; const defaultXAxisId = xAxisIds[0]; const defaultYAxisId = yAxisIds[0]; + const defaultZAxisId = zAxisIds[0]; - const getColor = - series.type === 'pie' - ? colorGetter(series) - : colorGetter( - series, - xAxis[series.xAxisKey ?? defaultXAxisId], - yAxis[series.yAxisKey ?? defaultYAxisId], - ); + let getColor: (index: number) => string; + switch (series.type) { + case 'pie': + getColor = colorGetter(series); + break; + case 'scatter': + getColor = colorGetter( + series, + xAxis[series.xAxisKey ?? defaultXAxisId], + yAxis[series.yAxisKey ?? defaultYAxisId], + zAxis[series.zAxisKey ?? defaultZAxisId], + ); + break; + default: + getColor = colorGetter( + series, + xAxis[series.xAxisKey ?? defaultXAxisId], + yAxis[series.yAxisKey ?? defaultYAxisId], + ); + break; + } const Content = content ?? DefaultChartsItemTooltipContent; const chartTooltipContentProps = useSlotProps({ diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index 9f14ccef431e..886cc4c33faf 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -32,6 +32,7 @@ import { ChartsVoronoiHandlerProps, } from '../ChartsVoronoiHandler/ChartsVoronoiHandler'; import { ChartsGrid, ChartsGridProps } from '../ChartsGrid'; +import { ZAxisContextProvider, ZAxisContextProviderProps } from '../context/ZAxisContextProvider'; export interface ScatterChartSlots extends ChartsAxisSlots, @@ -46,6 +47,7 @@ export interface ScatterChartSlotProps export interface ScatterChartProps extends Omit, + Omit, Omit, Omit { /** @@ -109,6 +111,7 @@ const ScatterChart = React.forwardRef(function ScatterChart(props: ScatterChartP const { xAxis, yAxis, + zAxis, series, tooltip, axisHighlight, @@ -142,31 +145,35 @@ const ScatterChart = React.forwardRef(function ScatterChart(props: ScatterChartP yAxis={yAxis} sx={sx} > - {!disableVoronoi && ( - - )} + + {!disableVoronoi && ( + + )} - - {grid && } - - - - - {children} + + {grid && } + + + + + {children} + ); }); @@ -583,6 +590,43 @@ ScatterChart.propTypes = { valueFormatter: PropTypes.func, }), ), + /** + * The configuration of the z-axes. + */ + zAxis: PropTypes.arrayOf( + PropTypes.shape({ + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), + data: PropTypes.array, + dataKey: PropTypes.string, + id: PropTypes.string, + }), + ), } as any; export { ScatterChart }; diff --git a/packages/x-charts/src/ScatterChart/ScatterPlot.tsx b/packages/x-charts/src/ScatterChart/ScatterPlot.tsx index 5c19c2cca9c6..f714d8fb513a 100644 --- a/packages/x-charts/src/ScatterChart/ScatterPlot.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterPlot.tsx @@ -4,6 +4,7 @@ import { Scatter, ScatterProps } from './Scatter'; import { SeriesContext } from '../context/SeriesContextProvider'; import { CartesianContext } from '../context/CartesianContextProvider'; import getColor from './getColor'; +import { ZAxisContext } from '../context/ZAxisContextProvider'; export interface ScatterPlotSlots { scatter?: React.JSXElementConstructor; @@ -40,6 +41,7 @@ function ScatterPlot(props: ScatterPlotProps) { const { slots, slotProps, onItemClick } = props; const seriesData = React.useContext(SeriesContext).scatter; const axisData = React.useContext(CartesianContext); + const { zAxis, zAxisIds } = React.useContext(ZAxisContext); if (seriesData === undefined) { return null; @@ -49,17 +51,20 @@ function ScatterPlot(props: ScatterPlotProps) { const defaultXAxisId = xAxisIds[0]; const defaultYAxisId = yAxisIds[0]; + const defaultZAxisId = zAxisIds[0]; + const ScatterItems = slots?.scatter ?? Scatter; return ( {seriesOrder.map((seriesId) => { - const { id, xAxisKey, yAxisKey, markerSize, color } = series[seriesId]; + const { id, xAxisKey, yAxisKey, zAxisKey, markerSize, color } = series[seriesId]; const colorGetter = getColor( series[seriesId], xAxis[xAxisKey ?? defaultXAxisId], yAxis[yAxisKey ?? defaultYAxisId], + zAxis[zAxisKey ?? defaultZAxisId], ); const xScale = xAxis[xAxisKey ?? defaultXAxisId].scale; const yScale = yAxis[yAxisKey ?? defaultYAxisId].scale; diff --git a/packages/x-charts/src/ScatterChart/getColor.ts b/packages/x-charts/src/ScatterChart/getColor.ts index 38cb1dc07f41..79166556b143 100644 --- a/packages/x-charts/src/ScatterChart/getColor.ts +++ b/packages/x-charts/src/ScatterChart/getColor.ts @@ -1,14 +1,33 @@ import { AxisDefaultized } from '../models/axis'; +import { ZAxisDefaultized } from '../models/z-axis'; import { DefaultizedScatterSeriesType } from '../models/seriesType/scatter'; export default function getColor( series: DefaultizedScatterSeriesType, xAxis: AxisDefaultized, yAxis: AxisDefaultized, + zAxis?: ZAxisDefaultized, ) { + const zColorScale = zAxis?.colorScale; const yColorScale = yAxis.colorScale; const xColorScale = xAxis.colorScale; + if (zColorScale) { + return (dataIndex: number) => { + if (zAxis?.data?.[dataIndex] !== undefined) { + const color = zColorScale(zAxis?.data?.[dataIndex]); + if (color !== null) { + return color; + } + } + const value = series.data[dataIndex]; + const color = value === null ? series.color : zColorScale(value.z); + if (color === null) { + return series.color; + } + return color; + }; + } if (yColorScale) { return (dataIndex: number) => { const value = series.data[dataIndex]; diff --git a/packages/x-charts/src/context/ZAxisContextProvider.tsx b/packages/x-charts/src/context/ZAxisContextProvider.tsx new file mode 100644 index 000000000000..df992559856e --- /dev/null +++ b/packages/x-charts/src/context/ZAxisContextProvider.tsx @@ -0,0 +1,134 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { DatasetType } from '../models/seriesType/config'; +import { MakeOptional } from '../models/helpers'; +import { getColorScale, getOrdinalColorScale } from '../internals/colorScale'; +import { ZAxisConfig, ZAxisDefaultized } from '../models/z-axis'; + +export type ZAxisContextProviderProps = { + /** + * The configuration of the z-axes. + */ + zAxis?: MakeOptional[]; + /** + * An array of objects that can be used to populate series and axes data using their `dataKey` property. + */ + dataset?: DatasetType; + children: React.ReactNode; +}; + +type DefaultizedZAxisConfig = { + [axisKey: string]: ZAxisDefaultized; +}; + +export const ZAxisContext = React.createContext<{ + /** + * Mapping from z-axis key to scaling configuration. + */ + zAxis: DefaultizedZAxisConfig; + /** + * The z-axes IDs sorted by order they got provided. + */ + zAxisIds: string[]; +}>({ zAxis: {}, zAxisIds: [] }); + +if (process.env.NODE_ENV !== 'production') { + ZAxisContext.displayName = 'ZAxisContext'; +} + +function ZAxisContextProvider(props: ZAxisContextProviderProps) { + const { zAxis: inZAxis, dataset, children } = props; + + const zAxis = React.useMemo( + () => + inZAxis?.map((axisConfig) => { + const dataKey = axisConfig.dataKey; + if (dataKey === undefined || axisConfig.data !== undefined) { + return axisConfig; + } + if (dataset === undefined) { + throw Error('MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.'); + } + return { + ...axisConfig, + data: dataset.map((d) => d[dataKey]), + }; + }), + [inZAxis, dataset], + ); + + const value = React.useMemo(() => { + const allZAxis: ZAxisConfig[] = + zAxis?.map((axis, index) => ({ id: `defaultized-z-axis-${index}`, ...axis })) ?? []; + + const completedZAxis: DefaultizedZAxisConfig = {}; + allZAxis.forEach((axis) => { + completedZAxis[axis.id] = { + ...axis, + colorScale: + axis.colorMap && + (axis.colorMap.type === 'ordinal' && axis.data + ? getOrdinalColorScale({ values: axis.data, ...axis.colorMap }) + : getColorScale(axis.colorMap)), + }; + }); + + return { + zAxis: completedZAxis, + zAxisIds: allZAxis.map(({ id }) => id), + }; + }, [zAxis]); + + return {children}; +} + +ZAxisContextProvider.propTypes = { + // ----------------------------- Warning -------------------------------- + // | These PropTypes are generated from the TypeScript type definitions | + // | To update them edit the TypeScript types and run "yarn proptypes" | + // ---------------------------------------------------------------------- + children: PropTypes.node, + /** + * An array of objects that can be used to populate series and axes data using their `dataKey` property. + */ + dataset: PropTypes.arrayOf(PropTypes.object), + /** + * The configuration of the z-axes. + */ + zAxis: PropTypes.arrayOf( + PropTypes.shape({ + colorMap: PropTypes.oneOfType([ + PropTypes.shape({ + color: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.string.isRequired), + PropTypes.func, + ]).isRequired, + max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]), + type: PropTypes.oneOf(['continuous']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + thresholds: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired, + ).isRequired, + type: PropTypes.oneOf(['piecewise']).isRequired, + }), + PropTypes.shape({ + colors: PropTypes.arrayOf(PropTypes.string).isRequired, + type: PropTypes.oneOf(['ordinal']).isRequired, + unknownColor: PropTypes.string, + values: PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]) + .isRequired, + ), + }), + ]), + data: PropTypes.array, + dataKey: PropTypes.string, + id: PropTypes.string, + }), + ), +} as any; + +export { ZAxisContextProvider }; diff --git a/packages/x-charts/src/context/index.ts b/packages/x-charts/src/context/index.ts index 58cbd7715d35..b2c53e2bb04f 100644 --- a/packages/x-charts/src/context/index.ts +++ b/packages/x-charts/src/context/index.ts @@ -1 +1,3 @@ export type { HighlightOptions, FadeOptions, HighlightScope } from './HighlightProvider'; +export { ZAxisContextProvider } from './ZAxisContextProvider'; +export type { ZAxisContextProviderProps } from './ZAxisContextProvider'; diff --git a/packages/x-charts/src/internals/colorGetter.ts b/packages/x-charts/src/internals/colorGetter.ts index 27aa84b3c1a1..0b022ff91e25 100644 --- a/packages/x-charts/src/internals/colorGetter.ts +++ b/packages/x-charts/src/internals/colorGetter.ts @@ -9,16 +9,19 @@ import { DefaultizedScatterSeriesType, } from '../models'; import { AxisDefaultized } from '../models/axis'; +import { ZAxisDefaultized } from '../models/z-axis'; function getColor(series: DefaultizedPieSeriesType): (dataIndex: number) => string; function getColor( - series: - | DefaultizedBarSeriesType - | DefaultizedLineSeriesType - | DefaultizedScatterSeriesType - | DefaultizedPieSeriesType, + series: DefaultizedBarSeriesType | DefaultizedLineSeriesType, + xAxis: AxisDefaultized, + yAxis: AxisDefaultized, +): (dataIndex: number) => string; +function getColor( + series: DefaultizedScatterSeriesType, xAxis: AxisDefaultized, yAxis: AxisDefaultized, + zAxis?: ZAxisDefaultized, ): (dataIndex: number) => string; function getColor( series: @@ -28,6 +31,7 @@ function getColor( | DefaultizedPieSeriesType, xAxis?: AxisDefaultized, yAxis?: AxisDefaultized, + zAxis?: ZAxisDefaultized, ): (dataIndex: number) => string { if (xAxis !== undefined && yAxis !== undefined) { if (series.type === 'bar') { @@ -39,7 +43,7 @@ function getColor( } if (series.type === 'scatter') { - return getScatterColor(series, xAxis, yAxis); + return getScatterColor(series, xAxis, yAxis, zAxis); } } if (series.type === 'pie') { diff --git a/packages/x-charts/src/models/colorMapping.ts b/packages/x-charts/src/models/colorMapping.ts index 045de15faa73..ba5dd13ecd5a 100644 --- a/packages/x-charts/src/models/colorMapping.ts +++ b/packages/x-charts/src/models/colorMapping.ts @@ -11,7 +11,7 @@ export interface ContinuousColorConfig { */ max?: Value; /** - * The colors to render. Can either be and array with the extrem colors, or an interpolation function. + * The colors to render. It can be an array with the extremum colors, or an interpolation function. */ color: [string, string] | ((t: number) => string); } @@ -24,7 +24,7 @@ export interface PiecewiseColorConfig { thresholds: Value[]; /** * The colors used for each band defined by `thresholds`. - * Should contain N+1 colors with N the number of thresholds. + * Should contain N+1 colors, where N is the number of thresholds. */ colors: string[]; } @@ -38,6 +38,7 @@ export interface OrdinalColorConfig { values?: Value[]; /** * The color palette. + * Items equal to `values[k]` will get the color of `colors[k]`. */ colors: string[]; /** diff --git a/packages/x-charts/src/models/seriesType/scatter.ts b/packages/x-charts/src/models/seriesType/scatter.ts index 9c2d9941f95b..48f1ec7ef98b 100644 --- a/packages/x-charts/src/models/seriesType/scatter.ts +++ b/packages/x-charts/src/models/seriesType/scatter.ts @@ -4,6 +4,7 @@ import { CartesianSeriesType, CommonDefaultizedProps, CommonSeriesType, SeriesId export type ScatterValueType = { x: number; y: number; + z?: any; /** * A unique identifier for the scatter point */ @@ -20,6 +21,10 @@ export interface ScatterSeriesType extends CommonSeriesType, C * @default false */ disableHover?: boolean; + /** + * The id of the z-axis used to render the series. + */ + zAxisKey?: string; } /** diff --git a/packages/x-charts/src/models/z-axis.ts b/packages/x-charts/src/models/z-axis.ts new file mode 100644 index 000000000000..0a493f5d8f68 --- /dev/null +++ b/packages/x-charts/src/models/z-axis.ts @@ -0,0 +1,20 @@ +import type { ScaleOrdinal, ScaleSequential, ScaleThreshold } from 'd3-scale'; +import { ContinuousColorConfig, OrdinalColorConfig, PiecewiseColorConfig } from './colorMapping'; + +export interface ZAxisConfig { + id: string; + data?: V[]; + /** + * The key used to retrieve `data` from the `dataset` prop. + */ + dataKey?: string; + colorMap?: OrdinalColorConfig | ContinuousColorConfig | PiecewiseColorConfig; +} + +export interface ZAxisDefaultized extends ZAxisConfig { + colorScale?: + | ScaleOrdinal + | ScaleOrdinal + | ScaleSequential + | ScaleThreshold; +} diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index a58bf1eee63c..8e34fbddc6b8 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -267,5 +267,7 @@ { "name": "useGaugeState", "kind": "Function" }, { "name": "useSvgRef", "kind": "Function" }, { "name": "useXScale", "kind": "Function" }, - { "name": "useYScale", "kind": "Function" } + { "name": "useYScale", "kind": "Function" }, + { "name": "ZAxisContextProvider", "kind": "Function" }, + { "name": "ZAxisContextProviderProps", "kind": "TypeAlias" } ] From fb8f3da02589a05e2898c22a99a8935bae694715 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Fri, 19 Apr 2024 12:23:27 +0200 Subject: [PATCH 140/912] [support-infra] Add release announcement to GitHub workflows (#11867) (#12843) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Olivier Tassinari --- .../discord-release-announcement.yaml | 20 +++++++++++++++++++ scripts/README.md | 6 +++++- scripts/releaseChangelog.mjs | 2 ++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/discord-release-announcement.yaml diff --git a/.github/workflows/discord-release-announcement.yaml b/.github/workflows/discord-release-announcement.yaml new file mode 100644 index 000000000000..11360a820d9d --- /dev/null +++ b/.github/workflows/discord-release-announcement.yaml @@ -0,0 +1,20 @@ +name: Discord Release Announcement + +on: + release: + types: [prereleased, published] + +permissions: {} + +jobs: + delimiter-test: + runs-on: ubuntu-latest + name: Send message to discord + steps: + - name: parse and send message + uses: michelengelen/discord-message-action@02af30a15955ecf718049bc33b0efabf6f626e0b + with: + webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }} + username: MUI Releases + avatar-url: 'https://raw.githubusercontent.com/mui/material-ui/master/docs/public/static/logo.png' + separator: '' diff --git a/scripts/README.md b/scripts/README.md index 416adebde670..f26e7925ba80 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -23,7 +23,11 @@ yarn release:changelog --release The branch to release (default: master) ``` -You can also provide the GitHub token by setting `process.env.GITHUB_TOKEN` variable. +> :warning: the script will add a separator string in form of a comment like this right after the highlights: +> `` +> This string needs to stay where it gets inserted for the automated discord announcement to work. + +You can also provide the github token by setting `process.env.GITHUB_TOKEN` variable. In case of a problem, another method to generate the changelog is available at the end of this page. diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index 2f528a340a7d..25d39443f38b 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -267,6 +267,8 @@ We'd like to offer a big thanks to the ${ TODO INSERT HIGHLIGHTS ${changeLogMessages.length > 0 ? '\n\n' : ''}${changeLogMessages.join('\n')} + + ### Data Grid #### \`@mui/x-data-grid@__VERSION__\` From f3b5f1b40ecb0a853f1cef841db533e3aec33c55 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Fri, 19 Apr 2024 13:25:14 +0200 Subject: [PATCH 141/912] [core] Use `describeTreeView` for focus tests (#12698) --- .../SimpleTreeView/SimpleTreeView.test.tsx | 139 ------------- .../src/TreeItem/TreeItem.test.tsx | 148 -------------- .../useTreeViewFocus.test.tsx | 189 ++++++++++++++++++ .../describeTreeView/describeTreeView.tsx | 14 +- .../describeTreeView.types.ts | 11 + 5 files changed, 213 insertions(+), 288 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx index 1152da7217c2..1d18084b46f4 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.test.tsx @@ -6,8 +6,6 @@ import Portal from '@mui/material/Portal'; import { SimpleTreeView, simpleTreeViewClasses as classes } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem } from '@mui/x-tree-view/TreeItem'; import { describeConformance } from 'test/utils/describeConformance'; -import { useTreeViewApiRef } from '../hooks'; -import { SimpleTreeViewApiRef } from './SimpleTreeView.types'; describe('', () => { const { render } = createRenderer(); @@ -244,143 +242,6 @@ describe('', () => { expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['1', '3']); }); - describe('onItemFocus', () => { - it('should be called when an item is focused', () => { - const onFocus = spy(); - const { getByTestId } = render( - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - - expect(onFocus.callCount).to.equal(1); - expect(onFocus.args[0][1]).to.equal('one'); - }); - }); - - describe('useTreeViewFocus', () => { - it('should set tabIndex={0} on the selected item', () => { - const { getByTestId } = render( - - - - , - ); - - expect(getByTestId('one').tabIndex).to.equal(0); - expect(getByTestId('two').tabIndex).to.equal(-1); - }); - - it('should set tabIndex={0} on the selected item (multi select)', () => { - const { getByTestId } = render( - - - - , - ); - - expect(getByTestId('one').tabIndex).to.equal(0); - expect(getByTestId('two').tabIndex).to.equal(-1); - }); - - it('should set tabIndex={0} on the first visible selected item (multi select)', () => { - const { getByTestId } = render( - - - - - - , - ); - - expect(getByTestId('one').tabIndex).to.equal(-1); - expect(getByTestId('three').tabIndex).to.equal(0); - }); - - it('should set tabIndex={0} on the first item if the selected item is not visible', () => { - const { getByTestId } = render( - - - - - - , - ); - - expect(getByTestId('one').tabIndex).to.equal(0); - expect(getByTestId('three').tabIndex).to.equal(-1); - }); - - it('should set tabIndex={0} on the first item if no selected item is visible (multi select)', () => { - const { getByTestId } = render( - - - - - - , - ); - - expect(getByTestId('one').tabIndex).to.equal(0); - expect(getByTestId('three').tabIndex).to.equal(-1); - }); - - it('should focus specific item using `apiRef`', () => { - let apiRef: SimpleTreeViewApiRef; - const onItemFocus = spy(); - - function TestCase() { - apiRef = useTreeViewApiRef(); - return ( - - - - - - - ); - } - - const { getByTestId } = render(); - - act(() => { - apiRef.current?.focusItem({} as React.SyntheticEvent, 'three'); - }); - - expect(getByTestId('three')).toHaveFocus(); - expect(onItemFocus.lastCall.lastArg).to.equal('three'); - }); - - it('should not focus item if parent is collapsed', () => { - let apiRef: SimpleTreeViewApiRef; - const onItemFocus = spy(); - - function TestCase() { - apiRef = useTreeViewApiRef(); - return ( - - - - - - - ); - } - - const { getByRole } = render(); - - act(() => { - apiRef.current?.focusItem({} as React.SyntheticEvent, '1.1'); - }); - - expect(getByRole('tree')).not.toHaveFocus(); - }); - }); - describe('Accessibility', () => { it('(TreeView) should have the role `tree`', () => { const { getByRole } = render(); diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index e0747a0cb786..cdf6e98ec0c6 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -284,82 +284,6 @@ describe('', () => { }); }); - describe('when an item receives focus', () => { - it('should focus the first item if none of the items are selected before the tree receives focus', () => { - const { getByTestId, queryAllByRole } = render( - - - - - , - ); - - expect(queryAllByRole('treeitem', { selected: true })).to.have.length(0); - - act(() => { - getByTestId('one').focus(); - }); - - expect(getByTestId('one')).toHaveFocus(); - }); - - it('should work with programmatic focus', () => { - const { getByTestId } = render( - - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - - expect(getByTestId('one')).toHaveFocus(); - - act(() => { - getByTestId('two').focus(); - }); - expect(getByTestId('two')).toHaveFocus(); - }); - - it('should work when focused item is removed', () => { - let removeActiveItem; - // a TreeItem which can remove from the tree by calling `removeActiveItem` - function ControlledTreeItem(props) { - const [mounted, setMounted] = React.useReducer(() => false, true); - removeActiveItem = setMounted; - - if (!mounted) { - return null; - } - return ; - } - - const { getByTestId } = render( - - - - - - , - ); - - act(() => { - getByTestId('three').focus(); - }); - expect(getByTestId('three')).toHaveFocus(); - - // generic action that removes an item. - // Could be promise based, or timeout, or another user interaction - act(() => { - removeActiveItem(); - }); - - expect(getByTestId('one')).toHaveFocus(); - }); - }); - describe('Navigation', () => { describe('right arrow interaction', () => { it('should open the item and not move the focus if focus is on a closed item', () => { @@ -1625,33 +1549,6 @@ describe('', () => { describe('focus', () => { describe('`disabledItemsFocusable={true}`', () => { - it('should prevent focus by mouse', () => { - const onItemFocus = spy(); - const { getByText } = render( - - - - , - ); - - fireEvent.click(getByText('two')); - expect(onItemFocus.callCount).to.equal(0); - }); - - it('should not prevent programmatic focus', () => { - const { getByTestId } = render( - - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - expect(getByTestId('one')).toHaveFocus(); - }); - it('should not prevent focus by type-ahead', () => { const { getByTestId } = render( @@ -1688,39 +1585,6 @@ describe('', () => { }); describe('`disabledItemsFocusable=false`', () => { - it('should prevent focus by mouse', () => { - const onItemFocus = spy(); - const { getByText } = render( - - - - , - ); - - fireEvent.click(getByText('two')); - expect(onItemFocus.callCount).to.equal(0); - }); - - it('should prevent focus when clicking', () => { - const handleMouseDown = spy(); - - const { getByText } = render( - - - - , - ); - - fireEvent.mouseDown(getByText('one')); - expect(handleMouseDown.lastCall.firstArg.defaultPrevented).to.equal(true); - }); - it('should prevent focus by type-ahead', () => { const { getByTestId } = render( @@ -1755,18 +1619,6 @@ describe('', () => { fireEvent.keyDown(getByTestId('one'), { key: 'ArrowDown' }); expect(getByTestId('three')).toHaveFocus(); }); - - it('should set tabIndex={-1} and tabIndex={0} on next item', () => { - const { getByTestId } = render( - - - - , - ); - - expect(getByTestId('one').tabIndex).to.equal(-1); - expect(getByTestId('two').tabIndex).to.equal(0); - }); }); }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx new file mode 100644 index 000000000000..4bb14892757c --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx @@ -0,0 +1,189 @@ +import { expect } from 'chai'; +import { spy } from 'sinon'; +import { act, fireEvent } from '@mui-internal/test-utils'; +import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; +import { + UseTreeViewFocusSignature, + UseTreeViewItemsSignature, + UseTreeViewSelectionSignature, +} from '@mui/x-tree-view/internals'; + +/** + * All tests related to keyboard navigation (e.g.: type-ahead when using `props.disabledItemsFocusable`) + * are located in the `useTreeViewKeyboardNavigation.test.tsx` file. + */ +describeTreeView< + [UseTreeViewFocusSignature, UseTreeViewSelectionSignature, UseTreeViewItemsSignature] +>('useTreeViewFocus plugin', ({ render }) => { + describe('basic behavior', () => { + it('should allow to focus an item', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + fireEvent.focus(response.getItemRoot('2')); + expect(response.getFocusedItemId()).to.equal('2'); + + fireEvent.focus(response.getItemRoot('1')); + expect(response.getFocusedItemId()).to.equal('1'); + }); + + it('should move the focus when the focused item is removed', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + fireEvent.focus(response.getItemRoot('2')); + expect(response.getFocusedItemId()).to.equal('2'); + + response.setItems([{ id: '1' }]); + expect(response.getFocusedItemId()).to.equal('1'); + }); + }); + + describe('tabIndex HTML attribute', () => { + it('should set tabIndex={0} on the first item if none are selected', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(0); + expect(response.getItemRoot('2').tabIndex).to.equal(-1); + }); + + it('should set tabIndex={0} on the selected item (single selection)', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + selectedItems: '2', + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(-1); + expect(response.getItemRoot('2').tabIndex).to.equal(0); + }); + + it('should set tabIndex={0} on the first selected item (multi selection)', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + selectedItems: ['2', '3'], + multiSelect: true, + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(-1); + expect(response.getItemRoot('2').tabIndex).to.equal(0); + expect(response.getItemRoot('3').tabIndex).to.equal(-1); + }); + + it('should set tabIndex={0} on the first item if the selected item is not visible', () => { + const response = render({ + items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }] }], + selectedItems: '2.1', + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(0); + expect(response.getItemRoot('2').tabIndex).to.equal(-1); + }); + + it('should set tabIndex={0} on the first item if the no selected item is visible', () => { + const response = render({ + items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }, { id: '2.2' }] }], + selectedItems: ['2.1', '2.2'], + multiSelect: true, + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(0); + expect(response.getItemRoot('2').tabIndex).to.equal(-1); + }); + }); + + describe('focusItem api method', () => { + it('should focus the item', () => { + const response = render({ + items: [{ id: '1' }, { id: '2' }], + }); + + act(() => { + response.apiRef.current.focusItem({} as any, '2'); + }); + + expect(response.getFocusedItemId()).to.equal('2'); + }); + + it('should not focus item if parent is collapsed', () => { + const response = render({ + items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }] }], + }); + + act(() => { + response.apiRef.current.focusItem({} as any, '2.1'); + }); + + expect(response.getFocusedItemId()).to.equal(null); + }); + }); + + describe('onItemFocus prop', () => { + it('should be called when an item is focused', () => { + const onItemFocus = spy(); + + const response = render({ + items: [{ id: '1' }], + onItemFocus, + }); + + act(() => { + response.getItemRoot('1').focus(); + }); + + expect(onItemFocus.callCount).to.equal(1); + expect(onItemFocus.lastCall.lastArg).to.equal('1'); + }); + }); + + describe('disabledItemsFocusable prop', () => { + describe('disabledItemFocusable={false}', () => { + it('should prevent focus by mouse', () => { + const response = render({ + items: [{ id: '1', disabled: true }], + disabledItemsFocusable: false, + }); + + fireEvent.click(response.getItemContent('1')); + expect(response.getFocusedItemId()).to.equal(null); + }); + + it('should tab tabIndex={-1} on the disabled item and tabIndex={0} on the first non-disabled item', () => { + const response = render({ + items: [{ id: '1', disabled: true }, { id: '2' }, { id: '3' }], + disabledItemsFocusable: false, + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(-1); + expect(response.getItemRoot('2').tabIndex).to.equal(0); + expect(response.getItemRoot('3').tabIndex).to.equal(-1); + }); + }); + + describe('disabledItemFocusable={true}', () => { + it('should prevent focus by mouse', () => { + const response = render({ + items: [{ id: '1', disabled: true }], + disabledItemsFocusable: true, + }); + + fireEvent.click(response.getItemContent('1')); + expect(response.getFocusedItemId()).to.equal(null); + }); + + it('should tab tabIndex={0} on the disabled item and tabIndex={-1} on the other items', () => { + const response = render({ + items: [{ id: '1', disabled: true }, { id: '2' }, { id: '3' }], + disabledItemsFocusable: true, + }); + + expect(response.getItemRoot('1').tabIndex).to.equal(0); + expect(response.getItemRoot('2').tabIndex).to.equal(-1); + expect(response.getItemRoot('3').tabIndex).to.equal(-1); + }); + }); + }); +}); diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 6184bf83eefc..6cfccabee847 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -23,11 +23,20 @@ const innerDescribeTreeView = ( const getUtils = ( result: MuiRenderResult, - ): Omit, 'setProps' | 'apiRef'> => { + ): Omit, 'setProps' | 'setItems' | 'apiRef'> => { const getRoot = () => result.getByRole('tree'); const getAllItemRoots = () => result.queryAllByRole('treeitem'); + const getFocusedItemId = () => { + const activeElement = document.activeElement; + if (!activeElement || !activeElement.classList.contains(treeItemClasses.root)) { + return null; + } + + return (activeElement as HTMLElement).dataset.testid!; + }; + const getItemRoot = (id: string) => result.getByTestId(id); const getItemContent = (id: string) => @@ -46,6 +55,7 @@ const innerDescribeTreeView = ( return { getRoot, getAllItemRoots, + getFocusedItemId, getItemRoot, getItemContent, getItemLabel, @@ -91,6 +101,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, + setItems: (newItems) => result.setProps({ items: newItems }), apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; @@ -137,6 +148,7 @@ const innerDescribeTreeView = ( return { setProps: result.setProps, + setItems: (newItems) => result.setProps({ children: newItems.map(renderItem) }), apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, ...getUtils(result), }; diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index e28e480022a8..ba15ccee9e59 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -19,6 +19,11 @@ export interface DescribeTreeViewRendererReturnValue< * @param {Partial>} props A subset of the props accepted by the Tree View. */ setProps: (props: Partial>) => void; + /** + * Passes new items to the Tree View. + * @param {readyonly DescribeTreeViewItem[]} items The new items. + */ + setItems: (items: readonly DescribeTreeViewItem[]) => void; /** * The ref object that allows Tree View manipulation. */ @@ -28,6 +33,12 @@ export interface DescribeTreeViewRendererReturnValue< * @returns {HTMLElement} `root` slot of the Tree View. */ getRoot: () => HTMLElement; + /** + * Returns the itemId of the focused item. + * If the focused element is not an item, returns `null`. + * @returns {string | null} The itemId of the focused item. + */ + getFocusedItemId: () => string | null; /** * Returns the `root` slot of all the items. * @returns {HTMLElement[]} List of the `root` slot of all the items. From fc8524e45118ac987755fa5a00c71d149cabb03c Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Fri, 19 Apr 2024 14:45:47 +0200 Subject: [PATCH 142/912] [DataGrid] Fix date filtering for negative timezone offsets (#12836) --- packages/x-data-grid/src/colDef/gridDateOperators.ts | 7 +++++++ .../components/panel/filterPanel/GridFilterInputDate.tsx | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/x-data-grid/src/colDef/gridDateOperators.ts b/packages/x-data-grid/src/colDef/gridDateOperators.ts index 3511d6082c85..fb05f45fa824 100644 --- a/packages/x-data-grid/src/colDef/gridDateOperators.ts +++ b/packages/x-data-grid/src/colDef/gridDateOperators.ts @@ -16,6 +16,13 @@ function buildApplyFilterFn( if (showTime) { date.setSeconds(0, 0); } else { + // In GMT-X timezone, the date will be one day behind. + // For 2022-08-16: + // GMT+2: Tue Aug 16 2022 02:00:00 GMT+0200 + // GMT-4: Mon Aug 15 2022 20:00:00 GMT-0400 + // + // We need to add the offset before resetting the hours. + date.setMinutes(date.getMinutes() + date.getTimezoneOffset()); date.setHours(0, 0, 0, 0); } const time = date.getTime(); diff --git a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx index 528af026ff58..f583c4f8860c 100644 --- a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx +++ b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputDate.tsx @@ -29,14 +29,14 @@ function convertFilterItemValueToInputValue( if (Number.isNaN(dateCopy.getTime())) { return ''; } - // The date picker expects the date to be in the local timezone. - // But .toISOString() converts it to UTC with zero offset. - // So we need to subtract the timezone offset. - dateCopy.setMinutes(dateCopy.getMinutes() - dateCopy.getTimezoneOffset()); if (inputType === 'date') { return dateCopy.toISOString().substring(0, 10); } if (inputType === 'datetime-local') { + // The date picker expects the date to be in the local timezone. + // But .toISOString() converts it to UTC with zero offset. + // So we need to subtract the timezone offset. + dateCopy.setMinutes(dateCopy.getMinutes() - dateCopy.getTimezoneOffset()); return dateCopy.toISOString().substring(0, 19); } return dateCopy.toISOString().substring(0, 10); From b9cccdcd73b7f9b6932e1dba417549120354b93a Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 19 Apr 2024 15:27:13 +0200 Subject: [PATCH 143/912] [docs] Document interfaces for charts (#12656) --- docs/data/pages.ts | 23 ++- docs/pages/x/api/charts/axis-config.js | 26 ++++ docs/pages/x/api/charts/axis-config.json | 52 +++++++ docs/pages/x/api/charts/bar-chart.json | 20 +-- docs/pages/x/api/charts/bar-series-type.js | 26 ++++ docs/pages/x/api/charts/bar-series-type.json | 20 +++ docs/pages/x/api/charts/charts-axis.json | 20 +-- docs/pages/x/api/charts/line-chart.json | 20 +-- docs/pages/x/api/charts/line-series-type.js | 26 ++++ docs/pages/x/api/charts/line-series-type.json | 24 ++++ docs/pages/x/api/charts/pie-chart.json | 20 +-- docs/pages/x/api/charts/pie-series-type.js | 26 ++++ docs/pages/x/api/charts/pie-series-type.json | 41 ++++++ docs/pages/x/api/charts/scatter-chart.json | 20 +-- .../pages/x/api/charts/scatter-series-type.js | 26 ++++ .../x/api/charts/scatter-series-type.json | 18 +++ .../api/buildInterfacesDocumentation.ts | 2 - docs/scripts/createXTypeScriptProjects.ts | 15 +- docs/scripts/generateProptypes.ts | 4 + .../api-docs/charts/axis-config.json | 61 ++++++++ .../api-docs/charts/bar-chart/bar-chart.json | 8 +- .../api-docs/charts/bar-series-type.json | 25 ++++ .../chart-container/chart-container.json | 4 +- .../charts/line-chart/line-chart.json | 8 +- .../api-docs/charts/line-series-type.json | 35 +++++ .../api-docs/charts/pie-chart/pie-chart.json | 8 +- .../api-docs/charts/pie-series-type.json | 41 ++++++ .../responsive-chart-container.json | 4 +- .../charts/scatter-chart/scatter-chart.json | 8 +- .../api-docs/charts/scatter-series-type.json | 21 +++ packages/x-charts/src/BarChart/BarChart.tsx | 132 ++---------------- .../src/ChartContainer/ChartContainer.tsx | 2 + .../x-charts/src/ChartsAxis/ChartsAxis.tsx | 128 +---------------- packages/x-charts/src/LineChart/LineChart.tsx | 132 ++---------------- packages/x-charts/src/PieChart/PieChart.tsx | 132 ++---------------- .../ResponsiveChartContainer.tsx | 2 + .../src/ScatterChart/ScatterChart.tsx | 132 ++---------------- .../src/context/CartesianContextProvider.tsx | 2 + .../x-charts/src/models/seriesType/pie.ts | 5 + 39 files changed, 592 insertions(+), 727 deletions(-) create mode 100644 docs/pages/x/api/charts/axis-config.js create mode 100644 docs/pages/x/api/charts/axis-config.json create mode 100644 docs/pages/x/api/charts/bar-series-type.js create mode 100644 docs/pages/x/api/charts/bar-series-type.json create mode 100644 docs/pages/x/api/charts/line-series-type.js create mode 100644 docs/pages/x/api/charts/line-series-type.json create mode 100644 docs/pages/x/api/charts/pie-series-type.js create mode 100644 docs/pages/x/api/charts/pie-series-type.json create mode 100644 docs/pages/x/api/charts/scatter-series-type.js create mode 100644 docs/pages/x/api/charts/scatter-series-type.json create mode 100644 docs/translations/api-docs/charts/axis-config.json create mode 100644 docs/translations/api-docs/charts/bar-series-type.json create mode 100644 docs/translations/api-docs/charts/line-series-type.json create mode 100644 docs/translations/api-docs/charts/pie-series-type.json create mode 100644 docs/translations/api-docs/charts/scatter-series-type.json diff --git a/docs/data/pages.ts b/docs/data/pages.ts index c53b315baa2f..fb518feaa82a 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -437,11 +437,6 @@ const pages: MuiPage[] = [ title: 'Sparkline', }, { pathname: '/x/react-charts/gauge', title: 'Gauge' }, - { - pathname: '/x/api/charts-group', - title: 'API Reference', - children: [...chartsComponentApi], - }, { pathname: '/x/react-charts/common-features', subheader: 'Common features', @@ -455,6 +450,24 @@ const pages: MuiPage[] = [ { pathname: '/x/react-charts/tooltip', title: 'Tooltip & Highlights' }, ], }, + { + pathname: '/x/api/charts-group', + title: 'API Reference', + children: [ + ...chartsComponentApi, + { + pathname: '/x/api/charts-interfaces-group', + subheader: 'Interfaces', + children: [ + { pathname: '/x/api/charts/axis-config', title: 'AxisConfig' }, + { pathname: '/x/api/charts/bar-series-type', title: 'BarSeriesType' }, + { pathname: '/x/api/charts/line-series-type', title: 'LineSeriesType' }, + { pathname: '/x/api/charts/pie-series-type', title: 'PieSeriesType' }, + { pathname: '/x/api/charts/scatter-series-type', title: 'ScatterSeriesType' }, + ], + }, + ], + }, { pathname: '/x/react-charts-future', subheader: 'Future components', diff --git a/docs/pages/x/api/charts/axis-config.js b/docs/pages/x/api/charts/axis-config.js new file mode 100644 index 000000000000..b406bbe2a8cd --- /dev/null +++ b/docs/pages/x/api/charts/axis-config.js @@ -0,0 +1,26 @@ +import * as React from 'react'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './axis-config.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/', + false, + /\.\/axis-config.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/axis-config.json b/docs/pages/x/api/charts/axis-config.json new file mode 100644 index 000000000000..ffa4d0a84105 --- /dev/null +++ b/docs/pages/x/api/charts/axis-config.json @@ -0,0 +1,52 @@ +{ + "name": "AxisConfig", + "imports": ["import { AxisConfig } from '@mui/x-charts'"], + "properties": { + "id": { "type": { "description": "AxisId" }, "required": true }, + "scaleType": { "type": { "description": "'linear'" }, "required": true }, + "axisId": { "type": { "description": "AxisId" } }, + "classes": { "type": { "description": "Partial<ChartsAxisClasses>" } }, + "colorMap": { "type": { "description": "ContinuousColorConfig | PiecewiseColorConfig" } }, + "data": { "type": { "description": "V[]" } }, + "dataKey": { "type": { "description": "string" } }, + "disableLine": { "type": { "description": "boolean" }, "default": "false" }, + "disableTicks": { "type": { "description": "boolean" }, "default": "false" }, + "fill": { "type": { "description": "string" }, "default": "'currentColor'" }, + "hideTooltip": { "type": { "description": "boolean" } }, + "label": { "type": { "description": "string" } }, + "labelFontSize": { "type": { "description": "number" }, "default": "14" }, + "labelStyle": { "type": { "description": "ChartsTextProps['style']" } }, + "max": { "type": { "description": "number | Date" } }, + "min": { "type": { "description": "number | Date" } }, + "position": { "type": { "description": "'top' | 'bottom'" } }, + "reverse": { "type": { "description": "boolean" } }, + "slotProps": { + "type": { "description": "Partial<ChartsAxisSlotProps>" }, + "default": "{}" + }, + "slots": { "type": { "description": "Partial<ChartsAxisSlots>" }, "default": "{}" }, + "stroke": { "type": { "description": "string" }, "default": "'currentColor'" }, + "tickFontSize": { "type": { "description": "number" }, "default": "12" }, + "tickInterval": { + "type": { "description": "'auto' | ((value: any, index: number) => boolean) | any[]" }, + "default": "'auto'" + }, + "tickLabelInterval": { + "type": { "description": "'auto' | ((value: any, index: number) => boolean)" }, + "default": "'auto'" + }, + "tickLabelPlacement": { "type": { "description": "'middle' | 'tick'" }, "default": "'middle'" }, + "tickLabelStyle": { "type": { "description": "ChartsTextProps['style']" } }, + "tickMaxStep": { "type": { "description": "number" } }, + "tickMinStep": { "type": { "description": "number" } }, + "tickNumber": { "type": { "description": "number" } }, + "tickPlacement": { + "type": { "description": "'start' | 'end' | 'middle' | 'extremities'" }, + "default": "'extremities'" + }, + "tickSize": { "type": { "description": "number" }, "default": "6" }, + "valueFormatter": { + "type": { "description": "(value: V, context: AxisValueFormatterContext) => string" } + } + } +} diff --git a/docs/pages/x/api/charts/bar-chart.json b/docs/pages/x/api/charts/bar-chart.json index 9098d9ca0a4a..6b8bb27f372b 100644 --- a/docs/pages/x/api/charts/bar-chart.json +++ b/docs/pages/x/api/charts/bar-chart.json @@ -15,10 +15,7 @@ } }, "bottomAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "xAxisIds[0] The id of the first provided axis" }, "colors": { @@ -36,10 +33,7 @@ "default": "'vertical'" }, "leftAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, "margin": { @@ -64,10 +58,7 @@ } }, "rightAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, @@ -85,10 +76,7 @@ "seeMoreLink": { "url": "https://mui.com/x/react-charts/tooltip/", "text": "tooltip docs" } }, "topAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "width": { "type": { "name": "number" } }, diff --git a/docs/pages/x/api/charts/bar-series-type.js b/docs/pages/x/api/charts/bar-series-type.js new file mode 100644 index 000000000000..dc7461d5983d --- /dev/null +++ b/docs/pages/x/api/charts/bar-series-type.js @@ -0,0 +1,26 @@ +import * as React from 'react'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './bar-series-type.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/', + false, + /\.\/bar-series-type.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/bar-series-type.json b/docs/pages/x/api/charts/bar-series-type.json new file mode 100644 index 000000000000..bcf4308b930b --- /dev/null +++ b/docs/pages/x/api/charts/bar-series-type.json @@ -0,0 +1,20 @@ +{ + "name": "BarSeriesType", + "imports": ["import { BarSeriesType } from '@mui/x-charts'"], + "properties": { + "type": { "type": { "description": "'bar'" }, "required": true }, + "color": { "type": { "description": "string" } }, + "data": { "type": { "description": "(number | null)[]" } }, + "dataKey": { "type": { "description": "string" } }, + "highlightScope": { "type": { "description": "Partial<HighlightScope>" } }, + "id": { "type": { "description": "SeriesId" } }, + "label": { "type": { "description": "string" } }, + "layout": { "type": { "description": "'horizontal' | 'vertical'" }, "default": "'vertical'" }, + "stack": { "type": { "description": "string" } }, + "stackOffset": { "type": { "description": "StackOffsetType" }, "default": "'diverging'" }, + "stackOrder": { "type": { "description": "StackOrderType" }, "default": "'none'" }, + "valueFormatter": { "type": { "description": "SeriesValueFormatter<TValue>" } }, + "xAxisKey": { "type": { "description": "string" } }, + "yAxisKey": { "type": { "description": "string" } } + } +} diff --git a/docs/pages/x/api/charts/charts-axis.json b/docs/pages/x/api/charts/charts-axis.json index 50ca8a9ef894..43c16ca688f3 100644 --- a/docs/pages/x/api/charts/charts-axis.json +++ b/docs/pages/x/api/charts/charts-axis.json @@ -1,24 +1,15 @@ { "props": { "bottomAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "xAxisIds[0] The id of the first provided axis" }, "leftAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, "rightAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, @@ -28,10 +19,7 @@ "additionalInfo": { "slotsApi": true } }, "topAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" } }, diff --git a/docs/pages/x/api/charts/line-chart.json b/docs/pages/x/api/charts/line-chart.json index 700a593f0242..b1d80bcaf2f8 100644 --- a/docs/pages/x/api/charts/line-chart.json +++ b/docs/pages/x/api/charts/line-chart.json @@ -16,10 +16,7 @@ } }, "bottomAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "xAxisIds[0] The id of the first provided axis" }, "colors": { @@ -34,10 +31,7 @@ }, "height": { "type": { "name": "number" } }, "leftAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, "margin": { @@ -58,10 +52,7 @@ "onLineClick": { "type": { "name": "func" } }, "onMarkClick": { "type": { "name": "func" } }, "rightAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, @@ -80,10 +71,7 @@ "seeMoreLink": { "url": "https://mui.com/x/react-charts/tooltip/", "text": "tooltip docs" } }, "topAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "width": { "type": { "name": "number" } }, diff --git a/docs/pages/x/api/charts/line-series-type.js b/docs/pages/x/api/charts/line-series-type.js new file mode 100644 index 000000000000..9008c8b5f6d9 --- /dev/null +++ b/docs/pages/x/api/charts/line-series-type.js @@ -0,0 +1,26 @@ +import * as React from 'react'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './line-series-type.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/', + false, + /\.\/line-series-type.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/line-series-type.json b/docs/pages/x/api/charts/line-series-type.json new file mode 100644 index 000000000000..71e8623ef073 --- /dev/null +++ b/docs/pages/x/api/charts/line-series-type.json @@ -0,0 +1,24 @@ +{ + "name": "LineSeriesType", + "imports": ["import { LineSeriesType } from '@mui/x-charts'"], + "properties": { + "type": { "type": { "description": "'line'" }, "required": true }, + "area": { "type": { "description": "boolean" } }, + "color": { "type": { "description": "string" } }, + "connectNulls": { "type": { "description": "boolean" }, "default": "false" }, + "curve": { "type": { "description": "CurveType" } }, + "data": { "type": { "description": "(number | null)[]" } }, + "dataKey": { "type": { "description": "string" } }, + "disableHighlight": { "type": { "description": "boolean" }, "default": "false" }, + "highlightScope": { "type": { "description": "Partial<HighlightScope>" } }, + "id": { "type": { "description": "SeriesId" } }, + "label": { "type": { "description": "string" } }, + "showMark": { "type": { "description": "boolean | ((params: ShowMarkParams) => boolean)" } }, + "stack": { "type": { "description": "string" } }, + "stackOffset": { "type": { "description": "StackOffsetType" }, "default": "'none'" }, + "stackOrder": { "type": { "description": "StackOrderType" }, "default": "'none'" }, + "valueFormatter": { "type": { "description": "SeriesValueFormatter<TValue>" } }, + "xAxisKey": { "type": { "description": "string" } }, + "yAxisKey": { "type": { "description": "string" } } + } +} diff --git a/docs/pages/x/api/charts/pie-chart.json b/docs/pages/x/api/charts/pie-chart.json index 3291f4fec6cb..69293d2a8da2 100644 --- a/docs/pages/x/api/charts/pie-chart.json +++ b/docs/pages/x/api/charts/pie-chart.json @@ -16,10 +16,7 @@ } }, "bottomAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "colors": { @@ -30,10 +27,7 @@ "disableAxisListener": { "type": { "name": "bool" }, "default": "false" }, "height": { "type": { "name": "number" } }, "leftAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "legend": { @@ -54,10 +48,7 @@ }, "onItemClick": { "type": { "name": "func" } }, "rightAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "skipAnimation": { "type": { "name": "bool" }, "default": "false" }, @@ -76,10 +67,7 @@ "seeMoreLink": { "url": "https://mui.com/x/react-charts/tooltip/", "text": "tooltip docs" } }, "topAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "width": { "type": { "name": "number" } }, diff --git a/docs/pages/x/api/charts/pie-series-type.js b/docs/pages/x/api/charts/pie-series-type.js new file mode 100644 index 000000000000..9076d0eeb469 --- /dev/null +++ b/docs/pages/x/api/charts/pie-series-type.js @@ -0,0 +1,26 @@ +import * as React from 'react'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './pie-series-type.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/', + false, + /\.\/pie-series-type.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/pie-series-type.json b/docs/pages/x/api/charts/pie-series-type.json new file mode 100644 index 000000000000..c0fe4d8ea244 --- /dev/null +++ b/docs/pages/x/api/charts/pie-series-type.json @@ -0,0 +1,41 @@ +{ + "name": "PieSeriesType", + "imports": ["import { PieSeriesType } from '@mui/x-charts'"], + "properties": { + "data": { "type": { "description": "Tdata[]" }, "required": true }, + "type": { "type": { "description": "'pie'" }, "required": true }, + "arcLabel": { + "type": { + "description": "'formattedValue' | 'label' | 'value' | ((item: DefaultizedPieValueType) => string)" + } + }, + "arcLabelMinAngle": { "type": { "description": "number" }, "default": "0" }, + "arcLabelRadius": { + "type": { "description": "number | string" }, + "default": "(innerRadius - outerRadius) / 2" + }, + "color": { "type": { "description": "string" } }, + "cornerRadius": { "type": { "description": "number" }, "default": "0" }, + "cx": { "type": { "description": "number | string" }, "default": "'50%'" }, + "cy": { "type": { "description": "number | string" }, "default": "'50%'" }, + "endAngle": { "type": { "description": "number" }, "default": "360" }, + "faded": { + "type": { + "description": "{
    /**
    * Value added to the default `outerRadius`.
    * Can be negative. It is ignored if you provide a `faded.outerRadius` value.
    */
    additionalRadius?: number
    innerRadius?: number
    outerRadius?: number
    cornerRadius?: number
    paddingAngle?: number
    arcLabelRadius?: number
    color?: string
    }" + } + }, + "highlighted": { + "type": { + "description": "{
    /**
    * Value added to the default `outerRadius`.
    * Can be negative. It is ignored if you provide a `highlighted.outerRadius` value.
    */
    additionalRadius?: number
    innerRadius?: number
    outerRadius?: number
    cornerRadius?: number
    paddingAngle?: number
    arcLabelRadius?: number
    color?: string
    }" + } + }, + "highlightScope": { "type": { "description": "Partial<HighlightScope>" } }, + "id": { "type": { "description": "SeriesId" } }, + "innerRadius": { "type": { "description": "number | string" }, "default": "0" }, + "outerRadius": { "type": { "description": "number | string" }, "default": "'100%'" }, + "paddingAngle": { "type": { "description": "number" }, "default": "0" }, + "sortingValues": { "type": { "description": "ChartsPieSorting" }, "default": "'none'" }, + "startAngle": { "type": { "description": "number" }, "default": "0" }, + "valueFormatter": { "type": { "description": "SeriesValueFormatter<TValue>" } } + } +} diff --git a/docs/pages/x/api/charts/scatter-chart.json b/docs/pages/x/api/charts/scatter-chart.json index c2e6985c1e8c..d5ef16720554 100644 --- a/docs/pages/x/api/charts/scatter-chart.json +++ b/docs/pages/x/api/charts/scatter-chart.json @@ -16,10 +16,7 @@ } }, "bottomAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "xAxisIds[0] The id of the first provided axis" }, "colors": { @@ -34,10 +31,7 @@ }, "height": { "type": { "name": "number" } }, "leftAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, "margin": { @@ -55,10 +49,7 @@ } }, "rightAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'left'
    | 'right', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "slotProps": { "type": { "name": "object" }, "default": "{}" }, @@ -76,10 +67,7 @@ "seeMoreLink": { "url": "https://mui.com/x/react-charts/tooltip/", "text": "tooltip docs" } }, "topAxis": { - "type": { - "name": "union", - "description": "{ axisId?: number
    | string, classes?: object, disableLine?: bool, disableTicks?: bool, fill?: string, label?: string, labelFontSize?: number, labelStyle?: object, position?: 'bottom'
    | 'top', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number }
    | string" - }, + "type": { "name": "union", "description": "object
    | string" }, "default": "null" }, "voronoiMaxRadius": { "type": { "name": "number" } }, diff --git a/docs/pages/x/api/charts/scatter-series-type.js b/docs/pages/x/api/charts/scatter-series-type.js new file mode 100644 index 000000000000..9787eee18e59 --- /dev/null +++ b/docs/pages/x/api/charts/scatter-series-type.js @@ -0,0 +1,26 @@ +import * as React from 'react'; +import InterfaceApiPage from 'docsx/src/modules/components/InterfaceApiPage'; +import layoutConfig from 'docsx/src/modules/utils/dataGridLayoutConfig'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './scatter-series-type.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ( + + ); +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/charts/', + false, + /\.\/scatter-series-type.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/charts/scatter-series-type.json b/docs/pages/x/api/charts/scatter-series-type.json new file mode 100644 index 000000000000..84c2471e40fd --- /dev/null +++ b/docs/pages/x/api/charts/scatter-series-type.json @@ -0,0 +1,18 @@ +{ + "name": "ScatterSeriesType", + "imports": ["import { ScatterSeriesType } from '@mui/x-charts'"], + "properties": { + "data": { "type": { "description": "ScatterValueType[]" }, "required": true }, + "type": { "type": { "description": "'scatter'" }, "required": true }, + "color": { "type": { "description": "string" } }, + "disableHover": { "type": { "description": "boolean" }, "default": "false" }, + "highlightScope": { "type": { "description": "Partial<HighlightScope>" } }, + "id": { "type": { "description": "SeriesId" } }, + "label": { "type": { "description": "string" } }, + "markerSize": { "type": { "description": "number" } }, + "valueFormatter": { "type": { "description": "SeriesValueFormatter<TValue>" } }, + "xAxisKey": { "type": { "description": "string" } }, + "yAxisKey": { "type": { "description": "string" } }, + "zAxisKey": { "type": { "description": "string" } } + } +} diff --git a/docs/scripts/api/buildInterfacesDocumentation.ts b/docs/scripts/api/buildInterfacesDocumentation.ts index 01fd502ecdf1..807ce8abe1ae 100644 --- a/docs/scripts/api/buildInterfacesDocumentation.ts +++ b/docs/scripts/api/buildInterfacesDocumentation.ts @@ -209,7 +209,6 @@ export async function buildApiInterfacesJson(options: BuildApiInterfacesJsonOpti } const project = projects.get(packagesWithThisInterface[0])!; - const parsedInterface = await parseInterfaceSymbol( interfaceName, packagesWithThisInterface, @@ -237,7 +236,6 @@ export async function buildApiInterfacesJson(options: BuildApiInterfacesJsonOpti type: property.typeStr, })), }; - await writePrettifiedFile( path.resolve(apiPagesFolder, project.documentationFolderName, `${slug}.json`), JSON.stringify(json), diff --git a/docs/scripts/createXTypeScriptProjects.ts b/docs/scripts/createXTypeScriptProjects.ts index c3fb3d16e9ff..071e11aadccb 100644 --- a/docs/scripts/createXTypeScriptProjects.ts +++ b/docs/scripts/createXTypeScriptProjects.ts @@ -152,10 +152,17 @@ export const interfacesToDocument: InterfacesToDocumentType[] = [ 'GridAggregationFunction', ], }, - // { - // folder: 'charts', - // packages: ['x-charts'], - // }, + { + folder: 'charts', + packages: ['x-charts'], + documentedInterfaces: [ + 'BarSeriesType', + 'LineSeriesType', + 'PieSeriesType', + 'ScatterSeriesType', + 'AxisConfig', + ], + }, ]; export const datagridApiToDocument = [ diff --git a/docs/scripts/generateProptypes.ts b/docs/scripts/generateProptypes.ts index dbc2280c520d..399128bc531e 100644 --- a/docs/scripts/generateProptypes.ts +++ b/docs/scripts/generateProptypes.ts @@ -67,6 +67,10 @@ async function generateProptypes(project: XTypeScriptProject, sourceFile: string 'unstableEndFieldRef', 'series', 'axis', + 'bottomAxis', + 'topAxis', + 'leftAxis', + 'rightAxis', ]; if (propsToNotResolve.includes(name)) { return false; diff --git a/docs/translations/api-docs/charts/axis-config.json b/docs/translations/api-docs/charts/axis-config.json new file mode 100644 index 000000000000..a0bc3d838875 --- /dev/null +++ b/docs/translations/api-docs/charts/axis-config.json @@ -0,0 +1,61 @@ +{ + "interfaceDescription": "", + "propertiesDescriptions": { + "id": { "description": "Id used to identify the axis." }, + "scaleType": { "description": "" }, + "axisId": { + "description": "The id of the axis to render.
    If undefined, it will be the first defined axis." + }, + "classes": { "description": "Override or extend the styles applied to the component." }, + "colorMap": { "description": "" }, + "data": { + "description": "The data used by 'band' and 'point' scales." + }, + "dataKey": { + "description": "The key used to retrieve data from the dataset prop." + }, + "disableLine": { "description": "If true, the axis line is disabled." }, + "disableTicks": { "description": "If true, the ticks are disabled." }, + "fill": { "description": "The fill color of the axis text." }, + "hideTooltip": { "description": "If true, hide this value in the tooltip" }, + "label": { "description": "The label of the axis." }, + "labelFontSize": { "description": "The font size of the axis label." }, + "labelStyle": { "description": "The style applied to the axis label." }, + "max": { + "description": "The maximal value of the domain.
    If not provided, it gets computed to display the entire chart data." + }, + "min": { + "description": "The minimal value of the domain.
    If not provided, it gets computed to display the entire chart data." + }, + "position": { "description": "Position of the axis." }, + "reverse": { "description": "If true, Reverse the axis scaleBand." }, + "slotProps": { "description": "The props used for each component slot." }, + "slots": { "description": "Overridable component slots." }, + "stroke": { "description": "The stroke color of the axis line." }, + "tickFontSize": { "description": "The font size of the axis ticks text." }, + "tickInterval": { + "description": "Defines which ticks are displayed. Its value can be:
    - 'auto' In such case the ticks are computed based on axis scale and other parameters.
    - a filtering function of the form (value, index) =&gt; boolean which is available only if the axis has a data property.
    - an array containing the values where ticks should be displayed." + }, + "tickLabelInterval": { + "description": "Defines which ticks get its label displayed. Its value can be:
    - 'auto' In such case, labels are displayed if they do not overlap with the previous one.
    - a filtering function of the form (value, index) => boolean. Warning: the index is tick index, not data ones." + }, + "tickLabelPlacement": { + "description": "The placement of ticks label. Can be the middle of the band, or the tick position.
    Only used if scale is 'band'." + }, + "tickLabelStyle": { "description": "The style applied to ticks text." }, + "tickMaxStep": { + "description": "Maximal step between two ticks.
    When using time data, the value is assumed to be in ms.
    Not supported by categorical axis (band, points)." + }, + "tickMinStep": { + "description": "Minimal step between two ticks.
    When using time data, the value is assumed to be in ms.
    Not supported by categorical axis (band, points)." + }, + "tickNumber": { + "description": "The number of ticks. This number is not guaranteed.
    Not supported by categorical axis (band, points)." + }, + "tickPlacement": { + "description": "The placement of ticks in regard to the band interval.
    Only used if scale is 'band'." + }, + "tickSize": { "description": "The size of the ticks." }, + "valueFormatter": { "description": "Formats the axis value." } + } +} diff --git a/docs/translations/api-docs/charts/bar-chart/bar-chart.json b/docs/translations/api-docs/charts/bar-chart/bar-chart.json index 3d356906dd2b..176f08e5a0a9 100644 --- a/docs/translations/api-docs/charts/bar-chart/bar-chart.json +++ b/docs/translations/api-docs/charts/bar-chart/bar-chart.json @@ -43,7 +43,9 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, - "series": { "description": "The series to display in the bar chart." }, + "series": { + "description": "The series to display in the bar chart. An array of
    BarSeriesType objects." + }, "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, @@ -58,10 +60,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used." + "description": "The configuration of the x-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used." + "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/charts/bar-series-type.json b/docs/translations/api-docs/charts/bar-series-type.json new file mode 100644 index 000000000000..d93ba6d135b4 --- /dev/null +++ b/docs/translations/api-docs/charts/bar-series-type.json @@ -0,0 +1,25 @@ +{ + "interfaceDescription": "", + "propertiesDescriptions": { + "type": { "description": "" }, + "color": { "description": "" }, + "data": { "description": "Data associated to each bar." }, + "dataKey": { "description": "The key used to retrive data from the dataset." }, + "highlightScope": { "description": "" }, + "id": { "description": "" }, + "label": { "description": "" }, + "layout": { "description": "Layout of the bars. All bar should have the same layout." }, + "stack": { + "description": "The key that identifies the stacking group.
    Series with the same stack property will be stacked together." + }, + "stackOffset": { "description": "Defines how stacked series handle negative values." }, + "stackOrder": { + "description": "The order in which series' of the same group are stacked together." + }, + "valueFormatter": { + "description": "Formatter used to render values in tooltip or other data display." + }, + "xAxisKey": { "description": "The id of the x-axis used to render the series." }, + "yAxisKey": { "description": "The id of the y-axis used to render the series." } + } +} diff --git a/docs/translations/api-docs/charts/chart-container/chart-container.json b/docs/translations/api-docs/charts/chart-container/chart-container.json index 8080d75cf213..ea5d89b42ea5 100644 --- a/docs/translations/api-docs/charts/chart-container/chart-container.json +++ b/docs/translations/api-docs/charts/chart-container/chart-container.json @@ -17,10 +17,10 @@ }, "width": { "description": "The width of the chart in px." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used." + "description": "The configuration of the x-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used." + "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." } }, "classDescriptions": {} diff --git a/docs/translations/api-docs/charts/line-chart/line-chart.json b/docs/translations/api-docs/charts/line-chart/line-chart.json index 1c0594fce5e7..eed651782034 100644 --- a/docs/translations/api-docs/charts/line-chart/line-chart.json +++ b/docs/translations/api-docs/charts/line-chart/line-chart.json @@ -41,7 +41,9 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, - "series": { "description": "The series to display in the line chart." }, + "series": { + "description": "The series to display in the line chart. An array of LineSeriesType objects." + }, "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, @@ -56,10 +58,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used." + "description": "The configuration of the x-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used." + "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/charts/line-series-type.json b/docs/translations/api-docs/charts/line-series-type.json new file mode 100644 index 000000000000..964a3778533a --- /dev/null +++ b/docs/translations/api-docs/charts/line-series-type.json @@ -0,0 +1,35 @@ +{ + "interfaceDescription": "", + "propertiesDescriptions": { + "type": { "description": "" }, + "area": { "description": "" }, + "color": { "description": "" }, + "connectNulls": { + "description": "If true, line and area connect points separated by null values." + }, + "curve": { "description": "" }, + "data": { "description": "Data associated to the line." }, + "dataKey": { "description": "The key used to retrive data from the dataset." }, + "disableHighlight": { + "description": "Do not render the line highlight item if set to true." + }, + "highlightScope": { "description": "" }, + "id": { "description": "" }, + "label": { "description": "" }, + "showMark": { + "description": "Define which items of the series should display a mark.
    If can be a boolean that applies to all items.
    Or a callback that gets some item properties and returns true if the item should be displayed." + }, + "stack": { + "description": "The key that identifies the stacking group.
    Series with the same stack property will be stacked together." + }, + "stackOffset": { "description": "Defines how stacked series handle negative values." }, + "stackOrder": { + "description": "The order in which series' of the same group are stacked together." + }, + "valueFormatter": { + "description": "Formatter used to render values in tooltip or other data display." + }, + "xAxisKey": { "description": "The id of the x-axis used to render the series." }, + "yAxisKey": { "description": "The id of the y-axis used to render the series." } + } +} diff --git a/docs/translations/api-docs/charts/pie-chart/pie-chart.json b/docs/translations/api-docs/charts/pie-chart/pie-chart.json index a968d77da360..fdbc83823da9 100644 --- a/docs/translations/api-docs/charts/pie-chart/pie-chart.json +++ b/docs/translations/api-docs/charts/pie-chart/pie-chart.json @@ -29,7 +29,9 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, - "series": { "description": "The series to display in the pie chart." }, + "series": { + "description": "The series to display in the pie chart. An array of PieSeriesType objects." + }, "skipAnimation": { "description": "If true, animations are skipped." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, @@ -44,10 +46,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used." + "description": "The configuration of the x-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used." + "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/charts/pie-series-type.json b/docs/translations/api-docs/charts/pie-series-type.json new file mode 100644 index 000000000000..0320a5522271 --- /dev/null +++ b/docs/translations/api-docs/charts/pie-series-type.json @@ -0,0 +1,41 @@ +{ + "interfaceDescription": "", + "propertiesDescriptions": { + "data": { "description": "" }, + "type": { "description": "" }, + "arcLabel": { "description": "The label displayed into the arc." }, + "arcLabelMinAngle": { "description": "The minimal angle required to display the arc label." }, + "arcLabelRadius": { + "description": "The radius between circle center and the arc label.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the maximal radius that fit into the drawing area." + }, + "color": { "description": "" }, + "cornerRadius": { + "description": "The radius applied to arc corners (similar to border radius)." + }, + "cx": { + "description": "The x coordinate of the pie center.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the width the drawing area." + }, + "cy": { + "description": "The y coordinate of the pie center.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the height the drawing area." + }, + "endAngle": { "description": "The end angle (deg) of the last item." }, + "faded": { "description": "Override the arc attibutes when it is faded." }, + "highlighted": { "description": "Override the arc attibutes when it is highlighted." }, + "highlightScope": { "description": "" }, + "id": { "description": "" }, + "innerRadius": { + "description": "The radius between circle center and the begining of the arc.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the maximal radius that fit into the drawing area." + }, + "outerRadius": { + "description": "The radius between circle center and the end of the arc.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the maximal radius that fit into the drawing area." + }, + "paddingAngle": { "description": "The padding angle (deg) between two arcs." }, + "sortingValues": { + "description": "The sorting strategy used to order pie slices.
    Can be 'none', 'asc', 'desc', or a sorting function." + }, + "startAngle": { "description": "The start angle (deg) of the first item." }, + "valueFormatter": { + "description": "Formatter used to render values in tooltip or other data display." + } + } +} diff --git a/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json b/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json index c2d27fe6a10a..48ac45553874 100644 --- a/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json +++ b/docs/translations/api-docs/charts/responsive-chart-container/responsive-chart-container.json @@ -21,10 +21,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used." + "description": "The configuration of the x-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used." + "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." } }, "classDescriptions": {} diff --git a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json index 06e037d0ed66..e21764d22d4c 100644 --- a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json +++ b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json @@ -38,7 +38,9 @@ "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, - "series": { "description": "The series to display in the scatter chart." }, + "series": { + "description": "The series to display in the scatter chart. An array of ScatterSeriesType objects." + }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, "tooltip": { @@ -55,10 +57,10 @@ "description": "The width of the chart in px. If not defined, it takes the width of the parent element." }, "xAxis": { - "description": "The configuration of the x-axes. If not provided, a default axis config is used." + "description": "The configuration of the x-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "yAxis": { - "description": "The configuration of the y-axes. If not provided, a default axis config is used." + "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." }, "zAxis": { "description": "The configuration of the z-axes." } }, diff --git a/docs/translations/api-docs/charts/scatter-series-type.json b/docs/translations/api-docs/charts/scatter-series-type.json new file mode 100644 index 000000000000..33a10405f9e5 --- /dev/null +++ b/docs/translations/api-docs/charts/scatter-series-type.json @@ -0,0 +1,21 @@ +{ + "interfaceDescription": "", + "propertiesDescriptions": { + "data": { "description": "" }, + "type": { "description": "" }, + "color": { "description": "" }, + "disableHover": { + "description": "If true, the interaction will not use element hover for this series." + }, + "highlightScope": { "description": "" }, + "id": { "description": "" }, + "label": { "description": "" }, + "markerSize": { "description": "" }, + "valueFormatter": { + "description": "Formatter used to render values in tooltip or other data display." + }, + "xAxisKey": { "description": "The id of the x-axis used to render the series." }, + "yAxisKey": { "description": "The id of the y-axis used to render the series." }, + "zAxisKey": { "description": "The id of the z-axis used to render the series." } + } +} diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 066d34f3c752..6d812f1bdc27 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -49,6 +49,7 @@ export interface BarChartProps ChartsOnAxisClickHandlerProps { /** * The series to display in the bar chart. + * An array of [[BarSeriesType]] objects. */ series: MakeOptional[]; /** @@ -224,37 +225,7 @@ BarChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default xAxisIds[0] The id of the first provided axis */ - bottomAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), children: PropTypes.node, className: PropTypes.string, /** @@ -294,37 +265,7 @@ BarChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default yAxisIds[0] The id of the first provided axis */ - leftAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * @deprecated Consider using `slotProps.legend` instead. */ @@ -369,39 +310,10 @@ BarChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default null */ - rightAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * The series to display in the bar chart. + * An array of [[BarSeriesType]] objects. */ series: PropTypes.arrayOf(PropTypes.object).isRequired, /** @@ -442,37 +354,7 @@ BarChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default null */ - topAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), viewBox: PropTypes.shape({ height: PropTypes.number, width: PropTypes.number, @@ -486,6 +368,7 @@ BarChart.propTypes = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -556,6 +439,7 @@ BarChart.propTypes = { /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index 9eacd20c1684..521de8f5b011 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -137,6 +137,7 @@ ChartContainer.propTypes = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -207,6 +208,7 @@ ChartContainer.propTypes = { /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx b/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx index 8e1111814712..07d1357c992a 100644 --- a/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx +++ b/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx @@ -153,109 +153,19 @@ ChartsAxis.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default xAxisIds[0] The id of the first provided axis */ - bottomAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * Indicate which axis to display the left of the charts. * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default yAxisIds[0] The id of the first provided axis */ - leftAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * Indicate which axis to display the right of the charts. * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default null */ - rightAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * The props used for each component slot. * @default {} @@ -271,37 +181,7 @@ ChartsAxis.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default null */ - topAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), } as any; export { ChartsAxis }; diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index 2ae0942c1b95..e8fdd6cced01 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -61,6 +61,7 @@ export interface LineChartProps ChartsOnAxisClickHandlerProps { /** * The series to display in the line chart. + * An array of [[LineSeriesType]] objects. */ series: MakeOptional[]; /** @@ -252,37 +253,7 @@ LineChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default xAxisIds[0] The id of the first provided axis */ - bottomAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), children: PropTypes.node, className: PropTypes.string, /** @@ -321,37 +292,7 @@ LineChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default yAxisIds[0] The id of the first provided axis */ - leftAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * @deprecated Consider using `slotProps.legend` instead. */ @@ -402,39 +343,10 @@ LineChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default null */ - rightAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * The series to display in the line chart. + * An array of [[LineSeriesType]] objects. */ series: PropTypes.arrayOf(PropTypes.object).isRequired, /** @@ -476,37 +388,7 @@ LineChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default null */ - topAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), viewBox: PropTypes.shape({ height: PropTypes.number, width: PropTypes.number, @@ -520,6 +402,7 @@ LineChart.propTypes = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -590,6 +473,7 @@ LineChart.propTypes = { /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index b582925577c4..b358e0e00576 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -61,6 +61,7 @@ export interface PieChartProps leftAxis?: null | string | ChartsYAxisProps; /** * The series to display in the pie chart. + * An array of [[PieSeriesType]] objects. */ series: MakeOptional>, 'type'>[]; /** @@ -207,37 +208,7 @@ PieChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default null */ - bottomAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), children: PropTypes.node, className: PropTypes.string, /** @@ -265,37 +236,7 @@ PieChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default null */ - leftAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * The props of the legend. * @default { direction: 'column', position: { vertical: 'middle', horizontal: 'right' } } @@ -333,39 +274,10 @@ PieChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default null */ - rightAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * The series to display in the pie chart. + * An array of [[PieSeriesType]] objects. */ series: PropTypes.arrayOf(PropTypes.object).isRequired, /** @@ -407,37 +319,7 @@ PieChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default null */ - topAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), viewBox: PropTypes.shape({ height: PropTypes.number, width: PropTypes.number, @@ -451,6 +333,7 @@ PieChart.propTypes = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -521,6 +404,7 @@ PieChart.propTypes = { /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx index 4319acdb555a..a1b4e2203db1 100644 --- a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx +++ b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx @@ -115,6 +115,7 @@ ResponsiveChartContainer.propTypes = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -185,6 +186,7 @@ ResponsiveChartContainer.propTypes = { /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index 886cc4c33faf..ba6afc0469af 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -52,6 +52,7 @@ export interface ScatterChartProps Omit { /** * The series to display in the scatter chart. + * An array of [[ScatterSeriesType]] objects. */ series: MakeOptional[]; /** @@ -197,37 +198,7 @@ ScatterChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default xAxisIds[0] The id of the first provided axis */ - bottomAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + bottomAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), children: PropTypes.node, className: PropTypes.string, /** @@ -267,37 +238,7 @@ ScatterChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default yAxisIds[0] The id of the first provided axis */ - leftAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + leftAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * @deprecated Consider using `slotProps.legend` instead. */ @@ -335,39 +276,10 @@ ScatterChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. * @default null */ - rightAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['left', 'right']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + rightAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), /** * The series to display in the scatter chart. + * An array of [[ScatterSeriesType]] objects. */ series: PropTypes.arrayOf(PropTypes.object).isRequired, /** @@ -404,37 +316,7 @@ ScatterChart.propTypes = { * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. * @default null */ - topAxis: PropTypes.oneOfType([ - PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - classes: PropTypes.object, - disableLine: PropTypes.bool, - disableTicks: PropTypes.bool, - fill: PropTypes.string, - label: PropTypes.string, - labelFontSize: PropTypes.number, - labelStyle: PropTypes.object, - position: PropTypes.oneOf(['bottom', 'top']), - slotProps: PropTypes.object, - slots: PropTypes.object, - stroke: PropTypes.string, - tickFontSize: PropTypes.number, - tickInterval: PropTypes.oneOfType([ - PropTypes.oneOf(['auto']), - PropTypes.array, - PropTypes.func, - ]), - tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]), - tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']), - tickLabelStyle: PropTypes.object, - tickMaxStep: PropTypes.number, - tickMinStep: PropTypes.number, - tickNumber: PropTypes.number, - tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']), - tickSize: PropTypes.number, - }), - PropTypes.string, - ]), + topAxis: PropTypes.oneOfType([PropTypes.object, PropTypes.string]), viewBox: PropTypes.shape({ height: PropTypes.number, width: PropTypes.number, @@ -453,6 +335,7 @@ ScatterChart.propTypes = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis: PropTypes.arrayOf( PropTypes.shape({ @@ -523,6 +406,7 @@ ScatterChart.propTypes = { /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis: PropTypes.arrayOf( PropTypes.shape({ diff --git a/packages/x-charts/src/context/CartesianContextProvider.tsx b/packages/x-charts/src/context/CartesianContextProvider.tsx index 2cc81afd655f..a6eaeb90f9aa 100644 --- a/packages/x-charts/src/context/CartesianContextProvider.tsx +++ b/packages/x-charts/src/context/CartesianContextProvider.tsx @@ -33,11 +33,13 @@ export type CartesianContextProviderProps = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ xAxis?: MakeOptional[]; /** * The configuration of the y-axes. * If not provided, a default axis config is used. + * An array of [[AxisConfig]] objects. */ yAxis?: MakeOptional[]; /** diff --git a/packages/x-charts/src/models/seriesType/pie.ts b/packages/x-charts/src/models/seriesType/pie.ts index 5fea25a4f6c6..7b731ed68b2e 100644 --- a/packages/x-charts/src/models/seriesType/pie.ts +++ b/packages/x-charts/src/models/seriesType/pie.ts @@ -63,6 +63,11 @@ export interface PieSeriesType extends CommonSeriesType Date: Fri, 19 Apr 2024 09:19:21 -0600 Subject: [PATCH 144/912] [docs] Add demo for styling charts with sx props (#12791) Co-authored-by: alexandre --- docs/data/charts/styling/SxStyling.js | 48 +++++++++++++++++++++++++ docs/data/charts/styling/SxStyling.tsx | 49 ++++++++++++++++++++++++++ docs/data/charts/styling/styling.md | 2 ++ 3 files changed, 99 insertions(+) create mode 100644 docs/data/charts/styling/SxStyling.js create mode 100644 docs/data/charts/styling/SxStyling.tsx diff --git a/docs/data/charts/styling/SxStyling.js b/docs/data/charts/styling/SxStyling.js new file mode 100644 index 000000000000..158f933f9ff0 --- /dev/null +++ b/docs/data/charts/styling/SxStyling.js @@ -0,0 +1,48 @@ +import * as React from 'react'; +import { BarChart, barElementClasses } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; + +const labels = ['Group A', 'Group B', 'Group C', 'Group D', 'Group E']; +const lData = [42, 24, 56, 45, 3]; +const rData = [57, 7, 19, 16, 22]; +const colors = ['#006BD6', '#EC407A']; + +export default function SxStyling() { + return ( + ({ + [`.${barElementClasses.root}`]: { + fill: theme.palette.background.paper, + strokeWidth: 2, + }, + [`.MuiBarElement-series-l_id`]: { + stroke: colors[0], + }, + [`.MuiBarElement-series-r_id`]: { + stroke: colors[1], + }, + [`.${axisClasses.root}`]: { + [`.${axisClasses.tick}, .${axisClasses.line}`]: { + stroke: '#006BD6', + strokeWidth: 3, + }, + [`.${axisClasses.tickLabel}`]: { + fill: '#006BD6', + }, + }, + border: `1px solid rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1)`, + backgroundImage: `linear-gradient(rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px)`, + backgroundSize: '35px 35px', + backgroundPosition: '20px 20px, 20px 20px', + })} + xAxis={[{ scaleType: 'band', data: labels }]} + series={[ + { data: lData, label: 'l', id: 'l_id' }, + { data: rData, label: 'r', id: 'r_id' }, + ]} + colors={colors} + width={500} + height={300} + /> + ); +} diff --git a/docs/data/charts/styling/SxStyling.tsx b/docs/data/charts/styling/SxStyling.tsx new file mode 100644 index 000000000000..57758d5ab7b9 --- /dev/null +++ b/docs/data/charts/styling/SxStyling.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import { BarChart, barElementClasses } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; + +const labels: string[] = ['Group A', 'Group B', 'Group C', 'Group D', 'Group E']; +const lData: number[] = [42, 24, 56, 45, 3]; +const rData: number[] = [57, 7, 19, 16, 22]; +const colors: string[] = ['#006BD6', '#EC407A']; + +export default function SxStyling(): React.JSX.Element { + return ( + ({ + [`.${barElementClasses.root}`]: { + fill: theme.palette.background.paper, + strokeWidth: 2, + }, + [`.MuiBarElement-series-l_id`]: { + stroke: colors[0], + }, + [`.MuiBarElement-series-r_id`]: { + stroke: colors[1], + }, + [`.${axisClasses.root}`]: { + [`.${axisClasses.tick}, .${axisClasses.line}`]: { + stroke: '#006BD6', + strokeWidth: 3, + }, + [`.${axisClasses.tickLabel}`]: { + fill: '#006BD6', + }, + }, + + border: `1px solid rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1)`, + backgroundImage: `linear-gradient(rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px)`, + backgroundSize: '35px 35px', + backgroundPosition: '20px 20px, 20px 20px', + })} + xAxis={[{ scaleType: 'band', data: labels }]} + series={[ + { data: lData, label: 'l', id: 'l_id' }, + { data: rData, label: 'r', id: 'r_id' }, + ]} + colors={colors} + width={500} + height={300} + /> + ); +} diff --git a/docs/data/charts/styling/styling.md b/docs/data/charts/styling/styling.md index 22d64de01465..61d1a1357f6d 100644 --- a/docs/data/charts/styling/styling.md +++ b/docs/data/charts/styling/styling.md @@ -128,3 +128,5 @@ Since the library relies on SVG for rendering, you can customize them as you do Chart components accept the `sx` props. From here, you can target any subcomponents with its class name. + +{{"demo": "SxStyling.js"}} From 6e11e1e76eb11f0382e9d0d39ff20f5676fa29da Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 19 Apr 2024 13:46:26 -0400 Subject: [PATCH 145/912] [DataGrid] Fix flex column width when used with pinned columns (#12849) --- .../src/hooks/features/columns/gridColumnsUtils.ts | 13 +++++++++---- .../src/hooks/features/columns/useGridColumns.tsx | 9 +++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts b/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts index 94ec07bb341a..9126960acde7 100644 --- a/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts +++ b/packages/x-data-grid/src/hooks/features/columns/gridColumnsUtils.ts @@ -22,6 +22,7 @@ import { GridRowEntry } from '../../../models/gridRows'; import { gridDensityFactorSelector } from '../density/densitySelector'; import { gridHeaderFilteringEnabledSelector } from '../headerFiltering/gridHeaderFilteringSelectors'; import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector'; +import type { GridDimensions } from '../dimensions/gridDimensionsApi'; export const COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'] as const; @@ -161,7 +162,7 @@ export function computeFlexColumnsWidth({ */ export const hydrateColumnsWidth = ( rawState: GridColumnsRawState, - viewportInnerWidth: number, + dimensions: GridDimensions | undefined, ): GridColumnsState => { const columnsLookup: GridColumnLookup = {}; let totalFlexUnits = 0; @@ -196,10 +197,14 @@ export const hydrateColumnsWidth = ( columnsLookup[columnField] = newColumn; }); - const initialFreeSpace = Math.max(viewportInnerWidth - widthAllocatedBeforeFlex, 0); + const availableWidth = + dimensions === undefined + ? 0 + : dimensions.viewportOuterSize.width - (dimensions.hasScrollY ? dimensions.scrollbarSize : 0); + const initialFreeSpace = Math.max(availableWidth - widthAllocatedBeforeFlex, 0); // Allocate the remaining space to the flex columns - if (totalFlexUnits > 0 && viewportInnerWidth > 0) { + if (totalFlexUnits > 0 && availableWidth > 0) { const computedColumnWidths = computeFlexColumnsWidth({ initialFreeSpace, totalFlexUnits, @@ -395,7 +400,7 @@ export const createColumnsState = ({ return hydrateColumnsWidth( columnsStateWithPortableColumns, - apiRef.current.getRootDimensions?.().viewportInnerSize.width ?? 0, + apiRef.current.getRootDimensions?.() ?? undefined, ); }; diff --git a/packages/x-data-grid/src/hooks/features/columns/useGridColumns.tsx b/packages/x-data-grid/src/hooks/features/columns/useGridColumns.tsx index 8b8702126ed9..852597ec4892 100644 --- a/packages/x-data-grid/src/hooks/features/columns/useGridColumns.tsx +++ b/packages/x-data-grid/src/hooks/features/columns/useGridColumns.tsx @@ -243,7 +243,7 @@ export function useGridColumns( [field]: newColumn, }, }, - apiRef.current.getRootDimensions().viewportInnerSize.width, + apiRef.current.getRootDimensions(), ), ); @@ -386,9 +386,10 @@ export function useGridColumns( useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing); useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing); - /** + /* * EVENTS */ + const prevInnerWidth = React.useRef(null); const handleGridSizeChange: GridEventListener<'viewportInnerSizeChange'> = ( viewportInnerSize, @@ -398,7 +399,7 @@ export function useGridColumns( setGridColumnsState( hydrateColumnsWidth( gridColumnsStateSelector(apiRef.current.state), - viewportInnerSize.width, + apiRef.current.getRootDimensions(), ), ); } @@ -423,7 +424,7 @@ export function useGridColumns( useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns); - /** + /* * EFFECTS */ // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridColumns` From 48c34f83f309386b142283e7c371479460111d33 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Fri, 19 Apr 2024 20:31:52 +0200 Subject: [PATCH 146/912] [DataGrid] Pass slot props to `columnHeaders` slot (#12768) --- packages/x-data-grid/src/components/GridHeaders.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/x-data-grid/src/components/GridHeaders.tsx b/packages/x-data-grid/src/components/GridHeaders.tsx index 8a3254bb4a6a..10a926d5ae9a 100644 --- a/packages/x-data-grid/src/components/GridHeaders.tsx +++ b/packages/x-data-grid/src/components/GridHeaders.tsx @@ -75,6 +75,7 @@ function GridHeaders() { columnVisibility={columnVisibility} columnGroupsHeaderStructure={columnGroupsHeaderStructure} hasOtherElementInTabSequence={hasOtherElementInTabSequence} + {...rootProps.slotProps?.columnHeaders} /> ); } From e22f3cc884b49c0ef78267a1e4b20e063ae13151 Mon Sep 17 00:00:00 2001 From: Aleix Soler Date: Sat, 20 Apr 2024 00:44:03 +0200 Subject: [PATCH 147/912] [l10n] Improve Catalan (ca-ES) locale (#12856) --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/caES.ts | 52 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 57afc42d751b..8009acf73184 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -19,7 +19,7 @@ "languageTag": "ca-ES", "importName": "caES", "localeName": "Catalan", - "missingKeysCount": 14, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/caES.ts" }, diff --git a/packages/x-date-pickers/src/locales/caES.ts b/packages/x-date-pickers/src/locales/caES.ts index 022b5b706f05..a20b33f90f2e 100644 --- a/packages/x-date-pickers/src/locales/caES.ts +++ b/packages/x-date-pickers/src/locales/caES.ts @@ -3,38 +3,38 @@ import { getPickersLocalization } from './utils/getPickersLocalization'; import { TimeViewWithMeridiem } from '../internals/models'; const views: Record = { - hours: 'les hores', - minutes: 'els minuts', - seconds: 'els segons', - meridiem: 'meridiem', + hours: 'Hores', + minutes: 'Minuts', + seconds: 'Segons', + meridiem: 'Meridià', }; const caESPickers: Partial> = { // Calendar navigation - previousMonth: 'Últim mes', - nextMonth: 'Pròxim mes', + previousMonth: 'Mes anterior', + nextMonth: 'Mes següent', // View navigation openPreviousView: "Obrir l'última vista", - openNextView: 'obrir la següent vista', + openNextView: 'Obrir la següent vista', calendarViewSwitchingButtonAriaLabel: (view) => view === 'year' - ? "la vista de l'any està oberta, canvie a la vista de calendari" - : "la vista de calendari està oberta, canvie a la vista de l'any", + ? 'la vista anual està oberta, canvia a la vista de calendari' + : 'la vista de calendari està oberta, canvia a la vista anual', // DateRange labels start: 'Començar', end: 'Terminar', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Data inicial', + startTime: 'Hora inicial', + endDate: 'Data final', + endTime: 'Hora final', // Action bar cancelButtonLabel: 'Cancel·lar', clearButtonLabel: 'Netejar', okButtonLabel: 'OK', - todayButtonLabel: 'Hui', + todayButtonLabel: 'Avuí', // Toolbar titles datePickerToolbarTitle: 'Seleccionar data', @@ -44,7 +44,7 @@ const caESPickers: Partial> = { // Clock labels clockLabelText: (view, time, adapter) => - `Seleccione ${views[view]}. ${time === null ? 'Sense temps seleccionat' : `El temps seleccionat és ${adapter.format(time, 'fullTime')}`}`, + `Selecciona ${views[view]}. ${time === null ? 'Hora no seleccionada' : `L'hora seleccionada és ${adapter.format(time, 'fullTime')}`}`, hoursClockNumberText: (hours) => `${hours} hores`, minutesClockNumberText: (minutes) => `${minutes} minuts`, secondsClockNumberText: (seconds) => `${seconds} segons`, @@ -53,7 +53,7 @@ const caESPickers: Partial> = { selectViewText: (view) => `Seleccionar ${views[view]}`, // Calendar labels - calendarWeekNumberHeaderLabel: 'Número de setmana', + calendarWeekNumberHeaderLabel: 'Número de la setmana', calendarWeekNumberHeaderText: '#', calendarWeekNumberAriaLabelText: (weekNumber) => `Setmana ${weekNumber}`, calendarWeekNumberText: (weekNumber) => `${weekNumber}`, @@ -67,7 +67,7 @@ const caESPickers: Partial> = { value !== null && utils.isValid(value) ? `Tria l'hora, l'hora triada és ${utils.format(value, 'fullTime')}` : "Tria l'hora", - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Netega el valor', // Table labels timeTableLabel: 'tria la data', @@ -84,17 +84,17 @@ const caESPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Any', + month: 'Mes', + day: 'Dia', + weekDay: 'Dia de la setmana', + hours: 'Hores', + minutes: 'Minuts', + seconds: 'Segons', + meridiem: 'Meridià', // Common - // empty: 'Empty', + empty: 'Buit', }; export const caES = getPickersLocalization(caESPickers); From 14c577fd2b5aff7d802b4919fedaf73f88cb28e3 Mon Sep 17 00:00:00 2001 From: Aleix Soler Date: Sat, 20 Apr 2024 00:49:02 +0200 Subject: [PATCH 148/912] [l10n] Improve Spanish (es-ES) locale (#12858) --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/esES.ts | 42 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 8009acf73184..1ea439619b64 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -219,7 +219,7 @@ "languageTag": "es-ES", "importName": "esES", "localeName": "Spanish", - "missingKeysCount": 13, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/esES.ts" }, diff --git a/packages/x-date-pickers/src/locales/esES.ts b/packages/x-date-pickers/src/locales/esES.ts index aa0c69a70c74..f66c4c3848c9 100644 --- a/packages/x-date-pickers/src/locales/esES.ts +++ b/packages/x-date-pickers/src/locales/esES.ts @@ -3,32 +3,32 @@ import { getPickersLocalization } from './utils/getPickersLocalization'; import { TimeViewWithMeridiem } from '../internals/models'; const views: Record = { - hours: 'las horas', - minutes: 'los minutos', - seconds: 'los segundos', - meridiem: 'meridiano', + hours: 'Horas', + minutes: 'Minutos', + seconds: 'Segundos', + meridiem: 'Meridiano', }; const esESPickers: Partial> = { // Calendar navigation - previousMonth: 'Último mes', - nextMonth: 'Próximo mes', + previousMonth: 'Mes anterior', + nextMonth: 'Mes siguiente', // View navigation openPreviousView: 'Abrir la última vista', openNextView: 'Abrir la siguiente vista', calendarViewSwitchingButtonAriaLabel: (view) => view === 'year' - ? 'la vista del año está abierta, cambie a la vista de calendario' - : 'la vista de calendario está abierta, cambie a la vista del año', + ? 'la vista anual está abierta, cambie a la vista de calendario' + : 'la vista de calendario está abierta, cambie a la vista anual', // DateRange labels start: 'Empezar', end: 'Terminar', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Fecha inicio', + startTime: 'Hora inicio', + endDate: 'Fecha final', + endTime: 'Hora final', // Action bar cancelButtonLabel: 'Cancelar', @@ -84,17 +84,17 @@ const esESPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Año', + month: 'Mes', + day: 'Dia', + weekDay: 'Dia de la semana', + hours: 'Horas', + minutes: 'Minutos', + seconds: 'Segundos', + meridiem: 'Meridiano', // Common - // empty: 'Empty', + empty: 'Vacío', }; export const esES = getPickersLocalization(esESPickers); From 906ad7d286e7fa0663047cc90543d287e6da41ad Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 21 Apr 2024 01:15:00 +0200 Subject: [PATCH 149/912] =?UTF-8?q?[core]=20Match=20Base=C2=A0UI=20and=20T?= =?UTF-8?q?oolpad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inspired by https://github.com/mui/mui-toolpad/pull/3424#discussion_r1573054030 --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2c9100241348..c663e8eff7e2 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@mnajdova/enzyme-adapter-react-18": "^0.2.0", "@mui/icons-material": "^5.15.14", "@mui/material": "^5.15.14", - "@mui/monorepo": "https://github.com/mui/material-ui.git#next", + "@mui/monorepo": "https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266", "@mui/utils": "^5.15.14", "@next/eslint-plugin-next": "14.0.4", "@octokit/plugin-retry": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index cee3b422a11d..de2f6096d1a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2016,7 +2016,7 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/monorepo@https://github.com/mui/material-ui.git#next": +"@mui/monorepo@https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266": version "6.0.0-alpha.0" resolved "https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266" dependencies: From f407288f0dc323aeecd1673b5405797f7bd4d56f Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 21 Apr 2024 18:23:12 +0200 Subject: [PATCH 150/912] [docs] Fix Vale regression (#12862) --- CHANGELOG.md | 4 ++-- docs/data/data-grid/pagination/pagination.md | 2 +- scripts/README.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a50dfd077059..8184073b87e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -243,7 +243,7 @@ Same changes as in `@mui/x-date-pickers@7.1.1`, plus: - [docs] Fix type arguments in Custom Field page (#12619) @Juneezee - [docs] Fix typo in `getItemId` prop description (#12637) @flaviendelangle - [docs] Make the Charts `margin` usage more visible (#12591) @alexfauquette -- [docs] Match IE 11 spacing with Material UI @oliviertassinari +- [docs] Match IE 11 spacing with Material UI @oliviertassinari - [docs] Move data grid interfaces to standard API page layout (#12016) @alexfauquette - [docs] Remove ` around @default values (#12158) @alexfauquette - [docs] Remove `day` from the default `dayOfWeekFormatter` function params (#12644) @LukasTy @@ -506,7 +506,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0`, plus: - [docs] Update links to v6 (#12496) @cherniavskii - [docs] Update links to v7 docs (#12500) @noraleonte - [docs] Update supported versions (#12508) @joserodolfofreitas -- [docs] Update "What's new in MUI X" page #12527 @cherniavskii +- [docs] Update "What's new in MUI X" page #12527 @cherniavskii ### Core diff --git a/docs/data/data-grid/pagination/pagination.md b/docs/data/data-grid/pagination/pagination.md index d23efc50aa1f..b9d72261f188 100644 --- a/docs/data/data-grid/pagination/pagination.md +++ b/docs/data/data-grid/pagination/pagination.md @@ -134,7 +134,7 @@ There can be three different possibilities regarding the availability of the `ro :::warning The `rowCount` prop is used in server-side pagination mode to inform the DataGrid about the total number of rows in your dataset. -This prop is ignored when the `paginationMode` is set to `client`, i.e. when the pagination is handled on the client-side. +This prop is ignored when the `paginationMode` is set to `client`, that is when the pagination is handled on the client-side. ::: You can configure `rowCount`, `paginationMeta.hasNextPage`, and `estimatedRowCount` props to handle the above scenarios. diff --git a/scripts/README.md b/scripts/README.md index f26e7925ba80..0e64e6ad3167 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -27,7 +27,7 @@ yarn release:changelog > `` > This string needs to stay where it gets inserted for the automated discord announcement to work. -You can also provide the github token by setting `process.env.GITHUB_TOKEN` variable. +You can also provide the GitHub token by setting `process.env.GITHUB_TOKEN` variable. In case of a problem, another method to generate the changelog is available at the end of this page. From 41fb8d93c52eb97557e41c7784a22ac901e06846 Mon Sep 17 00:00:00 2001 From: Danail Hadjiatanasov Date: Mon, 22 Apr 2024 11:59:36 +0300 Subject: [PATCH 151/912] [docs] Update Column features availability (#12865) --- docs/data/data-grid/getting-started/getting-started.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/data-grid/getting-started/getting-started.md b/docs/data/data-grid/getting-started/getting-started.md index 466ff5502429..77c6e7def9b3 100644 --- a/docs/data/data-grid/getting-started/getting-started.md +++ b/docs/data/data-grid/getting-started/getting-started.md @@ -181,8 +181,8 @@ The enterprise components come in two plans: Pro and Premium. | **Column** | | | | | [Column groups](/x/react-data-grid/column-groups/) | ✅ | ✅ | ✅ | | [Column spanning](/x/react-data-grid/column-spanning/) | ✅ | ✅ | ✅ | -| [Column resizing](/x/react-data-grid/column-dimensions/#resizing) | ❌ | ✅ | ✅ | -| [Column autosizing](/x/react-data-grid/column-dimensions/#autosizing) | ❌ | ✅ | ✅ | +| [Column resizing](/x/react-data-grid/column-dimensions/#resizing) | ✅ | ✅ | ✅ | +| [Column autosizing](/x/react-data-grid/column-dimensions/#autosizing) | ✅ | ✅ | ✅ | | [Column reorder](/x/react-data-grid/column-ordering/) | ❌ | ✅ | ✅ | | [Column pinning](/x/react-data-grid/column-pinning/) | ❌ | ✅ | ✅ | | **Row** | | | | From 4b07dfdbf67f5a6798ee71992656f40250124a50 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 22 Apr 2024 12:35:25 +0200 Subject: [PATCH 152/912] [code-infra] Closer sync with eslint config of codebase (#12864) --- .eslintrc.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index c2de50d965d7..355a5b49b8a2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,8 @@ const baseline = require('@mui/monorepo/.eslintrc'); const path = require('path'); +// TODO move this helper to @mui/monorepo/.eslintrc +// It needs to know about the parent "no-restricted-imports" to not override them. const buildPackageRestrictedImports = (packageName, root) => ({ files: [`packages/${root}/src/**/*{.ts,.tsx,.js}`], excludedFiles: ['*.d.ts', '*.spec.ts', '*.spec.tsx', '**.test.tx', '**.test.tsx'], @@ -50,10 +52,12 @@ module.exports = { */ rules: { ...baseline.rules, + // TODO move to @mui/monorepo/.eslintrc, codebase is moving away from default exports 'import/prefer-default-export': 'off', // TODO move rule into the main repo once it has upgraded '@typescript-eslint/return-await': 'off', 'no-restricted-imports': 'off', + // TODO move to @mui/monorepo/.eslintrc 'jsdoc/require-param': ['error', { contexts: ['TSFunctionType'] }], 'jsdoc/require-param-type': ['error', { contexts: ['TSFunctionType'] }], 'jsdoc/require-param-name': ['error', { contexts: ['TSFunctionType'] }], @@ -75,7 +79,10 @@ module.exports = { ], // Fixes false positive when using both `inputProps` and `InputProps` on the same example // See https://stackoverflow.com/questions/42367236/why-am-i-getting-this-warning-no-duplicate-props-allowed-react-jsx-no-duplicate + // TODO move to @mui/monorepo/.eslintrc + // TODO Fix props names to not conflict 'react/jsx-no-duplicate-props': [1, { ignoreCase: false }], + // TOOD move to @mui/monorepo/.eslintrc, these are false positive 'react/no-unstable-nested-components': ['error', { allowAsProps: true }], }, overrides: [ @@ -114,6 +121,8 @@ module.exports = { }, parserOptions: { tsconfigRootDir: __dirname, project: ['./tsconfig.json'] }, }, + // TODO remove, shouldn't disable prop-type generation rule. + // lot of public components are missing it. { files: ['*.tsx'], excludedFiles: '*.spec.tsx', @@ -121,12 +130,6 @@ module.exports = { 'react/prop-types': 'off', }, }, - { - files: ['docs/data/**/*.js', 'docs/data/**/*.tsx'], - rules: { - 'filenames/match-exported': ['error'], - }, - }, { files: ['**/*.mjs'], rules: { From 1f25e1fb7d2beb52f082e92900c3ab969d457b7f Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Mon, 22 Apr 2024 14:46:25 +0200 Subject: [PATCH 153/912] [docs] Cover webpack 4 support in migration guide (#12710) --- .../migration-charts-v6.md | 30 ++++++++++++++ .../migration-data-grid-v6.md | 34 +++++++++++++++ .../migration-pickers-v6.md | 41 ++++++++++++++++++- .../migration-tree-view-v6.md | 30 ++++++++++++++ 4 files changed, 134 insertions(+), 1 deletion(-) diff --git a/docs/data/migration/migration-charts-v6/migration-charts-v6.md b/docs/data/migration/migration-charts-v6/migration-charts-v6.md index aab269714266..885e85bfe97f 100644 --- a/docs/data/migration/migration-charts-v6/migration-charts-v6.md +++ b/docs/data/migration/migration-charts-v6/migration-charts-v6.md @@ -41,6 +41,36 @@ The `legacy` bundle that used to support old browsers like IE 11 is no longer i If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: +### Drop Webpack 4 support + +Dropping old browsers support also means that we no longer transpile some features that are natively supported by modern browsers – like [Nullish Coalescing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing) and [Optional Chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining). + +These features are not supported by Webpack 4, so if you are using Webpack 4, you will need to transpile these features yourself or upgrade to Webpack 5. + +Here is an example of how you can transpile these features on Webpack 4 using the `@babel/preset-env` preset: + +```diff + // webpack.config.js + + module.exports = (env) => ({ + // ... + module: { + rules: [ + { + test: /\.[jt]sx?$/, +- exclude: /node_modules/, ++ exclude: [ ++ { ++ test: path.resolve(__dirname, 'node_modules'), ++ exclude: [path.resolve(__dirname, 'node_modules/@mui/x-charts')], ++ }, ++ ], + }, + ], + }, + }); +``` + ### Renaming #### Types diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index cdfd95277d1f..c3e53e6e9b38 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -108,6 +108,40 @@ The `legacy` bundle that used to support old browsers like IE 11 is no longer i If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: +### Drop Webpack 4 support + +Dropping old browsers support also means that we no longer transpile some features that are natively supported by modern browsers – like [Nullish Coalescing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing) and [Optional Chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining). + +These features are not supported by Webpack 4, so if you are using Webpack 4, you will need to transpile these features yourself or upgrade to Webpack 5. + +Here is an example of how you can transpile these features on Webpack 4 using the `@babel/preset-env` preset: + +```diff + // webpack.config.js + + module.exports = (env) => ({ + // ... + module: { + rules: [ + { + test: /\.[jt]sx?$/, +- exclude: /node_modules/, ++ exclude: [ ++ { ++ test: path.resolve(__dirname, 'node_modules'), ++ exclude: [ ++ // Covers @mui/x-data-grid, @mui/x-data-grid-pro, and @mui/x-data-grid-premium ++ path.resolve(__dirname, 'node_modules/@mui/x-data-grid'), ++ path.resolve(__dirname, 'node_modules/@mui/x-license'), ++ ], ++ }, ++ ], + }, + ], + }, + }); +``` + ### DOM changes The Data Grid's layout has been substantially altered to use CSS sticky positioned elements. diff --git a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md index 23e509dc29a7..4d3c156476f6 100644 --- a/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md +++ b/docs/data/migration/migration-pickers-v6/migration-pickers-v6.md @@ -86,7 +86,12 @@ After running the codemods, make sure to test your application and that you don' Feel free to [open an issue](https://github.com/mui/mui-x/issues/new/choose) for support if you need help to proceed with your migration. ::: -## Drop the legacy bundle +## Breaking changes + +Since v7 is a major release, it contains some changes that affect the public API. +These changes were done for consistency, improve stability and make room for new features. + +### Drop the legacy bundle The support for IE 11 has been removed from all MUI X packages. The `legacy` bundle that used to support old browsers like IE 11 is no longer included. @@ -95,6 +100,40 @@ The `legacy` bundle that used to support old browsers like IE 11 is no longer i If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: +### Drop Webpack 4 support + +Dropping old browsers support also means that we no longer transpile some features that are natively supported by modern browsers – like [Nullish Coalescing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing) and [Optional Chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining). + +These features are not supported by Webpack 4, so if you are using Webpack 4, you will need to transpile these features yourself or upgrade to Webpack 5. + +Here is an example of how you can transpile these features on Webpack 4 using the `@babel/preset-env` preset: + +```diff + // webpack.config.js + + module.exports = (env) => ({ + // ... + module: { + rules: [ + { + test: /\.[jt]sx?$/, +- exclude: /node_modules/, ++ exclude: [ ++ { ++ test: path.resolve(__dirname, 'node_modules'), ++ exclude: [ ++ // Covers @mui/x-date-pickers and @mui/x-date-pickers-pro ++ path.resolve(__dirname, 'node_modules/@mui/x-date-pickers'), ++ path.resolve(__dirname, 'node_modules/@mui/x-license'), ++ ], ++ }, ++ ], + }, + ], + }, + }); +``` + ## Component slots ### Rename `components` to `slots` diff --git a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md index 965b06fc43df..0fbe2c9003bd 100644 --- a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md +++ b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md @@ -40,6 +40,36 @@ The `legacy` bundle that used to support old browsers like IE 11 is no longer i If you need support for IE 11, you will need to keep using the latest version of the `v6` release. ::: +### Drop Webpack 4 support + +Dropping old browsers support also means that we no longer transpile some features that are natively supported by modern browsers – like [Nullish Coalescing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing) and [Optional Chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining). + +These features are not supported by Webpack 4, so if you are using Webpack 4, you will need to transpile these features yourself or upgrade to Webpack 5. + +Here is an example of how you can transpile these features on Webpack 4 using the `@babel/preset-env` preset: + +```diff + // webpack.config.js + + module.exports = (env) => ({ + // ... + module: { + rules: [ + { + test: /\.[jt]sx?$/, +- exclude: /node_modules/, ++ exclude: [ ++ { ++ test: path.resolve(__dirname, 'node_modules'), ++ exclude: [path.resolve(__dirname, 'node_modules/@mui/x-tree-view')], ++ }, ++ ], + }, + ], + }, + }); +``` + ### ✅ Rename `nodeId` to `itemId` The required `nodeId` prop used by the `TreeItem` has been renamed to `itemId` for consistency: From ece6641c4accfd7901ad78fcd25702a45778be41 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 23 Apr 2024 08:43:07 +0200 Subject: [PATCH 154/912] [TreeView] Rework the selection internals (#12703) --- .../src/TreeItem/TreeItem.test.tsx | 6 +- .../src/TreeItem/useTreeItemState.ts | 2 +- .../useTreeItem2Utils/useTreeItem2Utils.tsx | 2 +- .../src/internals/models/treeView.ts | 7 - .../useTreeViewKeyboardNavigation.ts | 37 +--- .../useTreeViewSelection.ts | 180 +++++++++--------- .../useTreeViewSelection.types.ts | 45 ++++- .../useTreeViewSelection.utils.ts | 24 +++ .../x-tree-view/src/internals/utils/tree.ts | 47 ++++- 9 files changed, 213 insertions(+), 137 deletions(-) create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index cdf6e98ec0c6..6969b9da4cf9 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -1007,7 +1007,7 @@ describe('', () => { describe('range selection', () => { it('keyboard arrow', () => { const { getByTestId, queryAllByRole, getByText } = render( - + @@ -1085,7 +1085,7 @@ describe('', () => { it('keyboard arrow merge', () => { const { getByTestId, getByText, queryAllByRole } = render( - + @@ -1207,7 +1207,7 @@ describe('', () => { expect(getByTestId('eight')).to.have.attribute('aria-selected', 'true'); expect(getByTestId('nine')).to.have.attribute('aria-selected', 'true'); - fireEvent.keyDown(getByTestId('nine'), { + fireEvent.keyDown(getByTestId('five'), { key: 'Home', shiftKey: true, ctrlKey: true, diff --git a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts index 0c2442d3ec15..d43fcd4f2c4a 100644 --- a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts +++ b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts @@ -39,7 +39,7 @@ export function useTreeItemState(itemId: string) { if (multiple) { if (event.shiftKey) { - instance.selectRange(event, { end: itemId }); + instance.expandSelectionRange(event, itemId); } else { instance.selectItem(event, itemId, true); } diff --git a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx index 87ed49fff4dc..c8c67baf0f9e 100644 --- a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx +++ b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx @@ -63,7 +63,7 @@ export const useTreeItem2Utils = ({ if (multiple) { if (event.shiftKey) { - instance.selectRange(event, { end: itemId }); + instance.expandSelectionRange(event, itemId); } else { instance.selectItem(event, itemId, true); } diff --git a/packages/x-tree-view/src/internals/models/treeView.ts b/packages/x-tree-view/src/internals/models/treeView.ts index fa6cca1edb60..552dd29bf7e2 100644 --- a/packages/x-tree-view/src/internals/models/treeView.ts +++ b/packages/x-tree-view/src/internals/models/treeView.ts @@ -13,13 +13,6 @@ export interface TreeViewItemMeta { label?: string; } -export interface TreeViewItemRange { - start?: string | null; - end?: string | null; - next?: string | null; - current?: string; -} - export interface TreeViewModel { name: string; value: TValue; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index bcf20f45487f..8ed5436915f4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -127,7 +127,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< case key === ' ' && canToggleItemSelection(itemId): { event.preventDefault(); if (params.multiSelect && event.shiftKey) { - instance.selectRange(event, { end: itemId }); + instance.expandSelectionRange(event, itemId); } else if (params.multiSelect) { instance.selectItem(event, itemId, true); } else { @@ -165,14 +165,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Multi select behavior when pressing Shift + ArrowDown // Toggles the selection state of the next item if (params.multiSelect && event.shiftKey && canToggleItemSelection(nextItem)) { - instance.selectRange( - event, - { - end: nextItem, - current: itemId, - }, - true, - ); + instance.selectItemFromArrowNavigation(event, itemId, nextItem); } } @@ -189,14 +182,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Multi select behavior when pressing Shift + ArrowUp // Toggles the selection state of the previous item if (params.multiSelect && event.shiftKey && canToggleItemSelection(previousItem)) { - instance.selectRange( - event, - { - end: previousItem, - current: itemId, - }, - true, - ); + instance.selectItemFromArrowNavigation(event, itemId, previousItem); } } @@ -239,12 +225,12 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the first item in the tree case key === 'Home': { - instance.focusItem(event, getFirstNavigableItem(instance)); - // Multi select behavior when pressing Ctrl + Shift + Home // Selects the focused item and all items up to the first item. if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) { - instance.rangeSelectToFirst(event, itemId); + instance.selectRangeFromStartToItem(event, itemId); + } else { + instance.focusItem(event, getFirstNavigableItem(instance)); } event.preventDefault(); @@ -253,12 +239,12 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Focuses the last item in the tree case key === 'End': { - instance.focusItem(event, getLastNavigableItem(instance)); - // Multi select behavior when pressing Ctrl + Shirt + End // Selects the focused item and all the items down to the last item. if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) { - instance.rangeSelectToLast(event, itemId); + instance.selectRangeFromItemToEnd(event, itemId); + } else { + instance.focusItem(event, getLastNavigableItem(instance)); } event.preventDefault(); @@ -275,10 +261,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< // Multi select behavior when pressing Ctrl + a // Selects all the items case key === 'a' && ctrlPressed && params.multiSelect && !params.disableSelection: { - instance.selectRange(event, { - start: getFirstNavigableItem(instance), - end: getLastNavigableItem(instance), - }); + instance.selectAllNavigableItems(event); event.preventDefault(); break; } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts index bda0ed53bc1a..02fa885cb08a 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.ts @@ -1,11 +1,15 @@ import * as React from 'react'; -import { TreeViewPlugin, TreeViewItemRange } from '../../models'; +import { TreeViewPlugin } from '../../models'; +import { TreeViewItemId } from '../../../models'; import { + findOrderInTremauxTree, + getAllNavigableItems, getFirstNavigableItem, getLastNavigableItem, - getNavigableItemsInRange, + getNonDisabledItemsInRange, } from '../../utils/tree'; import { UseTreeViewSelectionSignature } from './useTreeViewSelection.types'; +import { convertSelectedItemsToArray, getLookupFromArray } from './useTreeViewSelection.utils'; export const useTreeViewSelection: TreeViewPlugin = ({ instance, @@ -13,8 +17,20 @@ export const useTreeViewSelection: TreeViewPlugin models, }) => { const lastSelectedItem = React.useRef(null); - const lastSelectionWasRange = React.useRef(false); - const currentRangeSelection = React.useRef([]); + const lastSelectedRange = React.useRef<{ [itemId: string]: boolean }>({}); + + const selectedItemsMap = React.useMemo(() => { + const temp = new Map(); + if (Array.isArray(models.selectedItems.value)) { + models.selectedItems.value.forEach((id) => { + temp.set(id, true); + }); + } else if (models.selectedItems.value != null) { + temp.set(models.selectedItems.value, true); + } + + return temp; + }, [models.selectedItems.value]); const setSelectedItems = ( event: React.SyntheticEvent, @@ -53,122 +69,108 @@ export const useTreeViewSelection: TreeViewPlugin models.selectedItems.setControlledValue(newSelectedItems); }; - const isItemSelected = (itemId: string) => - Array.isArray(models.selectedItems.value) - ? models.selectedItems.value.indexOf(itemId) !== -1 - : models.selectedItems.value === itemId; + const isItemSelected = (itemId: string) => selectedItemsMap.has(itemId); const selectItem = (event: React.SyntheticEvent, itemId: string, multiple = false) => { if (params.disableSelection) { return; } + let newSelected: typeof models.selectedItems.value; if (multiple) { - if (Array.isArray(models.selectedItems.value)) { - let newSelected: string[]; - if (models.selectedItems.value.indexOf(itemId) !== -1) { - newSelected = models.selectedItems.value.filter((id) => id !== itemId); - } else { - newSelected = [itemId].concat(models.selectedItems.value); - } - - setSelectedItems(event, newSelected); + const cleanSelectedItems = convertSelectedItemsToArray(models.selectedItems.value); + if (instance.isItemSelected(itemId)) { + newSelected = cleanSelectedItems.filter((id) => id !== itemId); + } else { + newSelected = [itemId].concat(cleanSelectedItems); } } else { - const newSelected = params.multiSelect ? [itemId] : itemId; - setSelectedItems(event, newSelected); + newSelected = params.multiSelect ? [itemId] : itemId; } + + setSelectedItems(event, newSelected); lastSelectedItem.current = itemId; - lastSelectionWasRange.current = false; - currentRangeSelection.current = []; + lastSelectedRange.current = {}; }; - const handleRangeArrowSelect = (event: React.SyntheticEvent, items: TreeViewItemRange) => { - let base = (models.selectedItems.value as string[]).slice(); - const { start, next, current } = items; - - if (!next || !current) { + const selectRange = (event: React.SyntheticEvent, [start, end]: [string, string]) => { + if (params.disableSelection || !params.multiSelect) { return; } - if (currentRangeSelection.current.indexOf(current) === -1) { - currentRangeSelection.current = []; - } + let newSelectedItems = convertSelectedItemsToArray(models.selectedItems.value).slice(); - if (lastSelectionWasRange.current) { - if (currentRangeSelection.current.indexOf(next) !== -1) { - base = base.filter((id) => id === start || id !== current); - currentRangeSelection.current = currentRangeSelection.current.filter( - (id) => id === start || id !== current, - ); - } else { - base.push(next); - currentRangeSelection.current.push(next); - } - } else { - base.push(next); - currentRangeSelection.current.push(current, next); + // If the last selection was a range selection, + // remove the items that were part of the last range from the model + if (Object.keys(lastSelectedRange.current).length > 0) { + newSelectedItems = newSelectedItems.filter((id) => !lastSelectedRange.current[id]); } - setSelectedItems(event, base); + + // Add to the model the items that are part of the new range and not already part of the model. + const selectedItemsLookup = getLookupFromArray(newSelectedItems); + const range = getNonDisabledItemsInRange(instance, start, end); + const itemsToAddToModel = range.filter((id) => !selectedItemsLookup[id]); + newSelectedItems = newSelectedItems.concat(itemsToAddToModel); + + setSelectedItems(event, newSelectedItems); + lastSelectedRange.current = getLookupFromArray(range); }; - const handleRangeSelect = ( - event: React.SyntheticEvent, - items: { start: string; end: string }, - ) => { - let base = (models.selectedItems.value as string[]).slice(); - const { start, end } = items; - // If last selection was a range selection ignore items that were selected. - if (lastSelectionWasRange.current) { - base = base.filter((id) => currentRangeSelection.current.indexOf(id) === -1); + const expandSelectionRange = (event: React.SyntheticEvent, itemId: string) => { + if (lastSelectedItem.current != null) { + const [start, end] = findOrderInTremauxTree(instance, itemId, lastSelectedItem.current); + selectRange(event, [start, end]); } + }; - let range = getNavigableItemsInRange(instance, start, end); - range = range.filter((item) => !instance.isItemDisabled(item)); - currentRangeSelection.current = range; - let newSelected = base.concat(range); - newSelected = newSelected.filter((id, i) => newSelected.indexOf(id) === i); - setSelectedItems(event, newSelected); + const selectRangeFromStartToItem = (event: React.SyntheticEvent, itemId: string) => { + selectRange(event, [getFirstNavigableItem(instance), itemId]); }; - const selectRange = (event: React.SyntheticEvent, items: TreeViewItemRange, stacked = false) => { - if (params.disableSelection) { + const selectRangeFromItemToEnd = (event: React.SyntheticEvent, itemId: string) => { + selectRange(event, [itemId, getLastNavigableItem(instance)]); + }; + + const selectAllNavigableItems = (event: React.SyntheticEvent) => { + if (params.disableSelection || !params.multiSelect) { return; } - const { start = lastSelectedItem.current, end, current } = items; - if (stacked) { - handleRangeArrowSelect(event, { start, next: end, current }); - } else if (start != null && end != null) { - handleRangeSelect(event, { start, end }); - } - lastSelectionWasRange.current = true; + const navigableItems = getAllNavigableItems(instance); + setSelectedItems(event, navigableItems); + + lastSelectedRange.current = getLookupFromArray(navigableItems); }; - const rangeSelectToFirst = (event: React.KeyboardEvent, itemId: string) => { - if (!lastSelectedItem.current) { - lastSelectedItem.current = itemId; + const selectItemFromArrowNavigation = ( + event: React.SyntheticEvent, + currentItem: string, + nextItem: string, + ) => { + if (params.disableSelection || !params.multiSelect) { + return; } - const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId; + let newSelectedItems = convertSelectedItemsToArray(models.selectedItems.value).slice(); - instance.selectRange(event, { - start, - end: getFirstNavigableItem(instance), - }); - }; + if (Object.keys(lastSelectedRange.current).length === 0) { + newSelectedItems.push(nextItem); + lastSelectedRange.current = { [currentItem]: true, [nextItem]: true }; + } else { + if (!lastSelectedRange.current[currentItem]) { + lastSelectedRange.current = {}; + } - const rangeSelectToLast = (event: React.KeyboardEvent, itemId: string) => { - if (!lastSelectedItem.current) { - lastSelectedItem.current = itemId; + if (lastSelectedRange.current[nextItem]) { + newSelectedItems = newSelectedItems.filter((id) => id !== currentItem); + delete lastSelectedRange.current[currentItem]; + } else { + newSelectedItems.push(nextItem); + lastSelectedRange.current[nextItem] = true; + } } - const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId; - - instance.selectRange(event, { - start, - end: getLastNavigableItem(instance), - }); + setSelectedItems(event, newSelectedItems); }; return { @@ -178,9 +180,11 @@ export const useTreeViewSelection: TreeViewPlugin instance: { isItemSelected, selectItem, - selectRange, - rangeSelectToLast, - rangeSelectToFirst, + selectAllNavigableItems, + expandSelectionRange, + selectRangeFromStartToItem, + selectRangeFromItemToEnd, + selectItemFromArrowNavigation, }, contextValue: { selection: { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts index 474a7b8f82e4..99c8e8d12d99 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.ts @@ -1,14 +1,49 @@ import * as React from 'react'; -import type { DefaultizedProps, TreeViewItemRange, TreeViewPluginSignature } from '../../models'; +import type { DefaultizedProps, TreeViewPluginSignature } from '../../models'; import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion'; export interface UseTreeViewSelectionInstance { isItemSelected: (itemId: string) => boolean; - selectItem: (event: React.SyntheticEvent, itemId: string, multiple?: boolean) => void; - selectRange: (event: React.SyntheticEvent, items: TreeViewItemRange, stacked?: boolean) => void; - rangeSelectToFirst: (event: React.KeyboardEvent, itemId: string) => void; - rangeSelectToLast: (event: React.KeyboardEvent, itemId: string) => void; + selectItem: ( + event: React.SyntheticEvent, + itemId: string, + keepExistingSelection?: boolean, + ) => void; + /** + * Select all the navigable items in the tree. + * @param {React.SyntheticEvent} event The event source of the callback. + */ + selectAllNavigableItems: (event: React.SyntheticEvent) => void; + /** + * Expand the current selection range up to the given item. + * @param {React.SyntheticEvent} event The event source of the callback. + * @param {string} itemId The id of the item to expand the selection to. + */ + expandSelectionRange: (event: React.SyntheticEvent, itemId: string) => void; + /** + * Expand the current selection range from the first navigable item to the given item. + * @param {React.SyntheticEvent} event The event source of the callback. + * @param {string} itemId The id of the item up to which the selection range should be expanded. + */ + selectRangeFromStartToItem: (event: React.SyntheticEvent, itemId: string) => void; + /** + * Expand the current selection range from the given item to the last navigable item. + * @param {React.SyntheticEvent} event The event source of the callback. + * @param {string} itemId The id of the item from which the selection range should be expanded. + */ + selectRangeFromItemToEnd: (event: React.SyntheticEvent, itemId: string) => void; + /** + * Update the selection when navigating with ArrowUp / ArrowDown keys. + * @param {React.SyntheticEvent} event The event source of the callback. + * @param {string} currentItemId The id of the active item before the keyboard navigation. + * @param {string} nextItemId The id of the active item after the keyboard navigation. + */ + selectItemFromArrowNavigation: ( + event: React.SyntheticEvent, + currentItemId: string, + nextItemId: string, + ) => void; } type TreeViewSelectionValue = Multiple extends true diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts new file mode 100644 index 000000000000..bb022e13338c --- /dev/null +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.ts @@ -0,0 +1,24 @@ +/** + * Transform the `selectedItems` model to be an array if it was a string or null. + * @param {string[] | string | null} model The raw model. + * @returns {string[]} The converted model. + */ +export const convertSelectedItemsToArray = (model: string[] | string | null): string[] => { + if (Array.isArray(model)) { + return model; + } + + if (model != null) { + return [model]; + } + + return []; +}; + +export const getLookupFromArray = (array: string[]) => { + const lookup: { [itemId: string]: boolean } = {}; + array.forEach((itemId) => { + lookup[itemId] = true; + }); + return lookup; +}; diff --git a/packages/x-tree-view/src/internals/utils/tree.ts b/packages/x-tree-view/src/internals/utils/tree.ts index d3938323ca60..1293374356c0 100644 --- a/packages/x-tree-view/src/internals/utils/tree.ts +++ b/packages/x-tree-view/src/internals/utils/tree.ts @@ -124,7 +124,7 @@ export const getFirstNavigableItem = (instance: TreeViewInstance<[UseTreeViewIte * Another way to put it is which item is shallower in a trémaux tree * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree */ -const findOrderInTremauxTree = ( +export const findOrderInTremauxTree = ( instance: TreeViewInstance<[UseTreeViewItemsSignature]>, itemAId: string, itemBId: string, @@ -185,20 +185,57 @@ const findOrderInTremauxTree = ( : [itemBId, itemAId]; }; -export const getNavigableItemsInRange = ( +export const getNonDisabledItemsInRange = ( instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, itemAId: string, itemBId: string, ) => { + const getNextItem = (itemId: string) => { + // If the item is expanded and has some children, return the first of them. + if (instance.isItemExpandable(itemId) && instance.isItemExpanded(itemId)) { + return instance.getItemOrderedChildrenIds(itemId)[0]; + } + + let itemMeta = instance.getItemMeta(itemId); + while (itemMeta != null) { + // Try to find the first navigable sibling after the current item. + const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId); + const currentItemIndex = instance.getItemIndex(itemMeta.id); + + if (currentItemIndex < siblings.length - 1) { + return siblings[currentItemIndex + 1]; + } + + // If the item is the last of its siblings, go up a level to the parent and try again. + itemMeta = instance.getItemMeta(itemMeta.parentId!); + } + + throw new Error('Invalid range'); + }; + const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId); const items = [first]; - let current = first; while (current !== last) { - current = getNextNavigableItem(instance, current)!; - items.push(current); + current = getNextItem(current); + if (!instance.isItemDisabled(current)) { + items.push(current); + } } return items; }; + +export const getAllNavigableItems = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, +) => { + let item: string | null = getFirstNavigableItem(instance); + const navigableItems: string[] = []; + while (item != null) { + navigableItems.push(item); + item = getNextNavigableItem(instance, item); + } + + return navigableItems; +}; From 7bc98f1ce5ebd9230c78985f8b29db51c8f858c3 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 23 Apr 2024 08:52:49 +0200 Subject: [PATCH 155/912] [TreeView] Use the order in which the items are displayed for type-ahead (#12827) Signed-off-by: Flavien DELANGLE Co-authored-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> --- .../useTreeViewKeyboardNavigation.ts | 65 ++++++------------- 1 file changed, 20 insertions(+), 45 deletions(-) diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index 8ed5436915f4..df6d4b7a2a33 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -18,15 +18,6 @@ function isPrintableCharacter(string: string) { return !!string && string.length === 1 && !!string.match(/\S/); } -function findNextFirstChar(firstChars: string[], startIndex: number, char: string) { - for (let i = startIndex; i < firstChars.length; i += 1) { - if (char === firstChars[i]) { - return i; - } - } - return -1; -} - export const useTreeViewKeyboardNavigation: TreeViewPlugin< UseTreeViewKeyboardNavigationSignature > = ({ instance, params, state }) => { @@ -55,47 +46,31 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< firstCharMap.current = newFirstCharMap; }, [state.items.itemMetaMap, params.getItemId, instance]); - const getFirstMatchingItem = (itemId: string, firstChar: string) => { - let start: number; - let index: number; - const lowercaseChar = firstChar.toLowerCase(); - - const firstCharIds: string[] = []; - const firstChars: string[] = []; - // This really only works since the ids are strings - Object.keys(firstCharMap.current).forEach((mapItemId) => { - const map = instance.getItemMeta(mapItemId); - const visible = map.parentId ? instance.isItemExpanded(map.parentId) : true; - const shouldBeSkipped = params.disabledItemsFocusable - ? false - : instance.isItemDisabled(mapItemId); - - if (visible && !shouldBeSkipped) { - firstCharIds.push(mapItemId); - firstChars.push(firstCharMap.current[mapItemId]); - } - }); - - // Get start index for search based on position of currentItem - start = firstCharIds.indexOf(itemId) + 1; - if (start >= firstCharIds.length) { - start = 0; - } + const getFirstMatchingItem = (itemId: string, query: string) => { + const cleanQuery = query.toLowerCase(); - // Check remaining slots in the menu - index = findNextFirstChar(firstChars, start, lowercaseChar); + const getNextItem = (itemIdToCheck: string) => { + const nextItemId = getNextNavigableItem(instance, itemIdToCheck); + // We reached the end of the tree, check from the beginning + if (nextItemId === null) { + return getFirstNavigableItem(instance); + } - // If not found in remaining slots, check from beginning - if (index === -1) { - index = findNextFirstChar(firstChars, 0, lowercaseChar); - } + return nextItemId; + }; - // If a match was found... - if (index > -1) { - return firstCharIds[index]; + let matchingItemId: string | null = null; + let currentItemId: string = getNextItem(itemId); + // The "currentItemId !== itemId" condition is to avoid an infinite loop when there is no matching item. + while (matchingItemId == null && currentItemId !== itemId) { + if (firstCharMap.current[currentItemId] === cleanQuery) { + matchingItemId = currentItemId; + } else { + currentItemId = getNextItem(currentItemId); + } } - return null; + return matchingItemId; }; const canToggleItemSelection = (itemId: string) => From c4303217a3e25bb6aaefe5c79ff971e4a8348895 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 23 Apr 2024 09:27:06 +0200 Subject: [PATCH 156/912] [TreeView] Remove un-needed `aria-activedescendant` attribute (#12867) --- .../migration-tree-view-v6/migration-tree-view-v6.md | 10 ++++++++-- packages/x-tree-view/src/TreeItem/TreeItem.test.tsx | 8 ++------ .../plugins/useTreeViewFocus/useTreeViewFocus.ts | 6 ------ .../src/internals/useTreeView/useTreeView.types.ts | 9 +-------- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md index 0fbe2c9003bd..8e143e500670 100644 --- a/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md +++ b/docs/data/migration/migration-tree-view-v6/migration-tree-view-v6.md @@ -447,10 +447,12 @@ For example, if you were writing a test with `react-testing-library`, here is wh it('test example on first item', () => { const { getByRole } = render( - One - Two + One + Two ); + + // Set the focus to the item "One" - const tree = getByRole('tree'); + const treeItem = getByRole('treeitem', { name: 'One' }); act(() => { @@ -459,6 +461,10 @@ For example, if you were writing a test with `react-testing-library`, here is wh }); - fireEvent.keyDown(tree, { key: 'ArrowDown' }); + fireEvent.keyDown(treeItem, { key: 'ArrowDown' }); + + // Check if the new focused item is "Two" +- expect(tree)to.have.attribute('aria-activedescendant', 'two'); ++ expect(document.activeElement).to.have.attribute('id', 'two'); }) ``` diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 6969b9da4cf9..beebfefe762d 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -226,17 +226,13 @@ describe('', () => { }); it('should be able to use a custom id', () => { - const { getByRole, getByTestId } = render( + const { getByRole } = render( , ); - act(() => { - getByTestId('one').focus(); - }); - - expect(getByRole('tree')).to.have.attribute('aria-activedescendant', 'customId'); + expect(getByRole('treeitem')).to.have.attribute('id', 'customId'); }); describe('Accessibility', () => { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index 7f579a85adf9..698d7fffa06b 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -143,15 +143,9 @@ export const useTreeViewFocus: TreeViewPlugin = ({ } }; - const focusedItem = instance.getItemMeta(state.focusedItemId!); - const activeDescendant = focusedItem - ? instance.getTreeItemIdAttribute(focusedItem.id, focusedItem.idAttribute) - : null; - return { getRootProps: (otherHandlers) => ({ onFocus: createRootHandleFocus(otherHandlers), - 'aria-activedescendant': activeDescendant ?? undefined, }), publicAPI: { focusItem, diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts index be559ac10dd9..0ff481abccae 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts @@ -35,14 +35,7 @@ export type UseTreeViewDefaultizedParameters< export interface UseTreeViewRootSlotProps extends Pick< React.HTMLAttributes, - | 'onFocus' - | 'onBlur' - | 'onKeyDown' - | 'id' - | 'aria-activedescendant' - | 'aria-multiselectable' - | 'role' - | 'tabIndex' + 'onFocus' | 'onBlur' | 'onKeyDown' | 'id' | 'aria-multiselectable' | 'role' | 'tabIndex' > { ref: React.Ref; } From 06ba75a244eb194a45a9061b16be138406ceee5f Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Tue, 23 Apr 2024 10:49:35 +0200 Subject: [PATCH 157/912] [charts] Improve default tooltip content (#12257) --- .../src/ChartsTooltip/ChartsTooltipTable.ts | 15 +++++++-------- .../DefaultChartsAxisTooltipContent.tsx | 5 +---- .../DefaultChartsItemTooltipContent.tsx | 4 +--- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts b/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts index c8a999d2b104..1e1073914c63 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts +++ b/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts @@ -1,15 +1,15 @@ -import Box from '@mui/system/Box'; import { styled } from '@mui/material/styles'; +import { shouldForwardProp } from '@mui/system'; import { chartsTooltipClasses } from './chartsTooltipClasses'; export const ChartsTooltipPaper = styled('div', { name: 'MuiChartsTooltip', slot: 'Container', })(({ theme }) => ({ + boxShadow: theme.shadows[1], backgroundColor: (theme.vars || theme).palette.background.paper, color: (theme.vars || theme).palette.text.primary, transition: theme.transitions.create('box-shadow'), - border: `1px solid ${(theme.vars || theme).palette.divider}`, borderRadius: theme.shape.borderRadius, })); @@ -41,7 +41,6 @@ export const ChartsTooltipCell = styled('td', { })(({ theme }) => ({ verticalAlign: 'middle', color: (theme.vars || theme).palette.text.secondary, - [`&.${chartsTooltipClasses.labelCell}`]: { paddingLeft: theme.spacing(1), }, @@ -49,7 +48,6 @@ export const ChartsTooltipCell = styled('td', { paddingLeft: theme.spacing(4), color: (theme.vars || theme).palette.text.primary, }, - 'td:first-of-type&': { paddingLeft: theme.spacing(2), }, @@ -58,15 +56,16 @@ export const ChartsTooltipCell = styled('td', { }, })); -// eslint-disable-next-line material-ui/no-styled-box -export const ChartsTooltipMark = styled(Box, { +export const ChartsTooltipMark = styled('div', { name: 'MuiChartsTooltip', slot: 'Mark', -})<{ ownerState: { color: string } }>(({ theme, ownerState }) => ({ + shouldForwardProp: (prop) => shouldForwardProp(prop) && prop !== 'color', +})<{ color: string }>(({ theme, color }) => ({ width: theme.spacing(1), height: theme.spacing(1), borderRadius: '50%', - backgroundColor: ownerState.color, + boxShadow: theme.shadows[1], + backgroundColor: color, borderColor: (theme.vars || theme).palette.background.paper, border: `solid ${(theme.vars || theme).palette.background.paper} ${theme.spacing(0.25)}`, boxSizing: 'content-box', diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx index c59d6a0d5ac3..1b224e78fb2e 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx @@ -50,16 +50,13 @@ function DefaultChartsAxisTooltipContent(props: ChartsAxisContentProps) { - {label ? {label} : null} - {formattedValue} diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx index 50ae8cae130a..beda64c36107 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx @@ -41,13 +41,11 @@ function DefaultChartsItemTooltipContent - + - {displayedLabel} - {formattedValue} From b93315a92e21221fb18ac492fb36f7ee0928fa0b Mon Sep 17 00:00:00 2001 From: Armin Mehinovic <4390250+arminmeh@users.noreply.github.com> Date: Tue, 23 Apr 2024 12:19:59 +0200 Subject: [PATCH 158/912] [DataGrid] Fix group header resize (#12863) Co-authored-by: Andrew Cherniavskii --- .../columnResize/useGridColumnResize.tsx | 19 +++++++ packages/x-data-grid/src/utils/domUtils.ts | 5 ++ test/e2e/fixtures/DataGrid/ResizeWithFlex.tsx | 35 +++++++++++++ test/e2e/index.test.ts | 49 +++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 test/e2e/fixtures/DataGrid/ResizeWithFlex.tsx diff --git a/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx b/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx index 7595d08380aa..e4d3c51d905e 100644 --- a/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx +++ b/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx @@ -12,6 +12,7 @@ import { findRightPinnedCellsBeforeCol, getFieldFromHeaderElem, findHeaderElementFromField, + getFieldsFromGroupHeaderElem, findGroupHeaderElementsFromField, findGridHeader, findGridCells, @@ -428,6 +429,24 @@ export const useGridColumnResize = ( if (refs.colDef) { apiRef.current.setColumnWidth(refs.colDef.field, refs.colDef.width!); logger.debug(`Updating col ${refs.colDef.field} with new width: ${refs.colDef.width}`); + + const columnsState = gridColumnsStateSelector(apiRef.current.state); + refs.groupHeaderElements!.forEach((element) => { + const fields = getFieldsFromGroupHeaderElem(element); + const div = element as HTMLDivElement; + + const newWidth = fields.reduce((acc, field) => { + if (columnsState.columnVisibilityModel[field] !== false) { + return acc + columnsState.lookup[field].computedWidth; + } + return acc; + }, 0); + const finalWidth: `${number}px` = `${newWidth}px`; + + div.style.width = finalWidth; + div.style.minWidth = finalWidth; + div.style.maxWidth = finalWidth; + }); } stopResizeEventTimeout.start(0, () => { diff --git a/packages/x-data-grid/src/utils/domUtils.ts b/packages/x-data-grid/src/utils/domUtils.ts index cbf4071ea77a..dd27e95e5810 100644 --- a/packages/x-data-grid/src/utils/domUtils.ts +++ b/packages/x-data-grid/src/utils/domUtils.ts @@ -71,6 +71,11 @@ export function findHeaderElementFromField(elem: Element, field: string): HTMLDi return elem.querySelector(`[data-field="${field}"]`)!; } +export function getFieldsFromGroupHeaderElem(colCellEl: Element): string[] { + const fieldsString = colCellEl.getAttribute('data-fields'); + return fieldsString?.startsWith('|-') ? fieldsString!.slice(2, -2).split('-|-') : []; +} + export function findGroupHeaderElementsFromField(elem: Element, field: string): Element[] { return Array.from(elem.querySelectorAll(`[data-fields*="|-${field}-|"]`) ?? []); } diff --git a/test/e2e/fixtures/DataGrid/ResizeWithFlex.tsx b/test/e2e/fixtures/DataGrid/ResizeWithFlex.tsx new file mode 100644 index 000000000000..dd88d80c1136 --- /dev/null +++ b/test/e2e/fixtures/DataGrid/ResizeWithFlex.tsx @@ -0,0 +1,35 @@ +import * as React from 'react'; +import { DataGrid } from '@mui/x-data-grid'; + +const columns = [ + { field: 'column1', flex: 1 }, + { field: 'column2', flex: 1 }, + { field: 'column3', flex: 1 }, + { field: 'column4', flex: 0 }, + { field: 'column5', flex: 0 }, +]; + +const columnGroupingModel = [ + { + groupId: 'group1', + children: [ + { field: 'column1' }, + { + groupId: 'group1.1', + children: [{ field: 'column2' }, { field: 'column3' }, { field: 'column4' }], + }, + ], + }, + { + groupId: 'group2', + children: [{ field: 'column5' }], + }, +]; + +export default function ResizeWithFlex() { + return ( +
    + +
    + ); +} diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index 501bc94fcd3a..84fbf4bd4b84 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -11,6 +11,7 @@ import { BrowserContextOptions, BrowserType, WebError, + Locator, } from '@playwright/test'; import { pickersTextFieldClasses } from '@mui/x-date-pickers/PickersTextField'; import { pickersSectionListClasses } from '@mui/x-date-pickers/PickersSectionList'; @@ -538,6 +539,54 @@ async function initializeEnvironment( await sleep(200); expect(thrownError).to.equal(null); }); + + // https://github.com/mui/mui-x/issues/12290 + it('should properly set the width of a group header if the resize happened in a group with fluid columns', async () => { + await renderFixture('DataGrid/ResizeWithFlex'); + + const headers = await page.locator('.MuiDataGrid-columnHeaders > div').all(); + const columnHeader = headers.pop()!; + + const columns = columnHeader.locator('.MuiDataGrid-columnHeader'); + const separators = await columnHeader + .locator('.MuiDataGrid-columnSeparator--resizable') + .all(); + + const moveSeparator = async (separator: Locator) => { + const boundingBox = (await separator?.boundingBox())!; + const x = boundingBox.x + boundingBox.width / 2; + const y = boundingBox.y + boundingBox.height / 2; + + await page.mouse.move(x, y, { steps: 5 }); + await page.mouse.down(); + await page.mouse.move(x - 20, y, { steps: 5 }); + await page.mouse.up(); + }; + + await moveSeparator(separators[0]); + await moveSeparator(separators[1]); + + const groupHeaderWidth = await headers[0] + .locator('.MuiDataGrid-columnHeader--filledGroup') + .first() + .evaluate((node) => node.clientWidth); + const subGroupHeaderWidth = await headers[1] + .locator('.MuiDataGrid-columnHeader--filledGroup') + .first() + .evaluate((node) => node.clientWidth); + + const groupHeaderColumnsTotalWidth = await columns.evaluateAll((elements) => + // last column is not part of the group + elements.slice(0, -1).reduce((acc, element) => acc + element.clientWidth, 0), + ); + const subGroupHeaderColumnsTotalWidth = await columns.evaluateAll((elements) => + // first and last columns are not part of the sub-group + elements.slice(1, -1).reduce((acc, element) => acc + element.clientWidth, 0), + ); + + expect(groupHeaderWidth).to.equal(groupHeaderColumnsTotalWidth); + expect(subGroupHeaderWidth).to.equal(subGroupHeaderColumnsTotalWidth); + }); }); describe('', () => { From ddd95ee0d750672b68f8c6049626ca7a0a8609a0 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 23 Apr 2024 13:56:42 +0200 Subject: [PATCH 159/912] [charts] Add documentation on border radius alternative for `BarCharts` (#12859) Signed-off-by: Jose C Quintas Jr Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/charts/bars/BorderRadius.js | 52 +++++++++++++++++++ docs/data/charts/bars/BorderRadius.tsx | 52 +++++++++++++++++++ .../data/charts/bars/BorderRadius.tsx.preview | 9 ++++ docs/data/charts/bars/bars.md | 21 ++++++++ 4 files changed, 134 insertions(+) create mode 100644 docs/data/charts/bars/BorderRadius.js create mode 100644 docs/data/charts/bars/BorderRadius.tsx create mode 100644 docs/data/charts/bars/BorderRadius.tsx.preview diff --git a/docs/data/charts/bars/BorderRadius.js b/docs/data/charts/bars/BorderRadius.js new file mode 100644 index 000000000000..5d4c25e1a5b8 --- /dev/null +++ b/docs/data/charts/bars/BorderRadius.js @@ -0,0 +1,52 @@ +import * as React from 'react'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; + +export default function BorderRadius() { + return ( +
    + +
    + ); +} + +const dataset = [ + [59, 57, 86, 21, 'Jan'], + [50, 52, 78, 28, 'Fev'], + [47, 53, 106, 41, 'Mar'], + [54, 56, 92, 73, 'Apr'], + [57, 69, 92, 99, 'May'], + [60, 63, 103, 144, 'June'], + [59, 60, 105, 319, 'July'], + [65, 60, 106, 249, 'Aug'], + [51, 51, 95, 131, 'Sept'], + [60, 65, 97, 55, 'Oct'], + [67, 64, 76, 48, 'Nov'], + [61, 70, 103, 25, 'Dec'], +].map(([london, paris, newYork, seoul, month]) => ({ + london, + paris, + newYork, + seoul, + month, +})); + +const valueFormatter = (value) => `${value}mm`; + +const chartSetting = { + series: [{ dataKey: 'seoul', label: 'Seoul rainfall', valueFormatter }], + height: 300, + sx: { + [`& .${axisClasses.directionY} .${axisClasses.label}`]: { + transform: 'translateX(-10px)', + }, + }, +}; diff --git a/docs/data/charts/bars/BorderRadius.tsx b/docs/data/charts/bars/BorderRadius.tsx new file mode 100644 index 000000000000..f171db50d7d9 --- /dev/null +++ b/docs/data/charts/bars/BorderRadius.tsx @@ -0,0 +1,52 @@ +import * as React from 'react'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; + +export default function BorderRadius() { + return ( +
    + +
    + ); +} + +const dataset = [ + [59, 57, 86, 21, 'Jan'], + [50, 52, 78, 28, 'Fev'], + [47, 53, 106, 41, 'Mar'], + [54, 56, 92, 73, 'Apr'], + [57, 69, 92, 99, 'May'], + [60, 63, 103, 144, 'June'], + [59, 60, 105, 319, 'July'], + [65, 60, 106, 249, 'Aug'], + [51, 51, 95, 131, 'Sept'], + [60, 65, 97, 55, 'Oct'], + [67, 64, 76, 48, 'Nov'], + [61, 70, 103, 25, 'Dec'], +].map(([london, paris, newYork, seoul, month]) => ({ + london, + paris, + newYork, + seoul, + month, +})); + +const valueFormatter = (value: number | null) => `${value}mm`; + +const chartSetting = { + series: [{ dataKey: 'seoul', label: 'Seoul rainfall', valueFormatter }], + height: 300, + sx: { + [`& .${axisClasses.directionY} .${axisClasses.label}`]: { + transform: 'translateX(-10px)', + }, + }, +}; diff --git a/docs/data/charts/bars/BorderRadius.tsx.preview b/docs/data/charts/bars/BorderRadius.tsx.preview new file mode 100644 index 000000000000..a7254b58c0f2 --- /dev/null +++ b/docs/data/charts/bars/BorderRadius.tsx.preview @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/docs/data/charts/bars/bars.md b/docs/data/charts/bars/bars.md index 3287a06ee42f..487e445b42c6 100644 --- a/docs/data/charts/bars/bars.md +++ b/docs/data/charts/bars/bars.md @@ -100,6 +100,27 @@ Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts {{"demo": "ColorScaleNoSnap.js"}} +### Border Radius + +The border radius can be set by using a [clipPath](https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path) with +[inset](https://developer.mozilla.org/en-US/docs/Web/CSS/basic-shape/inset) on the BarChart's `bar` [slot](/x/api/charts/bar-chart/#bar-chart-prop-slots) + +You can customize any of properties inside `inset`, the first property is "distance from border" and should be left at `0px` else it might break the bars alignment. + +```css +inset(0px round ) +``` + +{{"demo": "BorderRadius.js"}} + +:::warning +There are few limitations to this method though. + +- [Stacking](/x/react-charts/bars/#stacking) won't look right with border radius. +- On charts containing `Negative` and `Positive` values, rounding will apply to all of them in the same way, which might be undesirable. + +::: + ## Click event Bar charts provides two click handlers: From bc93847a609efacda53c15674732f8cecc305473 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Wed, 24 Apr 2024 00:57:19 +0500 Subject: [PATCH 160/912] [docs] Improve Data Grid migration guide (#12879) --- .../migration-data-grid-v6/migration-data-grid-v6.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index c3e53e6e9b38..05e61c411efd 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -147,7 +147,7 @@ Here is an example of how you can transpile these features on Webpack 4 using th The Data Grid's layout has been substantially altered to use CSS sticky positioned elements. As a result, the following changes have been made: -- The main element now corresponds to the virtal scroller element. +- The main element now corresponds to the virtual scroller element. - Headers are now contained in the virtual scroller. - Pinned row and column sections are now contained in the virtual scroller. - The cell inner wrapper `.MuiDataGrid-cellContent` has been removed. @@ -409,7 +409,7 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) ### Filtering -- The `getApplyFilterFnV7` in `GridFilterOperator` was renamed to `getApplyFilterFn`. +- The `getApplyFilterFnV7` in `GridFilterOperator` has been renamed to `getApplyFilterFn`. If you use `getApplyFilterFnV7` directly - rename it to `getApplyFilterFn`. - The signature of the function returned by `getApplyFilterFn` has changed for performance reasons: @@ -560,7 +560,7 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) - The `columnHeader--showColumnBorder` class was replaced by `columnHeader--withLeftBorder` and `columnHeader--withRightBorder`. - The `columnHeadersInner`, `columnHeadersInner--scrollable`, and `columnHeaderDropZone` classes were removed since the inner wrapper was removed in our effort to simplify the DOM structure and improve accessibility. -- The `pinnedColumnHeaders`, `pinnedColumnHeaders--left`, and `pinnedColumnHeaders--right` classes were removed along with the element they were applied to. +- The `pinnedColumnHeaders`, `pinnedColumnHeaders--left`, and `pinnedColumnHeaders--right` classes have been removed along with the element they were applied to. The pinned column headers now use `position: 'sticky'` and are rendered in the same row element as the regular column headers. - The column headers and pinned section now require an explicit color. By default, the MUI `theme.palette.background.default` color will be used. To customize it, see https://mui.com/material-ui/customization/palette/#customization We will be adding a new color name to the palette for additional customization, read [#12443](https://github.com/mui/mui-x/issues/12443) for more details. From 5a39f7f6a4f25b2964f92249af0db776a56f771a Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Wed, 24 Apr 2024 15:54:47 +0200 Subject: [PATCH 161/912] [charts] Fix left/bottomAxis not picking up default axis id (#12894) --- packages/x-charts/src/ChartsAxis/ChartsAxis.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx b/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx index 07d1357c992a..0b6e7ce9c3e9 100644 --- a/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx +++ b/packages/x-charts/src/ChartsAxis/ChartsAxis.tsx @@ -91,8 +91,8 @@ function ChartsAxis(props: ChartsAxisProps) { // TODO: use for plotting line without ticks or any thing // const drawingArea = React.useContext(DrawingContext); - const leftId = getAxisId(leftAxis === undefined ? yAxisIds[0] : leftAxis); - const bottomId = getAxisId(bottomAxis === undefined ? xAxisIds[0] : bottomAxis); + const leftId = getAxisId(leftAxis === undefined ? yAxisIds[0] : leftAxis, yAxisIds[0]); + const bottomId = getAxisId(bottomAxis === undefined ? xAxisIds[0] : bottomAxis, xAxisIds[0]); const topId = getAxisId(topAxis, xAxisIds[0]); const rightId = getAxisId(rightAxis, yAxisIds[0]); From 931fd6ea3b25e0c7957a88b32649d2105b27988e Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 24 Apr 2024 18:06:35 +0300 Subject: [PATCH 162/912] [code-infra] Change package manager to `pnpm` (#11875) Signed-off-by: Lukas Co-authored-by: Jose Quintas --- .circleci/config.yml | 105 +- .eslintignore | 2 + .github/workflows/l10n.yml | 8 +- .npmrc | 3 + .yarnrc | 5 - babel.config.js | 10 +- dangerfile.js | 6 +- docs/.link-check-errors.txt | 2 +- docs/README.md | 7 +- .../row-pinning/RowPinningWithPagination.js | 2 +- .../row-pinning/RowPinningWithPagination.tsx | 2 +- docs/next.config.mjs | 2 +- docs/package.json | 34 +- docs/scripts/reportBrokenLinks.js | 2 +- docs/tsconfig.json | 12 +- lerna.json | 2 +- netlify.toml | 3 +- package.json | 99 +- packages/x-charts/package.json | 12 +- .../src/BarChart/{index.tsx => index.ts} | 0 .../ChartContainer/{index.tsx => index.ts} | 0 .../src/ChartsAxis/{index.tsx => index.ts} | 0 .../{index.tsx => index.ts} | 0 .../ChartsClipPath/{index.tsx => index.ts} | 0 .../src/ChartsGrid/{index.tsx => index.ts} | 0 .../{index.tsx => index.ts} | 0 .../{index.tsx => index.ts} | 0 .../src/ChartsText/{index.tsx => index.ts} | 0 .../src/ChartsTooltip/{index.tsx => index.ts} | 0 .../{index.tsx => index.ts} | 0 .../src/ChartsXAxis/{index.tsx => index.ts} | 0 .../src/ChartsYAxis/{index.tsx => index.ts} | 0 .../src/LineChart/{index.tsx => index.ts} | 0 .../src/PieChart/{index.tsx => index.ts} | 0 .../{index.tsx => index.ts} | 0 .../src/ScatterChart/{index.tsx => index.ts} | 0 .../SparkLineChart/{index.tsx => index.ts} | 0 packages/x-charts/tsconfig.build.json | 13 +- packages/x-charts/tsconfig.json | 9 +- packages/x-codemod/package.json | 10 +- packages/x-codemod/tsconfig.json | 19 +- packages/x-data-grid-generator/package.json | 10 +- .../x-data-grid-generator/tsconfig.build.json | 5 +- packages/x-data-grid-generator/tsconfig.json | 4 +- packages/x-data-grid-premium/package.json | 16 +- .../x-data-grid-premium/tsconfig.build.json | 5 +- packages/x-data-grid-premium/tsconfig.json | 9 +- packages/x-data-grid-pro/package.json | 13 +- packages/x-data-grid-pro/tsconfig.build.json | 5 +- packages/x-data-grid-pro/tsconfig.json | 9 +- packages/x-data-grid/package.json | 11 +- packages/x-data-grid/tsconfig.build.json | 9 +- packages/x-data-grid/tsconfig.json | 9 +- packages/x-date-pickers-pro/package.json | 13 +- .../x-date-pickers-pro/tsconfig.build.json | 11 +- packages/x-date-pickers-pro/tsconfig.json | 16 +- packages/x-date-pickers/package.json | 11 +- .../DateTimeViewWrapper.tsx | 6 - .../components/DateTimeViewWrapper/index.ts | 1 - packages/x-date-pickers/tsconfig.build.json | 18 +- packages/x-date-pickers/tsconfig.json | 12 +- packages/x-license/package.json | 8 +- packages/x-license/tsconfig.build.json | 2 +- packages/x-license/tsconfig.json | 10 +- packages/x-tree-view-pro/package.json | 9 +- packages/x-tree-view-pro/tsconfig.build.json | 5 +- packages/x-tree-view-pro/tsconfig.json | 9 +- packages/x-tree-view/package.json | 9 +- packages/x-tree-view/tsconfig.build.json | 5 +- packages/x-tree-view/tsconfig.json | 9 +- patches/@mui__monorepo@6.0.0-alpha.0.patch | 13 + ... babel-plugin-replace-imports@1.0.2.patch} | 9 +- ...0.patch => date-fns-jalali@2.13.0-0.patch} | 8 +- ...ha+2.0.1.patch => karma-mocha@2.0.1.patch} | 8 +- pnpm-lock.yaml | 18101 ++++++++++++++++ pnpm-workspace.yaml | 4 + renovate.json | 2 +- scripts/README.md | 17 +- scripts/build.mjs | 2 +- scripts/deduplicate.mjs | 42 - scripts/importDocsStatic.mjs | 6 +- scripts/l10n.ts | 2 +- test/cli.js | 3 +- test/e2e-website/README.md | 4 +- test/e2e/fixtures/DataGrid/SelectEditCell.tsx | 10 +- test/e2e/index.test.ts | 2 +- test/karma.conf.js | 2 +- test/package.json | 31 + .../pickers/DateCalendarYearOnly.tsx | 6 +- test/regressions/pickers/OpenDatePicker.tsx | 6 +- .../pickers/OpenDateTimePicker.tsx | 6 +- .../pickers/OpenDateTimePickerClock.tsx | 6 +- test/regressions/pickers/OpenTimePicker.tsx | 6 +- test/tsconfig.json | 13 + test/utils/setupBabel.js | 2 +- webpackBaseConfig.js | 2 +- yarn.lock | 15497 ------------- 97 files changed, 18531 insertions(+), 15907 deletions(-) create mode 100644 .npmrc delete mode 100644 .yarnrc rename packages/x-charts/src/BarChart/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartContainer/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsAxis/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsAxisHighlight/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsClipPath/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsGrid/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsOnAxisClickHandler/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsReferenceLine/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsText/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsTooltip/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsVoronoiHandler/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsXAxis/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ChartsYAxis/{index.tsx => index.ts} (100%) rename packages/x-charts/src/LineChart/{index.tsx => index.ts} (100%) rename packages/x-charts/src/PieChart/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ResponsiveChartContainer/{index.tsx => index.ts} (100%) rename packages/x-charts/src/ScatterChart/{index.tsx => index.ts} (100%) rename packages/x-charts/src/SparkLineChart/{index.tsx => index.ts} (100%) delete mode 100644 packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.tsx delete mode 100644 packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/index.ts create mode 100644 patches/@mui__monorepo@6.0.0-alpha.0.patch rename patches/{babel-plugin-replace-imports+1.0.2.patch => babel-plugin-replace-imports@1.0.2.patch} (94%) rename patches/{date-fns-jalali+2.13.0-0.patch => date-fns-jalali@2.13.0-0.patch} (99%) rename patches/{karma-mocha+2.0.1.patch => karma-mocha@2.0.1.patch} (72%) create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100644 scripts/deduplicate.mjs create mode 100644 test/package.json create mode 100644 test/tsconfig.json delete mode 100644 yarn.lock diff --git a/.circleci/config.yml b/.circleci/config.yml index 736cfa65d207..129d90984ae7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -59,29 +59,17 @@ commands: description: 'Set to true if you intend to any browser (for example with playwright).' steps: - - run: - name: View install environment - command: | - node --version - yarn --version - - restore_cache: - name: Restore yarn cache - keys: - - v8-yarn-{{ checksum "yarn.lock" }} - - run: - name: Set yarn cache folder - command: | - # Keep path in sync with `save_cache` for key "v8-yarn-" - yarn config set cache-folder /tmp/yarn-cache - # Debug information - yarn cache dir - yarn cache list - when: condition: << parameters.browsers >> steps: + - run: + name: Install pnpm package manager + command: | + corepack enable + corepack prepare pnpm@latest-8 --activate - run: name: Prepare playwright hash - command: yarn --json list --pattern playwright > /tmp/playwright_info.json + command: pnpm list --json --filter playwright > /tmp/playwright_info.json - store_artifacts: name: Debug playwright hash path: /tmp/playwright_info.json @@ -89,25 +77,20 @@ commands: name: Restore playwright cache keys: - v6-playwright-{{ arch }}-{{ checksum "/tmp/playwright_info.json" }} + - run: + name: View install environment + command: | + node --version + pnpm --version - run: name: Install js dependencies - command: yarn install + command: pnpm install - when: condition: << parameters.browsers >> steps: - run: name: Install playwright browsers command: npx playwright install --with-deps - - save_cache: - name: Save yarn cache - key: v8-yarn-{{ checksum "yarn.lock" }} - paths: - # Keep path in sync with "Set yarn cache folder" - # Can't use environment variables for `save_cache` paths (tested in https://app.circleci.com/pipelines/github/mui/material-ui/37813/workflows/5b1e207f-ac8b-44e7-9ba4-d0f9a01f5c55/jobs/223370) - - /tmp/yarn-cache - - when: - condition: << parameters.browsers >> - steps: - save_cache: name: Save playwright cache key: v6-playwright-{{ arch }}-{{ checksum "/tmp/playwright_info.json" }} @@ -127,7 +110,13 @@ jobs: command: git add -A && git diff --exit-code --staged - run: name: Check for duplicated packages - command: yarn deduplicate + command: | + if [[ $(git diff --name-status next | grep pnpm-lock) == "" ]]; + then + echo "No changes to dependencies detected. Skipping..." + else + pnpm dedupe --check + fi test_unit: <<: *default-job steps: @@ -135,10 +124,10 @@ jobs: - install_js - run: name: Tests charts - command: yarn test:charts:unit # Run special test for charts due to ESM compatibility issue + command: pnpm test:charts:unit # Run special test for charts due to ESM compatibility issue - run: name: Tests fake browser - command: yarn test:coverage + command: pnpm test:coverage - run: name: Check coverage generated command: | @@ -159,43 +148,47 @@ jobs: - install_js - run: name: Eslint - command: yarn eslint:ci + command: pnpm eslint:ci - run: name: Lint JSON - command: yarn jsonlint + command: pnpm jsonlint - run: name: Lint Markdown - command: yarn markdownlint + command: pnpm markdownlint test_static: <<: *default-job steps: - checkout - install_js - run: - name: '`yarn prettier` changes committed?' - command: yarn prettier --check + name: '`pnpm prettier` changes committed?' + command: pnpm prettier --check - run: name: Generate PropTypes - command: yarn proptypes + command: pnpm proptypes + environment: + NODE_OPTIONS: --max-old-space-size=3584 - run: - name: '`yarn proptypes` changes committed?' + name: '`pnpm proptypes` changes committed?' command: git add -A && git diff --exit-code --staged - run: name: Generate the documentation - command: yarn docs:api + command: pnpm docs:api + environment: + NODE_OPTIONS: --max-old-space-size=3584 - run: - name: '`yarn docs:api` changes committed?' + name: '`pnpm docs:api` changes committed?' command: git add -A && git diff --exit-code --staged - run: name: Sync locale files - command: yarn l10n + command: pnpm l10n - run: - name: '`yarn l10n` changes committed?' + name: '`pnpm l10n` changes committed?' command: git add -A && git diff --exit-code --staged - run: - name: '`yarn docs:link-check` changes committed?' + name: '`pnpm docs:link-check` changes committed?' command: | - yarn docs:link-check + pnpm docs:link-check git add -A && git diff --exit-code --staged test_browser: <<: *default-job @@ -209,7 +202,7 @@ jobs: browsers: true - run: name: Tests real browsers - command: yarn test:karma + command: pnpm test:karma - store_artifacts: # hardcoded in karma-webpack path: /tmp/_karma_webpack_ @@ -221,15 +214,15 @@ jobs: - install_js - run: name: Transpile TypeScript demos - command: yarn docs:typescript:formatted --disable-cache + command: pnpm docs:typescript:formatted --disable-cache - run: - name: '`yarn docs:typescript:formatted` changes committed?' + name: '`pnpm docs:typescript:formatted` changes committed?' command: git add -A && git diff --exit-code --staged - run: name: Tests TypeScript definitions - command: yarn typescript:ci + command: pnpm typescript:ci environment: - NODE_OPTIONS: --max-old-space-size=2048 + NODE_OPTIONS: --max-old-space-size=1536 test_e2e: <<: *default-job docker: @@ -242,7 +235,7 @@ jobs: browsers: true - run: name: Run e2e tests - command: yarn test:e2e + command: pnpm test:e2e test_e2e_website: <<: *default-job docker: @@ -254,8 +247,8 @@ jobs: - install_js: browsers: true - run: - name: yarn test:e2e-website - command: yarn test:e2e-website + name: pnpm test:e2e-website + command: pnpm test:e2e-website environment: PLAYWRIGHT_TEST_BASE_URL: << parameters.e2e-base-url >> test_regressions: @@ -270,10 +263,10 @@ jobs: browsers: true - run: name: Run visual regression tests - command: xvfb-run yarn test:regressions + command: xvfb-run pnpm test:regressions - run: name: Upload screenshots to Argos CI - command: yarn test:argos + command: pnpm test:argos run_danger: <<: *default-job docker: @@ -286,7 +279,7 @@ jobs: browsers: true - run: name: Run danger on PRs - command: yarn danger ci --fail-on-errors + command: pnpm danger ci --fail-on-errors environment: DANGER_DISABLE_TRANSPILATION: 'true' workflows: diff --git a/.eslintignore b/.eslintignore index 828357acf4a9..e4429ac6dfba 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,6 @@ /.git +pnpm-lock.yaml +netlify/functions /docs/.next /docs/export /docs/pages/playground/ diff --git a/.github/workflows/l10n.yml b/.github/workflows/l10n.yml index a1efe0794c60..9c79175f3246 100644 --- a/.github/workflows/l10n.yml +++ b/.github/workflows/l10n.yml @@ -22,11 +22,11 @@ jobs: uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 20 - cache: 'yarn' # https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#caching-packages-dependencies - - run: yarn install - - name: yarn l10n --report + cache: 'pnpm' # https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#caching-packages-dependencies + - run: pnpm install + - name: pnpm l10n --report env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | git remote -v - yarn l10n --report + pnpm l10n --report diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000000..5c79d0d70562 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +engine-strict = true +auto-install-peers = true +enable-pre-post-scripts = true \ No newline at end of file diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 82ad2b5d1f0c..000000000000 --- a/.yarnrc +++ /dev/null @@ -1,5 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -network-timeout 150000 diff --git a/babel.config.js b/babel.config.js index cffee2bfde9e..c778fb946a35 100644 --- a/babel.config.js +++ b/babel.config.js @@ -58,12 +58,12 @@ module.exports = function getBabelConfig(api) { const plugins = [ 'babel-plugin-optimize-clsx', - // Need the following 3 proposals for all targets in .browserslistrc. + // Need the following 3 transforms for all targets in .browserslistrc. // With our usage the transpiled loose mode is equivalent to spec mode. - ['@babel/plugin-proposal-class-properties', { loose: true }], - ['@babel/plugin-proposal-private-methods', { loose: true }], - ['@babel/plugin-proposal-private-property-in-object', { loose: true }], - ['@babel/plugin-proposal-object-rest-spread', { loose: true }], + ['@babel/plugin-transform-class-properties', { loose: true }], + ['@babel/plugin-transform-private-methods', { loose: true }], + ['@babel/plugin-transform-private-property-in-object', { loose: true }], + ['@babel/plugin-transform-object-rest-spread', { loose: true }], [ '@babel/plugin-transform-runtime', { diff --git a/dangerfile.js b/dangerfile.js index 479d7aaa0a73..5334b83dcba6 100644 --- a/dangerfile.js +++ b/dangerfile.js @@ -59,14 +59,14 @@ function addL10nHelpMessage() { '- [ ] Verify if the PR title respects the release format. Here are two examples (depending if you update or add a locale file)', ' > [l10n] Improve Swedish (sv-SE) locale', ' > [l10n] Add Danish (da-DK) locale', - '- [ ] Update the documentation of supported locales by running `yarn l10n`', + '- [ ] Update the documentation of supported locales by running `pnpm l10n`', ...(isAddingLocale ? [ '- [ ] Verify that you have added an export line in `src/locales/index.ts` for the new locale.', - '- [ ] Run `yarn docs:api` which should add your new translation to the list of exported interfaces.', + '- [ ] Run `pnpm docs:api` which should add your new translation to the list of exported interfaces.', ] : []), - '- [ ] Clean files with `yarn prettier`.', + '- [ ] Clean files with `pnpm prettier`.', '', ].join('\n'), ); diff --git a/docs/.link-check-errors.txt b/docs/.link-check-errors.txt index 8096f1b7324b..6ecc503cc78a 100644 --- a/docs/.link-check-errors.txt +++ b/docs/.link-check-errors.txt @@ -1,2 +1,2 @@ -Broken links found by `yarn docs:link-check` that exist: +Broken links found by `docs:link-check` that exist: diff --git a/docs/README.md b/docs/README.md index 75defb11d417..ff8a508a012f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,11 +5,12 @@ This is the documentation website of MUI X. To start the docs site in development mode, from the project root, run: ```bash -yarn && yarn docs:dev +pnpm i && pnpm docs:dev ``` -If you do not have yarn installed, select your OS and follow the instructions on the [Yarn website](https://yarnpkg.com/lang/en/docs/install/#mac-stable). -DO NOT USE npm, use Yarn to install the dependencies. +If you do not have pnpm installed, follow the instructions on the [pnpm website](https://pnpm.io/installation). + +_DO NOT USE NPM, use pnpm to install the dependencies._ ## How can I add a new demo to the documentation? diff --git a/docs/data/data-grid/row-pinning/RowPinningWithPagination.js b/docs/data/data-grid/row-pinning/RowPinningWithPagination.js index da0c25f52bd1..bb2874c03d0b 100644 --- a/docs/data/data-grid/row-pinning/RowPinningWithPagination.js +++ b/docs/data/data-grid/row-pinning/RowPinningWithPagination.js @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataGridPro } from '@mui/x-data-grid-pro'; -import { useDemoData } from '@mui/x-data-grid-generator/'; +import { useDemoData } from '@mui/x-data-grid-generator'; export default function RowPinningWithPagination() { const { data } = useDemoData({ diff --git a/docs/data/data-grid/row-pinning/RowPinningWithPagination.tsx b/docs/data/data-grid/row-pinning/RowPinningWithPagination.tsx index da0c25f52bd1..bb2874c03d0b 100644 --- a/docs/data/data-grid/row-pinning/RowPinningWithPagination.tsx +++ b/docs/data/data-grid/row-pinning/RowPinningWithPagination.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataGridPro } from '@mui/x-data-grid-pro'; -import { useDemoData } from '@mui/x-data-grid-generator/'; +import { useDemoData } from '@mui/x-data-grid-generator'; export default function RowPinningWithPagination() { const { data } = useDemoData({ diff --git a/docs/next.config.mjs b/docs/next.config.mjs index c8e56e9d4092..83bceb213ff5 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -192,7 +192,7 @@ export default withDocsInfra({ return map; }, - // Used to signal we run yarn build + // Used to signal we run build ...(process.env.NODE_ENV === 'production' ? { output: 'export', diff --git a/docs/package.json b/docs/package.json index ec7054e9d6f9..0d88b45691b3 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,8 +5,8 @@ "author": "MUI Team", "license": "MIT", "scripts": { - "build": "rimraf ./export && cross-env NODE_ENV=production next build --profile && yarn build-sw", - "build:clean": "rimraf .next && yarn build", + "build": "rimraf ./export && cross-env NODE_ENV=production next build --profile && pnpm build-sw", + "build:clean": "rimraf .next && pnpm build", "build-sw": "node ./scripts/buildServiceWorker.js", "dev": "next dev --port 3001", "deploy": "git push -f upstream next:docs-next", @@ -20,25 +20,30 @@ }, "dependencies": { "@babel/core": "^7.24.0", + "@babel/runtime": "^7.24.0", "@babel/runtime-corejs2": "^7.24.0", "@docsearch/react": "^3.5.2", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.11.4", "@emotion/server": "^11.11.0", "@emotion/styled": "^11.11.0", + "@mui/base": "^5.0.0-beta.40", "@mui/icons-material": "^5.15.14", - "@mui/internal-markdown": "^1.0.0", "@mui/joy": "^5.0.0-beta.32", "@mui/lab": "^5.0.0-alpha.169", "@mui/material": "^5.15.14", "@mui/styles": "^5.15.14", + "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", + "@mui/x-charts": "workspace:*", + "@mui/x-data-grid": "workspace:*", + "@mui/x-data-grid-generator": "workspace:*", + "@mui/x-data-grid-premium": "workspace:*", + "@mui/x-data-grid-pro": "workspace:*", + "@mui/x-date-pickers": "workspace:*", + "@mui/x-date-pickers-pro": "workspace:*", + "@mui/x-tree-view": "workspace:*", "@react-spring/web": "^9.7.3", - "@trendmicro/react-interpolate": "^0.5.5", - "@types/lodash": "^4.14.202", - "@types/moment-hijri": "^2.1.4", - "@types/react-dom": "^18.2.19", - "@types/react-router-dom": "^5.3.3", "ast-types": "^0.14.2", "autoprefixer": "^10.4.18", "babel-plugin-module-resolver": "^5.0.0", @@ -46,6 +51,7 @@ "babel-plugin-preval": "^5.1.0", "babel-plugin-react-remove-properties": "^0.3.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "chance": "^1.1.11", "clean-css": "^5.3.3", "clipboard-copy": "^4.0.1", "clsx": "^2.1.0", @@ -53,12 +59,11 @@ "cross-env": "^7.0.3", "date-fns": "^2.30.0", "date-fns-jalali": "^2.21.3-1", - "date-fns-v3": "https://registry.npmjs.org/date-fns/-/date-fns-3.2.0.tgz", "dayjs": "^1.11.10", "doctrine": "^3.0.0", "exceljs": "^4.4.0", "fg-loadcss": "^3.1.0", - "fs-extra": "^11.2.0", + "jscodeshift": "0.13.1", "lodash": "^4.17.21", "luxon": "^3.4.4", "lz-string": "^1.5.0", @@ -84,7 +89,9 @@ "react-simple-code-editor": "^0.13.1", "recast": "^0.23.5", "rimraf": "^5.0.5", + "rxjs": "^7.8.1", "styled-components": "^6.1.8", + "stylis": "^4.3.1", "stylis-plugin-rtl": "^2.1.1", "webpack-bundle-analyzer": "^4.10.1" }, @@ -93,10 +100,15 @@ "@babel/preset-typescript": "^7.23.3", "@mui/internal-docs-utils": "^1.0.4", "@mui/internal-scripts": "^1.0.1", + "@types/d3-scale": "^4.0.8", "@types/doctrine": "^0.0.9", + "@types/lodash": "^4.14.202", + "@types/luxon": "^3.4.2", + "@types/moment-hijri": "^2.1.4", + "@types/react-dom": "18.2.19", + "@types/react-router-dom": "^5.3.3", "@types/stylis": "^4.2.5", "@types/webpack-bundle-analyzer": "^4.7.0", - "cpy-cli": "^5.0.0", "gm": "^1.25.0", "serve": "^14.2.1" } diff --git a/docs/scripts/reportBrokenLinks.js b/docs/scripts/reportBrokenLinks.js index 9b22cad9c045..d7de49514a8d 100644 --- a/docs/scripts/reportBrokenLinks.js +++ b/docs/scripts/reportBrokenLinks.js @@ -48,7 +48,7 @@ function removeApiLinkHash(link) { const usedLinks = { ...usedLinksCore, ...usedLinksX }; const availableLinks = { ...availableLinksCore, ...availableLinksX }; -write('Broken links found by `yarn docs:link-check` that exist:\n'); +write('Broken links found by `docs:link-check` that exist:\n'); Object.keys(usedLinks) .filter((link) => link.startsWith('/')) .filter((link) => !availableLinks[removeApiLinkHash(link)]) diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 71d443e218e6..a552a39f3001 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -8,18 +8,8 @@ "resolveJsonModule": true, "skipLibCheck": true, "esModuleInterop": true, - "types": ["react", "node"], "incremental": true }, - "include": [ - "pages/**/*.ts*", - "data/**/*", - "src/modules/components/**/*", - "next.config.mjs", - "../node_modules/@mui/material/themeCssVarsAugmentation", - "../node_modules/dayjs/plugin/utc.d.ts", - "../node_modules/dayjs/plugin/timezone.d.ts", - "../node_modules/moment-timezone/index.d.ts" - ], + "include": ["pages/**/*.ts*", "data/**/*", "src/modules/components/**/*", "next.config.mjs"], "exclude": ["docs/.next", "docs/export", "pages/playground"] } diff --git a/lerna.json b/lerna.json index 7c47fccf2869..086066839af1 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "npmClient": "yarn", + "npmClient": "pnpm", "version": "independent", "useNx": false } diff --git a/netlify.toml b/netlify.toml index 5666dd591fc9..767f5a910c79 100644 --- a/netlify.toml +++ b/netlify.toml @@ -5,11 +5,12 @@ publish = "docs/export/" # Default build command. - command = "yarn docs:build" + command = "pnpm docs:build" [build.environment] NODE_VERSION = "18" NODE_OPTIONS = "--max_old_space_size=4096" + PNPM_FLAGS = "--shamefully-hoist" [[plugins]] package = "./node_modules/@mui/monorepo/packages/netlify-plugin-cache-docs" diff --git a/package.json b/package.json index c663e8eff7e2..39d98f3cf454 100644 --- a/package.json +++ b/package.json @@ -2,34 +2,34 @@ "version": "7.3.0", "private": true, "scripts": { - "start": "yarn && yarn docs:dev", - "docs:dev": "yarn workspace docs dev", - "docs:serve": "yarn workspace docs serve", - "docs:create-playground": "yarn workspace docs create-playground", - "docs:api": "NODE_OPTIONS=--max-old-space-size=4096 yarn docs:api:build && yarn docs:api:buildX", + "preinstall": "npx only-allow pnpm", + "start": "pnpm i && pnpm docs:dev", + "docs:dev": "pnpm --filter docs dev", + "docs:serve": "pnpm --filter docs serve", + "docs:create-playground": "pnpm --filter docs create-playground", + "docs:api": "NODE_OPTIONS=--max-old-space-size=4096 pnpm docs:api:build && pnpm docs:api:buildX", "docs:api:build": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./scripts/buildApiDocs/index.ts", "docs:api:buildX": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./docs/scripts/api/buildApi.ts", "docs:link-check": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" --extensions \".tsx,.ts,.js\" ./docs/scripts/reportBrokenLinks.js", - "docs:build": "yarn workspace docs build", - "docs:typescript:formatted": "yarn workspace docs typescript:transpile", - "docs:populate:demos": "yarn workspace docs populate:demos", + "docs:build": "pnpm --filter docs build", + "docs:typescript:formatted": "pnpm --filter docs typescript:transpile", + "docs:populate:demos": "pnpm --filter docs populate:demos", "docs:importDocsStatic": "node scripts/importDocsStatic.mjs", - "docs:size-why": "cross-env DOCS_STATS_ENABLED=true yarn docs:build", - "docs:deploy": "yarn workspace docs deploy", - "deduplicate": "node scripts/deduplicate.mjs", + "docs:size-why": "cross-env DOCS_STATS_ENABLED=true pnpm docs:build", + "docs:deploy": "pnpm --filter docs deploy", + "deduplicate": "pnpm dedupe", "dataset:file-tree": "babel-node -x .ts ./scripts/treeDataFromFileTree.ts", "l10n": "babel-node -x .ts ./scripts/l10n.ts", "jsonlint": "node ./scripts/jsonlint.mjs", "eslint": "eslint . --cache --report-unused-disable-directives --ext .js,.ts,.tsx --max-warnings 0", - "eslint:fix": "yarn eslint --fix", + "eslint:fix": "pnpm eslint --fix", "eslint:ci": "eslint . --report-unused-disable-directives --ext .js,.ts,.tsx --max-warnings 0", "markdownlint": "markdownlint-cli2 \"**/*.md\"", - "postinstall": "patch-package", "prettier": "pretty-quick --branch master --ignore-path .eslintignore", "prettier:all": "prettier --write . --ignore-path .eslintignore", "proptypes": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./docs/scripts/generateProptypes.ts", "size:snapshot": "node --max-old-space-size=2048 ./scripts/sizeSnapshot/create", - "size:why": "yarn size:snapshot --analyze --accurateBundles", + "size:why": "pnpm size:snapshot --analyze --accurateBundles", "t": "TZ=UTC node test/cli.js", "test": "lerna run test --parallel", "test:coverage": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc mocha --exclude '**/node_modules/**' && nyc report -r lcovonly", @@ -38,40 +38,41 @@ "test:karma:parallel": "cross-env NODE_ENV=test TZ=UTC PARALLEL=true karma start test/karma.conf.js", "test:unit": "cross-env NODE_ENV=test TZ=UTC mocha -n expose_gc", "test:charts:unit": "cross-env NODE_ENV=test TZ=UTC mocha -n expose_gc --config packages/x-charts/.mocharc.js", - "test:e2e": "cross-env NODE_ENV=production yarn test:e2e:build && concurrently --success first --kill-others \"yarn test:e2e:run\" \"yarn test:e2e:server\"", + "test:e2e": "cross-env NODE_ENV=production pnpm test:e2e:build && concurrently --success first --kill-others \"pnpm test:e2e:run\" \"pnpm test:e2e:server\"", "test:e2e:build": "webpack --config test/e2e/webpack.config.js", - "test:e2e:dev": "concurrently \"yarn test:e2e:build --watch\" \"yarn test:e2e:server\"", + "test:e2e:dev": "concurrently \"pnpm test:e2e:build --watch\" \"pnpm test:e2e:server\"", "test:e2e:run": "mocha --config test/e2e/.mocharc.js 'test/e2e/**/*.test.{js,ts,tsx}'", "test:e2e:server": "serve test/e2e -p 5001", "test:e2e-website": "npx playwright test test/e2e-website --config test/e2e-website/playwright.config.ts", "test:e2e-website:dev": "PLAYWRIGHT_TEST_BASE_URL=http://localhost:3001 npx playwright test test/e2e-website --config test/e2e-website/playwright.config.ts", - "test:regressions": "cross-env NODE_ENV=production yarn test:regressions:build && concurrently --success first --kill-others \"yarn test:regressions:run\" \"yarn test:regressions:server\"", + "test:regressions": "cross-env NODE_ENV=production pnpm test:regressions:build && concurrently --success first --kill-others \"pnpm test:regressions:run\" \"pnpm test:regressions:server\"", "test:regressions:build": "webpack --config test/regressions/webpack.config.js", - "test:regressions:dev": "concurrently \"yarn test:regressions:build --watch\" \"yarn test:regressions:server\"", + "test:regressions:dev": "concurrently \"pnpm test:regressions:build --watch\" \"pnpm test:regressions:server\"", "test:regressions:run": "mocha --config test/regressions/.mocharc.js --delay 'test/regressions/**/*.test.js'", "test:regressions:server": "serve test/regressions -p 5001", "test:argos": "node ./scripts/pushArgos.mjs", "typescript": "lerna run --no-bail --parallel typescript", "typescript:ci": "lerna run --concurrency 3 --no-bail --no-sort typescript", - "build:codesandbox": "yarn release:build", - "install:codesandbox": "yarn install --ignore-engines", + "build:codesandbox": "pnpm release:build", + "install:codesandbox": "pnpm install --no-frozen-lockfile", "release:changelog": "node scripts/releaseChangelog.mjs", "release:version": "lerna version --exact --no-changelog --no-push --no-git-tag-version --no-private", "release:build": "lerna run --parallel --no-private --scope \"@mui/*\" build", - "release:publish": "lerna publish from-package --no-private --dist-tag latest --contents build", - "release:publish:dry-run": "lerna publish from-package --dist-tag latest --contents build --registry=\"http://localhost:4873/\"", + "release:publish": "pnpm publish --recursive --tag latest", + "release:publish:dry-run": "pnpm publish --recursive --tag latest --registry=\"http://localhost:4873/\"", "release:tag": "node scripts/releaseTag.mjs", - "validate": "concurrently \"yarn prettier && yarn eslint\" \"yarn proptypes\" \"yarn docs:typescript:formatted\" \"yarn docs:api\"" + "validate": "concurrently \"pnpm prettier && pnpm eslint\" \"pnpm proptypes\" \"pnpm docs:typescript:formatted\" \"pnpm docs:api\"", + "clean:node_modules": "rimraf --glob \"**/node_modules\"" }, "devDependencies": { "@argos-ci/core": "^1.5.4", "@babel/cli": "^7.23.9", "@babel/core": "^7.24.0", "@babel/node": "^7.23.9", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-transform-react-constant-elements": "^7.23.3", "@babel/plugin-transform-runtime": "^7.24.0", "@babel/preset-env": "^7.24.0", @@ -85,8 +86,9 @@ "@emotion/styled": "^11.11.0", "@mnajdova/enzyme-adapter-react-18": "^0.2.0", "@mui/icons-material": "^5.15.14", + "@mui/internal-markdown": "^1.0.0", "@mui/material": "^5.15.14", - "@mui/monorepo": "https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266", + "@mui/monorepo": "github:mui/material-ui#e1d94d5ce097815bcd738352e69bb43ce03bd266", "@mui/utils": "^5.15.14", "@next/eslint-plugin-next": "14.0.4", "@octokit/plugin-retry": "^6.0.1", @@ -97,6 +99,8 @@ "@types/chai": "^4.3.12", "@types/chai-dom": "^1.11.3", "@types/enzyme": "3.10.12", + "@types/fs-extra": "^11.0.4", + "@types/lodash": "^4.17.0", "@types/mocha": "^10.0.6", "@types/node": "^18.19.23", "@types/prettier": "^2.7.3", @@ -122,8 +126,10 @@ "chai-dom": "^1.12.0", "compression-webpack-plugin": "^11.1.0", "concurrently": "^8.2.2", + "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "danger": "^11.3.1", + "date-fns-v3": "npm:date-fns@3.6.0", "enzyme": "^3.11.0", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", @@ -134,11 +140,14 @@ "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^48.2.0", "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-material-ui": "workspace:^", "eslint-plugin-mocha": "^10.3.0", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", + "fast-glob": "^3.3.2", "format-util": "^1.0.5", + "fs-extra": "^11.2.0", "glob-gitignore": "^1.0.14", "globby": "^14.0.0", "html-webpack-plugin": "^5.6.0", @@ -153,11 +162,12 @@ "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.1", "lerna": "^8.1.2", + "lodash": "^4.17.21", "markdownlint-cli2": "^0.12.1", "mocha": "^10.3.0", + "moment": "^2.30.1", + "moment-timezone": "^0.5.44", "nyc": "^15.1.0", - "patch-package": "^7.0.2", - "postinstall-postinstall": "^2.1.0", "prettier": "^3.2.5", "pretty-quick": "^4.0.0", "process": "^0.11.10", @@ -168,29 +178,30 @@ "sinon": "^16.1.3", "stream-browserify": "^3.0.0", "string-replace-loader": "^3.1.0", + "terser-webpack-plugin": "^5.3.10", "tsx": "^4.7.0", - "typescript": "^5.3.3", + "typescript": "^5.4.5", "unist-util-visit": "^2.0.3", "util": "^0.12.5", "webpack": "^5.90.3", + "webpack-bundle-analyzer": "^4.10.1", "webpack-cli": "^5.1.4", - "yargs": "^17.7.2", - "yarn-deduplicate": "^6.0.2" + "yargs": "^17.7.2" }, "setupFiles": [ "/src/setupTests.js" ], - "workspaces": { - "packages": [ - "packages/*", - "docs" - ], - "nohoist": [ - "**/@mui/monorepo" - ] - }, "resolutions": { - "**/react-is": "^18.2.0", - "**/@types/node": "^18.19.23" + "react-is": "^18.2.0", + "@types/node": "^18.19.23" + }, + "packageManager": "pnpm@8.15.1", + "pnpm": { + "patchedDependencies": { + "date-fns-jalali@2.13.0-0": "patches/date-fns-jalali@2.13.0-0.patch", + "karma-mocha@2.0.1": "patches/karma-mocha@2.0.1.patch", + "babel-plugin-replace-imports@1.0.2": "patches/babel-plugin-replace-imports@1.0.2.patch", + "@mui/monorepo@6.0.0-alpha.0": "patches/@mui__monorepo@6.0.0-alpha.0.patch" + } } } diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index b2ac0637c3d5..8b7801e19186 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -11,7 +11,8 @@ "homepage": "https://mui.com/x/react-charts/", "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -24,7 +25,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -68,11 +69,16 @@ } }, "devDependencies": { + "@react-spring/core": "^9.7.3", + "@react-spring/shared": "^9.7.3", "@types/d3-color": "^3.1.3", "@types/d3-delaunay": "^6.0.4", "@types/d3-interpolate": "^3.0.4", "@types/d3-scale": "^4.0.8", - "@types/d3-shape": "^3.1.6" + "@types/d3-shape": "^3.1.6", + "@types/prop-types": "^15.7.11", + "csstype": "^3.1.3", + "rimraf": "^5.0.5" }, "exports": { ".": { diff --git a/packages/x-charts/src/BarChart/index.tsx b/packages/x-charts/src/BarChart/index.ts similarity index 100% rename from packages/x-charts/src/BarChart/index.tsx rename to packages/x-charts/src/BarChart/index.ts diff --git a/packages/x-charts/src/ChartContainer/index.tsx b/packages/x-charts/src/ChartContainer/index.ts similarity index 100% rename from packages/x-charts/src/ChartContainer/index.tsx rename to packages/x-charts/src/ChartContainer/index.ts diff --git a/packages/x-charts/src/ChartsAxis/index.tsx b/packages/x-charts/src/ChartsAxis/index.ts similarity index 100% rename from packages/x-charts/src/ChartsAxis/index.tsx rename to packages/x-charts/src/ChartsAxis/index.ts diff --git a/packages/x-charts/src/ChartsAxisHighlight/index.tsx b/packages/x-charts/src/ChartsAxisHighlight/index.ts similarity index 100% rename from packages/x-charts/src/ChartsAxisHighlight/index.tsx rename to packages/x-charts/src/ChartsAxisHighlight/index.ts diff --git a/packages/x-charts/src/ChartsClipPath/index.tsx b/packages/x-charts/src/ChartsClipPath/index.ts similarity index 100% rename from packages/x-charts/src/ChartsClipPath/index.tsx rename to packages/x-charts/src/ChartsClipPath/index.ts diff --git a/packages/x-charts/src/ChartsGrid/index.tsx b/packages/x-charts/src/ChartsGrid/index.ts similarity index 100% rename from packages/x-charts/src/ChartsGrid/index.tsx rename to packages/x-charts/src/ChartsGrid/index.ts diff --git a/packages/x-charts/src/ChartsOnAxisClickHandler/index.tsx b/packages/x-charts/src/ChartsOnAxisClickHandler/index.ts similarity index 100% rename from packages/x-charts/src/ChartsOnAxisClickHandler/index.tsx rename to packages/x-charts/src/ChartsOnAxisClickHandler/index.ts diff --git a/packages/x-charts/src/ChartsReferenceLine/index.tsx b/packages/x-charts/src/ChartsReferenceLine/index.ts similarity index 100% rename from packages/x-charts/src/ChartsReferenceLine/index.tsx rename to packages/x-charts/src/ChartsReferenceLine/index.ts diff --git a/packages/x-charts/src/ChartsText/index.tsx b/packages/x-charts/src/ChartsText/index.ts similarity index 100% rename from packages/x-charts/src/ChartsText/index.tsx rename to packages/x-charts/src/ChartsText/index.ts diff --git a/packages/x-charts/src/ChartsTooltip/index.tsx b/packages/x-charts/src/ChartsTooltip/index.ts similarity index 100% rename from packages/x-charts/src/ChartsTooltip/index.tsx rename to packages/x-charts/src/ChartsTooltip/index.ts diff --git a/packages/x-charts/src/ChartsVoronoiHandler/index.tsx b/packages/x-charts/src/ChartsVoronoiHandler/index.ts similarity index 100% rename from packages/x-charts/src/ChartsVoronoiHandler/index.tsx rename to packages/x-charts/src/ChartsVoronoiHandler/index.ts diff --git a/packages/x-charts/src/ChartsXAxis/index.tsx b/packages/x-charts/src/ChartsXAxis/index.ts similarity index 100% rename from packages/x-charts/src/ChartsXAxis/index.tsx rename to packages/x-charts/src/ChartsXAxis/index.ts diff --git a/packages/x-charts/src/ChartsYAxis/index.tsx b/packages/x-charts/src/ChartsYAxis/index.ts similarity index 100% rename from packages/x-charts/src/ChartsYAxis/index.tsx rename to packages/x-charts/src/ChartsYAxis/index.ts diff --git a/packages/x-charts/src/LineChart/index.tsx b/packages/x-charts/src/LineChart/index.ts similarity index 100% rename from packages/x-charts/src/LineChart/index.tsx rename to packages/x-charts/src/LineChart/index.ts diff --git a/packages/x-charts/src/PieChart/index.tsx b/packages/x-charts/src/PieChart/index.ts similarity index 100% rename from packages/x-charts/src/PieChart/index.tsx rename to packages/x-charts/src/PieChart/index.ts diff --git a/packages/x-charts/src/ResponsiveChartContainer/index.tsx b/packages/x-charts/src/ResponsiveChartContainer/index.ts similarity index 100% rename from packages/x-charts/src/ResponsiveChartContainer/index.tsx rename to packages/x-charts/src/ResponsiveChartContainer/index.ts diff --git a/packages/x-charts/src/ScatterChart/index.tsx b/packages/x-charts/src/ScatterChart/index.ts similarity index 100% rename from packages/x-charts/src/ScatterChart/index.tsx rename to packages/x-charts/src/ScatterChart/index.ts diff --git a/packages/x-charts/src/SparkLineChart/index.tsx b/packages/x-charts/src/SparkLineChart/index.ts similarity index 100% rename from packages/x-charts/src/SparkLineChart/index.tsx rename to packages/x-charts/src/SparkLineChart/index.ts diff --git a/packages/x-charts/tsconfig.build.json b/packages/x-charts/tsconfig.build.json index 019fe2e46dfe..d67bc4572b32 100644 --- a/packages/x-charts/tsconfig.build.json +++ b/packages/x-charts/tsconfig.build.json @@ -8,9 +8,16 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": [ + "node", + "@mui/material/themeCssVarsAugmentation", + "@emotion/styled", + "@react-spring/shared", + "@react-spring/core", + "csstype" + ] }, - "references": [{ "path": "../x-license/tsconfig.build.json" }], - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*", "src/tests/**/*"] } diff --git a/packages/x-charts/tsconfig.json b/packages/x-charts/tsconfig.json index 6a8e1ed5b14f..b83e29b02231 100644 --- a/packages/x-charts/tsconfig.json +++ b/packages/x-charts/tsconfig.json @@ -1,12 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"] + "types": ["mocha", "node", "@mui/material/themeCssVarsAugmentation"] }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*", "../../test/utils/addChaiAssertions.ts"] } diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index bb8b208b0492..3ab816eba7c2 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -18,7 +18,7 @@ "typescript": "tsc -p tsconfig.json", "prebuild": "rimraf build", "copy-files": "cpy README.md build && cpy package.json build", - "build": "node ../../scripts/build.mjs node --ignore 'src/types.ts' && yarn copy-files" + "build": "node ../../scripts/build.mjs node --ignore 'src/types.ts' && pnpm copy-files" }, "repository": { "type": "git", @@ -40,11 +40,15 @@ "yargs": "^17.7.2" }, "devDependencies": { - "@types/jscodeshift": "^0.11.5" + "@types/jscodeshift": "^0.11.5", + "dayjs": "^1.11.10", + "moment-timezone": "^0.5.44", + "rimraf": "^5.0.5" }, "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-codemod/tsconfig.json b/packages/x-codemod/tsconfig.json index 9a29c6850498..3371fcd2233c 100644 --- a/packages/x-codemod/tsconfig.json +++ b/packages/x-codemod/tsconfig.json @@ -1,17 +1,16 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"], + "types": [ + "mocha", + "node", + "@mui/material/themeCssVarsAugmentation", + "dayjs/plugin/utc.d.ts", + "dayjs/plugin/timezone.d.ts", + "moment-timezone" + ], "noImplicitAny": false }, - "include": [ - "src/**/*", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation", - "../../node_modules/date-fns", - "../../node_modules/dayjs/plugin/utc.d.ts", - "../../node_modules/dayjs/plugin/timezone.d.ts", - "../../node_modules/moment-timezone/index.d.ts" - ], + "include": ["src/**/*"], "exclude": ["src/**/actual*.ts*"] } diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index fc20fd22c5e8..25b2af38c5b5 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -11,14 +11,15 @@ "homepage": "https://github.com/mui/mui-x/tree/master/packages/x-data-grid-generator", "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "mui-x" ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -34,14 +35,15 @@ "dependencies": { "@babel/runtime": "^7.24.0", "@mui/base": "^5.0.0-beta.40", - "@mui/x-data-grid-premium": "7.3.0", + "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.11", "clsx": "^2.1.0", "lru-cache": "^7.18.3" }, "devDependencies": { "@types/chance": "^1.1.6", - "@types/lru-cache": "^7.10.9" + "@types/lru-cache": "^7.10.9", + "rimraf": "^5.0.5" }, "peerDependencies": { "@mui/icons-material": "^5.4.1", diff --git a/packages/x-data-grid-generator/tsconfig.build.json b/packages/x-data-grid-generator/tsconfig.build.json index 9a5822531391..9d1a11a2d4e3 100644 --- a/packages/x-data-grid-generator/tsconfig.build.json +++ b/packages/x-data-grid-generator/tsconfig.build.json @@ -8,9 +8,10 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation"] }, "references": [{ "path": "../x-data-grid-premium/tsconfig.build.json" }], - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*"] } diff --git a/packages/x-data-grid-generator/tsconfig.json b/packages/x-data-grid-generator/tsconfig.json index cbaf4e9b20e9..9dc2a70b2061 100644 --- a/packages/x-data-grid-generator/tsconfig.json +++ b/packages/x-data-grid-generator/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"] + "types": ["react", "mocha", "node", "@mui/material/themeCssVarsAugmentation"] }, - "include": ["src/**/*", "../../node_modules/@mui/material/themeCssVarsAugmentation"] + "include": ["src/**/*"] } diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 8e097ceb001c..ba22cce968ab 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -11,7 +11,8 @@ "homepage": "https://mui.com/x/react-data-grid/", "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -28,7 +29,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -45,9 +46,9 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.3.0", - "@mui/x-data-grid-pro": "7.3.0", - "@mui/x-license": "7.2.0", + "@mui/x-data-grid": "workspace:*", + "@mui/x-data-grid-pro": "workspace:*", + "@mui/x-license": "workspace:*", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "exceljs": "^4.4.0", @@ -59,6 +60,11 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "devDependencies": { + "@types/prop-types": "^15.7.11", + "date-fns": "^2.30.0", + "rimraf": "^5.0.5" + }, "setupFiles": [ "/src/setupTests.js" ], diff --git a/packages/x-data-grid-premium/tsconfig.build.json b/packages/x-data-grid-premium/tsconfig.build.json index ebaf4a171fa6..3f1870534100 100644 --- a/packages/x-data-grid-premium/tsconfig.build.json +++ b/packages/x-data-grid-premium/tsconfig.build.json @@ -8,13 +8,14 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation"] }, "references": [ { "path": "../x-data-grid/tsconfig.build.json" }, { "path": "../x-data-grid-pro/tsconfig.build.json" }, { "path": "../x-license/tsconfig.build.json" } ], - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*"] } diff --git a/packages/x-data-grid-premium/tsconfig.json b/packages/x-data-grid-premium/tsconfig.json index 6a8e1ed5b14f..1c24452d71f8 100644 --- a/packages/x-data-grid-premium/tsconfig.json +++ b/packages/x-data-grid-premium/tsconfig.json @@ -1,12 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"] + "types": ["@mui/material/themeCssVarsAugmentation"] }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*"] } diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 39abee3ee6bd..e437acfbad04 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -11,7 +11,8 @@ "homepage": "https://mui.com/x/react-data-grid/", "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -28,7 +29,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -45,8 +46,8 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-data-grid": "7.3.0", - "@mui/x-license": "7.2.0", + "@mui/x-data-grid": "workspace:*", + "@mui/x-license": "workspace:*", "@types/format-util": "^1.0.4", "clsx": "^2.1.0", "prop-types": "^15.8.1", @@ -57,6 +58,10 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "devDependencies": { + "@types/prop-types": "^15.7.11", + "rimraf": "^5.0.5" + }, "setupFiles": [ "/src/setupTests.js" ], diff --git a/packages/x-data-grid-pro/tsconfig.build.json b/packages/x-data-grid-pro/tsconfig.build.json index d940cbf8d263..3649d7b11677 100644 --- a/packages/x-data-grid-pro/tsconfig.build.json +++ b/packages/x-data-grid-pro/tsconfig.build.json @@ -8,12 +8,13 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation"] }, "references": [ { "path": "../x-data-grid/tsconfig.build.json" }, { "path": "../x-license/tsconfig.build.json" } ], - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*"] } diff --git a/packages/x-data-grid-pro/tsconfig.json b/packages/x-data-grid-pro/tsconfig.json index 6a8e1ed5b14f..1c24452d71f8 100644 --- a/packages/x-data-grid-pro/tsconfig.json +++ b/packages/x-data-grid-pro/tsconfig.json @@ -1,12 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"] + "types": ["@mui/material/themeCssVarsAugmentation"] }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*"] } diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 79a08ae51fd3..89cc90eae04b 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -15,7 +15,8 @@ "url": "https://opencollective.com/mui-org" }, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -32,7 +33,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -58,6 +59,12 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "devDependencies": { + "@mui/joy": "^5.0.0-beta.24", + "@mui/types": "^7.2.14", + "@types/prop-types": "^15.7.11", + "rimraf": "^5.0.5" + }, "setupFiles": [ "/src/setupTests.js" ], diff --git a/packages/x-data-grid/tsconfig.build.json b/packages/x-data-grid/tsconfig.build.json index 90fdeac9e16a..a287257ec3c0 100644 --- a/packages/x-data-grid/tsconfig.build.json +++ b/packages/x-data-grid/tsconfig.build.json @@ -8,12 +8,9 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation", "@emotion/styled", "@mui/types"] }, - "include": [ - "src/**/*.ts*", - "src/lib/**/*.js", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ], // TODO: Remove JS files + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*"] } diff --git a/packages/x-data-grid/tsconfig.json b/packages/x-data-grid/tsconfig.json index 6a8e1ed5b14f..1c24452d71f8 100644 --- a/packages/x-data-grid/tsconfig.json +++ b/packages/x-data-grid/tsconfig.json @@ -1,12 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"] + "types": ["@mui/material/themeCssVarsAugmentation"] }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*"] } diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index c72f516b3bf4..c2509ec23366 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -11,7 +11,8 @@ "homepage": "https://mui.com/x/react-date-pickers/", "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -27,7 +28,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -45,8 +46,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-date-pickers": "7.2.0", - "@mui/x-license": "7.2.0", + "@mui/x-date-pickers": "workspace:*", + "@mui/x-license": "workspace:*", "clsx": "^2.1.0", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" @@ -96,10 +97,12 @@ }, "devDependencies": { "@types/luxon": "^3.4.2", + "@types/prop-types": "^15.7.11", "date-fns": "^2.30.0", "dayjs": "^1.11.10", "luxon": "^3.4.4", - "moment": "^2.30.1" + "moment": "^2.30.1", + "rimraf": "^5.0.5" }, "setupFiles": [ "/src/setupTests.js" diff --git a/packages/x-date-pickers-pro/tsconfig.build.json b/packages/x-date-pickers-pro/tsconfig.build.json index ae3fe2fae517..08e5c49be00c 100644 --- a/packages/x-date-pickers-pro/tsconfig.build.json +++ b/packages/x-date-pickers-pro/tsconfig.build.json @@ -8,18 +8,13 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation"] }, "references": [ { "path": "../x-date-pickers/tsconfig.build.json" }, { "path": "../x-license/tsconfig.build.json" } ], - "include": [ - "./src/**/*.ts*", - "../../node_modules/@mui/material/themeCssVarsAugmentation", - "../../node_modules/dayjs/plugin/utc.d.ts", - "../../node_modules/dayjs/plugin/timezone.d.ts", - "../../node_modules/moment-timezone/index.d.ts" - ], + "include": ["./src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*", "src/tests/**/*"] } diff --git a/packages/x-date-pickers-pro/tsconfig.json b/packages/x-date-pickers-pro/tsconfig.json index 9db9967fdf72..c3de05a12d2b 100644 --- a/packages/x-date-pickers-pro/tsconfig.json +++ b/packages/x-date-pickers-pro/tsconfig.json @@ -1,16 +1,12 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"], + "types": [ + "@mui/material/themeCssVarsAugmentation", + "dayjs/plugin/utc.d.ts", + "dayjs/plugin/timezone.d.ts" + ], "noImplicitAny": false }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation", - "../../node_modules/dayjs/plugin/utc.d.ts", - "../../node_modules/dayjs/plugin/timezone.d.ts", - "../../node_modules/moment-timezone/index.d.ts" - ] + "include": ["src/**/*", "../../test/utils/addChaiAssertions.ts"] } diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index a2f8f85412e0..90bed6235255 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -15,7 +15,8 @@ }, "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -30,7 +31,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -98,14 +99,18 @@ }, "devDependencies": { "@types/luxon": "^3.4.2", + "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", + "@types/prop-types": "^15.7.11", "date-fns": "^2.30.0", "date-fns-jalali": "^2.13.0-0", "dayjs": "^1.11.10", "luxon": "^3.4.4", "moment": "^2.30.1", "moment-hijri": "^2.1.2", - "moment-jalaali": "^0.10.0" + "moment-jalaali": "^0.10.0", + "moment-timezone": "^0.5.44", + "rimraf": "^5.0.5" }, "setupFiles": [ "/src/setupTests.js" diff --git a/packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.tsx b/packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.tsx deleted file mode 100644 index 0f4af5e432ad..000000000000 --- a/packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { styled } from '@mui/material/styles'; - -export const DateTimeViewWrapper = styled('div')({ - display: 'flex', - margin: '0 auto', -}); diff --git a/packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/index.ts b/packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/index.ts deleted file mode 100644 index 12cc5b6252d4..000000000000 --- a/packages/x-date-pickers/src/internals/components/DateTimeViewWrapper/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { DateTimeViewWrapper } from './DateTimeViewWrapper'; diff --git a/packages/x-date-pickers/tsconfig.build.json b/packages/x-date-pickers/tsconfig.build.json index cf24cdd1df40..e46d96ed4652 100644 --- a/packages/x-date-pickers/tsconfig.build.json +++ b/packages/x-date-pickers/tsconfig.build.json @@ -8,14 +8,16 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": [ + "node", + "@mui/material/themeCssVarsAugmentation", + "dayjs/plugin/utc.d.ts", + "dayjs/plugin/timezone.d.ts", + "moment-timezone", + "@emotion/styled" + ] }, - "include": [ - "src/**/*.ts*", - "../../node_modules/@mui/material/themeCssVarsAugmentation", - "../../node_modules/dayjs/plugin/utc.d.ts", - "../../node_modules/dayjs/plugin/timezone.d.ts", - "../../node_modules/moment-timezone/index.d.ts" - ], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*", "src/tests/**/*"] } diff --git a/packages/x-date-pickers/tsconfig.json b/packages/x-date-pickers/tsconfig.json index 9db9967fdf72..f6f102e58683 100644 --- a/packages/x-date-pickers/tsconfig.json +++ b/packages/x-date-pickers/tsconfig.json @@ -1,16 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"], + "types": ["@mui/material/themeCssVarsAugmentation"], "noImplicitAny": false }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation", - "../../node_modules/dayjs/plugin/utc.d.ts", - "../../node_modules/dayjs/plugin/timezone.d.ts", - "../../node_modules/moment-timezone/index.d.ts" - ] + "include": ["src/**/*", "../../test/utils/addChaiAssertions.ts"] } diff --git a/packages/x-license/package.json b/packages/x-license/package.json index c25f323f11ac..b8a6aedf9be0 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -15,11 +15,12 @@ "./node/utils/licenseInfo.js" ], "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -39,6 +40,9 @@ "peerDependencies": { "react": "^17.0.0 || ^18.0.0" }, + "devDependencies": { + "rimraf": "^5.0.5" + }, "setupFiles": [ "/src/setupTests.js" ], diff --git a/packages/x-license/tsconfig.build.json b/packages/x-license/tsconfig.build.json index f380f082ed0c..bc9de8db7f41 100644 --- a/packages/x-license/tsconfig.build.json +++ b/packages/x-license/tsconfig.build.json @@ -10,6 +10,6 @@ "outDir": "build", "rootDir": "./src" }, - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*"] } diff --git a/packages/x-license/tsconfig.json b/packages/x-license/tsconfig.json index 6a8e1ed5b14f..52d43eaaa9b9 100644 --- a/packages/x-license/tsconfig.json +++ b/packages/x-license/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "../../tsconfig.json", - "compilerOptions": { - "types": ["react", "mocha", "node"] - }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*"] } diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 741bb2d3726c..9af54e3f6709 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -29,7 +29,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -47,8 +47,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "@mui/x-license": "7.2.0", - "@mui/x-tree-view": "7.3.0", + "@mui/x-license": "workspace:*", + "@mui/x-tree-view": "workspace:*", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "prop-types": "^15.8.1", @@ -61,6 +61,9 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "devDependencies": { + "rimraf": "^5.0.5" + }, "setupFiles": [ "/src/setupTests.js" ], diff --git a/packages/x-tree-view-pro/tsconfig.build.json b/packages/x-tree-view-pro/tsconfig.build.json index 58dc0f54afd0..d6b3cce60d04 100644 --- a/packages/x-tree-view-pro/tsconfig.build.json +++ b/packages/x-tree-view-pro/tsconfig.build.json @@ -8,12 +8,13 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation"] }, "references": [ { "path": "../x-tree-view/tsconfig.build.json" }, { "path": "../x-license/tsconfig.build.json" } ], - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*", "src/tests/**/*"] } diff --git a/packages/x-tree-view-pro/tsconfig.json b/packages/x-tree-view-pro/tsconfig.json index b615deabf797..0c69aefe6800 100644 --- a/packages/x-tree-view-pro/tsconfig.json +++ b/packages/x-tree-view-pro/tsconfig.json @@ -1,13 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"], + "types": ["@mui/material/themeCssVarsAugmentation"], "noImplicitAny": false }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*"] } diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 32b8855de0b9..d9a0b5863291 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -15,7 +15,8 @@ }, "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", @@ -28,7 +29,7 @@ ], "scripts": { "typescript": "tsc -p tsconfig.json", - "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files ", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", @@ -58,6 +59,10 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "devDependencies": { + "@types/prop-types": "^15.7.11", + "rimraf": "^5.0.5" + }, "setupFiles": [ "/src/setupTests.js" ], diff --git a/packages/x-tree-view/tsconfig.build.json b/packages/x-tree-view/tsconfig.build.json index d2f286cce908..181fb19517ad 100644 --- a/packages/x-tree-view/tsconfig.build.json +++ b/packages/x-tree-view/tsconfig.build.json @@ -8,8 +8,9 @@ "noEmit": false, "emitDeclarationOnly": true, "outDir": "build", - "rootDir": "./src" + "rootDir": "./src", + "types": ["node", "@mui/material/themeCssVarsAugmentation", "@emotion/styled"] }, - "include": ["src/**/*.ts*", "../../node_modules/@mui/material/themeCssVarsAugmentation"], + "include": ["src/**/*.ts*"], "exclude": ["src/**/*.spec.ts*", "src/**/*.test.ts*", "src/tests/**/*"] } diff --git a/packages/x-tree-view/tsconfig.json b/packages/x-tree-view/tsconfig.json index b615deabf797..0c69aefe6800 100644 --- a/packages/x-tree-view/tsconfig.json +++ b/packages/x-tree-view/tsconfig.json @@ -1,13 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["react", "mocha", "node"], + "types": ["@mui/material/themeCssVarsAugmentation"], "noImplicitAny": false }, - "include": [ - "src/**/*", - "../../test/utils/addChaiAssertions.ts", - "../../node_modules/@mui/monorepo/packages/test-utils/src/initMatchers.ts", - "../../node_modules/@mui/material/themeCssVarsAugmentation" - ] + "include": ["src/**/*"] } diff --git a/patches/@mui__monorepo@6.0.0-alpha.0.patch b/patches/@mui__monorepo@6.0.0-alpha.0.patch new file mode 100644 index 000000000000..1d4fdf8800af --- /dev/null +++ b/patches/@mui__monorepo@6.0.0-alpha.0.patch @@ -0,0 +1,13 @@ +diff --git a/packages/api-docs-builder/utils/parseTest.ts b/packages/api-docs-builder/utils/parseTest.ts +index 14d2c70c9939cb2e71e7664c06e8f51700711772..e21e06960ffbaf05aff6e5d4d7faa123cb6105bc 100644 +--- a/packages/api-docs-builder/utils/parseTest.ts ++++ b/packages/api-docs-builder/utils/parseTest.ts +@@ -3,7 +3,7 @@ import * as babel from '@babel/core'; + import { readFile } from 'fs-extra'; + import glob from 'fast-glob'; + +-const workspaceRoot = path.join(__dirname, '../../../'); ++const workspaceRoot = process.cwd(); + const babelConfigPath = path.join(workspaceRoot, 'babel.config.js'); + + function getTestFilesNames(filepath: string) { diff --git a/patches/babel-plugin-replace-imports+1.0.2.patch b/patches/babel-plugin-replace-imports@1.0.2.patch similarity index 94% rename from patches/babel-plugin-replace-imports+1.0.2.patch rename to patches/babel-plugin-replace-imports@1.0.2.patch index 1c47ea8f960d..0394347226df 100644 --- a/patches/babel-plugin-replace-imports+1.0.2.patch +++ b/patches/babel-plugin-replace-imports@1.0.2.patch @@ -1,9 +1,8 @@ -diff --git a/node_modules/babel-plugin-replace-imports/lib/index.js b/node_modules/babel-plugin-replace-imports/lib/index.js -index 8da63ad..9712bcc 100644 ---- a/node_modules/babel-plugin-replace-imports/lib/index.js -+++ b/node_modules/babel-plugin-replace-imports/lib/index.js +diff --git a/lib/index.js b/lib/index.js +index 8da63adc141b73774c50363b31ee00001ccd9156..9712bcce64bfce59043f9a16c1f14d464bf82e8d 100644 +--- a/lib/index.js ++++ b/lib/index.js @@ -1 +1 @@ -'use strict';Object.defineProperty(exports,'__esModule',{value:!0}),exports.optionLabels=void 0,exports.getErrorMessage=getErrorMessage;var _lodash=require('lodash.isempty'),_lodash2=_interopRequireDefault(_lodash),_lodash3=require('lodash.isstring'),_lodash4=_interopRequireDefault(_lodash3),_lodash5=require('lodash.isregexp'),_lodash6=_interopRequireDefault(_lodash5),_lodash7=require('lodash.isobject'),_lodash8=_interopRequireDefault(_lodash7),_lodash9=require('lodash.isfunction'),_lodash10=_interopRequireDefault(_lodash9);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var PLUGIN='babel-plugin-replace-imports',ERRORS={0:'options are required.',1:'option is required.',2:'option must be a RegExp.',3:'option must be a String or a Function',4:'options item must be an Object.'},optionLabels=exports.optionLabels={test:'test',replacer:'replacer'};function getErrorMessage(code,text){var msg=((text?'\xAB'+text+'\xBB':'')+' '+ERRORS[code]).trim();return'\n'+PLUGIN+': '+msg}function init(_ref){function throwError(code,text){var msg=getErrorMessage(code,text);throw new Error(msg)}function getOption(option){return(!(0,_lodash8.default)(option)||(0,_lodash6.default)(option)||Array.isArray(option))&&throwError(4),option}function getTestOption(option){return!(0,_lodash6.default)(option)&&(0,_lodash2.default)(option)&&throwError(1,optionLabels.test),(0,_lodash6.default)(option)||throwError(2,optionLabels.test),option}function getReplacerListOption(option){return(0,_lodash10.default)(option)?[option]:((0,_lodash2.default)(option)&&throwError(1,optionLabels.replacer),Array.isArray(option)?option:[option])}function getReplacerOption(option){return(0,_lodash4.default)(option)||(0,_lodash10.default)(option)||throwError(3,optionLabels.replacer),option}var types=_ref.types;return{visitor:{ImportDeclaration:function ImportDeclaration(path,_ref2){var opts=_ref2.opts;if(!path.node.__processed){(0,_lodash2.default)(opts)&&throwError(0);var source=path.node.source.value,transforms=[],options=opts;Array.isArray(options)||(options=[opts]);for(var _ret,_loop=function(i){var opt=getOption(options[i]),regex=getTestOption(opt[optionLabels.test]);if(regex.test(source)){var replacerList=getReplacerListOption(opt[optionLabels.replacer]);return replacerList.forEach(function(replacer){var repl=getReplacerOption(replacer),importDeclaration=types.importDeclaration(path.node.specifiers,types.stringLiteral(source.replace(regex,repl)));importDeclaration.__processed=!0,transforms.push(importDeclaration)}),'break'}},i=0;i { // Type Aliases diff --git a/patches/karma-mocha+2.0.1.patch b/patches/karma-mocha@2.0.1.patch similarity index 72% rename from patches/karma-mocha+2.0.1.patch rename to patches/karma-mocha@2.0.1.patch index 2a8f5f8317bb..9e7586ce1331 100644 --- a/patches/karma-mocha+2.0.1.patch +++ b/patches/karma-mocha@2.0.1.patch @@ -1,7 +1,7 @@ -diff --git a/node_modules/karma-mocha/lib/adapter.js b/node_modules/karma-mocha/lib/adapter.js -index 0c8199e..0482a21 100644 ---- a/node_modules/karma-mocha/lib/adapter.js -+++ b/node_modules/karma-mocha/lib/adapter.js +diff --git a/lib/adapter.js b/lib/adapter.js +index 0c8199e4420656b2ad2b764e043dc6812aa520c7..0482a2124fa12a52ffd3a8a2faa3bcd38eeb57f4 100644 +--- a/lib/adapter.js ++++ b/lib/adapter.js @@ -55,10 +55,11 @@ var processAssertionError = function (error_) { showDiff: error_.showDiff } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000000..ef24adee6c7d --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,18101 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + react-is: ^18.2.0 + '@types/node': ^18.19.23 + +patchedDependencies: + '@mui/monorepo@6.0.0-alpha.0': + hash: m6s35rhse6xiedzuwdr24itknq + path: patches/@mui__monorepo@6.0.0-alpha.0.patch + babel-plugin-replace-imports@1.0.2: + hash: h4cab4lqksemkw6ln3l3h4s77e + path: patches/babel-plugin-replace-imports@1.0.2.patch + date-fns-jalali@2.13.0-0: + hash: knk56uiq6xxn77bv6lgrgre7si + path: patches/date-fns-jalali@2.13.0-0.patch + karma-mocha@2.0.1: + hash: r6idlcdpax26bbzwxyjicxb5ra + path: patches/karma-mocha@2.0.1.patch + +importers: + + .: + devDependencies: + '@argos-ci/core': + specifier: ^1.5.4 + version: 1.5.5 + '@babel/cli': + specifier: ^7.23.9 + version: 7.23.9(@babel/core@7.24.4) + '@babel/core': + specifier: ^7.24.0 + version: 7.24.4 + '@babel/node': + specifier: ^7.23.9 + version: 7.23.9(@babel/core@7.24.4) + '@babel/plugin-transform-class-properties': + specifier: ^7.23.3 + version: 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-rest-spread': + specifier: ^7.23.4 + version: 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-private-methods': + specifier: ^7.23.3 + version: 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-private-property-in-object': + specifier: ^7.23.4 + version: 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-react-constant-elements': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-runtime': + specifier: ^7.24.0 + version: 7.24.3(@babel/core@7.24.4) + '@babel/preset-env': + specifier: ^7.24.0 + version: 7.24.4(@babel/core@7.24.4) + '@babel/preset-react': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.24.4) + '@babel/preset-typescript': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.24.4) + '@babel/register': + specifier: ^7.23.7 + version: 7.23.7(@babel/core@7.24.4) + '@babel/traverse': + specifier: ^7.24.0 + version: 7.24.1 + '@babel/types': + specifier: ^7.24.0 + version: 7.24.0 + '@emotion/cache': + specifier: ^11.11.0 + version: 11.11.0 + '@emotion/react': + specifier: ^11.11.4 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': + specifier: ^11.11.0 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mnajdova/enzyme-adapter-react-18': + specifier: ^0.2.0 + version: 0.2.0(enzyme@3.11.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/icons-material': + specifier: ^5.15.14 + version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0) + '@mui/internal-markdown': + specifier: ^1.0.0 + version: 1.0.1 + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/monorepo': + specifier: github:mui/material-ui#e1d94d5ce097815bcd738352e69bb43ce03bd266 + version: github.com/mui/material-ui/e1d94d5ce097815bcd738352e69bb43ce03bd266(patch_hash=m6s35rhse6xiedzuwdr24itknq) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@next/eslint-plugin-next': + specifier: 14.0.4 + version: 14.0.4 + '@octokit/plugin-retry': + specifier: ^6.0.1 + version: 6.0.1(@octokit/core@5.1.0) + '@octokit/rest': + specifier: ^20.0.2 + version: 20.0.2 + '@playwright/test': + specifier: 1.41.2 + version: 1.41.2 + '@testing-library/react': + specifier: ^14.2.1 + version: 14.2.2(react-dom@18.2.0)(react@18.2.0) + '@types/babel__core': + specifier: ^7.20.5 + version: 7.20.5 + '@types/chai': + specifier: ^4.3.12 + version: 4.3.14 + '@types/chai-dom': + specifier: ^1.11.3 + version: 1.11.3 + '@types/enzyme': + specifier: 3.10.12 + version: 3.10.12 + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 + '@types/lodash': + specifier: ^4.17.0 + version: 4.17.0 + '@types/mocha': + specifier: ^10.0.6 + version: 10.0.6 + '@types/node': + specifier: ^18.19.23 + version: 18.19.29 + '@types/prettier': + specifier: ^2.7.3 + version: 2.7.3 + '@types/react': + specifier: ^18.2.60 + version: 18.2.60 + '@types/react-dom': + specifier: ^18.2.19 + version: 18.2.19 + '@types/react-test-renderer': + specifier: ^18.0.7 + version: 18.0.7 + '@types/requestidlecallback': + specifier: ^0.3.7 + version: 0.3.7 + '@types/sinon': + specifier: ^10.0.20 + version: 10.0.20 + '@types/yargs': + specifier: ^17.0.32 + version: 17.0.32 + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) + autoprefixer: + specifier: ^10.4.18 + version: 10.4.19(postcss@8.4.38) + axe-core: + specifier: 4.8.4 + version: 4.8.4 + babel-loader: + specifier: ^9.1.3 + version: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0) + babel-plugin-istanbul: + specifier: ^6.1.1 + version: 6.1.1 + babel-plugin-module-resolver: + specifier: ^5.0.0 + version: 5.0.0 + babel-plugin-optimize-clsx: + specifier: ^2.6.2 + version: 2.6.2 + babel-plugin-react-remove-properties: + specifier: ^0.3.0 + version: 0.3.0 + babel-plugin-replace-imports: + specifier: ^1.0.2 + version: 1.0.2(patch_hash=h4cab4lqksemkw6ln3l3h4s77e) + babel-plugin-search-and-replace: + specifier: ^1.1.1 + version: 1.1.1 + babel-plugin-transform-react-remove-prop-types: + specifier: ^0.4.24 + version: 0.4.24 + chai: + specifier: ^4.4.1 + version: 4.4.1 + chai-dom: + specifier: ^1.12.0 + version: 1.12.0(chai@4.4.1) + compression-webpack-plugin: + specifier: ^11.1.0 + version: 11.1.0(webpack@5.91.0) + concurrently: + specifier: ^8.2.2 + version: 8.2.2 + cpy-cli: + specifier: ^5.0.0 + version: 5.0.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + danger: + specifier: ^11.3.1 + version: 11.3.1 + date-fns-v3: + specifier: npm:date-fns@3.6.0 + version: /date-fns@3.6.0 + enzyme: + specifier: ^3.11.0 + version: 3.11.0 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-airbnb: + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.57.0) + eslint-config-airbnb-typescript: + specifier: ^17.1.0 + version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-import-resolver-webpack: + specifier: ^0.13.8 + version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.91.0) + eslint-plugin-filenames: + specifier: ^1.3.2 + version: 1.3.2(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-jsdoc: + specifier: ^48.2.0 + version: 48.2.3(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-material-ui: + specifier: workspace:^ + version: link:packages/eslint-plugin-material-ui + eslint-plugin-mocha: + specifier: ^10.3.0 + version: 10.4.1(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + eslint-plugin-react: + specifier: ^7.33.2 + version: 7.33.2(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.57.0) + fast-glob: + specifier: ^3.3.2 + version: 3.3.2 + format-util: + specifier: ^1.0.5 + version: 1.0.5 + fs-extra: + specifier: ^11.2.0 + version: 11.2.0 + glob-gitignore: + specifier: ^1.0.14 + version: 1.0.14 + globby: + specifier: ^14.0.0 + version: 14.0.0 + html-webpack-plugin: + specifier: ^5.6.0 + version: 5.6.0(webpack@5.91.0) + jsdom: + specifier: 23.1.0 + version: 23.1.0 + jss: + specifier: ^10.10.0 + version: 10.10.0 + jss-plugin-template: + specifier: ^10.10.0 + version: 10.10.0 + jss-rtl: + specifier: ^0.3.0 + version: 0.3.0(jss@10.10.0) + karma: + specifier: ^6.4.3 + version: 6.4.3 + karma-chrome-launcher: + specifier: ^3.2.0 + version: 3.2.0 + karma-mocha: + specifier: ^2.0.1 + version: 2.0.1(patch_hash=r6idlcdpax26bbzwxyjicxb5ra) + karma-parallel: + specifier: ^0.3.1 + version: 0.3.1(karma@6.4.3) + karma-sourcemap-loader: + specifier: ^0.4.0 + version: 0.4.0 + karma-webpack: + specifier: ^5.0.1 + version: 5.0.1(webpack@5.91.0) + lerna: + specifier: ^8.1.2 + version: 8.1.2 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + markdownlint-cli2: + specifier: ^0.12.1 + version: 0.12.1 + mocha: + specifier: ^10.3.0 + version: 10.4.0 + moment: + specifier: ^2.30.1 + version: 2.30.1 + moment-timezone: + specifier: ^0.5.44 + version: 0.5.45 + nyc: + specifier: ^15.1.0 + version: 15.1.0 + prettier: + specifier: ^3.2.5 + version: 3.2.5 + pretty-quick: + specifier: ^4.0.0 + version: 4.0.0(prettier@3.2.5) + process: + specifier: ^0.11.10 + version: 0.11.10 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + remark: + specifier: ^13.0.0 + version: 13.0.0 + serve: + specifier: ^14.2.1 + version: 14.2.1 + sinon: + specifier: ^16.1.3 + version: 16.1.3 + stream-browserify: + specifier: ^3.0.0 + version: 3.0.0 + string-replace-loader: + specifier: ^3.1.0 + version: 3.1.0(webpack@5.91.0) + terser-webpack-plugin: + specifier: ^5.3.10 + version: 5.3.10(webpack@5.91.0) + tsx: + specifier: ^4.7.0 + version: 4.7.2 + typescript: + specifier: ^5.4.5 + version: 5.4.5 + unist-util-visit: + specifier: ^2.0.3 + version: 2.0.3 + util: + specifier: ^0.12.5 + version: 0.12.5 + webpack: + specifier: ^5.90.3 + version: 5.91.0(webpack-cli@5.1.4) + webpack-bundle-analyzer: + specifier: ^4.10.1 + version: 4.10.1 + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) + yargs: + specifier: ^17.7.2 + version: 17.7.2 + + docs: + dependencies: + '@babel/core': + specifier: ^7.24.0 + version: 7.24.4 + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@babel/runtime-corejs2': + specifier: ^7.24.0 + version: 7.24.4 + '@docsearch/react': + specifier: ^3.5.2 + version: 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@emotion/cache': + specifier: ^11.11.0 + version: 11.11.0 + '@emotion/react': + specifier: ^11.11.4 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/server': + specifier: ^11.11.0 + version: 11.11.0 + '@emotion/styled': + specifier: ^11.11.0 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/icons-material': + specifier: ^5.15.14 + version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0) + '@mui/joy': + specifier: ^5.0.0-beta.32 + version: 5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/lab': + specifier: ^5.0.0-alpha.169 + version: 5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.15)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/styles': + specifier: ^5.15.14 + version: 5.15.15(@types/react@18.2.60)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/x-charts': + specifier: workspace:* + version: link:../packages/x-charts/build + '@mui/x-data-grid': + specifier: workspace:* + version: link:../packages/x-data-grid/build + '@mui/x-data-grid-generator': + specifier: workspace:* + version: link:../packages/x-data-grid-generator/build + '@mui/x-data-grid-premium': + specifier: workspace:* + version: link:../packages/x-data-grid-premium/build + '@mui/x-data-grid-pro': + specifier: workspace:* + version: link:../packages/x-data-grid-pro/build + '@mui/x-date-pickers': + specifier: workspace:* + version: link:../packages/x-date-pickers/build + '@mui/x-date-pickers-pro': + specifier: workspace:* + version: link:../packages/x-date-pickers-pro/build + '@mui/x-tree-view': + specifier: workspace:* + version: link:../packages/x-tree-view/build + '@react-spring/web': + specifier: ^9.7.3 + version: 9.7.3(react-dom@18.2.0)(react@18.2.0) + ast-types: + specifier: ^0.14.2 + version: 0.14.2 + autoprefixer: + specifier: ^10.4.18 + version: 10.4.19(postcss@8.4.38) + babel-plugin-module-resolver: + specifier: ^5.0.0 + version: 5.0.0 + babel-plugin-optimize-clsx: + specifier: ^2.6.2 + version: 2.6.2 + babel-plugin-preval: + specifier: ^5.1.0 + version: 5.1.0 + babel-plugin-react-remove-properties: + specifier: ^0.3.0 + version: 0.3.0 + babel-plugin-transform-react-remove-prop-types: + specifier: ^0.4.24 + version: 0.4.24 + chance: + specifier: ^1.1.11 + version: 1.1.11 + clean-css: + specifier: ^5.3.3 + version: 5.3.3 + clipboard-copy: + specifier: ^4.0.1 + version: 4.0.1 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + core-js: + specifier: ^2.6.12 + version: 2.6.12 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + date-fns-jalali: + specifier: ^2.21.3-1 + version: 2.21.3-1 + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + doctrine: + specifier: ^3.0.0 + version: 3.0.0 + exceljs: + specifier: ^4.4.0 + version: 4.4.0 + fg-loadcss: + specifier: ^3.1.0 + version: 3.1.0 + jscodeshift: + specifier: 0.13.1 + version: 0.13.1(@babel/preset-env@7.24.4) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + luxon: + specifier: ^3.4.4 + version: 3.4.4 + lz-string: + specifier: ^1.5.0 + version: 1.5.0 + markdown-to-jsx: + specifier: ^7.4.1 + version: 7.4.1(react@18.2.0) + marked: + specifier: ^5.1.2 + version: 5.1.2 + moment: + specifier: ^2.30.1 + version: 2.30.1 + moment-hijri: + specifier: ^2.1.2 + version: 2.1.2 + moment-timezone: + specifier: ^0.5.45 + version: 0.5.45 + next: + specifier: ^14.1.1 + version: 14.1.4(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0) + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + postcss: + specifier: ^8.4.35 + version: 8.4.38 + prismjs: + specifier: ^1.29.0 + version: 1.29.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + raw-loader: + specifier: ^1.0.0 + version: 1.0.0(webpack@4.47.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-docgen: + specifier: ^5.4.3 + version: 5.4.3 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-hook-form: + specifier: ^7.51.0 + version: 7.51.2(react@18.2.0) + react-is: + specifier: ^18.2.0 + version: 18.2.0 + react-router: + specifier: ^6.22.3 + version: 6.22.3(react@18.2.0) + react-router-dom: + specifier: ^6.22.3 + version: 6.22.3(react-dom@18.2.0)(react@18.2.0) + react-runner: + specifier: ^1.0.3 + version: 1.0.3(react-dom@18.2.0)(react@18.2.0) + react-simple-code-editor: + specifier: ^0.13.1 + version: 0.13.1(react-dom@18.2.0)(react@18.2.0) + recast: + specifier: ^0.23.5 + version: 0.23.6 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + rxjs: + specifier: ^7.8.1 + version: 7.8.1 + styled-components: + specifier: ^6.1.8 + version: 6.1.8(react-dom@18.2.0)(react@18.2.0) + stylis: + specifier: ^4.3.1 + version: 4.3.1 + stylis-plugin-rtl: + specifier: ^2.1.1 + version: 2.1.1(stylis@4.3.1) + webpack-bundle-analyzer: + specifier: ^4.10.1 + version: 4.10.1 + devDependencies: + '@babel/plugin-transform-react-constant-elements': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.24.4) + '@babel/preset-typescript': + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.24.4) + '@mui/internal-docs-utils': + specifier: ^1.0.4 + version: 1.0.4 + '@mui/internal-scripts': + specifier: ^1.0.1 + version: 1.0.3 + '@types/d3-scale': + specifier: ^4.0.8 + version: 4.0.8 + '@types/doctrine': + specifier: ^0.0.9 + version: 0.0.9 + '@types/lodash': + specifier: ^4.14.202 + version: 4.17.0 + '@types/luxon': + specifier: ^3.4.2 + version: 3.4.2 + '@types/moment-hijri': + specifier: ^2.1.4 + version: 2.1.4 + '@types/react-dom': + specifier: 18.2.19 + version: 18.2.19 + '@types/react-router-dom': + specifier: ^5.3.3 + version: 5.3.3 + '@types/stylis': + specifier: ^4.2.5 + version: 4.2.5 + '@types/webpack-bundle-analyzer': + specifier: ^4.7.0 + version: 4.7.0(webpack-cli@5.1.4) + gm: + specifier: ^1.25.0 + version: 1.25.0 + serve: + specifier: ^14.2.1 + version: 14.2.1 + + packages/eslint-plugin-material-ui: + devDependencies: + '@types/eslint': + specifier: ^8.56.5 + version: 8.56.7 + '@typescript-eslint/experimental-utils': + specifier: ^5.62.0 + version: 5.62.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) + + packages/x-charts: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@emotion/react': + specifier: ^11.9.0 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@react-spring/rafz': + specifier: ^9.7.3 + version: 9.7.3 + '@react-spring/web': + specifier: ^9.7.3 + version: 9.7.3(react-dom@18.2.0)(react@18.2.0) + clsx: + specifier: ^2.1.0 + version: 2.1.0 + d3-color: + specifier: ^3.1.0 + version: 3.1.0 + d3-delaunay: + specifier: ^6.0.4 + version: 6.0.4 + d3-interpolate: + specifier: ^3.0.1 + version: 3.0.1 + d3-scale: + specifier: ^4.0.2 + version: 4.0.2 + d3-shape: + specifier: ^3.2.0 + version: 3.2.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@react-spring/core': + specifier: ^9.7.3 + version: 9.7.3(react@18.2.0) + '@react-spring/shared': + specifier: ^9.7.3 + version: 9.7.3(react@18.2.0) + '@types/d3-color': + specifier: ^3.1.3 + version: 3.1.3 + '@types/d3-delaunay': + specifier: ^6.0.4 + version: 6.0.4 + '@types/d3-interpolate': + specifier: ^3.0.4 + version: 3.0.4 + '@types/d3-scale': + specifier: ^4.0.8 + version: 4.0.8 + '@types/d3-shape': + specifier: ^3.1.6 + version: 3.1.6 + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + csstype: + specifier: ^3.1.3 + version: 3.1.3 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-codemod: + dependencies: + '@babel/core': + specifier: ^7.24.0 + version: 7.24.4 + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@babel/traverse': + specifier: ^7.24.0 + version: 7.24.1 + jscodeshift: + specifier: 0.13.1 + version: 0.13.1(@babel/preset-env@7.24.4) + jscodeshift-add-imports: + specifier: ^1.0.10 + version: 1.0.10(jscodeshift@0.13.1) + yargs: + specifier: ^17.7.2 + version: 17.7.2 + devDependencies: + '@types/jscodeshift': + specifier: ^0.11.5 + version: 0.11.11 + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + moment-timezone: + specifier: ^0.5.44 + version: 0.5.45 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-data-grid: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + clsx: + specifier: ^2.1.0 + version: 2.1.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + reselect: + specifier: ^4.1.8 + version: 4.1.8 + devDependencies: + '@mui/joy': + specifier: ^5.0.0-beta.24 + version: 5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/types': + specifier: ^7.2.14 + version: 7.2.14(@types/react@18.2.60) + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-data-grid-generator: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/icons-material': + specifier: ^5.4.1 + version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-data-grid-premium': + specifier: workspace:* + version: link:../x-data-grid-premium/build + chance: + specifier: ^1.1.11 + version: 1.1.11 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + lru-cache: + specifier: ^7.18.3 + version: 7.18.3 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + devDependencies: + '@types/chance': + specifier: ^1.1.6 + version: 1.1.6 + '@types/lru-cache': + specifier: ^7.10.9 + version: 7.10.10 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-data-grid-premium: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/x-data-grid': + specifier: workspace:* + version: link:../x-data-grid/build + '@mui/x-data-grid-pro': + specifier: workspace:* + version: link:../x-data-grid-pro/build + '@mui/x-license': + specifier: workspace:* + version: link:../x-license/build + '@types/format-util': + specifier: ^1.0.4 + version: 1.0.4 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + exceljs: + specifier: ^4.4.0 + version: 4.4.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + reselect: + specifier: ^4.1.8 + version: 4.1.8 + devDependencies: + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-data-grid-pro: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/x-data-grid': + specifier: workspace:* + version: link:../x-data-grid/build + '@mui/x-license': + specifier: workspace:* + version: link:../x-license/build + '@types/format-util': + specifier: ^1.0.4 + version: 1.0.4 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + reselect: + specifier: ^4.1.8 + version: 4.1.8 + devDependencies: + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-date-pickers: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@emotion/react': + specifier: ^11.9.0 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react-transition-group': + specifier: ^4.4.10 + version: 4.4.10 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + react-transition-group: + specifier: ^4.4.5 + version: 4.4.5(react-dom@18.2.0)(react@18.2.0) + devDependencies: + '@types/luxon': + specifier: ^3.4.2 + version: 3.4.2 + '@types/moment-hijri': + specifier: ^2.1.4 + version: 2.1.4 + '@types/moment-jalaali': + specifier: ^0.7.9 + version: 0.7.9 + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + date-fns-jalali: + specifier: ^2.13.0-0 + version: 2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si) + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + luxon: + specifier: ^3.4.4 + version: 3.4.4 + moment: + specifier: ^2.30.1 + version: 2.30.1 + moment-hijri: + specifier: ^2.1.2 + version: 2.1.2 + moment-jalaali: + specifier: ^0.10.0 + version: 0.10.0 + moment-timezone: + specifier: ^0.5.44 + version: 0.5.45 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-date-pickers-pro: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@emotion/react': + specifier: ^11.9.0 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/x-date-pickers': + specifier: workspace:* + version: link:../x-date-pickers/build + '@mui/x-license': + specifier: workspace:* + version: link:../x-license/build + clsx: + specifier: ^2.1.0 + version: 2.1.0 + date-fns-jalali: + specifier: ^2.13.0-0 + version: 2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si) + moment-hijri: + specifier: ^2.1.2 + version: 2.1.2 + moment-jalaali: + specifier: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 + version: 0.10.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + react-transition-group: + specifier: ^4.4.5 + version: 4.4.5(react-dom@18.2.0)(react@18.2.0) + devDependencies: + '@types/luxon': + specifier: ^3.4.2 + version: 3.4.2 + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + luxon: + specifier: ^3.4.4 + version: 3.4.4 + moment: + specifier: ^2.30.1 + version: 2.30.1 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-license: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + devDependencies: + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-tree-view: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@emotion/react': + specifier: ^11.9.0 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react-transition-group': + specifier: ^4.4.10 + version: 4.4.10 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + react-transition-group: + specifier: ^4.4.5 + version: 4.4.5(react-dom@18.2.0)(react@18.2.0) + devDependencies: + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + publishDirectory: build + + packages/x-tree-view-pro: + dependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@emotion/react': + specifier: ^11.9.0 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': + specifier: ^5.0.0-beta.40 + version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/utils': + specifier: ^5.15.14 + version: 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/x-license': + specifier: workspace:* + version: link:../x-license/build + '@mui/x-tree-view': + specifier: workspace:* + version: link:../x-tree-view/build + '@types/react-transition-group': + specifier: ^4.4.10 + version: 4.4.10 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + react-transition-group: + specifier: ^4.4.5 + version: 4.4.5(react-dom@18.2.0)(react@18.2.0) + devDependencies: + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + + test: + devDependencies: + '@babel/runtime': + specifier: ^7.24.0 + version: 7.24.4 + '@emotion/cache': + specifier: ^11.11.0 + version: 11.11.0 + '@emotion/react': + specifier: ^11.11.4 + version: 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@mui/material': + specifier: ^5.15.14 + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-data-grid': + specifier: workspace:* + version: link:../packages/x-data-grid/build + '@mui/x-data-grid-pro': + specifier: workspace:* + version: link:../packages/x-data-grid-pro/build + '@mui/x-date-pickers': + specifier: workspace:* + version: link:../packages/x-date-pickers/build + '@mui/x-date-pickers-pro': + specifier: workspace:* + version: link:../packages/x-date-pickers-pro/build + '@playwright/test': + specifier: 1.41.2 + version: 1.41.2 + '@react-spring/web': + specifier: ^9.7.3 + version: 9.7.3(react-dom@18.2.0)(react@18.2.0) + '@types/chai': + specifier: ^4.3.12 + version: 4.3.14 + '@types/prop-types': + specifier: ^15.7.11 + version: 15.7.11 + '@types/react': + specifier: 18.2.60 + version: 18.2.60 + chai: + specifier: ^4.4.1 + version: 4.4.1 + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.22.3 + version: 6.22.3(react-dom@18.2.0)(react@18.2.0) + stylis: + specifier: ^4.3.1 + version: 4.3.1 + stylis-plugin-rtl: + specifier: ^2.1.1 + version: 2.1.1(stylis@4.3.1) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: false + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: false + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@algolia/client-search': 4.22.1 + algoliasearch: 4.22.1 + dev: false + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.22.1 + algoliasearch: 4.22.1 + dev: false + + /@algolia/cache-browser-local-storage@4.22.1: + resolution: {integrity: sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==} + dependencies: + '@algolia/cache-common': 4.22.1 + dev: false + + /@algolia/cache-common@4.22.1: + resolution: {integrity: sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==} + dev: false + + /@algolia/cache-in-memory@4.22.1: + resolution: {integrity: sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==} + dependencies: + '@algolia/cache-common': 4.22.1 + dev: false + + /@algolia/client-account@4.22.1: + resolution: {integrity: sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: false + + /@algolia/client-analytics@4.22.1: + resolution: {integrity: sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: false + + /@algolia/client-common@4.22.1: + resolution: {integrity: sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==} + dependencies: + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: false + + /@algolia/client-personalization@4.22.1: + resolution: {integrity: sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: false + + /@algolia/client-search@4.22.1: + resolution: {integrity: sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: false + + /@algolia/logger-common@4.22.1: + resolution: {integrity: sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==} + dev: false + + /@algolia/logger-console@4.22.1: + resolution: {integrity: sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==} + dependencies: + '@algolia/logger-common': 4.22.1 + dev: false + + /@algolia/requester-browser-xhr@4.22.1: + resolution: {integrity: sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==} + dependencies: + '@algolia/requester-common': 4.22.1 + dev: false + + /@algolia/requester-common@4.22.1: + resolution: {integrity: sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==} + dev: false + + /@algolia/requester-node-http@4.22.1: + resolution: {integrity: sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==} + dependencies: + '@algolia/requester-common': 4.22.1 + dev: false + + /@algolia/transporter@4.22.1: + resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} + dependencies: + '@algolia/cache-common': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + dev: false + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + /@argos-ci/core@1.5.5: + resolution: {integrity: sha512-m271rCtp5fnpUU89eSlS/If5WnDIUGduEHfW9YrwVHnMYWPCNBDxp2q87Wgjl3O5RTm/x+sDED3vFD9i1q+yTQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@argos-ci/util': 1.2.1 + axios: 1.6.7(debug@4.3.4) + convict: 6.2.4 + debug: 4.3.4(supports-color@8.1.1) + fast-glob: 3.3.2 + sharp: 0.32.6 + tmp: 0.2.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@argos-ci/util@1.2.1: + resolution: {integrity: sha512-/o7t0TcSED3BsBnnPrvXdmT+reThGMoGC9Lk+TTghrEE9GFlSKhjBmfYt4fUgXj5hQIe5tcdO01BVB2TsjjYSw==} + engines: {node: '>=16.0.0'} + dev: true + + /@babel/cli@7.23.9(@babel/core@7.24.4): + resolution: {integrity: sha512-vB1UXmGDNEhcf1jNAHKT9IlYk1R+hehVTLFlCLHBi8gfuHQGP6uRjgXVYU0EVlI/qwAWpstqkBdf2aez3/z/5Q==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@jridgewell/trace-mapping': 0.3.25 + commander: 4.1.1 + convert-source-map: 2.0.0 + fs-readdir-recursive: 1.1.0 + glob: 7.2.3 + make-dir: 2.1.0 + slash: 2.0.0 + optionalDependencies: + '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 + chokidar: 3.5.3 + dev: true + + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.24.4: + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/generator@7.24.4: + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.4): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4): + resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.4): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + + /@babel/helpers@7.24.4: + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + + /@babel/node@7.23.9(@babel/core@7.24.4): + resolution: {integrity: sha512-/d4ju/POwlGIJlZ+NqWH1qu61wt6ZlTZZZutrK2MOSdaH1JCh726nLw/GSvAjG+LTY6CO9SsB8uWcttnFKm6yg==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/register': 7.23.7(@babel/core@7.24.4) + commander: 4.1.1 + core-js: 3.35.1 + node-environment-flags: 1.0.6 + regenerator-runtime: 0.14.1 + v8flags: 3.2.0 + dev: true + + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.4): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + dev: false + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.4): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + dev: false + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.4): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + dev: false + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: false + + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.4): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.4): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.4) + + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-block-scoping@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.4) + dev: false + + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 + + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.4): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.4) + + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.4): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) + dev: true + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.4): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.4) + '@babel/types': 7.24.0 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.4): + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.24.4): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.4(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.4) + + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.4) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/preset-env@7.24.4(@babel/core@7.24.4): + resolution: {integrity: sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.4(@babel/core@7.24.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.4) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-block-scoping': 7.24.4(@babel/core@7.24.4) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.4) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.4) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4) + core-js-compat: 3.36.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/preset-flow@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.4) + dev: false + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.4): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 + esutils: 2.0.3 + + /@babel/preset-react@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.4) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.24.4) + dev: true + + /@babel/preset-typescript@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.4) + + /@babel/register@7.23.7(@babel/core@7.24.4): + resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + /@babel/runtime-corejs2@7.24.4: + resolution: {integrity: sha512-ZCKqyUKt/Coimg+3Kafu43yNetgYnTXzNbEGAgxc81J5sI0qFNbQ613w7PNny+SmijAmGVroL0GDvx5rG/JI5Q==} + engines: {node: '>=6.9.0'} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.14.1 + dev: false + + /@babel/runtime@7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: false + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + dev: true + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + /@docsearch/css@3.5.2: + resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} + dev: false + + /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@docsearch/css': 3.5.2 + '@types/react': 18.2.60 + algoliasearch: 4.22.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false + + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.24.3 + '@babel/runtime': 7.24.4 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + /@emotion/react@11.11.4(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + '@types/react': 18.2.60 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + + /@emotion/serialize@1.1.3: + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + + /@emotion/server@11.11.0: + resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} + peerDependencies: + '@emotion/css': ^11.0.0-rc.0 + peerDependenciesMeta: + '@emotion/css': + optional: true + dependencies: + '@emotion/utils': 1.2.1 + html-tokenize: 2.0.1 + multipipe: 1.0.2 + through: 2.3.8 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + + /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/serialize': 1.1.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@types/react': 18.2.60 + react: 18.2.0 + + /@emotion/unitless@0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: false + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + /@es-joy/jsdoccomment@0.42.0: + resolution: {integrity: sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==} + engines: {node: '>=16'} + dependencies: + comment-parser: 1.4.1 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + dev: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@fast-csv/format@4.3.5: + resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} + dependencies: + '@types/node': 18.19.29 + lodash.escaperegexp: 4.1.2 + lodash.isboolean: 3.0.3 + lodash.isequal: 4.5.0 + lodash.isfunction: 3.0.9 + lodash.isnil: 4.0.0 + dev: false + + /@fast-csv/parse@4.3.6: + resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==} + dependencies: + '@types/node': 18.19.29 + lodash.escaperegexp: 4.1.2 + lodash.groupby: 4.6.0 + lodash.isfunction: 3.0.9 + lodash.isnil: 4.0.0 + lodash.isundefined: 3.0.1 + lodash.uniq: 4.5.0 + dev: false + + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 + + /@floating-ui/dom@1.6.1: + resolution: {integrity: sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==} + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + + /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + + /@gitbeaker/core@35.8.1: + resolution: {integrity: sha512-KBrDykVKSmU9Q9Gly8KeHOgdc0lZSa435srECxuO0FGqqBcUQ82hPqUc13YFkkdOI9T1JRA3qSFajg8ds0mZKA==} + engines: {node: '>=14.2.0'} + dependencies: + '@gitbeaker/requester-utils': 35.8.1 + form-data: 4.0.0 + li: 1.3.0 + mime: 3.0.0 + query-string: 7.1.3 + xcase: 2.0.1 + dev: true + + /@gitbeaker/node@35.8.1: + resolution: {integrity: sha512-g6rX853y61qNhzq9cWtxIEoe2KDeFBtXAeWMGWJnc3nz3WRump2pIICvJqw/yobLZqmTNt+ea6w3/n92Mnbn3g==} + engines: {node: '>=14.2.0'} + deprecated: Please use its successor @gitbeaker/rest + dependencies: + '@gitbeaker/core': 35.8.1 + '@gitbeaker/requester-utils': 35.8.1 + delay: 5.0.0 + got: 11.8.6 + xcase: 2.0.1 + dev: true + + /@gitbeaker/requester-utils@35.8.1: + resolution: {integrity: sha512-MFzdH+Z6eJaCZA5ruWsyvm6SXRyrQHjYVR6aY8POFraIy7ceIHOprWCs1R+0ydDZ8KtBnd8OTHjlJ0sLtSFJCg==} + engines: {node: '>=14.2.0'} + dependencies: + form-data: 4.0.0 + qs: 6.11.2 + xcase: 2.0.1 + dev: true + + /@googleapis/sheets@5.0.5: + resolution: {integrity: sha512-XMoONmgAJm2jYeTYHX4054VcEkElxlgqmnHvt0wAurzEHoGJLdUHhTAJXGPLgSs4WVMPtgU8HLrmk7/U+Qlw7A==} + engines: {node: '>=12.0.0'} + dependencies: + googleapis-common: 7.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@hutson/parse-repository-url@3.0.2: + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@lerna/create@8.1.2(typescript@5.4.5): + resolution: {integrity: sha512-GzScCIkAW3tg3+Yn/MKCH9963bzG+zpjGz2NdfYDlYWI7p0f/SH46v1dqpPpYmZ2E/m3JK8HjTNNNL8eIm8/YQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@npmcli/run-script': 7.0.2 + '@nx/devkit': 17.3.0(nx@17.3.0) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 19.0.11 + byte-size: 8.1.1 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 6.0.1 + columnify: 1.6.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 8.3.6(typescript@5.4.5) + dedent: 0.7.0 + execa: 5.0.0 + fs-extra: 11.2.0 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.11 + has-unicode: 2.0.1 + ini: 1.3.8 + init-package-json: 5.0.0 + inquirer: 8.2.6 + is-ci: 3.0.1 + is-stream: 2.0.0 + js-yaml: 4.1.0 + libnpmpublish: 7.3.0 + load-json-file: 6.2.0 + lodash: 4.17.21 + make-dir: 4.0.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: 14.0.5 + npmlog: 6.0.2 + nx: 17.3.0 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-queue: 6.6.2 + p-reduce: 2.1.0 + pacote: 17.0.6 + pify: 5.0.0 + read-cmd-shim: 4.0.0 + read-package-json: 6.0.4 + resolve-from: 5.0.0 + rimraf: 4.4.1 + semver: 7.6.0 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: 9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 + upath: 2.0.1 + uuid: 9.0.1 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.0 + write-file-atomic: 5.0.1 + write-pkg: 4.0.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - bluebird + - debug + - encoding + - supports-color + - typescript + dev: true + + /@mnajdova/enzyme-adapter-react-18@0.2.0(enzyme@3.11.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BOnjlVa7FHI1YUnYe+FdUtQu6szI1wLJ+C1lHyqmF3T9gu/J/WCYqqcD44dPkrU+8eYvvk/gQducsqna4HFiAg==} + peerDependencies: + enzyme: ^3.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + enzyme: 3.11.0 + enzyme-adapter-utils: 1.14.1(react@18.2.0) + enzyme-shallow-equal: 1.0.5 + has: 1.0.4 + object.assign: 4.1.5 + object.values: 1.1.7 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-reconciler: 0.29.0(react@18.2.0) + react-test-renderer: 18.2.0(react@18.2.0) + semver: 5.7.2 + dev: true + + /@mui/base@5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.60) + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@popperjs/core': 2.11.8 + '@types/react': 18.2.60 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@mui/core-downloads-tracker@5.15.15: + resolution: {integrity: sha512-aXnw29OWQ6I5A47iuWEI6qSSUfH6G/aCsW9KmW3LiFqr7uXZBK4Ks+z8G+qeIub8k0T5CMqlT2q0L+ZJTMrqpg==} + + /@mui/icons-material@5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-kkeU/pe+hABcYDH6Uqy8RmIsr2S/y5bP2rp+Gat4CcRjCcVne6KudS1NrZQhUCRysrTDCAhcbcf9gt+/+pGO2g==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.60 + react: 18.2.0 + + /@mui/internal-docs-utils@1.0.4: + resolution: {integrity: sha512-aZ70CqKohMZ/RS3V5Nl3FmBNVMKHNjtXachtkcWnxyQCi9DPuaGCz8l1Q0Iealjax+j08vT5vDO0JwWFImMsnA==} + dependencies: + rimraf: 5.0.5 + typescript: 5.4.5 + dev: true + + /@mui/internal-markdown@1.0.1: + resolution: {integrity: sha512-goTCzEbx0yxDbCU9ngHo02f5TBHwngF6RDM2ALqtgUsvNp14/lVU3OFytvpxcwjeSrrbVPEw4MSidYO8FnlUKQ==} + dependencies: + '@babel/runtime': 7.24.4 + lodash: 4.17.21 + marked: 5.1.2 + prismjs: 1.29.0 + dev: true + + /@mui/internal-scripts@1.0.3: + resolution: {integrity: sha512-qK67iR7wy5LTVQrHhPAlDt+VDrM+B/CYfEbK9vJ8fHUVnQYQGmfEScLqAzKvidi42z3a9taHhvgto3ecLYLKEQ==} + dependencies: + '@babel/core': 7.24.4 + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.4) + '@babel/types': 7.24.0 + '@mui/internal-docs-utils': 1.0.4 + doctrine: 3.0.0 + lodash: 4.17.21 + typescript: 5.4.5 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@mui/joy@5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QJW5Mu2GTJUX4sXjxt4nQBugpJAiSkUT49S/bwoKCCWx8bCfsEyplTzZPK+FraweiGhGgZWExWOTAPpxH83RUQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.15 + '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.60) + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react': 18.2.60 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.15)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0bDVECGmrNjd3+bLdcLiwYZ0O4HP5j5WSQm5DV6iA/Z9kr8O6AnvZ1bv9ImQbbX7Gj3pX4o43EKwCutj3EQxQg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material': '>=5.15.0' + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.60) + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react': 18.2.60 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@mui/material@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.15 + '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.60) + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react': 18.2.60 + '@types/react-transition-group': 4.4.10 + clsx: 2.1.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + + /@mui/private-theming@5.15.14(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react': 18.2.60 + prop-types: 15.8.1 + react: 18.2.0 + + /@mui/styled-engine@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + + /@mui/styles@5.15.15(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-KBklDHNEddodEjcnZ+/3ieVcp+Mb/pzdQzAagUpt4RDd9m/mn+2JkqJh2rnrWUwS//YLsbL3IbUrONYn5yPxfQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/hash': 0.9.1 + '@mui/private-theming': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.60) + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react': 18.2.60 + clsx: 2.1.0 + csstype: 3.1.3 + hoist-non-react-statics: 3.3.2 + jss: 10.10.0 + jss-plugin-camel-case: 10.10.0 + jss-plugin-default-unit: 10.10.0 + jss-plugin-global: 10.10.0 + jss-plugin-nested: 10.10.0 + jss-plugin-props-sort: 10.10.0 + jss-plugin-rule-value-function: 10.10.0 + jss-plugin-vendor-prefixer: 10.10.0 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@mui/private-theming': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.60) + '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) + '@types/react': 18.2.60 + clsx: 2.1.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + + /@mui/types@7.2.14(@types/react@18.2.60): + resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.60 + + /@mui/utils@5.15.14(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@types/prop-types': 15.7.11 + '@types/react': 18.2.60 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + + /@netlify/functions@2.6.0: + resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@netlify/serverless-functions-api': 1.14.0 + dev: true + + /@netlify/node-cookies@0.1.0: + resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} + engines: {node: ^14.16.0 || >=16.0.0} + dev: true + + /@netlify/serverless-functions-api@1.14.0: + resolution: {integrity: sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@netlify/node-cookies': 0.1.0 + urlpattern-polyfill: 8.0.2 + dev: true + + /@next/env@14.1.4: + resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} + dev: false + + /@next/eslint-plugin-next@14.0.4: + resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} + dependencies: + glob: 7.1.7 + dev: true + + /@next/swc-darwin-arm64@14.1.4: + resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.1.4: + resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.1.4: + resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.1.4: + resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.1.4: + resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.1.4: + resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.1.4: + resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.1.4: + resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.1.4: + resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} + requiresBuild: true + dev: true + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.0 + dev: true + + /@npmcli/agent@2.2.0: + resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + lru-cache: 10.2.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/fs@3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.6.0 + dev: true + + /@npmcli/git@5.0.4: + resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 7.0.1 + lru-cache: 10.2.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1(bluebird@3.7.2) + promise-retry: 2.0.1 + semver: 7.6.0 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents@2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /@npmcli/node-gyp@3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/package-json@5.0.0: + resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/git': 5.0.4 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.6.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@7.0.1: + resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + which: 4.0.0 + dev: true + + /@npmcli/run-script@7.0.2: + resolution: {integrity: sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 7.0.1 + node-gyp: 10.0.1 + read-package-json-fast: 3.0.2 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/run-script@7.0.4: + resolution: {integrity: sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.0.0 + '@npmcli/promise-spawn': 7.0.1 + node-gyp: 10.0.1 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@nrwl/devkit@17.3.0(nx@17.3.0): + resolution: {integrity: sha512-3QUCvRisp0Iwwl7VEFQPQUU7wpqGEv9kJBNBtgmhe68ydusdNPk+d0npwkvH23BYPuswTI2MUJyLkdeiB58Ovw==} + dependencies: + '@nx/devkit': 17.3.0(nx@17.3.0) + transitivePeerDependencies: + - nx + dev: true + + /@nrwl/tao@17.3.0: + resolution: {integrity: sha512-Bhz+MvAk8CjQtclpEOagGiKzgoziwe+35SlHtvFqzZClAuB8BAx+3ZDNJZcEpDRNfodKqodMUy2OEf6pbzw/LA==} + hasBin: true + dependencies: + nx: 17.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true + + /@nx/devkit@17.3.0(nx@17.3.0): + resolution: {integrity: sha512-KPUkEwkGYrg5hDqqXc7sdv4PNXHyWtGwzkBZA3p/RjPieKcQSsTcUwTxQ+taOE4v877n0HuC7hcuLueLSbYGiQ==} + peerDependencies: + nx: '>= 16 <= 18' + dependencies: + '@nrwl/devkit': 17.3.0(nx@17.3.0) + ejs: 3.1.9 + enquirer: 2.3.6 + ignore: 5.3.0 + nx: 17.3.0 + semver: 7.5.3 + tmp: 0.2.1 + tslib: 2.6.2 + yargs-parser: 21.1.1 + dev: true + + /@nx/nx-darwin-arm64@17.3.0: + resolution: {integrity: sha512-NDR/HjahhNLx9Q4TjR5/W3IedSkdtK+kUZ09EceVeX33HNdeLjkFA26QtVVmGbhnogLcywAX0KELn7oGv2nO+A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-darwin-x64@17.3.0: + resolution: {integrity: sha512-3qxOZnHTPTUXAH8WGCtllAXE2jodStDNSkGVeEcDuIK4NO5tFfF4oVCLKKYcnqKsJOVNTS9B/aJG2bVGbaWYVQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-freebsd-x64@17.3.0: + resolution: {integrity: sha512-kVGK/wSbRRWqL3sAXlR5diI29kDisutUMaxs5dWxzRzY0U/+Kwon6ayLU1/HGwEykXFhCJE7r9vSqCrnn67dzg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-arm-gnueabihf@17.3.0: + resolution: {integrity: sha512-nb+jsh7zDkXjHEaAM5qmJR0X0wQ1yPbAYJuZSf8oZkllVYXcAofiAf21EqgKHq7vr4sZiCmlDaT16DheM3jyVA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-arm64-gnu@17.3.0: + resolution: {integrity: sha512-9LkGk2paZn5Ehg/rya8GCISr+CgMz3MZ5PTOO/yEGk6cv6kQSmhZdjUi3wMOQidIqpolRK0MrhSL9DUz8Htl4A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-arm64-musl@17.3.0: + resolution: {integrity: sha512-bMykIGtziR90xLOCdzVDzaLgMXDvCf2Y7KpAj/EqJXpC0j9RmQdkm7VyO3//xN6rpcWjMcn1wgHQ1rPV65vETg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-x64-gnu@17.3.0: + resolution: {integrity: sha512-Y3KbMhVcgvVvplyVlWzHaSKqGKqWLPTcuXnnNzuWSqLC9q+UdaDE/6+7SryHbJABM2juMHbo9JNp5LlKp3bkEg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-x64-musl@17.3.0: + resolution: {integrity: sha512-QvAIZPqvrqI+s2Ddpkb0TE4yRJgXAlL8I+rIA8U+6y266rT5sVJZFPUWubkFWe/PSmqv3l4KqPcsvHTiIzldFA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-win32-arm64-msvc@17.3.0: + resolution: {integrity: sha512-uoG3g0eZ9lYWZi4CpEVd04fIs+4lqpmU/FAaB3/K+Tfj9daSEIB6j57EX81ECDRB16k74VUdcI32qLAtD8KIMw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-win32-x64-msvc@17.3.0: + resolution: {integrity: sha512-ekoejj7ZXMSNYrgQwd/7thCNTHbDRggsqPw5LlTa/jPonsQ4TAPzmLBJUF8hCKn43xXLXaFufK4V1OMxlP1Hfg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@octokit/auth-token@2.5.0: + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + dependencies: + '@octokit/types': 6.41.0 + dev: true + + /@octokit/auth-token@3.0.4: + resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} + engines: {node: '>= 14'} + dev: true + + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + dev: true + + /@octokit/core@3.6.0: + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0 + '@octokit/request': 5.6.3 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/core@4.2.4: + resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} + engines: {node: '>= 14'} + dependencies: + '@octokit/auth-token': 3.0.4 + '@octokit/graphql': 5.0.6 + '@octokit/request': 6.2.8 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.3.2 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/core@5.1.0: + resolution: {integrity: sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==} + engines: {node: '>= 18'} + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.0.2 + '@octokit/request': 8.1.6 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/endpoint@6.0.12: + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/endpoint@7.0.6: + resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} + engines: {node: '>= 14'} + dependencies: + '@octokit/types': 9.3.2 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/endpoint@9.0.4: + resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/graphql@4.8.0: + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + dependencies: + '@octokit/request': 5.6.3 + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/graphql@5.0.6: + resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} + engines: {node: '>= 14'} + dependencies: + '@octokit/request': 6.2.8 + '@octokit/types': 9.3.2 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/graphql@7.0.2: + resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} + engines: {node: '>= 18'} + dependencies: + '@octokit/request': 8.1.6 + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/openapi-types@12.11.0: + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + dev: true + + /@octokit/openapi-types@18.1.1: + resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} + dev: true + + /@octokit/openapi-types@19.1.0: + resolution: {integrity: sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==} + dev: true + + /@octokit/plugin-enterprise-rest@6.0.1: + resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} + dev: true + + /@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0): + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + dev: true + + /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4): + resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} + engines: {node: '>= 14'} + peerDependencies: + '@octokit/core': '>=4' + dependencies: + '@octokit/core': 4.2.4 + '@octokit/tsconfig': 1.0.2 + '@octokit/types': 9.3.2 + dev: true + + /@octokit/plugin-paginate-rest@9.1.5(@octokit/core@5.1.0): + resolution: {integrity: sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.1.0 + '@octokit/types': 12.4.0 + dev: true + + /@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0): + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + dev: true + + /@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4): + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 4.2.4 + dev: true + + /@octokit/plugin-request-log@4.0.0(@octokit/core@5.1.0): + resolution: {integrity: sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.1.0 + dev: true + + /@octokit/plugin-rest-endpoint-methods@10.2.0(@octokit/core@5.1.0): + resolution: {integrity: sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.1.0 + '@octokit/types': 12.4.0 + dev: true + + /@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0): + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + dev: true + + /@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4): + resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} + engines: {node: '>= 14'} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 4.2.4 + '@octokit/types': 10.0.0 + dev: true + + /@octokit/plugin-retry@6.0.1(@octokit/core@5.1.0): + resolution: {integrity: sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.1.0 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + bottleneck: 2.19.5 + dev: true + + /@octokit/request-error@2.1.0: + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request-error@3.0.3: + resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} + engines: {node: '>= 14'} + dependencies: + '@octokit/types': 9.3.2 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request-error@5.0.1: + resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request@5.6.3: + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.7.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/request@6.2.8: + resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} + engines: {node: '>= 14'} + dependencies: + '@octokit/endpoint': 7.0.6 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.3.2 + is-plain-object: 5.0.0 + node-fetch: 2.7.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/request@8.1.6: + resolution: {integrity: sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/endpoint': 9.0.4 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/rest@18.12.0: + resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} + dependencies: + '@octokit/core': 3.6.0 + '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0) + '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0) + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/rest@19.0.11: + resolution: {integrity: sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==} + engines: {node: '>= 14'} + dependencies: + '@octokit/core': 4.2.4 + '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4) + '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4) + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/rest@20.0.2: + resolution: {integrity: sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/core': 5.1.0 + '@octokit/plugin-paginate-rest': 9.1.5(@octokit/core@5.1.0) + '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.1.0) + '@octokit/plugin-rest-endpoint-methods': 10.2.0(@octokit/core@5.1.0) + dev: true + + /@octokit/tsconfig@1.0.2: + resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} + dev: true + + /@octokit/types@10.0.0: + resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} + dependencies: + '@octokit/openapi-types': 18.1.1 + dev: true + + /@octokit/types@12.4.0: + resolution: {integrity: sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==} + dependencies: + '@octokit/openapi-types': 19.1.0 + dev: true + + /@octokit/types@6.41.0: + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + dependencies: + '@octokit/openapi-types': 12.11.0 + dev: true + + /@octokit/types@9.3.2: + resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} + dependencies: + '@octokit/openapi-types': 18.1.1 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + optional: true + + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@playwright/test@1.41.2: + resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright: 1.41.2 + dev: true + + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + /@react-spring/animated@9.7.3(react@18.2.0): + resolution: {integrity: sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + + /@react-spring/core@9.7.3(react@18.2.0): + resolution: {integrity: sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + + /@react-spring/rafz@9.7.3: + resolution: {integrity: sha512-9vzW1zJPcC4nS3aCV+GgcsK/WLaB520Iyvm55ARHfM5AuyBqycjvh1wbmWmgCyJuX4VPoWigzemq1CaaeRSHhQ==} + dev: false + + /@react-spring/shared@9.7.3(react@18.2.0): + resolution: {integrity: sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/types': 9.7.3 + react: 18.2.0 + + /@react-spring/types@9.7.3: + resolution: {integrity: sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==} + + /@react-spring/web@9.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@react-spring/animated': 9.7.3(react@18.2.0) + '@react-spring/core': 9.7.3(react@18.2.0) + '@react-spring/shared': 9.7.3(react@18.2.0) + '@react-spring/types': 9.7.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@remix-run/router@1.15.3: + resolution: {integrity: sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==} + engines: {node: '>=14.0.0'} + + /@sigstore/bundle@1.1.0: + resolution: {integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@sigstore/bundle@2.1.1: + resolution: {integrity: sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@sigstore/core@0.2.0: + resolution: {integrity: sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@sigstore/protobuf-specs@0.2.1: + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@sigstore/sign@1.0.0: + resolution: {integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/sign@2.2.1: + resolution: {integrity: sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@1.0.3: + resolution: {integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 1.1.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@2.3.0: + resolution: {integrity: sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/verify@0.1.0: + resolution: {integrity: sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true + + /@sindresorhus/merge-streams@1.0.0: + resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + engines: {node: '>=18'} + dev: true + + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@sinonjs/fake-timers@11.2.2: + resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@sinonjs/samsam@8.0.0: + resolution: {integrity: sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==} + dependencies: + '@sinonjs/commons': 2.0.0 + lodash.get: 4.4.2 + type-detect: 4.0.8 + dev: true + + /@sinonjs/text-encoding@0.7.2: + resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} + dev: true + + /@slack/bolt@3.17.1: + resolution: {integrity: sha512-N+4WxpkM59RXi7BL3IXUtENnn9cF7TOBn7ttaHpgvlnjUaro+yQyY60arXTlP4ytVDFJ1w0mSdfftcM17h+i2w==} + engines: {node: '>=12.13.0', npm: '>=6.12.0'} + dependencies: + '@slack/logger': 4.0.0 + '@slack/oauth': 2.6.2 + '@slack/socket-mode': 1.3.3 + '@slack/types': 2.11.0 + '@slack/web-api': 6.12.0 + '@types/express': 4.17.21 + '@types/promise.allsettled': 1.0.6 + '@types/tsscmp': 1.0.2 + axios: 1.6.7(debug@4.3.4) + express: 4.18.2 + path-to-regexp: 6.2.1 + please-upgrade-node: 3.2.0 + promise.allsettled: 1.0.7 + raw-body: 2.5.2 + tsscmp: 1.0.6 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /@slack/logger@3.0.0: + resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@slack/logger@4.0.0: + resolution: {integrity: sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==} + engines: {node: '>= 18', npm: '>= 8.6.0'} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@slack/oauth@2.6.2: + resolution: {integrity: sha512-2R3MyB/R63hTRXzk5J6wcui59TBxXzhk+Uh2/Xu3Wp3O4pXg/BNucQhP/DQbL/ScVhLvFtMXirLrKi0Yo5gIVw==} + engines: {node: '>=12.13.0', npm: '>=6.12.0'} + dependencies: + '@slack/logger': 3.0.0 + '@slack/web-api': 6.12.0 + '@types/jsonwebtoken': 8.5.9 + '@types/node': 18.19.29 + jsonwebtoken: 9.0.2 + lodash.isstring: 4.0.1 + transitivePeerDependencies: + - debug + dev: true + + /@slack/socket-mode@1.3.3: + resolution: {integrity: sha512-vN3zG4woRtf2Ut6rZgRW6G/Oe56uLMlnz39I08Q7DOvVfB+1MmDbNv0PNOiFgujdKXJR+bXF41/F/VvryXcqlw==} + engines: {node: '>=12.13.0', npm: '>=6.12.0'} + dependencies: + '@slack/logger': 3.0.0 + '@slack/web-api': 6.12.0 + '@types/node': 18.19.29 + '@types/p-queue': 2.3.2 + '@types/ws': 7.4.7 + eventemitter3: 3.1.2 + finity: 0.5.4 + p-cancelable: 1.1.0 + p-queue: 2.4.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: true + + /@slack/types@2.11.0: + resolution: {integrity: sha512-UlIrDWvuLaDly3QZhCPnwUSI/KYmV1N9LyhuH6EDKCRS1HWZhyTG3Ja46T3D0rYfqdltKYFXbJSSRPwZpwO0cQ==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dev: true + + /@slack/web-api@6.12.0: + resolution: {integrity: sha512-RPw6F8rWfGveGkZEJ4+4jUin5iazxRK2q3FpQDz/FvdgzC3nZmPyLx8WRzc6nh0w3MBjEbphNnp2VZksfhpBIQ==} + engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} + dependencies: + '@slack/logger': 3.0.0 + '@slack/types': 2.11.0 + '@types/is-stream': 1.1.0 + '@types/node': 18.19.29 + axios: 1.6.7(debug@4.3.4) + eventemitter3: 3.1.2 + form-data: 2.5.1 + is-electron: 2.2.2 + is-stream: 1.1.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + transitivePeerDependencies: + - debug + dev: true + + /@socket.io/component-emitter@3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + dev: true + + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/runtime': 7.24.4 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react@14.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-SOUuM2ysCvjUWBXTNfQ/ztmnKDmqaiPV3SvoIuyxMUca45rbSWWAT/qB8CUs/JQ/ux/8JFs9DNdFQ3f6jH3crA==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.24.4 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@tufjs/canonical-json@1.0.0: + resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@tufjs/canonical-json@2.0.0: + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@tufjs/models@1.0.4: + resolution: {integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 1.0.0 + minimatch: 9.0.3 + dev: true + + /@tufjs/models@2.0.0: + resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + dev: true + + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.24.0 + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.24.0 + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.29 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 18.19.29 + '@types/responselike': 1.0.3 + dev: true + + /@types/chai-dom@1.11.3: + resolution: {integrity: sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==} + dependencies: + '@types/chai': 4.3.14 + dev: true + + /@types/chai@4.3.14: + resolution: {integrity: sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==} + dev: true + + /@types/chance@1.1.6: + resolution: {integrity: sha512-V+pm3stv1Mvz8fSKJJod6CglNGVqEQ6OyuqitoDkWywEODM/eJd1eSuIp9xt6DrX8BWZ2eDSIzbw1tPCUTvGbQ==} + dev: true + + /@types/cheerio@0.22.35: + resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: true + + /@types/cors@2.8.17: + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/d3-color@3.1.3: + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + dev: true + + /@types/d3-delaunay@6.0.4: + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + dev: true + + /@types/d3-interpolate@3.0.4: + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + dependencies: + '@types/d3-color': 3.1.3 + dev: true + + /@types/d3-path@3.1.0: + resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} + dev: true + + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + dependencies: + '@types/d3-time': 3.0.3 + dev: true + + /@types/d3-shape@3.1.6: + resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + dependencies: + '@types/d3-path': 3.1.0 + dev: true + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + dev: true + + /@types/doctrine@0.0.9: + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + dev: true + + /@types/enzyme@3.10.12: + resolution: {integrity: sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==} + dependencies: + '@types/cheerio': 0.22.35 + '@types/react': 18.2.60 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.7 + '@types/estree': 1.0.5 + + /@types/eslint@8.56.7: + resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + /@types/express-serve-static-core@4.17.42: + resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} + dependencies: + '@types/node': 18.19.29 + '@types/qs': 6.9.11 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.42 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 + dev: true + + /@types/format-util@1.0.4: + resolution: {integrity: sha512-xrCYOdHh5zA3LUrn6CvspYwlzSWxPso11Lx32WnAG6KvLCRecKZ/Rh21PLXUkzUFsQmrGcx/traJAFjR6dVS5Q==} + dev: false + + /@types/fs-extra@11.0.4: + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 18.19.29 + dev: true + + /@types/history@4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + dev: true + + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: true + + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/is-stream@1.1.0: + resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: false + + /@types/jscodeshift@0.11.11: + resolution: {integrity: sha512-d7CAfFGOupj5qCDqMODXxNz2/NwCv/Lha78ZFbnr6qpk3K98iSB8I+ig9ERE2+EeYML352VMRsjPyOpeA+04eQ==} + dependencies: + ast-types: 0.14.2 + recast: 0.20.5 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/jsonfile@6.1.4: + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/jsonwebtoken@8.5.9: + resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/lodash@4.17.0: + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + dev: true + + /@types/lru-cache@7.10.10: + resolution: {integrity: sha512-nEpVRPWW9EBmx2SCfNn3ClYxPL7IktPX12HhIoSc/H5mMjdeW3+YsXIpseLQ2xF35+OcpwKQbEUw5VtqE4PDNA==} + deprecated: This is a stub types definition. lru-cache provides its own type definitions, so you do not need this installed. + dependencies: + lru-cache: 7.18.3 + dev: true + + /@types/luxon@3.4.2: + resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} + dev: true + + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + dependencies: + '@types/unist': 2.0.10 + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: true + + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + + /@types/minimist@1.2.5: + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + dev: true + + /@types/mocha@10.0.6: + resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} + dev: true + + /@types/moment-hijri@2.1.4: + resolution: {integrity: sha512-pGX1DaSducJDkJAC3q8fCuemow0pzI4oa0iKcspwQNPXuwlI55WRgBVrA6NVi+rf8bZN1qjWVsGdUatrLhZk6Q==} + dependencies: + moment: 2.30.1 + dev: true + + /@types/moment-jalaali@0.7.9: + resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} + dependencies: + moment: 2.30.1 + dev: true + + /@types/node@18.19.29: + resolution: {integrity: sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==} + dependencies: + undici-types: 5.26.5 + + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + + /@types/p-queue@2.3.2: + resolution: {integrity: sha512-eKAv5Ql6k78dh3ULCsSBxX6bFNuGjTmof5Q/T6PiECDq0Yf8IIn46jCyp3RJvCi8owaEmm3DZH1PEImjBMd/vQ==} + dev: true + + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true + + /@types/promise.allsettled@1.0.6: + resolution: {integrity: sha512-wA0UT0HeT2fGHzIFV9kWpYz5mdoyLxKrTgMdZQM++5h6pYAFH73HXcQhefg24nD1yivUFEn5KU+EF4b+CXJ4Wg==} + dev: true + + /@types/prop-types@15.7.11: + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/react-dom@18.2.19: + resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} + dependencies: + '@types/react': 18.2.60 + dev: true + + /@types/react-router-dom@5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.60 + '@types/react-router': 5.1.20 + dev: true + + /@types/react-router@5.1.20: + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.60 + dev: true + + /@types/react-test-renderer@18.0.7: + resolution: {integrity: sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg==} + dependencies: + '@types/react': 18.2.60 + dev: true + + /@types/react-transition-group@4.4.10: + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + dependencies: + '@types/react': 18.2.60 + + /@types/react@18.2.60: + resolution: {integrity: sha512-dfiPj9+k20jJrLGOu9Nf6eqxm2EyJRrq2NvwOFsfbb7sFExZ9WELPs67UImHj3Ayxg8ruTtKtNnbjaF8olPq0A==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + + /@types/requestidlecallback@0.3.7: + resolution: {integrity: sha512-5/EwNH3H/+M2zxATq9UidyD7rCq3WhK5Te/XhdhqP270QoGInVkoNBj6kK2Ah5slkZewkX8XJb7WDaYhmJu+eg==} + dev: true + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: true + + /@types/scheduler@0.16.8: + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.29 + dev: true + + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 18.19.29 + dev: true + + /@types/sinon@10.0.20: + resolution: {integrity: sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==} + dependencies: + '@types/sinonjs__fake-timers': 8.1.5 + dev: true + + /@types/sinonjs__fake-timers@8.1.5: + resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} + dev: true + + /@types/stylis@4.2.0: + resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} + dev: false + + /@types/stylis@4.2.5: + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + dev: true + + /@types/tsscmp@1.0.2: + resolution: {integrity: sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g==} + dev: true + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: true + + /@types/webpack-bundle-analyzer@4.7.0(webpack-cli@5.1.4): + resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} + dependencies: + '@types/node': 18.19.29 + tapable: 2.2.1 + webpack: 5.91.0(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: true + + /@types/ws@7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 18.19.29 + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.0.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + dev: true + + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.0 + ts-api-utils: 1.0.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.0.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + /@webassemblyjs/ast@1.9.0: + resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} + dependencies: + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + dev: false + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + /@webassemblyjs/floating-point-hex-parser@1.9.0: + resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} + dev: false + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + /@webassemblyjs/helper-api-error@1.9.0: + resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} + dev: false + + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + /@webassemblyjs/helper-buffer@1.9.0: + resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} + dev: false + + /@webassemblyjs/helper-code-frame@1.9.0: + resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} + dependencies: + '@webassemblyjs/wast-printer': 1.9.0 + dev: false + + /@webassemblyjs/helper-fsm@1.9.0: + resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} + dev: false + + /@webassemblyjs/helper-module-context@1.9.0: + resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + dev: false + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + /@webassemblyjs/helper-wasm-bytecode@1.9.0: + resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} + dev: false + + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + /@webassemblyjs/helper-wasm-section@1.9.0: + resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + dev: false + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + + /@webassemblyjs/ieee754@1.9.0: + resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: false + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + + /@webassemblyjs/leb128@1.9.0: + resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + /@webassemblyjs/utf8@1.9.0: + resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} + dev: false + + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + /@webassemblyjs/wasm-edit@1.9.0: + resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 + dev: false + + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wasm-gen@1.9.0: + resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: false + + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + /@webassemblyjs/wasm-opt@1.9.0: + resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + dev: false + + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wasm-parser@1.9.0: + resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: false + + /@webassemblyjs/wast-parser@1.9.0: + resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/wast-printer@1.9.0: + resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + '@xtuc/long': 4.2.2 + dev: false + + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.91.0): + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + dependencies: + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) + + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.91.0): + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + dependencies: + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) + + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.91.0): + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + dependencies: + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + /@yarnpkg/lockfile@1.1.0: + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + dev: true + + /@yarnpkg/parsers@3.0.0-rc.46: + resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} + engines: {node: '>=14.15.0'} + dependencies: + js-yaml: 3.14.1 + tslib: 2.6.2 + dev: true + + /@zeit/schemas@2.29.0: + resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} + dev: true + + /@zkochan/js-yaml@0.0.6: + resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + dev: true + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + /acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + /add-stream@1.0.0: + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /aggregate-error@4.0.1: + resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} + engines: {node: '>=12'} + dependencies: + clean-stack: 4.2.0 + indent-string: 5.0.0 + dev: true + + /airbnb-prop-types@2.16.0(react@18.2.0): + resolution: {integrity: sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==} + peerDependencies: + react: ^0.14 || ^15.0.0 || ^16.0.0-alpha + dependencies: + array.prototype.find: 2.2.2 + function.prototype.name: 1.1.6 + is-regex: 1.1.4 + object-is: 1.1.5 + object.assign: 4.1.5 + object.entries: 1.1.7 + prop-types: 15.8.1 + prop-types-exact: 1.2.0 + react: 18.2.0 + react-is: 18.2.0 + dev: true + + /ajv-errors@1.0.1(ajv@6.12.6): + resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + dev: false + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv@8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /algoliasearch@4.22.1: + resolution: {integrity: sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==} + dependencies: + '@algolia/cache-browser-local-storage': 4.22.1 + '@algolia/cache-common': 4.22.1 + '@algolia/cache-in-memory': 4.22.1 + '@algolia/client-account': 4.22.1 + '@algolia/client-analytics': 4.22.1 + '@algolia/client-common': 4.22.1 + '@algolia/client-personalization': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/logger-console': 4.22.1 + '@algolia/requester-browser-xhr': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/requester-node-http': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: false + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + requiresBuild: true + dev: true + optional: true + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + + /anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + requiresBuild: true + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + requiresBuild: true + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /append-transform@2.0.0: + resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + engines: {node: '>=8'} + dependencies: + default-require-extensions: 3.0.1 + dev: true + + /aproba@1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: false + + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: true + + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + dev: false + + /archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: false + + /archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + async: 3.2.5 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + dev: false + + /archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: true + + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + + /are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: true + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.3 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: false + + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: false + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-parallel@0.1.3: + resolution: {integrity: sha512-TDPTwSWW5E4oiFiKmz6RGJ/a80Y91GuLgUYuLd49+XBS75tYo8PNgaT2K/OxuQYqkoI852MDGBorg9OcUSTQ8w==} + dev: true + + /array-series@0.1.5: + resolution: {integrity: sha512-L0XlBwfx9QetHOsbLDrE/vh2t018w9462HM3iaFfxRiK83aJjAt/Ja3NMkOW7FICwWTlQBa3ZbL5FKhuQWkDrg==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: false + + /array.prototype.filter@1.0.3: + resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.find@2.2.2: + resolution: {integrity: sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.map@1.0.6: + resolution: {integrity: sha512-nK1psgF2cXqP3wSyCSq0Hc7zwNq3sfljQqaG27r/7a7ooNUnn5nGq6yYWyks9jMO5EoFQ0ax80hSg6oXSRNXaw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.reduce@1.0.6: + resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + + /arrify@3.0.0: + resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} + engines: {node: '>=12'} + dev: true + + /asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: false + + /assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + dependencies: + object.assign: 4.1.5 + util: 0.10.4 + dev: false + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: false + + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + + /ast-types@0.14.2: + resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + dev: false + + /async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + requiresBuild: true + dev: false + optional: true + + /async-retry@1.2.3: + resolution: {integrity: sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==} + dependencies: + retry: 0.12.0 + dev: true + + /async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: true + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: false + + /autoprefixer@10.4.19(postcss@8.4.38): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001606 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: true + + /axe-core@4.8.4: + resolution: {integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==} + engines: {node: '>=4'} + dev: true + + /axios@1.6.7(debug@4.3.4): + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: true + + /babel-core@7.0.0-bridge.0(@babel/core@7.24.4): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + dev: false + + /babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.24.4 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.91.0(webpack-cli@5.1.4) + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.24.0 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.24.4 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + + /babel-plugin-module-resolver@5.0.0: + resolution: {integrity: sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q==} + engines: {node: '>= 16'} + dependencies: + find-babel-config: 2.0.0 + glob: 8.1.0 + pkg-up: 3.1.0 + reselect: 4.1.8 + resolve: 1.22.8 + + /babel-plugin-optimize-clsx@2.6.2: + resolution: {integrity: sha512-TxgyjdVb7trTAsg/J5ByqJdbBPTYR8yaWLGQGpSxwygw8IFST5gEc1J9QktCGCHCb+69t04DWg9KOE0y2hN30w==} + dependencies: + '@babel/generator': 7.24.4 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + find-cache-dir: 3.3.2 + lodash: 4.17.21 + object-hash: 2.2.0 + + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.4): + resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.4 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + core-js-compat: 3.36.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4): + resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + transitivePeerDependencies: + - supports-color + + /babel-plugin-preval@5.1.0: + resolution: {integrity: sha512-G5R+xmo5LS41A4UyZjOjV0mp9AvkuCyUOAJ6TOv/jTZS+VKh7L7HUDRcCSOb0YCM/u0fFarh7Diz0wjY8rFNFg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.24.4 + '@types/babel__core': 7.20.5 + babel-plugin-macros: 3.1.0 + require-from-string: 2.0.2 + dev: false + + /babel-plugin-react-remove-properties@0.3.0: + resolution: {integrity: sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng==} + + /babel-plugin-replace-imports@1.0.2(patch_hash=h4cab4lqksemkw6ln3l3h4s77e): + resolution: {integrity: sha512-v+9S4FBg9wYit3c+bDxhRHv/pnhBhhneZOPvqT1c293SSjUuUy1MPK76TsJ9038fp/SD2/TNcqG5PUBoG9/ByQ==} + dependencies: + lodash.isempty: 4.4.0 + lodash.isfunction: 3.0.9 + lodash.isobject: 3.0.2 + lodash.isregexp: 4.0.1 + lodash.isstring: 4.0.1 + dev: true + patched: true + + /babel-plugin-search-and-replace@1.1.1: + resolution: {integrity: sha512-fjP2VTF3mxxOUnc96mdK22llH92A6gu7A5AFapJmgnqsQi3bqLduIRP0FpA2r5vRZOYPpnX4rE5izQlpsMBjSA==} + dev: true + + /babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + + /bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: false + + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true + + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: true + + /binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: false + optional: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + requiresBuild: true + + /binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: false + + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + requiresBuild: true + dependencies: + file-uri-to-path: 1.0.0 + dev: false + optional: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + /bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + dev: false + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + dev: true + + /boxen@7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false + + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: false + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: false + + /browserify-sign@4.2.2: + resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} + engines: {node: '>= 4'} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: false + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001606 + electron-to-chromium: 1.4.728 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: false + + /buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: true + + /buffer-from@0.1.2: + resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} + dev: false + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer-indexof-polyfill@1.0.2: + resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} + engines: {node: '>=0.10'} + dev: false + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false + + /buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: false + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + dev: false + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: false + + /builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.6.0 + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /byte-size@8.1.1: + resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} + engines: {node: '>=12.17'} + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /c8@7.14.0: + resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} + engines: {node: '>=10.12.0'} + hasBin: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.1.6 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 9.2.0 + yargs: 16.2.0 + yargs-parser: 20.2.9 + dev: false + + /cacache@12.0.4: + resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1(bluebird@3.7.2) + rimraf: 2.7.1 + ssri: 6.0.2 + unique-filename: 1.1.1 + y18n: 4.0.3 + dev: false + + /cacache@17.1.4: + resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 7.18.3 + minipass: 7.0.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + dev: true + + /cacache@18.0.2: + resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 10.2.0 + minipass: 7.0.4 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + dev: true + + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: false + + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: true + + /caching-transform@4.0.0: + resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} + engines: {node: '>=8'} + dependencies: + hasha: 5.2.2 + make-dir: 3.1.0 + package-hash: 4.0.0 + write-file-atomic: 3.0.3 + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + dev: true + + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: true + + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false + + /caniuse-lite@1.0.30001606: + resolution: {integrity: sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==} + + /chai-dom@1.12.0(chai@4.4.1): + resolution: {integrity: sha512-pLP8h6IBR8z1AdeQ+EMcJ7dXPdsax/1Q7gdGZjsnAmSBl3/gItQUYSCo32br1qOy4SlcBjvqId7ilAf3uJ2K1w==} + engines: {node: '>= 0.12.0'} + peerDependencies: + chai: '>= 3' + dependencies: + chai: 4.4.1 + dev: true + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + dependencies: + traverse: 0.3.9 + dev: false + + /chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + dependencies: + chalk: 4.1.2 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.0: + resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chalk@5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chance@1.1.11: + resolution: {integrity: sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==} + dev: false + + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: true + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: true + + /chokidar@2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + requiresBuild: true + dependencies: + anymatch: 2.0.0 + async-each: 1.0.6 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: false + + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /clean-stack@4.2.0: + resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /clipboard-copy@4.0.1: + resolution: {integrity: sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==} + dev: false + + /clipboardy@3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + dev: true + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + + /cmd-shim@6.0.1: + resolution: {integrity: sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: true + + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: true + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + /colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + dev: true + + /columnify@1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + dev: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + dev: false + + /compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: false + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression-webpack-plugin@11.1.0(webpack@5.91.0): + resolution: {integrity: sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.91.0(webpack-cli@5.1.4) + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + + /concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + dev: true + + /concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.1 + shell-quote: 1.8.1 + spawn-command: 0.0.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + dev: true + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: false + + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: true + + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: false + + /content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-core@5.0.1: + resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} + engines: {node: '>=14'} + dependencies: + add-stream: 1.0.0 + conventional-changelog-writer: 6.0.1 + conventional-commits-parser: 4.0.0 + dateformat: 3.0.3 + get-pkg-repo: 4.2.1 + git-raw-commits: 3.0.0 + git-remote-origin-url: 2.0.0 + git-semver-tags: 5.0.1 + normalize-package-data: 3.0.3 + read-pkg: 3.0.0 + read-pkg-up: 3.0.0 + dev: true + + /conventional-changelog-preset-loader@3.0.0: + resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} + engines: {node: '>=14'} + dev: true + + /conventional-changelog-writer@6.0.1: + resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==} + engines: {node: '>=14'} + hasBin: true + dependencies: + conventional-commits-filter: 3.0.0 + dateformat: 3.0.3 + handlebars: 4.7.8 + json-stringify-safe: 5.0.1 + meow: 8.1.2 + semver: 7.6.0 + split: 1.0.1 + dev: true + + /conventional-commits-filter@3.0.0: + resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} + engines: {node: '>=14'} + dependencies: + lodash.ismatch: 4.4.0 + modify-values: 1.0.1 + dev: true + + /conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + dev: true + + /conventional-recommended-bump@7.0.1: + resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + concat-stream: 2.0.0 + conventional-changelog-preset-loader: 3.0.0 + conventional-commits-filter: 3.0.0 + conventional-commits-parser: 4.0.0 + git-raw-commits: 3.0.0 + git-semver-tags: 5.0.1 + meow: 8.1.2 + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + /convict@6.2.4: + resolution: {integrity: sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==} + engines: {node: '>=6'} + dependencies: + lodash.clonedeep: 4.5.0 + yargs-parser: 20.2.9 + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-concurrently@1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: false + + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: false + + /core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} + dependencies: + browserslist: 4.23.0 + + /core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: false + + /core-js@3.35.1: + resolution: {integrity: sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==} + requiresBuild: true + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /cosmiconfig@8.3.6(typescript@5.4.5): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.4.5 + dev: true + + /cp-file@10.0.0: + resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==} + engines: {node: '>=14.16'} + dependencies: + graceful-fs: 4.2.11 + nested-error-stacks: 2.1.1 + p-event: 5.0.1 + dev: true + + /cpy-cli@5.0.0: + resolution: {integrity: sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + cpy: 10.1.0 + meow: 12.1.1 + dev: true + + /cpy@10.1.0: + resolution: {integrity: sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==} + engines: {node: '>=16'} + dependencies: + arrify: 3.0.0 + cp-file: 10.0.0 + globby: 13.2.2 + junk: 4.0.1 + micromatch: 4.0.5 + nested-error-stacks: 2.1.1 + p-filter: 3.0.0 + p-map: 6.0.0 + dev: true + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false + + /crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + dev: false + + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: false + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: false + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false + + /cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + + /cross-spawn@4.0.2: + resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==} + dependencies: + lru-cache: 4.1.5 + which: 1.3.1 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.2 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: false + + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: false + + /css-vendor@2.0.8: + resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} + dependencies: + '@babel/runtime': 7.24.4 + is-in-browser: 1.1.3 + dev: false + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssjanus@2.1.0: + resolution: {integrity: sha512-kAijbny3GmdOi9k+QT6DGIXqFvL96aksNlGr4Rhk9qXDZYWUojU4bRc3IHWxdaLNOqgEZHuXoe5Wl2l7dxLW5g==} + engines: {node: '>=10.0.0'} + + /cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} + dependencies: + rrweb-cssom: 0.6.0 + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /custom-event@1.0.1: + resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + dev: true + + /cyclist@1.0.2: + resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} + dev: false + + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + dependencies: + delaunator: 5.0.1 + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /danger@11.3.1: + resolution: {integrity: sha512-+slkGnbf0czY7g4LSuYpYkKJgFrb9YIXFJvV5JAuLLF39CXLlUw0iebgeL3ASK1t6RDb8xe+Rk2F5ilh2Hdv2w==} + engines: {node: '>=14.13.1'} + hasBin: true + dependencies: + '@gitbeaker/core': 35.8.1 + '@gitbeaker/node': 35.8.1 + '@octokit/rest': 18.12.0 + async-retry: 1.2.3 + chalk: 2.4.2 + commander: 2.20.3 + core-js: 3.35.1 + debug: 4.3.4(supports-color@8.1.1) + fast-json-patch: 3.1.1 + get-stdin: 6.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + hyperlinker: 1.0.0 + json5: 2.2.3 + jsonpointer: 5.0.1 + jsonwebtoken: 9.0.2 + lodash.find: 4.6.0 + lodash.includes: 4.3.0 + lodash.isobject: 3.0.2 + lodash.keys: 4.2.0 + lodash.mapvalues: 4.6.0 + lodash.memoize: 4.1.2 + memfs-or-file-map-to-github-branch: 1.2.1 + micromatch: 4.0.5 + node-cleanup: 2.1.2 + node-fetch: 2.7.0 + override-require: 1.1.1 + p-limit: 2.3.0 + parse-diff: 0.7.1 + parse-git-config: 2.0.3 + parse-github-url: 1.0.2 + parse-link-header: 2.0.0 + pinpoint: 1.1.0 + prettyjson: 1.2.5 + readline-sync: 1.4.10 + regenerator-runtime: 0.13.11 + require-from-string: 2.0.2 + supports-hyperlinks: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + dev: true + + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + dev: true + + /date-fns-jalali@2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si): + resolution: {integrity: sha512-yjlI9O18Z6ryGNagryrLO8OQ+3rishM3+A0UOX2UX10cWMn2NTlQcQ+ywTEJvF5IJz0FwX/slt2nCcpyQ/c8gw==} + patched: true + + /date-fns-jalali@2.21.3-1: + resolution: {integrity: sha512-Sgw1IdgCgyWDKCpq6uwAu24vPMOtvmcXXXuETr1jQO/aVj4h23XAltcP7hLbo+osqoiJnPmiydbI/q1W7TYAjA==} + engines: {node: '>=0.11'} + dev: false + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.24.4 + + /date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + dev: true + + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + dev: true + + /dateformat@3.0.3: + resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} + dev: true + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.2 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /default-require-extensions@3.0.1: + resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} + engines: {node: '>=8'} + dependencies: + strip-bom: 4.0.0 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.7 + dev: false + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + dev: false + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + dev: false + + /delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dependencies: + robust-predicates: 3.0.2 + dev: false + + /delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-indent@5.0.0: + resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} + engines: {node: '>=4'} + dev: true + + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: true + + /di@0.0.1: + resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: true + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.24.4 + csstype: 3.1.3 + + /dom-serialize@2.2.1: + resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} + dependencies: + custom-event: 1.0.1 + ent: 2.2.0 + extend: 3.0.2 + void-elements: 2.0.1 + dev: true + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dev: true + + /dotenv@16.3.2: + resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} + engines: {node: '>=12'} + dev: true + + /duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + dependencies: + readable-stream: 2.3.8 + dev: false + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + dev: true + + /electron-to-chromium@1.4.728: + resolution: {integrity: sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw==} + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + + /engine.io-parser@5.2.1: + resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + engines: {node: '>=10.0.0'} + dev: true + + /engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 18.19.29 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4(supports-color@8.1.1) + engine.io-parser: 5.2.1 + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /enhanced-resolve@0.9.1: + resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.2.11 + memory-fs: 0.2.0 + tapable: 0.1.10 + dev: true + + /enhanced-resolve@4.5.0: + resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} + engines: {node: '>=6.9.0'} + dependencies: + graceful-fs: 4.2.11 + memory-fs: 0.5.0 + tapable: 1.1.3 + dev: false + + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + dev: true + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /envinfo@7.11.0: + resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} + engines: {node: '>=4'} + hasBin: true + + /envinfo@7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /enzyme-adapter-utils@1.14.1(react@18.2.0): + resolution: {integrity: sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ==} + peerDependencies: + react: 0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0 + dependencies: + airbnb-prop-types: 2.16.0(react@18.2.0) + function.prototype.name: 1.1.6 + has: 1.0.4 + object.assign: 4.1.5 + object.fromentries: 2.0.7 + prop-types: 15.8.1 + react: 18.2.0 + semver: 5.7.2 + dev: true + + /enzyme-shallow-equal@1.0.5: + resolution: {integrity: sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==} + dependencies: + has: 1.0.4 + object-is: 1.1.5 + dev: true + + /enzyme@3.11.0: + resolution: {integrity: sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==} + dependencies: + array.prototype.flat: 1.3.2 + cheerio: 1.0.0-rc.12 + enzyme-shallow-equal: 1.0.5 + function.prototype.name: 1.1.6 + has: 1.0.4 + html-element-map: 1.3.1 + is-boolean-object: 1.1.2 + is-callable: 1.2.7 + is-number-object: 1.0.7 + is-regex: 1.1.4 + is-string: 1.0.7 + is-subset: 0.1.1 + lodash.escape: 4.0.1 + lodash.isequal: 4.5.0 + object-inspect: 1.13.1 + object-is: 1.1.5 + object.assign: 4.1.5 + object.entries: 1.1.7 + object.values: 1.1.7 + raf: 3.4.1 + rst-selector-parser: 2.2.3 + string.prototype.trim: 1.2.8 + dev: true + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + dependencies: + prr: 1.0.1 + dev: false + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.2 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.0 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + + /escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + dev: true + + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.57.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + object.assign: 4.1.5 + object.entries: 1.1.7 + semver: 6.3.1 + dev: true + + /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 + '@typescript-eslint/parser': ^5.0.0 || ^6.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + dependencies: + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + dev: true + + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.57.0): + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + dependencies: + eslint: 8.57.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-react: 7.33.2(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + object.assign: 4.1.5 + object.entries: 1.1.7 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.91.0): + resolution: {integrity: sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA==} + engines: {node: '>= 6'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + webpack: '>=1.11.0' + dependencies: + array.prototype.find: 2.2.2 + debug: 3.2.7 + enhanced-resolve: 0.9.1 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + find-root: 1.1.0 + hasown: 2.0.0 + interpret: 1.4.0 + is-core-module: 2.13.1 + is-regex: 1.1.4 + lodash: 4.17.21 + resolve: 2.0.0-next.5 + semver: 5.7.2 + webpack: 5.91.0(webpack-cli@5.1.4) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.91.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-filenames@1.3.2(eslint@8.57.0): + resolution: {integrity: sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==} + peerDependencies: + eslint: '*' + dependencies: + eslint: 8.57.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.upperfirst: 4.3.1 + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsdoc@48.2.3(eslint@8.57.0): + resolution: {integrity: sha512-r9DMAmFs66VNvNqRLLjHejdnJtILrt3xGi+Qx0op0oRfFGVpOR1Hb3BC++MacseHx93d8SKYPhyrC9BS7Os2QA==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + dependencies: + '@es-joy/jsdoccomment': 0.42.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.4(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint: 8.57.0 + esquery: 1.5.0 + is-builtin-module: 3.2.1 + semver: 7.6.0 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.24.4 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.15 + eslint: 8.57.0 + hasown: 2.0.0 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + dev: true + + /eslint-plugin-mocha@10.4.1(eslint@8.57.0): + resolution: {integrity: sha512-G85ALUgKaLzuEuHhoW3HVRgPTmia6njQC3qCG6CEvA8/Ja9PDZnRZOuzekMki+HaViEQXINuYsmhp5WR5/4MfA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + eslint-utils: 3.0.0(eslint@8.57.0) + globals: 13.24.0 + rambda: 7.5.0 + dev: true + + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.57.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.57.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-scope@4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: false + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.57.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-to-babel@3.2.1: + resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} + engines: {node: '>=8.3.0'} + dependencies: + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + c8: 7.14.0 + transitivePeerDependencies: + - supports-color + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /eventemitter3@3.1.2: + resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: false + + /exceljs@4.4.0: + resolution: {integrity: sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==} + engines: {node: '>=8.3.0'} + dependencies: + archiver: 5.3.2 + dayjs: 1.11.10 + fast-csv: 4.3.6 + jszip: 3.10.1 + readable-stream: 3.6.2 + saxes: 5.0.1 + tmp: 0.2.1 + unzipper: 0.10.14 + uuid: 8.3.2 + dev: false + + /execa@5.0.0: + resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: true + + /expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + dev: true + + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /fast-csv@4.3.6: + resolution: {integrity: sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==} + engines: {node: '>=10.0.0'} + dependencies: + '@fast-csv/format': 4.3.5 + '@fast-csv/parse': 4.3.6 + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-patch@3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + /fastq@1.17.0: + resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /fg-loadcss@3.1.0: + resolution: {integrity: sha512-UgtXKza8nBUO6UWW4c+MOprRL4W5WbIkzPJafnw6y6f5jhA3FiSZkWz8eXeAeX+mC4A/qq0ByDLiAk6erNARaQ==} + engines: {node: '>= 11.9.0'} + dev: false + + /figgy-pudding@3.5.2: + resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} + deprecated: This module is no longer supported. + dev: false + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + requiresBuild: true + dev: false + optional: true + + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: false + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: true + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-babel-config@2.0.0: + resolution: {integrity: sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw==} + engines: {node: '>=16.0.0'} + dependencies: + json5: 2.2.3 + path-exists: 4.0.0 + + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + dev: true + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + /find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /finity@0.5.4: + resolution: {integrity: sha512-3l+5/1tuw616Lgb0QBimxfdd2TqaDGpfCBpfX6EqtFmqUV3FtQnVEX4Aa62DagYEqnsTIjZcTfbq9msDbXYgyA==} + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /flow-parser@0.227.0: + resolution: {integrity: sha512-nOygtGKcX/siZK/lFzpfdHEfOkfGcTW7rNroR1Zsz6T/JxSahPALXVt5qVHq/fgvMJuv096BTKbgxN3PzVBaDA==} + engines: {node: '>=0.4.0'} + dev: false + + /flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /follow-redirects@1.15.5(debug@4.3.4): + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: false + + /foreground-child@2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 3.0.7 + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /format-util@1.0.5: + resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: false + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /fromentries@1.3.2: + resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} + dev: true + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + /fs-exists-sync@0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: true + + /fs-write-stream-atomic@1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + dependencies: + graceful-fs: 4.2.11 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.8 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.18.0 + dev: false + optional: true + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /fstream@1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.2.11 + inherits: 2.0.4 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: false + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: true + + /gaxios@6.1.1: + resolution: {integrity: sha512-bw8smrX+XlAoo9o1JAksBwX+hi/RG15J+NTSxmNPIclKC3ZVK6C2afwY8OSdRvOK0+ZLecUJYtj2MmjOt3Dm0w==} + engines: {node: '>=14'} + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.2 + is-stream: 2.0.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + dependencies: + gaxios: 6.1.1 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-pkg-repo@4.2.1: + resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} + engines: {node: '>=6.9.0'} + hasBin: true + dependencies: + '@hutson/parse-repository-url': 3.0.2 + hosted-git-info: 4.1.0 + through2: 2.0.5 + yargs: 16.2.0 + dev: true + + /get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + dev: true + + /get-stdin@6.0.0: + resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} + engines: {node: '>=4'} + dev: true + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream@6.0.0: + resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} + engines: {node: '>=10'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: false + + /git-config-path@1.0.1: + resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + fs-exists-sync: 0.1.0 + homedir-polyfill: 1.0.3 + dev: true + + /git-raw-commits@3.0.0: + resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + dargs: 7.0.0 + meow: 8.1.2 + split2: 3.2.2 + dev: true + + /git-remote-origin-url@2.0.0: + resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} + engines: {node: '>=4'} + dependencies: + gitconfiglocal: 1.0.0 + pify: 2.3.0 + dev: true + + /git-semver-tags@5.0.1: + resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + meow: 8.1.2 + semver: 7.6.0 + dev: true + + /git-up@7.0.0: + resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + dependencies: + is-ssh: 1.4.0 + parse-url: 8.1.0 + dev: true + + /git-url-parse@13.1.0: + resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} + dependencies: + git-up: 7.0.0 + dev: true + + /gitconfiglocal@1.0.0: + resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} + dependencies: + ini: 1.3.8 + dev: true + + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: true + + /glob-gitignore@1.0.14: + resolution: {integrity: sha512-YuAEPqL58bOQDqDF2kMv009rIjSAtPs+WPzyGbwRWK+wD0UWQVRoP34Pz6yJ6ivco65C9tZnaIt0I3JCuQ8NZQ==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.3 + ignore: 5.3.0 + lodash.difference: 4.5.0 + lodash.union: 4.6.0 + make-array: 1.0.5 + util.inherits: 1.0.3 + dev: true + + /glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + requiresBuild: true + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: false + optional: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + + /glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /globby@14.0.0: + resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 1.0.0 + fast-glob: 3.3.2 + ignore: 5.3.0 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + + /gm@1.25.0: + resolution: {integrity: sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==} + engines: {node: '>=14'} + dependencies: + array-parallel: 0.1.3 + array-series: 0.1.5 + cross-spawn: 4.0.2 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + dev: true + + /google-auth-library@9.7.0: + resolution: {integrity: sha512-I/AvzBiUXDzLOy4iIZ2W+Zq33W4lcukQv1nl7C8WUA6SQwyQwUwu3waNmWNAvzds//FG8SZ+DnKnW/2k6mQS8A==} + engines: {node: '>=14'} + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.1.1 + gcp-metadata: 6.1.0 + gtoken: 7.0.1 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /googleapis-common@7.0.1: + resolution: {integrity: sha512-mgt5zsd7zj5t5QXvDanjWguMdHAcJmmDrF9RkInCecNsyV7S7YtGqm5v2IWONNID88osb7zmx5FtrAP12JfD0w==} + engines: {node: '>=14.0.0'} + dependencies: + extend: 3.0.2 + gaxios: 6.1.1 + google-auth-library: 9.7.0 + qs: 6.11.2 + url-template: 2.0.8 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /gtoken@7.0.1: + resolution: {integrity: sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==} + engines: {node: '>=14.0.0'} + dependencies: + gaxios: 6.1.1 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@2.0.0: + resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: true + + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: false + + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: false + + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: false + + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: false + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 18.2.0 + + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info@3.0.8: + resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + lru-cache: 7.18.3 + dev: true + + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.2.0 + dev: true + + /html-element-map@1.3.1: + resolution: {integrity: sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==} + dependencies: + array.prototype.filter: 1.0.3 + call-bind: 1.0.5 + dev: true + + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + dependencies: + whatwg-encoding: 3.1.1 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.27.0 + dev: true + + /html-tokenize@2.0.1: + resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} + hasBin: true + dependencies: + buffer-from: 0.1.2 + inherits: 2.0.4 + minimist: 1.2.8 + readable-stream: 1.0.34 + through2: 0.4.2 + dev: false + + /html-webpack-plugin@5.6.0(webpack@5.91.0): + resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.91.0(webpack-cli@5.1.4) + dev: true + + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: true + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.5(debug@4.3.4) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: false + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: true + + /hyperlinker@1.0.0: + resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} + engines: {node: '>=4'} + dev: true + + /hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /iferr@0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + dev: false + + /ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minimatch: 5.1.6 + dev: true + + /ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 9.0.3 + dev: true + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + dev: true + + /infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /init-package-json@5.0.0: + resolution: {integrity: sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-package-arg: 10.1.0 + promzard: 1.0.0 + read: 2.1.0 + read-package-json: 6.0.4 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.0 + dev: true + + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + dependencies: + hasown: 2.0.0 + dev: false + + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + binary-extensions: 1.13.1 + dev: false + optional: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.9.0 + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + + /is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.0 + dev: false + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: false + + /is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: false + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-electron@2.2.2: + resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} + dev: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + is-extglob: 2.1.1 + dev: false + optional: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-in-browser@1.1.3: + resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + /is-port-reachable@4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-ssh@1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + dependencies: + protocols: 2.0.1 + dev: true + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream@2.0.0: + resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} + engines: {node: '>=8'} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-subset@0.1.1: + resolution: {integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==} + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true + + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: false + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + /istanbul-lib-hook@3.0.0: + resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} + engines: {node: '>=8'} + dependencies: + append-transform: 2.0.0 + dev: true + + /istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.24.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.24.4 + '@babel/parser': 7.24.4 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-processinfo@2.0.3: + resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} + engines: {node: '>=8'} + dependencies: + archy: 1.0.0 + cross-spawn: 7.0.3 + istanbul-lib-coverage: 3.2.2 + p-map: 3.0.0 + rimraf: 3.0.2 + uuid: 8.3.2 + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + /istanbul@0.4.5: + resolution: {integrity: sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==} + deprecated: |- + This module is no longer maintained, try this instead: + npm i nyc + Visit https://istanbul.js.org/integrations for other alternatives. + hasBin: true + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + dev: true + + /iterate-iterator@1.0.2: + resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} + dev: true + + /iterate-value@1.0.2: + resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==} + dependencies: + es-get-iterator: 1.1.3 + iterate-iterator: 1.0.2 + dev: true + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /jalaali-js@1.2.6: + resolution: {integrity: sha512-io974va+Qyu+UfuVX3UIAgJlxLhAMx9Y8VMfh+IG00Js7hXQo1qNQuwSiSa0xxco0SVgx5HWNkaiCcV+aZ8WPw==} + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.19.29 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jscodeshift-add-imports@1.0.10(jscodeshift@0.13.1): + resolution: {integrity: sha512-VUe9DJ3zkWIR62zSRQnmsOVeyt77yD8knvYNna/PzRZlF9j799hJw5sqTZu4EX16XLIqS3FxWz3nXuGuiw9iyQ==} + peerDependencies: + jscodeshift: ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 + dependencies: + '@babel/traverse': 7.24.1 + jscodeshift: 0.13.1(@babel/preset-env@7.24.4) + jscodeshift-find-imports: 2.0.4(jscodeshift@0.13.1) + transitivePeerDependencies: + - supports-color + dev: false + + /jscodeshift-find-imports@2.0.4(jscodeshift@0.13.1): + resolution: {integrity: sha512-HxOzjWDOFFSCf8EKSTQGqCxXeRFqZszOywnZ0HuMB9YPDFHVpxftGRsY+QS+Qq8o2qUojlmNU3JEHts5DWYS1A==} + peerDependencies: + jscodeshift: ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 + dependencies: + jscodeshift: 0.13.1(@babel/preset-env@7.24.4) + dev: false + + /jscodeshift@0.13.1(@babel/preset-env@7.24.4): + resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.4) + '@babel/preset-env': 7.24.4(@babel/core@7.24.4) + '@babel/preset-flow': 7.23.3(@babel/core@7.24.4) + '@babel/preset-typescript': 7.23.3(@babel/core@7.24.4) + '@babel/register': 7.23.7(@babel/core@7.24.4) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.4) + chalk: 4.1.2 + flow-parser: 0.227.0 + graceful-fs: 4.2.11 + micromatch: 3.1.10 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.20.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} + dev: true + + /jsdom@23.1.0: + resolution: {integrity: sha512-wRscu8dBFxi7O65Cvi0jFRDv0Qa7XEHPix8Qg/vlXHLAMQsRWV1EDeQHBermzXf4Dt7JtFgBLbva3iTcBZDXEQ==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + cssstyle: 4.0.1 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + ws: 8.16.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.1.2 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: true + + /jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.6.0 + dev: true + + /jss-plugin-camel-case@10.10.0: + resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} + dependencies: + '@babel/runtime': 7.24.4 + hyphenate-style-name: 1.0.4 + jss: 10.10.0 + dev: false + + /jss-plugin-default-unit@10.10.0: + resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} + dependencies: + '@babel/runtime': 7.24.4 + jss: 10.10.0 + dev: false + + /jss-plugin-global@10.10.0: + resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} + dependencies: + '@babel/runtime': 7.24.4 + jss: 10.10.0 + dev: false + + /jss-plugin-nested@10.10.0: + resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} + dependencies: + '@babel/runtime': 7.24.4 + jss: 10.10.0 + tiny-warning: 1.0.3 + dev: false + + /jss-plugin-props-sort@10.10.0: + resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} + dependencies: + '@babel/runtime': 7.24.4 + jss: 10.10.0 + dev: false + + /jss-plugin-rule-value-function@10.10.0: + resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} + dependencies: + '@babel/runtime': 7.24.4 + jss: 10.10.0 + tiny-warning: 1.0.3 + dev: false + + /jss-plugin-template@10.10.0: + resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==} + dependencies: + '@babel/runtime': 7.24.4 + jss: 10.10.0 + tiny-warning: 1.0.3 + dev: true + + /jss-plugin-vendor-prefixer@10.10.0: + resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} + dependencies: + '@babel/runtime': 7.24.4 + css-vendor: 2.0.8 + jss: 10.10.0 + dev: false + + /jss-rtl@0.3.0(jss@10.10.0): + resolution: {integrity: sha512-rg9jJmP1bAyhNOAp+BDZgOP/lMm4+oQ76qGueupDQ68Wq+G+6SGvCZvhIEg8OHSONRWOwFT6skCI+APGi8DgmA==} + peerDependencies: + jss: ^10.0.0 + dependencies: + jss: 10.10.0 + rtl-css-js: 1.16.1 + dev: true + + /jss@10.10.0: + resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} + dependencies: + '@babel/runtime': 7.24.4 + csstype: 3.1.3 + is-in-browser: 1.1.3 + tiny-warning: 1.0.3 + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 + dev: true + + /jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: false + + /junk@4.0.1: + resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} + engines: {node: '>=12.20'} + dev: true + + /just-extend@6.2.0: + resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} + dev: true + + /jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: true + + /jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + dependencies: + jwa: 2.0.0 + safe-buffer: 5.2.1 + dev: true + + /karma-chrome-launcher@3.2.0: + resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} + dependencies: + which: 1.3.1 + dev: true + + /karma-mocha@2.0.1(patch_hash=r6idlcdpax26bbzwxyjicxb5ra): + resolution: {integrity: sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==} + dependencies: + minimist: 1.2.8 + dev: true + patched: true + + /karma-parallel@0.3.1(karma@6.4.3): + resolution: {integrity: sha512-64jxNYamYi/9Y67h4+FfViSYhwDgod3rLuq+ZdZ0c3XeZFp/3q3v3HVkd8b5Czp3hCB+LLF8DIv4zlR4xFqbRw==} + engines: {node: '>=6'} + peerDependencies: + karma: '>= 1.0.0' + dependencies: + istanbul: 0.4.5 + karma: 6.4.3 + lodash: 4.17.21 + dev: true + + /karma-sourcemap-loader@0.4.0: + resolution: {integrity: sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA==} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /karma-webpack@5.0.1(webpack@5.91.0): + resolution: {integrity: sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ==} + engines: {node: '>= 18'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + glob: 7.2.3 + minimatch: 9.0.3 + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-merge: 4.2.2 + dev: true + + /karma@6.4.3: + resolution: {integrity: sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.2 + braces: 3.0.2 + chokidar: 3.5.3 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + http-proxy: 1.18.1 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.9.1 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.7.4 + source-map: 0.6.1 + tmp: 0.2.1 + ua-parser-js: 0.7.37 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.8 + dev: false + + /lerna@8.1.2: + resolution: {integrity: sha512-RCyBAn3XsqqvHbz3TxLfD7ylqzCi1A2UJnFEZmhURgx589vM3qYWQa/uOMeEEf565q6cAdtmulITciX1wgkAtw==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + '@lerna/create': 8.1.2(typescript@5.4.5) + '@npmcli/run-script': 7.0.2 + '@nx/devkit': 17.3.0(nx@17.3.0) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 19.0.11 + byte-size: 8.1.1 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 6.0.1 + columnify: 1.6.0 + conventional-changelog-angular: 7.0.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 8.3.6(typescript@5.4.5) + dedent: 0.7.0 + envinfo: 7.8.1 + execa: 5.0.0 + fs-extra: 11.2.0 + get-port: 5.1.1 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.11 + has-unicode: 2.0.1 + import-local: 3.1.0 + ini: 1.3.8 + init-package-json: 5.0.0 + inquirer: 8.2.6 + is-ci: 3.0.1 + is-stream: 2.0.0 + jest-diff: 29.7.0 + js-yaml: 4.1.0 + libnpmaccess: 7.0.2 + libnpmpublish: 7.3.0 + load-json-file: 6.2.0 + lodash: 4.17.21 + make-dir: 4.0.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: 14.0.5 + npmlog: 6.0.2 + nx: 17.3.0 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-pipe: 3.1.0 + p-queue: 6.6.2 + p-reduce: 2.1.0 + p-waterfall: 2.1.1 + pacote: 17.0.6 + pify: 5.0.0 + read-cmd-shim: 4.0.0 + read-package-json: 6.0.4 + resolve-from: 5.0.0 + rimraf: 4.4.1 + semver: 7.6.0 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: 9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 + typescript: 5.4.5 + upath: 2.0.1 + uuid: 9.0.1 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.0 + write-file-atomic: 5.0.1 + write-pkg: 4.0.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - bluebird + - debug + - encoding + - supports-color + dev: true + + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /li@1.3.0: + resolution: {integrity: sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw==} + dev: true + + /libnpmaccess@7.0.2: + resolution: {integrity: sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-package-arg: 10.1.0 + npm-registry-fetch: 14.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /libnpmpublish@7.3.0: + resolution: {integrity: sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ci-info: 3.9.0 + normalize-package-data: 5.0.0 + npm-package-arg: 10.1.0 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 + semver: 7.6.0 + sigstore: 1.9.0 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + dependencies: + immediate: 3.0.6 + dev: false + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + dependencies: + uc.micro: 2.0.0 + dev: true + + /listenercount@1.0.1: + resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} + dev: false + + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + + /load-json-file@6.2.0: + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 + dev: true + + /loader-runner@2.4.0: + resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dev: false + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + /loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + dev: false + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + + /locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + /lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: false + + /lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + /lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} + dev: true + + /lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + dev: false + + /lodash.find@4.6.0: + resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==} + dev: true + + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: false + + /lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true + + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + + /lodash.groupby@4.6.0: + resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} + dev: false + + /lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + dev: true + + /lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + /lodash.isempty@4.4.0: + resolution: {integrity: sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + /lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + /lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + dev: true + + /lodash.ismatch@4.4.0: + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + dev: true + + /lodash.isnil@4.0.0: + resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==} + dev: false + + /lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + dev: true + + /lodash.isobject@3.0.2: + resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + /lodash.isregexp@4.0.1: + resolution: {integrity: sha512-rw9+95tYcUa9nQ1FgdtKvO+hReLGNqnNMHfLq8SwK5Mo6D0R0tIsnRHGHaTHSKeYBaLCJ1JvXWdz4UmpPZ2bag==} + dev: true + + /lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: true + + /lodash.isundefined@3.0.1: + resolution: {integrity: sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==} + dev: false + + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.keys@4.2.0: + resolution: {integrity: sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==} + dev: true + + /lodash.mapvalues@4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: false + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4(supports-color@8.1.1) + flatted: 3.2.9 + rfdc: 1.3.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + dev: true + + /longest-streak@2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + dev: true + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + /luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + /make-array@1.0.5: + resolution: {integrity: sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA==} + engines: {node: '>=0.10.0'} + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + + /make-fetch-happen@11.1.1: + resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + agentkeepalive: 4.5.0 + cacache: 17.1.4 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 5.0.0 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /make-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/agent': 2.2.0 + cacache: 18.0.2 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: false + + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: false + + /markdown-it@14.0.0: + resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.0.0 + dev: true + + /markdown-to-jsx@7.4.1(react@18.2.0): + resolution: {integrity: sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + dependencies: + react: 18.2.0 + dev: false + + /markdownlint-cli2-formatter-default@0.0.4(markdownlint-cli2@0.12.1): + resolution: {integrity: sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==} + peerDependencies: + markdownlint-cli2: '>=0.0.4' + dependencies: + markdownlint-cli2: 0.12.1 + dev: true + + /markdownlint-cli2@0.12.1: + resolution: {integrity: sha512-RcK+l5FjJEyrU3REhrThiEUXNK89dLYNJCYbvOUKypxqIGfkcgpz8g08EKqhrmUbYfYoLC5nEYQy53NhJSEtfQ==} + engines: {node: '>=18'} + hasBin: true + dependencies: + globby: 14.0.0 + jsonc-parser: 3.2.0 + markdownlint: 0.33.0 + markdownlint-cli2-formatter-default: 0.0.4(markdownlint-cli2@0.12.1) + micromatch: 4.0.5 + yaml: 2.3.4 + dev: true + + /markdownlint-micromark@0.1.8: + resolution: {integrity: sha512-1ouYkMRo9/6gou9gObuMDnvZM8jC/ly3QCFQyoSPCS2XV1ZClU0xpKbL1Ar3bWWRT1RnBZkWUEiNKrI2CwiBQA==} + engines: {node: '>=16'} + dev: true + + /markdownlint@0.33.0: + resolution: {integrity: sha512-4lbtT14A3m0LPX1WS/3d1m7Blg+ZwiLq36WvjQqFGsX3Gik99NV+VXp/PW3n+Q62xyPdbvGOCfjPqjW+/SKMig==} + engines: {node: '>=18'} + dependencies: + markdown-it: 14.0.0 + markdownlint-micromark: 0.1.8 + dev: true + + /marked@5.1.2: + resolution: {integrity: sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==} + engines: {node: '>= 16'} + hasBin: true + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-markdown@0.6.5: + resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} + dependencies: + '@types/unist': 2.0.10 + longest-streak: 2.0.4 + mdast-util-to-string: 2.0.0 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + zwitch: 1.0.5 + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /memfs-or-file-map-to-github-branch@1.2.1: + resolution: {integrity: sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ==} + dependencies: + '@octokit/rest': 18.12.0 + transitivePeerDependencies: + - encoding + dev: true + + /memory-fs@0.2.0: + resolution: {integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==} + dev: true + + /memory-fs@0.4.1: + resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} + dependencies: + errno: 0.1.8 + readable-stream: 2.3.8 + dev: false + + /memory-fs@0.5.0: + resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dependencies: + errno: 0.1.8 + readable-stream: 2.3.8 + dev: false + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + dev: true + + /meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: false + + /mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.33.0 + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false + + /minimatch@3.0.5: + resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + minipass: 7.0.4 + dev: true + + /minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: true + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /mississippi@3.0.0: + resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} + engines: {node: '>=4.0.0'} + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.0 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: false + + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: false + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mocha@10.4.0: + resolution: {integrity: sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /modify-values@1.0.1: + resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} + engines: {node: '>=0.10.0'} + dev: true + + /moment-hijri@2.1.2: + resolution: {integrity: sha512-p5ZOA1UzBHAAXiePh37XRjjwuyH78+1ShYZ7R6jogxketewG7kTCUjUmcP9c4Qsx8D8cqxwUWrESjtgdT6tNoA==} + dependencies: + moment: 2.30.1 + + /moment-jalaali@0.10.0: + resolution: {integrity: sha512-XICH1+UHd3zyaE1bXWQBlhoXBqbzEyFfT0TrifNobHxLALRuTSwXn376bX8FmkYg9mZimevwwdd6EB57s5wuFA==} + dependencies: + jalaali-js: 1.2.6 + moment: 2.30.1 + moment-timezone: 0.5.45 + rimraf: 3.0.2 + + /moment-timezone@0.5.45: + resolution: {integrity: sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==} + dependencies: + moment: 2.30.1 + + /moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + + /moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + dev: true + + /move-concurrently@1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: false + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: true + + /multipipe@1.0.2: + resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} + dependencies: + duplexer2: 0.1.4 + object-assign: 4.1.1 + dev: false + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + requiresBuild: true + dev: false + optional: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + dependencies: + commander: 2.20.3 + moo: 0.5.2 + railroad-diagrams: 1.0.0 + randexp: 0.4.6 + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /nested-error-stacks@2.1.1: + resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} + dev: true + + /next@14.1.4(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.1.4 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001606 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.1.4 + '@next/swc-darwin-x64': 14.1.4 + '@next/swc-linux-arm64-gnu': 14.1.4 + '@next/swc-linux-arm64-musl': 14.1.4 + '@next/swc-linux-x64-gnu': 14.1.4 + '@next/swc-linux-x64-musl': 14.1.4 + '@next/swc-win32-arm64-msvc': 14.1.4 + '@next/swc-win32-ia32-msvc': 14.1.4 + '@next/swc-win32-x64-msvc': 14.1.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /nise@5.1.7: + resolution: {integrity: sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ==} + dependencies: + '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers': 11.2.2 + '@sinonjs/text-encoding': 0.7.2 + just-extend: 6.2.0 + path-to-regexp: 6.2.1 + dev: true + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + dev: true + + /node-abi@3.54.0: + resolution: {integrity: sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: true + + /node-cleanup@2.1.2: + resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} + dev: true + + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + dev: false + + /node-environment-flags@1.0.6: + resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==} + dependencies: + object.getownpropertydescriptors: 2.1.7 + semver: 5.7.2 + dev: true + + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.10 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.6.0 + tar: 6.2.0 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /node-libs-browser@2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.1 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.3 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: false + + /node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + dev: true + + /node-preload@0.2.1: + resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} + engines: {node: '>=8'} + dependencies: + process-on-spawn: 1.0.0 + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + /nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.1 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.13.1 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dependencies: + remove-trailing-separator: 1.1.0 + dev: false + optional: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + dependencies: + npm-normalize-package-bin: 1.0.1 + dev: true + + /npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-normalize-package-bin: 3.0.1 + dev: true + + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.6.0 + dev: true + + /npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + dev: true + + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.6.0 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.6.0 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-package-arg@8.1.1: + resolution: {integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 3.0.8 + semver: 7.6.0 + validate-npm-package-name: 3.0.0 + dev: true + + /npm-packlist@5.1.1: + resolution: {integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + glob: 8.1.0 + ignore-walk: 5.0.1 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: true + + /npm-packlist@8.0.2: + resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.4 + dev: true + + /npm-pick-manifest@9.0.0: + resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.6.0 + dev: true + + /npm-registry-fetch@14.0.5: + resolution: {integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + make-fetch-happen: 11.1.1 + minipass: 5.0.0 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /npm-registry-fetch@16.1.0: + resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.1 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + dev: true + + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /nx@17.3.0: + resolution: {integrity: sha512-CoY0qUrO8xErbA/v/bbfDGs+KaD9MCO7PReqmIeyrtDNwFl6vnb+U2MpBxCsRP+YH2Oa8hI8Lu+kcnPktx2v6A==} + hasBin: true + requiresBuild: true + peerDependencies: + '@swc-node/register': ^1.6.7 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + dependencies: + '@nrwl/tao': 17.3.0 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.0-rc.46 + '@zkochan/js-yaml': 0.0.6 + axios: 1.6.7(debug@4.3.4) + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + dotenv: 16.3.2 + dotenv-expand: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 11.2.0 + ignore: 5.3.0 + jest-diff: 29.7.0 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.4 + minimatch: 9.0.3 + node-machine-id: 1.1.12 + npm-run-path: 4.0.1 + open: 8.4.2 + ora: 5.3.0 + semver: 7.5.3 + string-width: 4.2.3 + strong-log-transformer: 2.1.0 + tar-stream: 2.2.0 + tmp: 0.2.1 + tsconfig-paths: 4.2.0 + tslib: 2.6.2 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 17.3.0 + '@nx/nx-darwin-x64': 17.3.0 + '@nx/nx-freebsd-x64': 17.3.0 + '@nx/nx-linux-arm-gnueabihf': 17.3.0 + '@nx/nx-linux-arm64-gnu': 17.3.0 + '@nx/nx-linux-arm64-musl': 17.3.0 + '@nx/nx-linux-x64-gnu': 17.3.0 + '@nx/nx-linux-x64-musl': 17.3.0 + '@nx/nx-win32-arm64-msvc': 17.3.0 + '@nx/nx-win32-x64-msvc': 17.3.0 + transitivePeerDependencies: + - debug + dev: true + + /nyc@15.1.0: + resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} + engines: {node: '>=8.9'} + hasBin: true + dependencies: + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + caching-transform: 4.0.0 + convert-source-map: 1.9.0 + decamelize: 1.2.0 + find-cache-dir: 3.3.2 + find-up: 4.1.0 + foreground-child: 2.0.0 + get-package-type: 0.1.0 + glob: 7.2.3 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-hook: 3.0.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-processinfo: 2.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + make-dir: 3.1.0 + node-preload: 0.2.1 + p-map: 3.0.0 + process-on-spawn: 1.0.0 + resolve-from: 5.0.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + spawn-wrap: 2.0.0 + test-exclude: 6.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: false + + /object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: true + + /object-keys@0.4.0: + resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.getownpropertydescriptors@2.1.7: + resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} + engines: {node: '>= 0.8'} + dependencies: + array.prototype.reduce: 1.0.6 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + safe-array-concat: 1.1.0 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.3.0: + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: false + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /override-require@1.1.1: + resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==} + dev: true + + /p-cancelable@1.1.0: + resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} + engines: {node: '>=6'} + dev: true + + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + + /p-event@5.0.1: + resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-timeout: 5.1.0 + dev: true + + /p-filter@3.0.0: + resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-map: 5.5.0 + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map-series@2.1.0: + resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} + engines: {node: '>=8'} + dev: true + + /p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-map@5.5.0: + resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} + engines: {node: '>=12'} + dependencies: + aggregate-error: 4.0.1 + dev: true + + /p-map@6.0.0: + resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==} + engines: {node: '>=16'} + dev: true + + /p-pipe@3.1.0: + resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} + engines: {node: '>=8'} + dev: true + + /p-queue@2.4.2: + resolution: {integrity: sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==} + engines: {node: '>=4'} + dev: true + + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: true + + /p-reduce@2.1.0: + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} + dev: true + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: true + + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + + /p-timeout@5.1.0: + resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} + engines: {node: '>=12'} + dev: true + + /p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /p-waterfall@2.1.1: + resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} + engines: {node: '>=8'} + dependencies: + p-reduce: 2.1.0 + dev: true + + /package-hash@4.0.0: + resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.11 + hasha: 5.2.2 + lodash.flattendeep: 4.4.0 + release-zalgo: 1.0.0 + dev: true + + /pacote@17.0.6: + resolution: {integrity: sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + '@npmcli/git': 5.0.4 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 7.0.1 + '@npmcli/run-script': 7.0.4 + cacache: 18.0.2 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.1 + npm-packlist: 8.0.2 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 7.0.0 + read-package-json-fast: 3.0.2 + sigstore: 2.2.0 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /parallel-transform@1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + dependencies: + cyclist: 1.0.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-asn1@5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: false + + /parse-diff@0.7.1: + resolution: {integrity: sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==} + dev: true + + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /parse-git-config@2.0.3: + resolution: {integrity: sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==} + engines: {node: '>=6'} + dependencies: + expand-tilde: 2.0.2 + git-config-path: 1.0.1 + ini: 1.3.8 + dev: true + + /parse-github-url@1.0.2: + resolution: {integrity: sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse-link-header@2.0.0: + resolution: {integrity: sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==} + dependencies: + xtend: 4.0.2 + dev: true + + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + + /parse-path@7.0.0: + resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} + dependencies: + protocols: 2.0.1 + dev: true + + /parse-url@8.1.0: + resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + dependencies: + parse-path: 7.0.0 + dev: true + + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: true + + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: false + + /path-browserify@0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + dev: false + + /path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + requiresBuild: true + dev: false + optional: true + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-to-regexp@2.2.1: + resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + dev: true + + /path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: true + + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + dev: true + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: true + + /pinpoint@1.1.0: + resolution: {integrity: sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + + /playwright-core@1.41.2: + resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + engines: {node: '>=16'} + hasBin: true + dev: true + + /playwright@1.41.2: + resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright-core: 1.41.2 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /please-upgrade-node@3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + dependencies: + semver-compare: 1.0.0 + dev: true + + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: false + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: false + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.54.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: true + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: true + + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-quick@4.0.0(prettier@3.2.5): + resolution: {integrity: sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + ignore: 5.3.0 + mri: 1.2.0 + picocolors: 1.0.0 + picomatch: 3.0.1 + prettier: 3.2.5 + tslib: 2.6.2 + dev: true + + /prettyjson@1.2.5: + resolution: {integrity: sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==} + hasBin: true + dependencies: + colors: 1.4.0 + minimist: 1.2.8 + dev: true + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /process-on-spawn@1.0.0: + resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} + engines: {node: '>=8'} + dependencies: + fromentries: 1.3.2 + dev: true + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + /promise-inflight@1.0.1(bluebird@3.7.2): + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /promise.allsettled@1.0.7: + resolution: {integrity: sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==} + engines: {node: '>= 0.4'} + dependencies: + array.prototype.map: 1.0.6 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + iterate-value: 1.0.2 + dev: true + + /promzard@1.0.0: + resolution: {integrity: sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + read: 2.1.0 + dev: true + + /prop-types-exact@1.2.0: + resolution: {integrity: sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==} + dependencies: + has: 1.0.4 + object.assign: 4.1.5 + reflect.ownkeys: 0.2.0 + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 18.2.0 + + /protocols@2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: false + + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: false + + /pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: false + + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + /qjobs@1.2.0: + resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} + engines: {node: '>=0.9'} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: true + + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: false + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: true + + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + + /raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: true + + /railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + dev: true + + /rambda@7.5.0: + resolution: {integrity: sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==} + dev: true + + /randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + dependencies: + discontinuous-range: 1.0.0 + ret: 0.1.15 + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: false + + /range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /raw-loader@1.0.0(webpack@4.47.0): + resolution: {integrity: sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.3.0 + dependencies: + loader-utils: 1.4.2 + schema-utils: 1.0.0 + webpack: 4.47.0(webpack-cli@5.1.4) + dev: false + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /react-docgen@5.4.3: + resolution: {integrity: sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==} + engines: {node: '>=8.10.0'} + hasBin: true + dependencies: + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/runtime': 7.24.4 + ast-types: 0.14.2 + commander: 2.20.3 + doctrine: 3.0.0 + estree-to-babel: 3.2.1 + neo-async: 2.6.2 + node-dir: 0.1.17 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-hook-form@7.51.2(react@18.2.0): + resolution: {integrity: sha512-y++lwaWjtzDt/XNnyGDQy6goHskFualmDlf+jzEZvjvz6KWDf7EboL7pUvRCzPTJd0EOPpdekYaQLEvvG6m6HA==} + engines: {node: '>=12.22.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + dependencies: + react: 18.2.0 + dev: false + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /react-reconciler@0.29.0(react@18.2.0): + resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: true + + /react-router-dom@6.22.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.15.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.22.3(react@18.2.0) + + /react-router@6.22.3(react@18.2.0): + resolution: {integrity: sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.15.3 + react: 18.2.0 + + /react-runner@1.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KyAzNzSVdrBc4A7aGW3FD0wVuujfgcBlyIGF0QVicJu0ucMpLYyTHE+PgBu82Iq698TPKRH+eEi6Mrq/e7OffA==} + peerDependencies: + react: ^16.0.0 || ^17 || ^18 + react-dom: ^16.0.0 || ^17 || ^18 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + sucrase: 3.35.0 + dev: false + + /react-shallow-renderer@16.15.0(react@18.2.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + object-assign: 4.1.1 + react: 18.2.0 + react-is: 18.2.0 + dev: true + + /react-simple-code-editor@0.13.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XYeVwRZwgyKtjNIYcAEgg2FaQcCZwhbarnkJIV20U2wkCU9q/CPFBo8nRXrK4GXUz3AvbqZFsZRrpUTkqqEYyQ==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-test-renderer@18.2.0(react@18.2.0): + resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} + peerDependencies: + react: ^18.2.0 + dependencies: + react: 18.2.0 + react-is: 18.2.0 + react-shallow-renderer: 16.15.0(react@18.2.0) + scheduler: 0.23.0 + dev: true + + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.24.4 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-cmd-shim@4.0.0: + resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-package-json@6.0.4: + resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 5.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-package-json@7.0.0: + resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-pkg-up@3.0.0: + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + engines: {node: '>=4'} + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + dev: true + + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /read@2.1.0: + resolution: {integrity: sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + mute-stream: 1.0.0 + dev: true + + /readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + dependencies: + minimatch: 5.1.6 + dev: false + + /readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + requiresBuild: true + dependencies: + picomatch: 2.3.1 + + /readline-sync@1.4.10: + resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} + engines: {node: '>= 0.8.0'} + dev: true + + /recast@0.20.5: + resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.14.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + + /recast@0.23.6: + resolution: {integrity: sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.6.2 + dev: false + + /rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + dependencies: + resolve: 1.22.8 + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /reflect.ownkeys@0.2.0: + resolution: {integrity: sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==} + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.24.4 + + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: false + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + /registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + dev: true + + /registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + dependencies: + rc: 1.2.8 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /release-zalgo@1.0.0: + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} + engines: {node: '>=4'} + dependencies: + es6-error: 4.1.1 + dev: true + + /remark-parse@9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-stringify@9.0.1: + resolution: {integrity: sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /remark@13.0.0: + resolution: {integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==} + dependencies: + remark-parse: 9.0.0 + remark-stringify: 9.0.1 + unified: 9.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + requiresBuild: true + dev: false + optional: true + + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: true + + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: false + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: false + + /resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 9.3.5 + dev: true + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: false + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + dev: false + + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + + /rst-selector-parser@2.2.3: + resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} + dependencies: + lodash.flattendeep: 4.4.0 + nearley: 2.20.1 + dev: true + + /rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + dependencies: + '@babel/runtime': 7.24.4 + dev: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /run-queue@1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + dependencies: + aproba: 1.2.0 + dev: false + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-regex-test@1.0.2: + resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + dev: false + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /schema-utils@1.0.0: + resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1(ajv@6.12.6) + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true + + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + dev: false + + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: false + + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + + /serve-handler@6.1.5: + resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /serve@14.2.1: + resolution: {integrity: sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==} + engines: {node: '>= 14'} + hasBin: true + dependencies: + '@zeit/schemas': 2.29.0 + ajv: 8.11.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.7.4 + is-port-reachable: 4.0.0 + serve-handler: 6.1.5 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false + + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.6.0 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /sigstore@1.9.0: + resolution: {integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 1.0.0 + '@sigstore/tuf': 1.0.3 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sigstore@2.2.0: + resolution: {integrity: sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 2.2.1 + '@sigstore/tuf': 2.3.0 + '@sigstore/verify': 0.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: true + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: true + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: true + + /sinon@16.1.3: + resolution: {integrity: sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==} + dependencies: + '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers': 10.3.0 + '@sinonjs/samsam': 8.0.0 + diff: 5.1.0 + nise: 5.1.7 + supports-color: 7.2.0 + dev: true + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + + /slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: false + + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /socket.io-adapter@2.5.2: + resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + dependencies: + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /socket.io@4.7.4: + resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4(supports-color@8.1.1) + engine.io: 6.5.4 + socket.io-adapter: 2.5.2 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: true + + /sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: false + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: false + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: false + + /source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + amdefine: 1.0.1 + dev: true + optional: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + dev: true + + /spawn-wrap@2.0.0: + resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} + engines: {node: '>=8'} + dependencies: + foreground-child: 2.0.0 + is-windows: 1.0.2 + make-dir: 3.1.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + which: 2.0.2 + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + dependencies: + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: true + + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: false + + /split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.2 + dev: true + + /split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + dependencies: + through: 2.3.8 + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /ssri@6.0.2: + resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} + dependencies: + figgy-pudding: 3.5.2 + dev: false + + /ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.6 + dev: true + + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: false + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.6 + dev: true + + /stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /stream-each@1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.3 + dev: false + + /stream-http@2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: false + + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: false + + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: true + + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: true + + /string-replace-loader@3.1.0(webpack@5.91.0): + resolution: {integrity: sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ==} + peerDependencies: + webpack: ^5 + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.91.0(webpack-cli@5.1.4) + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strong-log-transformer@2.1.0: + resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} + engines: {node: '>=4'} + hasBin: true + dependencies: + duplexer: 0.1.2 + minimist: 1.2.8 + through: 2.3.8 + dev: true + + /styled-components@6.1.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + dependencies: + '@emotion/is-prop-valid': 1.2.1 + '@emotion/unitless': 0.8.0 + '@types/stylis': 4.2.0 + css-to-react-native: 3.2.0 + csstype: 3.1.2 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + stylis: 4.3.1 + tslib: 2.5.0 + dev: false + + /styled-jsx@5.1.1(@babel/core@7.24.4)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.24.4 + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /stylis-plugin-rtl@2.1.1(stylis@4.3.1): + resolution: {integrity: sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg==} + peerDependencies: + stylis: 4.x + dependencies: + cssjanus: 2.1.0 + stylis: 4.3.1 + + /stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-hyperlinks@1.0.1: + resolution: {integrity: sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==} + engines: {node: '>=4'} + dependencies: + has-flag: 2.0.0 + supports-color: 5.5.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + dev: true + + /tapable@0.1.10: + resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==} + engines: {node: '>=0.6'} + dev: true + + /tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: false + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.7 + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + /tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.6 + dev: true + + /tar@6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.3.6 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /temp-dir@1.0.0: + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} + dev: true + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + dev: false + + /terser-webpack-plugin@1.4.5(webpack@4.47.0): + resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.1 + webpack: 4.47.0(webpack-cli@5.1.4) + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: false + + /terser-webpack-plugin@5.3.10(webpack@5.91.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.91.0(webpack-cli@5.1.4) + + /terser@4.8.1: + resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + acorn: 8.11.3 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.21 + dev: false + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + /text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + + /through2@0.4.2: + resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} + dependencies: + readable-stream: 1.0.34 + xtend: 2.1.2 + dev: false + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: false + + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + + /to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + dev: false + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: false + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: true + + /traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} + dev: false + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: true + + /ts-api-utils@1.0.3(typescript@5.4.5): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.4.5 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + dev: true + + /tsutils@3.21.0(typescript@5.4.5): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.4.5 + dev: true + + /tsx@4.7.2: + resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.3 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /tty-browserify@0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + dev: false + + /tuf-js@1.1.7: + resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/models': 1.0.4 + debug: 4.3.4(supports-color@8.1.1) + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /tuf-js@2.2.0: + resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.4.1: + resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} + engines: {node: '>=6'} + dev: true + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ua-parser-js@0.7.37: + resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} + dev: true + + /uc.micro@2.0.0: + resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} + dev: true + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + + /unified@9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + dependencies: + '@types/unist': 2.0.10 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: false + + /unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: false + + /unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: false + + /unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: true + + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.10 + dev: true + + /unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 4.1.0 + dev: true + + /unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: true + + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: false + + /unzipper@0.10.14: + resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} + dependencies: + big-integer: 1.6.52 + binary: 0.3.0 + bluebird: 3.4.7 + buffer-indexof-polyfill: 1.0.2 + duplexer2: 0.1.4 + fstream: 1.0.12 + graceful-fs: 4.2.11 + listenercount: 1.0.1 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: false + + /upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + requiresBuild: true + dev: false + optional: true + + /upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + + /update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: false + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url-template@2.0.8: + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} + dev: true + + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.11.2 + dev: false + + /urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + dev: true + + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util.inherits@1.0.3: + resolution: {integrity: sha512-gMirHcfcq5D87nXDwbZqf5vl65S0mpMZBsHXJsXOO3Hc3G+JoQLwgaJa1h+PL7h3WhocnuLqoe8CuvMlztkyCA==} + engines: {node: '>=4'} + dev: true + + /util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + dependencies: + inherits: 2.0.3 + dev: false + + /util@0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + dev: false + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 + dev: true + + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: false + + /v8flags@3.2.0: + resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} + engines: {node: '>= 0.10'} + dependencies: + homedir-polyfill: 1.0.3 + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + dependencies: + builtins: 1.0.3 + dev: true + + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 2.0.3 + dev: true + + /vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: true + + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: false + + /void-elements@2.0.1: + resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} + engines: {node: '>=0.10.0'} + dev: true + + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + dependencies: + xml-name-validator: 5.0.0 + dev: true + + /watchpack-chokidar2@2.0.1: + resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} + requiresBuild: true + dependencies: + chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /watchpack@1.7.5: + resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} + dependencies: + graceful-fs: 4.2.11 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.3 + watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-bundle-analyzer@4.10.1: + resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.11.3 + acorn-walk: 8.3.2 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + is-plain-object: 5.0.0 + opener: 1.5.2 + picocolors: 1.0.0 + sirv: 2.0.4 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + /webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0): + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.91.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.91.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.91.0) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.3 + envinfo: 7.11.0 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-bundle-analyzer: 4.10.1 + webpack-merge: 5.10.0 + + /webpack-merge@4.2.2: + resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} + dependencies: + lodash: 4.17.21 + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + + /webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: false + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + /webpack@4.47.0(webpack-cli@5.1.4): + resolution: {integrity: sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + chrome-trace-event: 1.0.3 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.2 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.6 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5(webpack@4.47.0) + watchpack: 1.7.5 + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /webpack@5.91.0(webpack-cli@5.1.4): + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + watchpack: 2.4.1 + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.1)(webpack@5.91.0) + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: true + + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: true + + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /worker-farm@1.7.0: + resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} + dependencies: + errno: 0.1.8 + dev: false + + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + dev: true + + /write-json-file@3.2.0: + resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==} + engines: {node: '>=6'} + dependencies: + detect-indent: 5.0.0 + graceful-fs: 4.2.11 + make-dir: 2.1.0 + pify: 4.0.1 + sort-keys: 2.0.0 + write-file-atomic: 2.4.3 + dev: true + + /write-pkg@4.0.0: + resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} + engines: {node: '>=8'} + dependencies: + sort-keys: 2.0.0 + type-fest: 0.4.1 + write-json-file: 3.2.0 + dev: true + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + /ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xcase@2.0.1: + resolution: {integrity: sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==} + dev: true + + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + /xtend@2.1.2: + resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} + engines: {node: '>=0.4'} + dependencies: + object-keys: 0.4.0 + dev: false + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + dev: false + + /zwitch@1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: true + + github.com/mui/material-ui/e1d94d5ce097815bcd738352e69bb43ce03bd266(patch_hash=m6s35rhse6xiedzuwdr24itknq): + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/e1d94d5ce097815bcd738352e69bb43ce03bd266} + id: github.com/mui/material-ui/e1d94d5ce097815bcd738352e69bb43ce03bd266 + name: '@mui/monorepo' + version: 6.0.0-alpha.0 + requiresBuild: true + dependencies: + '@googleapis/sheets': 5.0.5 + '@netlify/functions': 2.6.0 + '@slack/bolt': 3.17.1 + execa: 8.0.1 + google-auth-library: 9.7.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - supports-color + - utf-8-validate + dev: true + patched: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000000..6e7e91713fc8 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - 'packages/*' + - 'docs' + - 'test' diff --git a/renovate.json b/renovate.json index ef8e4c9dd882..821bce585422 100644 --- a/renovate.json +++ b/renovate.json @@ -110,7 +110,7 @@ "matchManagers": ["github-actions"] } ], - "postUpdateOptions": ["yarnDedupeHighest"], + "postUpdateOptions": ["pnpmDedupe"], "prConcurrentLimit": 30, "prHourlyLimit": 0, "rangeStrategy": "bump", diff --git a/scripts/README.md b/scripts/README.md index 0e64e6ad3167..61ef45509ef5 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -5,6 +5,9 @@ > Tip: For people who are doing the release for the first time, make sure you sign in to npm from the command line using security-key flow as well as have two-factor authentication enabled. > You can follow [this guide](https://docs.npmjs.com/accessing-npm-using-2fa) for more information on how to set it up. +> Tip: You can use `release:publish:dry-run` to test the release process without actually publishing the packages. +> Be sure install [verdaccio](https://verdaccio.org/) (local npm registry) before doing it. + > Tip: You can copy raw markdown checklist below to the release Pull Request and follow it step by step marking completed items. A typical release goes like this: @@ -14,10 +17,10 @@ A typical release goes like this: The following steps must be proposed as a pull request. 1. Compare the last tag with the branch upon which you want to release (`next` for the alpha / beta releases and `master` for the current stable version). - To do so, use `yarn release:changelog` The options are the following: + To do so, use `pnpm release:changelog` The options are the following: ```bash -yarn release:changelog +pnpm release:changelog --githubToken YOUR_GITHUB_TOKEN (needs "public_repo" permission) --lastRelease The release to compare against (default: the last one) --release The branch to release (default: master) @@ -33,16 +36,16 @@ In case of a problem, another method to generate the changelog is available at t 2. Clean the generated changelog, to match the format of [https://github.com/mui/mui-x/releases](https://github.com/mui/mui-x/releases). 3. Update the root `package.json`'s version -4. Update the versions of the other `package.json` files and of the dependencies with `yarn release:version` (`yarn release:version prerelease` for alpha / beta releases). +4. Update the versions of the other `package.json` files and of the dependencies with `pnpm release:version` (`pnpm release:version prerelease` for alpha / beta releases). 5. Open PR with changes and wait for review and green CI. 6. Merge PR once CI is green, and it has been approved. ### Release the packages 1. Checkout the last version of the working branch -2. `yarn && yarn release:build` (make sure you have the latest dependencies installed, and build the packages) -3. `yarn release:publish` (release the versions on npm, you need your 2FA device) -4. `yarn release:tag` (push the newly created tag) +2. `pnpm i && pnpm release:build` (make sure you have the latest dependencies installed, and build the packages) +3. `pnpm release:publish` (release the versions on npm, you need your 2FA device) +4. `pnpm release:tag` (push the newly created tag) ### Publish the documentation @@ -89,4 +92,4 @@ You can use the following script in your browser console on any GitHub page to a ### Manually create the release tag -If the `yarn release:tag` fails you can create and push the tag using the following command: `git tag -a v4.0.0-alpha.30 -m "Version 4.0.0-alpha.30" && git push upstream --tag`. +If the `pnpm release:tag` fails you can create and push the tag using the following command: `git tag -a v4.0.0-alpha.30 -m "Version 4.0.0-alpha.30" && git push upstream --tag`. diff --git a/scripts/build.mjs b/scripts/build.mjs index d24001abf0f5..be84e43de6a7 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -84,7 +84,7 @@ async function run(argv) { babelArgs.push('--compact false'); } - const command = ['yarn babel', ...babelArgs].join(' '); + const command = ['pnpm babel', ...babelArgs].join(' '); if (verbose) { // eslint-disable-next-line no-console diff --git a/scripts/deduplicate.mjs b/scripts/deduplicate.mjs deleted file mode 100644 index db7b4acec482..000000000000 --- a/scripts/deduplicate.mjs +++ /dev/null @@ -1,42 +0,0 @@ -/* eslint-disable no-console */ -import { spawn } from 'child_process'; -import path from 'path'; -import fs from 'fs'; -import deduplicate from 'yarn-deduplicate'; -import { getWorkspaceRoot } from './utils.mjs'; - -const lockFile = path.resolve(getWorkspaceRoot(), 'yarn.lock'); -const yarnlock = fs.readFileSync(lockFile, 'utf8'); - -const duplicates = deduplicate.listDuplicates(yarnlock); -if (duplicates.length === 0) { - console.log('No duplicated packages found'); - process.exit(0); -} - -console.log( - `${duplicates.length} duplicated package(s) found\n${duplicates.map((x) => ` ${x}`).join('\n')}`, -); - -if (process.env.CI) { - console.error( - [ - `Error: There are currently ${duplicates.length} duplicated package(s).`, - `To deduplicate run "yarn deduplicate"`, - ].join('\n'), - ); - process.exit(1); -} - -console.log('Deduplicating package(s)'); -fs.writeFileSync(lockFile, deduplicate.fixDuplicates(yarnlock)); - -const yarn = spawn('yarn', { - shell: true, - stdio: 'inherit', - cwd: getWorkspaceRoot(), -}); - -yarn.on('close', (code) => { - process.exit(code); -}); diff --git a/scripts/importDocsStatic.mjs b/scripts/importDocsStatic.mjs index cc027359d8a9..a270207a801b 100644 --- a/scripts/importDocsStatic.mjs +++ b/scripts/importDocsStatic.mjs @@ -1,4 +1,4 @@ -import glob from 'glob-gitignore'; +import glob from 'fast-glob'; import fse from 'fs-extra'; async function run() { @@ -12,11 +12,11 @@ async function run() { ]; const files = importFiles.reduce((acc, pattern) => { - const newFiles = glob.sync(`docs/node_modules/@mui/monorepo/${pattern}`); + const newFiles = glob.sync(`node_modules/@mui/monorepo/${pattern}`); return acc.concat(newFiles); }, []); files.forEach((file) => { - fse.copySync(file, file.replace('docs/node_modules/@mui/monorepo/docs/', 'docs/')); + fse.copySync(file, file.replace('node_modules/@mui/monorepo/docs/', 'docs/')); // eslint-disable-next-line no-console console.log(`copy ${file}`); }); diff --git a/scripts/l10n.ts b/scripts/l10n.ts index d65107ab6c25..87c0d94af959 100644 --- a/scripts/l10n.ts +++ b/scripts/l10n.ts @@ -370,7 +370,7 @@ async function updateIssue(githubToken, newMessage) { const requestBody = `You can check below all of the localization files that contain at least one missing translation. If you are a fluent speaker of any of these languages, feel free to submit a pull request. Any help is welcome to make the X components to reach new cultures. -Run \`yarn l10n --report\` to update the list below ⬇️ +Run \`pnpm l10n --report\` to update the list below ⬇️ ${newMessage} `; diff --git a/test/cli.js b/test/cli.js index a30f0853e89f..20e8527904ef 100644 --- a/test/cli.js +++ b/test/cli.js @@ -26,6 +26,7 @@ async function run(argv) { .sync(globPattern, { cwd: workspaceRoot, ignore, + followSymbolicLinks: false, }) .filter((relativeFile) => { return /\.test\.(js|ts|tsx)$/.test(relativeFile); @@ -52,7 +53,7 @@ async function run(argv) { args.push(`--grep '${argv.testNamePattern}'`); } - const mochaProcess = childProcess.spawn('yarn', args, { + const mochaProcess = childProcess.spawn('pnpm', args, { env: { ...process.env, BABEL_ENV: 'test', diff --git a/test/e2e-website/README.md b/test/e2e-website/README.md index 951cccebdb14..0ea3f4cc773b 100644 --- a/test/e2e-website/README.md +++ b/test/e2e-website/README.md @@ -2,8 +2,8 @@ ## Running locally -1. Run `yarn docs:dev` to start docs in development server. -2. Run `yarn test:e2e-website` in a separate terminal to run the test suites (`*.spec.ts`) inside `test/e2e-website` folder. +1. Run `pnpm docs:dev` to start docs in development server. +2. Run `pnpm test:e2e-website` in a separate terminal to run the test suites (`*.spec.ts`) inside `test/e2e-website` folder. > use --headed to run tests in headed browsers, check out [Playwright CLI](https://playwright.dev/docs/intro#command-line) for more options diff --git a/test/e2e/fixtures/DataGrid/SelectEditCell.tsx b/test/e2e/fixtures/DataGrid/SelectEditCell.tsx index 5aa0c8ebd835..890635dbd99d 100644 --- a/test/e2e/fixtures/DataGrid/SelectEditCell.tsx +++ b/test/e2e/fixtures/DataGrid/SelectEditCell.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import Select from '@mui/material/Select'; +import Select, { SelectProps } from '@mui/material/Select'; import MenuItem from '@mui/material/MenuItem'; import { DataGrid, @@ -12,7 +12,7 @@ function SelectEditInputCell(props: GridRenderEditCellParams) { const { id, value, field } = props; const apiRef = useGridApiContext(); - const handleChange = async (event) => { + const handleChange: SelectProps['onChange'] = async (event) => { await apiRef.current.setEditCellValue({ id, field, value: event.target.value }, event); apiRef.current.stopCellEditMode({ id, field }); }; @@ -27,10 +27,6 @@ function SelectEditInputCell(props: GridRenderEditCellParams) { ); } -function renderSelectEditInputCell(params) { - return ; -} - const baselineProps: DataGridProps = { rows: [ { @@ -51,7 +47,7 @@ const baselineProps: DataGridProps = { field: 'brand', width: 100, editable: true, - renderEditCell: renderSelectEditInputCell, + renderEditCell: (params) => , }, ], }; diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index 84fbf4bd4b84..5fefbc785d5a 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -133,7 +133,7 @@ async function initializeEnvironment( const isServerRunning = await attemptGoto(page, `${baseUrl}#no-dev`); if (!isServerRunning) { throw new Error( - `Unable to navigate to ${baseUrl} after multiple attempts. Did you forget to run \`yarn test:e2e:server\` and \`yarn test:e2e:build\`?`, + `Unable to navigate to ${baseUrl} after multiple attempts. Did you forget to run \`pnpm test:e2e:server\` and \`pnpm test:e2e:build\`?`, ); } return { browser, context, page }; diff --git a/test/karma.conf.js b/test/karma.conf.js index f6414da6efd3..25c0eb8f68ec 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -70,7 +70,7 @@ module.exports = function setKarmaConfig(config) { { test: /\.(js|ts|tsx)$/, loader: 'babel-loader', - exclude: /node_modules\/(?!@mui\/monorepo)/, + exclude: /node_modules\/.*\/node_modules\/(?!@mui\/monorepo)/, }, ], }, diff --git a/test/package.json b/test/package.json new file mode 100644 index 000000000000..5a940006b515 --- /dev/null +++ b/test/package.json @@ -0,0 +1,31 @@ +{ + "name": "@mui-x-internal/test", + "version": "7.2.0", + "private": true, + "scripts": { + "typescript": "tsc -p tsconfig.json" + }, + "devDependencies": { + "@babel/runtime": "^7.24.0", + "@emotion/cache": "^11.11.0", + "@emotion/react": "^11.11.4", + "@mui/material": "^5.15.14", + "@mui/x-data-grid": "workspace:*", + "@mui/x-data-grid-pro": "workspace:*", + "@mui/x-date-pickers": "workspace:*", + "@mui/x-date-pickers-pro": "workspace:*", + "@react-spring/web": "^9.7.3", + "@playwright/test": "1.41.2", + "@types/chai": "^4.3.12", + "@types/prop-types": "^15.7.11", + "@types/react": "18.2.60", + "chai": "^4.4.1", + "dayjs": "^1.11.10", + "prop-types": "^15.8.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.22.3", + "stylis": "^4.3.1", + "stylis-plugin-rtl": "^2.1.1" + } +} diff --git a/test/regressions/pickers/DateCalendarYearOnly.tsx b/test/regressions/pickers/DateCalendarYearOnly.tsx index a900d61157a4..18d3f88db365 100644 --- a/test/regressions/pickers/DateCalendarYearOnly.tsx +++ b/test/regressions/pickers/DateCalendarYearOnly.tsx @@ -8,11 +8,7 @@ const adapterToUse = new AdapterDateFns(); export default function DateCalendarYearOnly() { return ( - {}} - /> + ); } diff --git a/test/regressions/pickers/OpenDatePicker.tsx b/test/regressions/pickers/OpenDatePicker.tsx index f156e9ce15ac..63bdce3cf2ff 100644 --- a/test/regressions/pickers/OpenDatePicker.tsx +++ b/test/regressions/pickers/OpenDatePicker.tsx @@ -27,10 +27,10 @@ export default function OpenDatePicker() { =17.1.2 < 19" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.11" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.1" - columnify "1.6.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "^8.2.0" - dedent "0.7.0" - execa "5.0.0" - fs-extra "^11.1.1" - get-stream "6.0.0" - git-url-parse "13.1.0" - glob-parent "5.1.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - ini "^1.3.8" - init-package-json "5.0.0" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - js-yaml "4.1.0" - libnpmpublish "7.3.0" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "8.1.1" - npm-packlist "5.1.1" - npm-registry-fetch "^14.0.5" - npmlog "^6.0.2" - nx ">=17.1.2 < 19" - p-map "4.0.0" - p-map-series "2.1.0" - p-queue "6.6.2" - p-reduce "^2.1.0" - pacote "^17.0.5" - pify "5.0.0" - read-cmd-shim "4.0.0" - read-package-json "6.0.4" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.4" - signal-exit "3.0.7" - slash "^3.0.0" - ssri "^9.0.1" - strong-log-transformer "2.1.0" - tar "6.1.11" - temp-dir "1.0.0" - upath "2.0.1" - uuid "^9.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "5.0.0" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "17.7.2" - yargs-parser "21.1.1" - -"@mnajdova/enzyme-adapter-react-18@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@mnajdova/enzyme-adapter-react-18/-/enzyme-adapter-react-18-0.2.0.tgz#d73aa8c557b5522f1b11df51e784502860245f63" - integrity sha512-BOnjlVa7FHI1YUnYe+FdUtQu6szI1wLJ+C1lHyqmF3T9gu/J/WCYqqcD44dPkrU+8eYvvk/gQducsqna4HFiAg== - dependencies: - enzyme-adapter-utils "^1.13.1" - enzyme-shallow-equal "^1.0.4" - has "^1.0.3" - object.assign "^4.1.0" - object.values "^1.1.1" - prop-types "^15.7.2" - react-is "^18.0.0" - react-reconciler "^0.29.0" - react-test-renderer "^18.0.0" - semver "^5.7.0" - -"@mui-internal/docs-utils@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@mui-internal/docs-utils/-/docs-utils-1.0.2.tgz#6b98ed43f0dda40d164875c9d0ba14034468e393" - integrity sha512-Rqj9SVLK8MktX3lc0A/LJbF7/N8tLXxa7i6IpYnEYREx5MG98oHn7CSXQ978T7FLIYb3AObtJb6Ujy8JemcIcQ== - dependencies: - rimraf "^5.0.5" - typescript "^5.3.3" - -"@mui/base@5.0.0-beta.40", "@mui/base@^5.0.0-beta.40": - version "5.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40.tgz#1f8a782f1fbf3f84a961e954c8176b187de3dae2" - integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== - dependencies: - "@babel/runtime" "^7.23.9" - "@floating-ui/react-dom" "^2.0.8" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - "@popperjs/core" "^2.11.8" - clsx "^2.1.0" - prop-types "^15.8.1" - -"@mui/core-downloads-tracker@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.14.tgz#f7c57b261904831877220182303761c012d05046" - integrity sha512-on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA== - -"@mui/icons-material@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.14.tgz#333468c94988d96203946d1cfeb8f4d7e8e7de34" - integrity sha512-vj/51k7MdFmt+XVw94sl30SCvGx6+wJLsNYjZRgxhS6y3UtnWnypMOsm3Kmg8TN+P0dqwsjy4/fX7B1HufJIhw== - dependencies: - "@babel/runtime" "^7.23.9" - -"@mui/internal-docs-utils@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@mui/internal-docs-utils/-/internal-docs-utils-1.0.4.tgz#dd20bde31582e09e3b475f5956795c3297291cae" - integrity sha512-aZ70CqKohMZ/RS3V5Nl3FmBNVMKHNjtXachtkcWnxyQCi9DPuaGCz8l1Q0Iealjax+j08vT5vDO0JwWFImMsnA== - dependencies: - rimraf "^5.0.5" - typescript "^5.3.3" - -"@mui/internal-markdown@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@mui/internal-markdown/-/internal-markdown-1.0.0.tgz#e7c19efc9a8989dff410c99bfb7d09f491ed4738" - integrity sha512-jbj1XYQZN5Jqphq9K/Tyt42v/eRPmXEZzAYOHbsvHfFo9XnMC2OKJAsYOwpXGVmZQpvkg1z9vA55gOe6ceTW/w== - dependencies: - "@babel/runtime" "^7.23.9" - lodash "^4.17.21" - marked "^5.1.2" - prismjs "^1.29.0" - -"@mui/internal-scripts@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@mui/internal-scripts/-/internal-scripts-1.0.1.tgz#9c4d4bdc9d9434688ca2d57d044729b366d98215" - integrity sha512-vUSVgbEDsfEZt4/pvBKoqPZ0iCi/jujhQxoK6zLnzDITzzWf+gyhKqWcN/jNQjlKD0vLc2Xiqpqk3yj9C2RT+A== - dependencies: - "@babel/core" "^7.23.9" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/plugin-syntax-typescript" "^7.23.3" - "@babel/types" "^7.23.9" - "@mui-internal/docs-utils" "^1.0.2" - doctrine "^3.0.0" - lodash "^4.17.21" - typescript "^5.3.3" - uuid "^9.0.1" - -"@mui/joy@^5.0.0-beta.32": - version "5.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@mui/joy/-/joy-5.0.0-beta.32.tgz#a7cd6b35b18f812210fe5e089a0aedda8dddd286" - integrity sha512-QJW5Mu2GTJUX4sXjxt4nQBugpJAiSkUT49S/bwoKCCWx8bCfsEyplTzZPK+FraweiGhGgZWExWOTAPpxH83RUQ== - dependencies: - "@babel/runtime" "^7.23.9" - "@mui/base" "5.0.0-beta.40" - "@mui/core-downloads-tracker" "^5.15.14" - "@mui/system" "^5.15.14" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - clsx "^2.1.0" - prop-types "^15.8.1" - -"@mui/lab@^5.0.0-alpha.169": - version "5.0.0-alpha.169" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.169.tgz#85b88b2f06ad78c586cde2b47970653e5fd895eb" - integrity sha512-h6xe1K6ISKUbyxTDgdvql4qoDP6+q8ad5fg9nXQxGLUrIeT2jVrBuT/jRECSTufbnhzP+V5kulvYxaMfM8rEdA== - dependencies: - "@babel/runtime" "^7.23.9" - "@mui/base" "5.0.0-beta.40" - "@mui/system" "^5.15.14" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - clsx "^2.1.0" - prop-types "^15.8.1" - -"@mui/material@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.14.tgz#a40bd5eccfa9fc925535e1f4d70c6cef77fa3a75" - integrity sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ== - dependencies: - "@babel/runtime" "^7.23.9" - "@mui/base" "5.0.0-beta.40" - "@mui/core-downloads-tracker" "^5.15.14" - "@mui/system" "^5.15.14" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - "@types/react-transition-group" "^4.4.10" - clsx "^2.1.0" - csstype "^3.1.3" - prop-types "^15.8.1" - react-is "^18.2.0" - react-transition-group "^4.4.5" - -"@mui/monorepo@https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266": - version "6.0.0-alpha.0" - resolved "https://github.com/mui/material-ui.git#e1d94d5ce097815bcd738352e69bb43ce03bd266" - dependencies: - "@googleapis/sheets" "^5.0.5" - "@netlify/functions" "^2.6.0" - "@slack/bolt" "^3.17.1" - execa "^8.0.1" - google-auth-library "^9.7.0" - -"@mui/private-theming@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.14.tgz#edd9a82948ed01586a01c842eb89f0e3f68970ee" - integrity sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw== - dependencies: - "@babel/runtime" "^7.23.9" - "@mui/utils" "^5.15.14" - prop-types "^15.8.1" - -"@mui/styled-engine@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.14.tgz#168b154c4327fa4ccc1933a498331d53f61c0de2" - integrity sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw== - dependencies: - "@babel/runtime" "^7.23.9" - "@emotion/cache" "^11.11.0" - csstype "^3.1.3" - prop-types "^15.8.1" - -"@mui/styles@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.15.14.tgz#b0f157ccbb4270bbda68e518b035fb3b71cc7470" - integrity sha512-EspFoCqLf3BadSIRM5dBqrrbE0hioI6/YZXDGzvcPsedQ7j7wAdcIs9Ex6TVqrRUADNWI/Azg6/mhcqWiBDFOg== - dependencies: - "@babel/runtime" "^7.23.9" - "@emotion/hash" "^0.9.1" - "@mui/private-theming" "^5.15.14" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - clsx "^2.1.0" - csstype "^3.1.3" - hoist-non-react-statics "^3.3.2" - jss "^10.10.0" - jss-plugin-camel-case "^10.10.0" - jss-plugin-default-unit "^10.10.0" - jss-plugin-global "^10.10.0" - jss-plugin-nested "^10.10.0" - jss-plugin-props-sort "^10.10.0" - jss-plugin-rule-value-function "^10.10.0" - jss-plugin-vendor-prefixer "^10.10.0" - prop-types "^15.8.1" - -"@mui/system@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.14.tgz#8a0c6571077eeb6b5f1ff7aa7ff6a3dc4a14200d" - integrity sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg== - dependencies: - "@babel/runtime" "^7.23.9" - "@mui/private-theming" "^5.15.14" - "@mui/styled-engine" "^5.15.14" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" - clsx "^2.1.0" - csstype "^3.1.3" - prop-types "^15.8.1" - -"@mui/types@^7.2.14": - version "7.2.14" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.14.tgz#8a02ac129b70f3d82f2f9b76ded2c8d48e3fc8c9" - integrity sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== - -"@mui/utils@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.14.tgz#e414d7efd5db00bfdc875273a40c0a89112ade3a" - integrity sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA== - dependencies: - "@babel/runtime" "^7.23.9" - "@types/prop-types" "^15.7.11" - prop-types "^15.8.1" - react-is "^18.2.0" - -"@netlify/functions@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-2.6.0.tgz#801a6fe8ceef2ce1512c637a28e53e6a3aae289b" - integrity sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ== - dependencies: - "@netlify/serverless-functions-api" "1.14.0" - -"@netlify/node-cookies@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@netlify/node-cookies/-/node-cookies-0.1.0.tgz#dda912ba618527695cf519fafa221c5e6777c612" - integrity sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g== - -"@netlify/serverless-functions-api@1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.14.0.tgz#2bedff76cf898e24e48161aa2508776c4d261ed1" - integrity sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q== - dependencies: - "@netlify/node-cookies" "^0.1.0" - urlpattern-polyfill "8.0.2" - -"@next/env@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.1.tgz#80150a8440eb0022a73ba353c6088d419b908bac" - integrity sha512-7CnQyD5G8shHxQIIg3c7/pSeYFeMhsNbpU/bmvH7ZnDql7mNRgg8O2JZrhrc/soFnfBnKP4/xXNiiSIPn2w8gA== - -"@next/eslint-plugin-next@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz#474fd88d92209270021186043513fbdc4203f5ec" - integrity sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ== - dependencies: - glob "7.1.7" - -"@next/swc-darwin-arm64@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.1.tgz#b74ba7c14af7d05fa2848bdeb8ee87716c939b64" - integrity sha512-yDjSFKQKTIjyT7cFv+DqQfW5jsD+tVxXTckSe1KIouKk75t1qZmj/mV3wzdmFb0XHVGtyRjDMulfVG8uCKemOQ== - -"@next/swc-darwin-x64@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.1.tgz#82c3e67775e40094c66e76845d1a36cc29c9e78b" - integrity sha512-KCQmBL0CmFmN8D64FHIZVD9I4ugQsDBBEJKiblXGgwn7wBCSe8N4Dx47sdzl4JAg39IkSN5NNrr8AniXLMb3aw== - -"@next/swc-linux-arm64-gnu@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.1.tgz#4f4134457b90adc5c3d167d07dfb713c632c0caa" - integrity sha512-YDQfbWyW0JMKhJf/T4eyFr4b3tceTorQ5w2n7I0mNVTFOvu6CGEzfwT3RSAQGTi/FFMTFcuspPec/7dFHuP7Eg== - -"@next/swc-linux-arm64-musl@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.1.tgz#594bedafaeba4a56db23a48ffed2cef7cd09c31a" - integrity sha512-fiuN/OG6sNGRN/bRFxRvV5LyzLB8gaL8cbDH5o3mEiVwfcMzyE5T//ilMmaTrnA8HLMS6hoz4cHOu6Qcp9vxgQ== - -"@next/swc-linux-x64-gnu@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.1.tgz#cb4e75f1ff2b9bcadf2a50684605928ddfc58528" - integrity sha512-rv6AAdEXoezjbdfp3ouMuVqeLjE1Bin0AuE6qxE6V9g3Giz5/R3xpocHoAi7CufRR+lnkuUjRBn05SYJ83oKNQ== - -"@next/swc-linux-x64-musl@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.1.tgz#15f26800df941b94d06327f674819ab64b272e25" - integrity sha512-YAZLGsaNeChSrpz/G7MxO3TIBLaMN8QWMr3X8bt6rCvKovwU7GqQlDu99WdvF33kI8ZahvcdbFsy4jAFzFX7og== - -"@next/swc-win32-arm64-msvc@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.1.tgz#060c134fa7fa843666e3e8574972b2b723773dd9" - integrity sha512-1L4mUYPBMvVDMZg1inUYyPvFSduot0g73hgfD9CODgbr4xiTYe0VOMTZzaRqYJYBA9mana0x4eaAaypmWo1r5A== - -"@next/swc-win32-ia32-msvc@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.1.tgz#5c06889352b1f77e3807834a0d0afd7e2d2d1da2" - integrity sha512-jvIE9tsuj9vpbbXlR5YxrghRfMuG0Qm/nZ/1KDHc+y6FpnZ/apsgh+G6t15vefU0zp3WSpTMIdXRUsNl/7RSuw== - -"@next/swc-win32-x64-msvc@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.1.tgz#d38c63a8f9b7f36c1470872797d3735b4a9c5c52" - integrity sha512-S6K6EHDU5+1KrBDLko7/c1MNy/Ya73pIAmvKeFwsF4RmBFJSO7/7YeD4FnZ4iBdzE69PpQ4sOMU9ORKeNuxe8A== - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - version "2.1.8-no-fsevents.3" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" - integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@npmcli/agent@^2.0.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.0.tgz#e81f00fdb2a670750ff7731bbefb47ecbf0ccf44" - integrity sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q== - dependencies: - agent-base "^7.1.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.1" - lru-cache "^10.0.1" - socks-proxy-agent "^8.0.1" - -"@npmcli/fs@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" - integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== - dependencies: - semver "^7.3.5" - -"@npmcli/git@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.4.tgz#d18c50f99649e6e89e8b427318134f582498700c" - integrity sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ== - dependencies: - "@npmcli/promise-spawn" "^7.0.0" - lru-cache "^10.0.1" - npm-pick-manifest "^9.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^4.0.0" - -"@npmcli/installed-package-contents@^2.0.1": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" - integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== - -"@npmcli/package-json@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.0.0.tgz#77d0f8b17096763ccbd8af03b7117ba6e34d6e91" - integrity sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^3.0.0" - semver "^7.5.3" - -"@npmcli/promise-spawn@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz#a836de2f42a2245d629cf6fbb8dd6c74c74c55af" - integrity sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg== - dependencies: - which "^4.0.0" - -"@npmcli/run-script@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.2.tgz#497e7f058799497889df65900c711312252276d3" - integrity sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^10.0.0" - read-package-json-fast "^3.0.0" - which "^4.0.0" - -"@npmcli/run-script@^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.4.tgz#9f29aaf4bfcf57f7de2a9e28d1ef091d14b2e6eb" - integrity sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.0.0" - "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^10.0.0" - which "^4.0.0" - -"@nrwl/devkit@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-18.0.4.tgz#5135f2f27218ca34d7b93f95f9967f75320ce75a" - integrity sha512-fKHnjg4/9MdFd2U4e8p6ja9fRa864DCyF70kB4YUB9NuUIgWLQ15Uj6wXC3xjdXmxQRyHDa7ORodVoFzdo4UCg== - dependencies: - "@nx/devkit" "18.0.4" - -"@nrwl/tao@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-18.0.4.tgz#a74933a4c7d1b7c6467a526e9ac524f3b8edd212" - integrity sha512-/PzGOJevlDQnp5RPXF3WDe+w1cdohGkY+mbJUgDVA4Q5JEPT1DtE10h9GgdHdzkPjVPNYsaI4Vs/53NUdlVHHA== - dependencies: - nx "18.0.4" - tslib "^2.3.0" - -"@nx/devkit@18.0.4", "@nx/devkit@>=17.1.2 < 19": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-18.0.4.tgz#fec28139ef5d078933c5f1b5a7e0a585672dbdd6" - integrity sha512-Vs1AXgOjMJyaWpKopD04dy0FwQ22n5ZR1bFf98Ab4Ht0WJwJE90IpUVAkwI03n5BYxAKOlQnFltsB4gu6Y8mZQ== - dependencies: - "@nrwl/devkit" "18.0.4" - ejs "^3.1.7" - enquirer "~2.3.6" - ignore "^5.0.4" - semver "^7.5.3" - tmp "~0.2.1" - tslib "^2.3.0" - yargs-parser "21.1.1" - -"@nx/nx-darwin-arm64@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.0.4.tgz#c199b44ee21699acb14f6ecbada56ed19af936a3" - integrity sha512-9KJVONxUwdnFHHRNocsg7q5pliOTTfbjlr3rvhLuroV5HeTJFhUipKCQrVEhLy8e4auRdLuSz/HsgpJat3Z2cg== - -"@nx/nx-darwin-x64@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-18.0.4.tgz#859896881930d346afd6397b593f8d436722b80d" - integrity sha512-rFKHjeU0Ngz1R7UJAsbncpqwuFDjUdpcvI783r6s2eP7JoiiwtDBXvDcHiy8Odk0lPYmwDELaFZBhvdENqaDNA== - -"@nx/nx-freebsd-x64@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.0.4.tgz#2f295ff841e38f720aa9761e2c9eda90e372b380" - integrity sha512-jJx47wgRoUxVpQ+WG5+yLdxtJVuVgjphiTMRc0LOfUwKQaEHWyCA0hMK5fNmo0FAHIhGVCb/j2j9FxnCWTWpkg== - -"@nx/nx-linux-arm-gnueabihf@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.0.4.tgz#7ceb5531887996f4cf5e9ebda8dab34421d3a061" - integrity sha512-C3qWbFhEMIdTzvAHlIUHecZN3YBu7bx3S0p3gPNGmEMUMbYHP2zMlimBrZIbAxzntyGqWCqhXiFB21QhJ0t1Dw== - -"@nx/nx-linux-arm64-gnu@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.0.4.tgz#cfda70cedab2f3a7c5a9bb11ad4be180993b68c8" - integrity sha512-PxVMh9ikp8Q3hKagb66FAsek8O/08GcMF5dXBH7xc5AiQMaZ6Az/gAXOeHp274nmu3StQEpl9Il/YH6Z9f4V0w== - -"@nx/nx-linux-arm64-musl@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.0.4.tgz#1ce43e4803d3d5b3aeefa43ec54df7501b04a0b7" - integrity sha512-Iz7Z4h2/dXJJvBcyeRHa+d3Ncc4Qz+OiGm6iRDXv4zjFm5EyC1tkSZIFNlNiRjmTToNHFr4savrCjCh8wRYejw== - -"@nx/nx-linux-x64-gnu@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.0.4.tgz#0981787e067d6dd7e3f4f457eb3e24c9b12dccaa" - integrity sha512-BVLkegIwxHnEB64VBraBxyC01D3C3dVNxq2b4iNaqr4mpWNmos+G/mvcTU3NS7W8ZjpBjlXgdEkpgkl2hMKTEA== - -"@nx/nx-linux-x64-musl@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.0.4.tgz#d2857870922ee76ed9f50763ec8bd3c6244c998a" - integrity sha512-WgVy41psjCE9uxjFi4P62UrWyKQ1e2IN2FZaIuwXEB9h8OU/+g9PFpL1Cs1llNoEKnapKXX4+9b5FHF9i7EKQw== - -"@nx/nx-win32-arm64-msvc@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.0.4.tgz#92c76b7b0e1616c273a231afc0f23f1a5e68f655" - integrity sha512-YoxhOrVKnS+kcNTnCg9M61cbigzGErYgnlI8kdZzH2ArD7mhv8bfZnSZUInf5Y8oDBVpKusel7AkCSofzSwigA== - -"@nx/nx-win32-x64-msvc@18.0.4": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.0.4.tgz#c57cbb5e42b10322cb966270a32a2f7869634186" - integrity sha512-FdAdl5buvtUXp8hZVRkK0AZeiCu35l0u+yHsulNViYdh3OXRT1hYJ0CeqpxlLfvbHqB9JzDPtJtG0dpKHH/O0Q== - -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/auth-token@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" - integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== - -"@octokit/auth-token@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" - integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== - -"@octokit/core@^3.5.1": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/core@^4.2.1": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" - integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== - dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/core@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.1.0.tgz#81dacf0197ed7855e6413f128bd6dd9e121e7d2f" - integrity sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g== - dependencies: - "@octokit/auth-token" "^4.0.0" - "@octokit/graphql" "^7.0.0" - "@octokit/request" "^8.0.2" - "@octokit/request-error" "^5.0.0" - "@octokit/types" "^12.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^7.0.0": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" - integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== - dependencies: - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^9.0.0": - version "9.0.4" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.4.tgz#8afda5ad1ffc3073d08f2b450964c610b821d1ea" - integrity sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw== - dependencies: - "@octokit/types" "^12.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== - dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^5.0.0": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" - integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== - dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^9.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.0.2.tgz#3df14b9968192f9060d94ed9e3aa9780a76e7f99" - integrity sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q== - dependencies: - "@octokit/request" "^8.0.1" - "@octokit/types" "^12.0.0" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== - -"@octokit/openapi-types@^18.0.0": - version "18.1.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" - integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== - -"@octokit/openapi-types@^19.1.0": - version "19.1.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.1.0.tgz#75ec7e64743870fc73e1ab4bc6ec252ecdd624dc" - integrity sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw== - -"@octokit/plugin-enterprise-rest@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== - -"@octokit/plugin-paginate-rest@^2.16.8": - version "2.21.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== - dependencies: - "@octokit/types" "^6.40.0" - -"@octokit/plugin-paginate-rest@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" - integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== - dependencies: - "@octokit/tsconfig" "^1.0.2" - "@octokit/types" "^9.2.3" - -"@octokit/plugin-paginate-rest@^9.0.0": - version "9.1.5" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz#1705bcef4dcde1f4015ee58a63dc61b68648f480" - integrity sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg== - dependencies: - "@octokit/types" "^12.4.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-request-log@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz#260fa6970aa97bbcbd91f99f3cd812e2b285c9f1" - integrity sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA== - -"@octokit/plugin-rest-endpoint-methods@^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.2.0.tgz#eeaa4de97a2ae26404dea30ce3e17b11928e027c" - integrity sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q== - dependencies: - "@octokit/types" "^12.3.0" - -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.16.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== - dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" - -"@octokit/plugin-rest-endpoint-methods@^7.1.2": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz#37a84b171a6cb6658816c82c4082ac3512021797" - integrity sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA== - dependencies: - "@octokit/types" "^10.0.0" - -"@octokit/plugin-retry@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz#3257404f7cc418e1c1f13a7f2012c1db848b7693" - integrity sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog== - dependencies: - "@octokit/request-error" "^5.0.0" - "@octokit/types" "^12.0.0" - bottleneck "^2.15.3" - -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request-error@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" - integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== - dependencies: - "@octokit/types" "^9.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request-error@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.0.1.tgz#277e3ce3b540b41525e07ba24c5ef5e868a72db9" - integrity sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ== - dependencies: - "@octokit/types" "^12.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/request@^6.0.0": - version "6.2.8" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" - integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== - dependencies: - "@octokit/endpoint" "^7.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/request@^8.0.1", "@octokit/request@^8.0.2": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.1.6.tgz#a76a859c30421737a3918b40973c2ff369009571" - integrity sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ== - dependencies: - "@octokit/endpoint" "^9.0.0" - "@octokit/request-error" "^5.0.0" - "@octokit/types" "^12.0.0" - universal-user-agent "^6.0.0" - -"@octokit/rest@19.0.11": - version "19.0.11" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.11.tgz#2ae01634fed4bd1fca5b642767205ed3fd36177c" - integrity sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw== - dependencies: - "@octokit/core" "^4.2.1" - "@octokit/plugin-paginate-rest" "^6.1.2" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^7.1.2" - -"@octokit/rest@^16.43.0 || ^17.11.0 || ^18.12.0", "@octokit/rest@^18.12.0": - version "18.12.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== - dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" - -"@octokit/rest@^20.0.2": - version "20.0.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-20.0.2.tgz#5cc8871ba01b14604439049e5f06c74b45c99594" - integrity sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ== - dependencies: - "@octokit/core" "^5.0.0" - "@octokit/plugin-paginate-rest" "^9.0.0" - "@octokit/plugin-request-log" "^4.0.0" - "@octokit/plugin-rest-endpoint-methods" "^10.0.0" - -"@octokit/tsconfig@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" - integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== - -"@octokit/types@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-10.0.0.tgz#7ee19c464ea4ada306c43f1a45d444000f419a4a" - integrity sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg== - dependencies: - "@octokit/openapi-types" "^18.0.0" - -"@octokit/types@^12.0.0", "@octokit/types@^12.3.0", "@octokit/types@^12.4.0": - version "12.4.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.4.0.tgz#8f97b601e91ce6b9776ed8152217e77a71be7aac" - integrity sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ== - dependencies: - "@octokit/openapi-types" "^19.1.0" - -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.41.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== - dependencies: - "@octokit/openapi-types" "^12.11.0" - -"@octokit/types@^9.0.0", "@octokit/types@^9.2.3": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" - integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== - dependencies: - "@octokit/openapi-types" "^18.0.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@playwright/test@1.41.2": - version "1.41.2" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.41.2.tgz#bd9db40177f8fd442e16e14e0389d23751cdfc54" - integrity sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg== - dependencies: - playwright "1.41.2" - -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.24" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.24.tgz#58601079e11784d20f82d0585865bb42305c4df3" - integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== - -"@popperjs/core@^2.11.8": - version "2.11.8" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" - integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== - -"@react-spring/animated@~9.7.3": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.7.3.tgz#4211b1a6d48da0ff474a125e93c0f460ff816e0f" - integrity sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw== - dependencies: - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - -"@react-spring/core@~9.7.3": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.7.3.tgz#60056bcb397f2c4f371c6c9a5f882db77ae90095" - integrity sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ== - dependencies: - "@react-spring/animated" "~9.7.3" - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - -"@react-spring/rafz@^9.7.3": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.7.3.tgz#d6a9695c581f58a49e047ff7ed5646e0b681396c" - integrity sha512-9vzW1zJPcC4nS3aCV+GgcsK/WLaB520Iyvm55ARHfM5AuyBqycjvh1wbmWmgCyJuX4VPoWigzemq1CaaeRSHhQ== - -"@react-spring/shared@~9.7.3": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.7.3.tgz#4cf29797847c689912aec4e62e34c99a4d5d9e53" - integrity sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA== - dependencies: - "@react-spring/types" "~9.7.3" - -"@react-spring/types@~9.7.3": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.7.3.tgz#ea78fd447cbc2612c1f5d55852e3c331e8172a0b" - integrity sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw== - -"@react-spring/web@^9.7.3": - version "9.7.3" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.7.3.tgz#d9f4e17fec259f1d65495a19502ada4f5b57fa3d" - integrity sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg== - dependencies: - "@react-spring/animated" "~9.7.3" - "@react-spring/core" "~9.7.3" - "@react-spring/shared" "~9.7.3" - "@react-spring/types" "~9.7.3" - -"@remix-run/router@1.15.3": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" - integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w== - -"@sigstore/bundle@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" - integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - -"@sigstore/bundle@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.1.1.tgz#7fad9a1728939301607103722ac6f2a083d2f09a" - integrity sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg== - dependencies: - "@sigstore/protobuf-specs" "^0.2.1" - -"@sigstore/core@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-0.2.0.tgz#2d8ecae2c38a59a52b1dcbd6110014d88de08a80" - integrity sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA== - -"@sigstore/protobuf-specs@^0.2.0", "@sigstore/protobuf-specs@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" - integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== - -"@sigstore/sign@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" - integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - make-fetch-happen "^11.0.1" - -"@sigstore/sign@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.2.1.tgz#b37383db1f25ab20cfec980d23ce08e6f99e6caf" - integrity sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ== - dependencies: - "@sigstore/bundle" "^2.1.1" - "@sigstore/core" "^0.2.0" - "@sigstore/protobuf-specs" "^0.2.1" - make-fetch-happen "^13.0.0" - -"@sigstore/tuf@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" - integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - tuf-js "^1.1.7" - -"@sigstore/tuf@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.0.tgz#de64925ea10b16f3a7e77535d91eaf22be4dd904" - integrity sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q== - dependencies: - "@sigstore/protobuf-specs" "^0.2.1" - tuf-js "^2.2.0" - -"@sigstore/verify@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-0.1.0.tgz#c017aadb1a516ab4a10651cece29463aa9540bfe" - integrity sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA== - dependencies: - "@sigstore/bundle" "^2.1.1" - "@sigstore/core" "^0.2.0" - "@sigstore/protobuf-specs" "^0.2.1" - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sindresorhus/is@^4.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - -"@sindresorhus/merge-streams@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz#9cd84cc15bc865a5ca35fcaae198eb899f7b5c90" - integrity sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw== - -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== - dependencies: - type-detect "4.0.8" - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.3.0": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@sinonjs/fake-timers@^11.2.2": - version "11.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" - integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@sinonjs/samsam@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" - integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== - dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== - -"@slack/bolt@^3.17.1": - version "3.17.1" - resolved "https://registry.yarnpkg.com/@slack/bolt/-/bolt-3.17.1.tgz#97afcd3f79869591f82bb77ee4e8383607f4be79" - integrity sha512-N+4WxpkM59RXi7BL3IXUtENnn9cF7TOBn7ttaHpgvlnjUaro+yQyY60arXTlP4ytVDFJ1w0mSdfftcM17h+i2w== - dependencies: - "@slack/logger" "^4.0.0" - "@slack/oauth" "^2.6.2" - "@slack/socket-mode" "^1.3.3" - "@slack/types" "^2.11.0" - "@slack/web-api" "^6.11.2" - "@types/express" "^4.16.1" - "@types/promise.allsettled" "^1.0.3" - "@types/tsscmp" "^1.0.0" - axios "^1.6.0" - express "^4.16.4" - path-to-regexp "^6.2.1" - please-upgrade-node "^3.2.0" - promise.allsettled "^1.0.2" - raw-body "^2.3.3" - tsscmp "^1.0.6" - -"@slack/logger@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@slack/logger/-/logger-3.0.0.tgz#b736d4e1c112c22a10ffab0c2d364620aedcb714" - integrity sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA== - dependencies: - "@types/node" ">=12.0.0" - -"@slack/logger@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@slack/logger/-/logger-4.0.0.tgz#788303ff1840be91bdad7711ef66ca0cbc7073d2" - integrity sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA== - dependencies: - "@types/node" ">=18.0.0" - -"@slack/oauth@^2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@slack/oauth/-/oauth-2.6.2.tgz#02fc569ecd0be459c92ac17d4629b7fdc89ff3a9" - integrity sha512-2R3MyB/R63hTRXzk5J6wcui59TBxXzhk+Uh2/Xu3Wp3O4pXg/BNucQhP/DQbL/ScVhLvFtMXirLrKi0Yo5gIVw== - dependencies: - "@slack/logger" "^3.0.0" - "@slack/web-api" "^6.11.2" - "@types/jsonwebtoken" "^8.3.7" - "@types/node" ">=12" - jsonwebtoken "^9.0.0" - lodash.isstring "^4.0.1" - -"@slack/socket-mode@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@slack/socket-mode/-/socket-mode-1.3.3.tgz#8eb669653d5fd4ab3014e966cc5c83134fbd8835" - integrity sha512-vN3zG4woRtf2Ut6rZgRW6G/Oe56uLMlnz39I08Q7DOvVfB+1MmDbNv0PNOiFgujdKXJR+bXF41/F/VvryXcqlw== - dependencies: - "@slack/logger" "^3.0.0" - "@slack/web-api" "^6.11.2" - "@types/node" ">=12.0.0" - "@types/p-queue" "^2.3.2" - "@types/ws" "^7.4.7" - eventemitter3 "^3.1.0" - finity "^0.5.4" - p-cancelable "^1.1.0" - p-queue "^2.4.2" - ws "^7.5.3" - -"@slack/types@^2.11.0": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@slack/types/-/types-2.11.0.tgz#948c556081c3db977dfa8433490cc2ff41f47203" - integrity sha512-UlIrDWvuLaDly3QZhCPnwUSI/KYmV1N9LyhuH6EDKCRS1HWZhyTG3Ja46T3D0rYfqdltKYFXbJSSRPwZpwO0cQ== - -"@slack/web-api@^6.11.2": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@slack/web-api/-/web-api-6.12.0.tgz#d0487d90e3db2f7bfabe3430fa5da0cc03d2d9cb" - integrity sha512-RPw6F8rWfGveGkZEJ4+4jUin5iazxRK2q3FpQDz/FvdgzC3nZmPyLx8WRzc6nh0w3MBjEbphNnp2VZksfhpBIQ== - dependencies: - "@slack/logger" "^3.0.0" - "@slack/types" "^2.11.0" - "@types/is-stream" "^1.1.0" - "@types/node" ">=12.0.0" - axios "^1.6.5" - eventemitter3 "^3.1.0" - form-data "^2.5.0" - is-electron "2.2.2" - is-stream "^1.1.0" - p-queue "^6.6.1" - p-retry "^4.0.0" - -"@socket.io/component-emitter@~3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" - integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== - -"@swc/helpers@0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" - integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== - dependencies: - tslib "^2.4.0" - -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== - dependencies: - defer-to-connect "^2.0.0" - -"@testing-library/dom@^9.0.0": - version "9.3.4" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" - integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.1.3" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - -"@testing-library/react@^14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.2.1.tgz#bf69aa3f71c36133349976a4a2da3687561d8310" - integrity sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^9.0.0" - "@types/react-dom" "^18.0.0" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@trendmicro/react-interpolate@^0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@trendmicro/react-interpolate/-/react-interpolate-0.5.5.tgz#70a5040524b46475ee0104939f371db201886a0d" - integrity sha512-PjkRT3XeK30kGjmSRn//4L106ekZfFkjqQ85G8K1hDdT7aYdng0Hz1MSLJjW9XNiljdTNB8D8Sm4tiBhdz5P3A== - dependencies: - lodash.omit "^4.5.0" - prop-types "^15.5.8" - -"@tufjs/canonical-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" - integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== - -"@tufjs/canonical-json@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" - integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== - -"@tufjs/models@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" - integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== - dependencies: - "@tufjs/canonical-json" "1.0.0" - minimatch "^9.0.0" - -"@tufjs/models@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.0.tgz#c7ab241cf11dd29deb213d6817dabb8c99ce0863" - integrity sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg== - dependencies: - "@tufjs/canonical-json" "2.0.0" - minimatch "^9.0.3" - -"@types/aria-query@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" - integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - -"@types/babel__core@^7.1.12", "@types/babel__core@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" - -"@types/chai-dom@^1.11.3": - version "1.11.3" - resolved "https://registry.yarnpkg.com/@types/chai-dom/-/chai-dom-1.11.3.tgz#1659ace2698cdcd9ed8b2c007876f53e37d9cc89" - integrity sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ== - dependencies: - "@types/chai" "*" - -"@types/chai@*", "@types/chai@^4.3.12": - version "4.3.12" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.12.tgz#b192fe1c553b54f45d20543adc2ab88455a07d5e" - integrity sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw== - -"@types/chance@^1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@types/chance/-/chance-1.1.6.tgz#2fe3de58742629602c3fbab468093b27207f04ad" - integrity sha512-V+pm3stv1Mvz8fSKJJod6CglNGVqEQ6OyuqitoDkWywEODM/eJd1eSuIp9xt6DrX8BWZ2eDSIzbw1tPCUTvGbQ== - -"@types/cheerio@*": - version "0.22.35" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.35.tgz#0d16dc1f24d426231c181b9c31847f673867595f" - integrity sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA== - dependencies: - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/cookie@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" - integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== - -"@types/cors@^2.8.12": - version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" - integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== - dependencies: - "@types/node" "*" - -"@types/d3-color@*", "@types/d3-color@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" - integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== - -"@types/d3-delaunay@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" - integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== - -"@types/d3-interpolate@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" - integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== - dependencies: - "@types/d3-color" "*" - -"@types/d3-path@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.0.2.tgz#4327f4a05d475cf9be46a93fc2e0f8d23380805a" - integrity sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA== - -"@types/d3-scale@^4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" - integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== - dependencies: - "@types/d3-time" "*" - -"@types/d3-shape@^3.1.6": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.6.tgz#65d40d5a548f0a023821773e39012805e6e31a72" - integrity sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA== - dependencies: - "@types/d3-path" "*" - -"@types/d3-time@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.3.tgz#3c186bbd9d12b9d84253b6be6487ca56b54f88be" - integrity sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw== - -"@types/doctrine@^0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" - integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== - -"@types/enzyme@3.10.12": - version "3.10.12" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.12.tgz#ac4494801b38188935580642f772ad18f72c132f" - integrity sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA== - dependencies: - "@types/cheerio" "*" - "@types/react" "*" - -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^8.56.5": - version "8.56.5" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.5.tgz#94b88cab77588fcecdd0771a6d576fa1c0af9d02" - integrity sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/express-serve-static-core@^4.17.33": - version "4.17.42" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" - integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.16.1": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/format-util@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/format-util/-/format-util-1.0.4.tgz#c4e3b556735149fdf047898a5b9c04650491509b" - integrity sha512-xrCYOdHh5zA3LUrn6CvspYwlzSWxPso11Lx32WnAG6KvLCRecKZ/Rh21PLXUkzUFsQmrGcx/traJAFjR6dVS5Q== - -"@types/history@^4.7.11": - version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" - integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-cache-semantics@*": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/is-stream@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/is-stream/-/is-stream-1.1.0.tgz#b84d7bb207a210f2af9bed431dc0fbe9c4143be1" - integrity sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/jscodeshift@^0.11.5": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@types/jscodeshift/-/jscodeshift-0.11.11.tgz#30d7c986f372cd63c670017371da8fbced2b7acf" - integrity sha512-d7CAfFGOupj5qCDqMODXxNz2/NwCv/Lha78ZFbnr6qpk3K98iSB8I+ig9ERE2+EeYML352VMRsjPyOpeA+04eQ== - dependencies: - ast-types "^0.14.1" - recast "^0.20.3" - -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/jsonwebtoken@^8.3.7": - version "8.5.9" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586" - integrity sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg== - dependencies: - "@types/node" "*" - -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== - dependencies: - "@types/node" "*" - -"@types/lodash@^4.14.202": - version "4.14.202" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" - integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== - -"@types/lru-cache@^7.10.9": - version "7.10.10" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-7.10.10.tgz#3fa937c35ff4b3f6753d5737915c9bf8e693a713" - integrity sha512-nEpVRPWW9EBmx2SCfNn3ClYxPL7IktPX12HhIoSc/H5mMjdeW3+YsXIpseLQ2xF35+OcpwKQbEUw5VtqE4PDNA== - dependencies: - lru-cache "*" - -"@types/luxon@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7" - integrity sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA== - -"@types/mdast@^3.0.0": - version "3.0.15" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" - integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== - dependencies: - "@types/unist" "^2" - -"@types/mime@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" - integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - -"@types/mocha@^10.0.6": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" - integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== - -"@types/moment-hijri@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@types/moment-hijri/-/moment-hijri-2.1.4.tgz#02c3a6f774a241efd9b4c46c8ef8bbd006996e47" - integrity sha512-pGX1DaSducJDkJAC3q8fCuemow0pzI4oa0iKcspwQNPXuwlI55WRgBVrA6NVi+rf8bZN1qjWVsGdUatrLhZk6Q== - dependencies: - moment ">=2.14.0" - -"@types/moment-jalaali@^0.7.9": - version "0.7.9" - resolved "https://registry.yarnpkg.com/@types/moment-jalaali/-/moment-jalaali-0.7.9.tgz#c8daf05753427ac9bbc098f0b73f7f884d810269" - integrity sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA== - dependencies: - moment ">=2.14.0" - -"@types/node@*", "@types/node@>=10.0.0", "@types/node@>=12", "@types/node@>=12.0.0", "@types/node@>=18.0.0", "@types/node@^14.0.1", "@types/node@^18.19.23": - version "18.19.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.23.tgz#e02c759218bc9957423a3f7d585d511b17be2351" - integrity sha512-wtE3d0OUfNKtZYAqZb8HAWGxxXsImJcPUAgZNw+dWFxO6s5tIwIjyKnY76tsTatsNCLJPkVYwUpq15D38ng9Aw== - dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/p-queue@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/p-queue/-/p-queue-2.3.2.tgz#16bc5fece69ef85efaf2bce8b13f3ebe39c5a1c8" - integrity sha512-eKAv5Ql6k78dh3ULCsSBxX6bFNuGjTmof5Q/T6PiECDq0Yf8IIn46jCyp3RJvCi8owaEmm3DZH1PEImjBMd/vQ== - -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - -"@types/prettier@^2.7.3": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/promise.allsettled@^1.0.3": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/promise.allsettled/-/promise.allsettled-1.0.6.tgz#3f92657f807f14b165b90ee06cad3123529bd336" - integrity sha512-wA0UT0HeT2fGHzIFV9kWpYz5mdoyLxKrTgMdZQM++5h6pYAFH73HXcQhefg24nD1yivUFEn5KU+EF4b+CXJ4Wg== - -"@types/prop-types@*", "@types/prop-types@^15.7.11": - version "15.7.11" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" - integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== - -"@types/qs@*": - version "6.9.11" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" - integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.19": - version "18.2.19" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.19.tgz#b84b7c30c635a6c26c6a6dfbb599b2da9788be58" - integrity sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA== - dependencies: - "@types/react" "*" - -"@types/react-router-dom@^5.3.3": - version "5.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" - integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*": - version "5.1.20" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" - integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - -"@types/react-test-renderer@^18.0.7": - version "18.0.7" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.7.tgz#2cfe657adb3688cdf543995eceb2e062b5a68728" - integrity sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg== - dependencies: - "@types/react" "*" - -"@types/react-transition-group@^4.4.10": - version "4.4.10" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" - integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^18.2.60": - version "18.2.60" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.60.tgz#df026eaef1100b6dafe420f36fecb1d209a8cee1" - integrity sha512-dfiPj9+k20jJrLGOu9Nf6eqxm2EyJRrq2NvwOFsfbb7sFExZ9WELPs67UImHj3Ayxg8ruTtKtNnbjaF8olPq0A== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/requestidlecallback@^0.3.7": - version "0.3.7" - resolved "https://registry.yarnpkg.com/@types/requestidlecallback/-/requestidlecallback-0.3.7.tgz#ecd1422a96e6cfa2c538504a6bb30f50fdb0b27e" - integrity sha512-5/EwNH3H/+M2zxATq9UidyD7rCq3WhK5Te/XhdhqP270QoGInVkoNBj6kK2Ah5slkZewkX8XJb7WDaYhmJu+eg== - -"@types/responselike@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" - integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== - dependencies: - "@types/node" "*" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/scheduler@*": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== - dependencies: - "@types/http-errors" "*" - "@types/mime" "*" - "@types/node" "*" - -"@types/sinon@^10.0.20": - version "10.0.20" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.20.tgz#f1585debf4c0d99f9938f4111e5479fb74865146" - integrity sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.5" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" - integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== - -"@types/stylis@4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" - integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== - -"@types/stylis@^4.2.5": - version "4.2.5" - resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df" - integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== - -"@types/tsscmp@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/tsscmp/-/tsscmp-1.0.2.tgz#5f4679b5681bcf916a383ca9245371ce9748db5a" - integrity sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g== - -"@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== - -"@types/webpack-bundle-analyzer@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#fe199e724ce3d38705f6f1ba4d62429b7c360541" - integrity sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg== - dependencies: - "@types/node" "*" - tapable "^2.2.0" - webpack "^5" - -"@types/ws@^7.4.7": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.32": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/experimental-utils@^5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" - integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== - dependencies: - "@typescript-eslint/utils" "5.62.0" - -"@typescript-eslint/parser@^6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" - integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== - -"@webpack-cli/info@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" - integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== - -"@webpack-cli/serve@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" - integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -"@yarnpkg/parsers@3.0.0-rc.46": - version "3.0.0-rc.46" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz#03f8363111efc0ea670e53b0282cd3ef62de4e01" - integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - -"@zeit/schemas@2.29.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.29.0.tgz#a59ae6ebfdf4ddc66a876872dd736baa58b6696c" - integrity sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA== - -"@zkochan/js-yaml@0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" - integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== - dependencies: - argparse "^2.0.1" - -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== - dependencies: - debug "^4.3.4" - -agentkeepalive@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" - integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -aggregate-error@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-4.0.1.tgz#25091fe1573b9e0be892aeda15c7c66a545f758e" - integrity sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w== - dependencies: - clean-stack "^4.0.0" - indent-string "^5.0.0" - -airbnb-prop-types@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" - integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== - dependencies: - array.prototype.find "^2.1.1" - function.prototype.name "^1.1.2" - is-regex "^1.1.0" - object-is "^1.1.2" - object.assign "^4.1.0" - object.entries "^1.1.2" - prop-types "^15.7.2" - prop-types-exact "^1.2.0" - react-is "^16.13.1" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^6.1.0, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -algoliasearch@^4.19.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" - integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== - dependencies: - "@algolia/cache-browser-local-storage" "4.22.1" - "@algolia/cache-common" "4.22.1" - "@algolia/cache-in-memory" "4.22.1" - "@algolia/client-account" "4.22.1" - "@algolia/client-analytics" "4.22.1" - "@algolia/client-common" "4.22.1" - "@algolia/client-personalization" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/logger-console" "4.22.1" - "@algolia/requester-browser-xhr" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/requester-node-http" "4.22.1" - "@algolia/transporter" "4.22.1" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== - -ansi-align@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -arch@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver-utils@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-3.0.4.tgz#a0d201f1cf8fce7af3b5a05aea0a337329e96ec7" - integrity sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw== - dependencies: - glob "^7.2.3" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - -archiver@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.2.tgz#99991d5957e53bd0303a392979276ac4ddccf3b0" - integrity sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw== - dependencies: - archiver-utils "^2.1.0" - async "^3.2.4" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" - readdir-glob "^1.1.2" - tar-stream "^2.2.0" - zip-stream "^4.1.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -are-docs-informative@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" - integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -arg@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - -aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - -array-includes@^3.1.6, array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - -array-parallel@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/array-parallel/-/array-parallel-0.1.3.tgz#8f785308926ed5aa478c47e64d1b334b6c0c947d" - integrity sha512-TDPTwSWW5E4oiFiKmz6RGJ/a80Y91GuLgUYuLd49+XBS75tYo8PNgaT2K/OxuQYqkoI852MDGBorg9OcUSTQ8w== - -array-series@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/array-series/-/array-series-0.1.5.tgz#df5d37bfc5c2ef0755e2aa4f92feae7d4b5a972f" - integrity sha512-L0XlBwfx9QetHOsbLDrE/vh2t018w9462HM3iaFfxRiK83aJjAt/Ja3NMkOW7FICwWTlQBa3ZbL5FKhuQWkDrg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -array.prototype.filter@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" - integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -array.prototype.find@^2.1.1, array.prototype.find@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.2.tgz#e862cf891e725d8f2a10e5e42d750629faaabd32" - integrity sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.map@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.6.tgz#6a3d23f7192b2066eb97666ccc34118cb8163950" - integrity sha512-nK1psgF2cXqP3wSyCSq0Hc7zwNq3sfljQqaG27r/7a7ooNUnn5nGq6yYWyks9jMO5EoFQ0ax80hSg6oXSRNXaw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -array.prototype.reduce@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" - integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -arrify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-3.0.0.tgz#ccdefb8eaf2a1d2ab0da1ca2ce53118759fd46bc" - integrity sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw== - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types-flow@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" - integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== - -ast-types@0.14.2, ast-types@^0.14.1, ast-types@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" - integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== - dependencies: - tslib "^2.0.1" - -ast-types@^0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" - integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== - dependencies: - tslib "^2.0.1" - -async-retry@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0" - integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q== - dependencies: - retry "0.12.0" - -async@1.x: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== - -async@^3.2.3, async@^3.2.4: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^10.4.18: - version "10.4.18" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.18.tgz#fcb171a3b017be7cb5d8b7a825f5aacbf2045163" - integrity sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g== - dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001591" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" - integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== - -axe-core@4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.4.tgz#90db39a2b316f963f00196434d964e6e23648643" - integrity sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg== - -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== - -axios@^1.5.0, axios@^1.6.0, axios@^1.6.5: - version "1.6.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" - integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== - dependencies: - follow-redirects "^1.15.4" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - dependencies: - dequal "^2.0.3" - -b4a@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" - integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -babel-plugin-module-resolver@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.0.tgz#2b7fc176bd55da25f516abf96015617b4f70fc73" - integrity sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q== - dependencies: - find-babel-config "^2.0.0" - glob "^8.0.3" - pkg-up "^3.1.0" - reselect "^4.1.7" - resolve "^1.22.1" - -babel-plugin-optimize-clsx@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-optimize-clsx/-/babel-plugin-optimize-clsx-2.6.2.tgz#9aaa42faffbe481cb0272fc65631f94889c6c5b7" - integrity sha512-TxgyjdVb7trTAsg/J5ByqJdbBPTYR8yaWLGQGpSxwygw8IFST5gEc1J9QktCGCHCb+69t04DWg9KOE0y2hN30w== - dependencies: - "@babel/generator" "^7.6.2" - "@babel/template" "^7.6.0" - "@babel/types" "^7.6.1" - find-cache-dir "^3.2.0" - lodash "^4.17.15" - object-hash "^2.0.3" - -babel-plugin-polyfill-corejs2@^0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" - integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.5.0" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" - integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - core-js-compat "^3.34.0" - -babel-plugin-polyfill-regenerator@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" - integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - -babel-plugin-preval@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-5.1.0.tgz#6efb89bf6b97af592cd1400c6df49c0e9e6ab027" - integrity sha512-G5R+xmo5LS41A4UyZjOjV0mp9AvkuCyUOAJ6TOv/jTZS+VKh7L7HUDRcCSOb0YCM/u0fFarh7Diz0wjY8rFNFg== - dependencies: - "@babel/runtime" "^7.12.5" - "@types/babel__core" "^7.1.12" - babel-plugin-macros "^3.0.1" - require-from-string "^2.0.2" - -babel-plugin-react-remove-properties@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-react-remove-properties/-/babel-plugin-react-remove-properties-0.3.0.tgz#7b623fb3c424b6efb4edc9b1ae4cc50e7154b87f" - integrity sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng== - -babel-plugin-replace-imports@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-replace-imports/-/babel-plugin-replace-imports-1.0.2.tgz#89e526710d343d8f51ef424982dbe69f61749f41" - integrity sha512-v+9S4FBg9wYit3c+bDxhRHv/pnhBhhneZOPvqT1c293SSjUuUy1MPK76TsJ9038fp/SD2/TNcqG5PUBoG9/ByQ== - dependencies: - lodash.isempty "^4.4.0" - lodash.isfunction "^3.0.8" - lodash.isobject "^3.0.2" - lodash.isregexp "^4.0.1" - lodash.isstring "^4.0.1" - -babel-plugin-search-and-replace@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-search-and-replace/-/babel-plugin-search-and-replace-1.1.1.tgz#2e5b4488e41d9eba1c220651b1a9b350fdf10915" - integrity sha512-fjP2VTF3mxxOUnc96mdK22llH92A6gu7A5AFapJmgnqsQi3bqLduIRP0FpA2r5vRZOYPpnX4rE5izQlpsMBjSA== - -babel-plugin-transform-react-remove-prop-types@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base64id@2.0.0, base64id@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - -big-integer@^1.6.17: - version "1.6.52" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" - integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bignumber.js@^9.0.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -bl@^4.0.3, bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== - -body-parser@1.20.2, body-parser@^1.19.0: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -bottleneck@^2.15.3: - version "2.19.5" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" - integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== - -boxen@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.0.0.tgz#9e5f8c26e716793fc96edcf7cf754cdf5e3fbf32" - integrity sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg== - dependencies: - ansi-align "^3.0.1" - camelcase "^7.0.0" - chalk "^5.0.1" - cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.0.1" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-from@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" - integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== - -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -builtins@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - -busboy@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -byte-size@8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" - integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -c8@^7.6.0: - version "7.14.0" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.14.0.tgz#f368184c73b125a80565e9ab2396ff0be4d732f3" - integrity sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@istanbuljs/schema" "^0.1.3" - find-up "^5.0.0" - foreground-child "^2.0.0" - istanbul-lib-coverage "^3.2.0" - istanbul-lib-report "^3.0.0" - istanbul-reports "^3.1.4" - rimraf "^3.0.2" - test-exclude "^6.0.0" - v8-to-istanbul "^9.0.0" - yargs "^16.2.0" - yargs-parser "^20.2.9" - -cacache@^17.0.0: - version "17.1.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" - integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^7.0.3" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cacache@^18.0.0: - version "18.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.2.tgz#fd527ea0f03a603be5c0da5805635f8eef00c60c" - integrity sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^10.0.1" - minipass "^7.0.3" - minipass-collect "^2.0.1" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-request@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" - integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" - integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== - -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - -caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591: - version "1.0.30001599" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz#571cf4f3f1506df9bf41fcbb6d10d5d017817bce" - integrity sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA== - -chai-dom@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/chai-dom/-/chai-dom-1.12.0.tgz#cfa4023ddfe2de93c78670eafbe2dd36902c9131" - integrity sha512-pLP8h6IBR8z1AdeQ+EMcJ7dXPdsax/1Q7gdGZjsnAmSBl3/gItQUYSCo32br1qOy4SlcBjvqId7ilAf3uJ2K1w== - -chai@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" - -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== - dependencies: - traverse ">=0.3.0 <0.4" - -chalk-template@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.4.0.tgz#692c034d0ed62436b9062c1707fadcd0f753204b" - integrity sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg== - dependencies: - chalk "^4.1.2" - -chalk@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" - integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== - -chalk@^2.3.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -chance@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.11.tgz#78e10e1f9220a5bbc60a83e3f28a5d8558d84d1b" - integrity sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA== - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.3: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^3.2.0, ci-info@^3.6.1, ci-info@^3.7.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@^5.2.2, clean-css@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -clean-stack@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-4.2.0.tgz#c464e4cde4ac789f4e0735c5d75beb49d7b30b31" - integrity sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg== - dependencies: - escape-string-regexp "5.0.0" - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - -cli-cursor@3.1.0, cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -client-only@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" - integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== - -clipboard-copy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-4.0.1.tgz#326ef9726d4ffe72d9a82a7bbe19379de692017d" - integrity sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng== - -clipboardy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-3.0.0.tgz#f3876247404d334c9ed01b6f269c11d09a5e3092" - integrity sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg== - dependencies: - arch "^2.2.0" - execa "^5.1.1" - is-wsl "^2.2.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@4.0.1, clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -clsx@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== - -cmd-shim@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" - integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - -colorette@^2.0.14: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -colors@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -columnify@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -combined-stream@^1.0.6, combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.0, commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -comment-parser@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" - integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -component-emitter@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" - integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== - -compress-commons@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.2.tgz#6542e59cb63e1f46a8b21b0e06f9a32e4c8b06df" - integrity sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" - normalize-path "^3.0.0" - readable-stream "^3.6.0" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression-webpack-plugin@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz#ee340d2029cf99ccecdea9ad1410b377d15b48b3" - integrity sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA== - dependencies: - schema-utils "^4.2.0" - serialize-javascript "^6.0.2" - -compression@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -concurrently@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" - integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== - dependencies: - chalk "^4.1.2" - date-fns "^2.30.0" - lodash "^4.17.21" - rxjs "^7.8.1" - shell-quote "^1.8.1" - spawn-command "0.0.2" - supports-color "^8.1.1" - tree-kill "^1.2.2" - yargs "^17.7.2" - -confusing-browser-globals@^1.0.10: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -connect@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -conventional-changelog-angular@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" - integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== - dependencies: - compare-func "^2.0.0" - -conventional-changelog-core@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz#3c331b155d5b9850f47b4760aeddfc983a92ad49" - integrity sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^6.0.0" - conventional-commits-parser "^4.0.0" - dateformat "^3.0.3" - get-pkg-repo "^4.2.1" - git-raw-commits "^3.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^5.0.0" - normalize-package-data "^3.0.3" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - -conventional-changelog-preset-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz#14975ef759d22515d6eabae6396c2ae721d4c105" - integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== - -conventional-changelog-writer@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz#d8d3bb5e1f6230caed969dcc762b1c368a8f7b01" - integrity sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ== - dependencies: - conventional-commits-filter "^3.0.0" - dateformat "^3.0.3" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - meow "^8.1.2" - semver "^7.0.0" - split "^1.0.1" - -conventional-commits-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz#bf1113266151dd64c49cd269e3eb7d71d7015ee2" - integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.1" - -conventional-commits-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz#02ae1178a381304839bce7cea9da5f1b549ae505" - integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== - dependencies: - JSONStream "^1.3.5" - is-text-path "^1.0.1" - meow "^8.1.2" - split2 "^3.2.2" - -conventional-recommended-bump@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz#ec01f6c7f5d0e2491c2d89488b0d757393392424" - integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^3.0.0" - conventional-commits-filter "^3.0.0" - conventional-commits-parser "^4.0.0" - git-raw-commits "^3.0.0" - git-semver-tags "^5.0.0" - meow "^8.1.2" - -convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -convict@^6.2.4: - version "6.2.4" - resolved "https://registry.yarnpkg.com/convict/-/convict-6.2.4.tgz#be290672bf6397eec808d3b11fc5f71785b02a4b" - integrity sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ== - dependencies: - lodash.clonedeep "^4.5.0" - yargs-parser "^20.2.7" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -core-js-compat@^3.31.0, core-js-compat@^3.34.0: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" - integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== - dependencies: - browserslist "^4.22.2" - -core-js@^2.6.12: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.30.2, core-js@^3.8.2: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" - integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@~2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^8.2.0: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -cp-file@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-10.0.0.tgz#bbae9ecb9f505951b862880d2901e1f56de7a4dc" - integrity sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg== - dependencies: - graceful-fs "^4.2.10" - nested-error-stacks "^2.1.1" - p-event "^5.0.1" - -cpy-cli@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cpy-cli/-/cpy-cli-5.0.0.tgz#facd60da2e98d9a830f93162f9769d2a86667a16" - integrity sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ== - dependencies: - cpy "^10.1.0" - meow "^12.0.1" - -cpy@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/cpy/-/cpy-10.1.0.tgz#85517387036b9be480f6424e54089261fc6f4bab" - integrity sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ== - dependencies: - arrify "^3.0.0" - cp-file "^10.0.0" - globby "^13.1.4" - junk "^4.0.1" - micromatch "^4.0.5" - nested-error-stacks "^2.1.1" - p-filter "^3.0.0" - p-map "^6.0.0" - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -crc32-stream@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.3.tgz#85dd677eb78fa7cad1ba17cc506a597d41fc6f33" - integrity sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw== - dependencies: - crc-32 "^1.2.0" - readable-stream "^3.4.0" - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-to-react-native@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" - integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - -css-vendor@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" - integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== - dependencies: - "@babel/runtime" "^7.8.3" - is-in-browser "^1.0.2" - -css-what@^6.0.1, css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssjanus@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cssjanus/-/cssjanus-2.1.0.tgz#6f99070e0b7cc79f826ea48c63c03cb250713af1" - integrity sha512-kAijbny3GmdOi9k+QT6DGIXqFvL96aksNlGr4Rhk9qXDZYWUojU4bRc3IHWxdaLNOqgEZHuXoe5Wl2l7dxLW5g== - -cssstyle@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.0.1.tgz#ef29c598a1e90125c870525490ea4f354db0660a" - integrity sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ== - dependencies: - rrweb-cssom "^0.6.0" - -csstype@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -csstype@^3.0.2, csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== - -"d3-array@2 - 3", "d3-array@2.10.0 - 3": - version "3.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== - dependencies: - internmap "1 - 2" - -"d3-color@1 - 3", d3-color@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" - integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== - -d3-delaunay@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" - integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== - dependencies: - delaunator "5" - -"d3-format@1 - 3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" - integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== - -"d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" - integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== - dependencies: - d3-color "1 - 3" - -d3-path@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" - integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== - -d3-scale@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" - integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== - dependencies: - d3-array "2.10.0 - 3" - d3-format "1 - 3" - d3-interpolate "1.2.0 - 3" - d3-time "2.1.1 - 3" - d3-time-format "2 - 4" - -d3-shape@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" - integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== - dependencies: - d3-path "^3.1.0" - -"d3-time-format@2 - 4": - version "4.1.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" - integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== - dependencies: - d3-time "1 - 3" - -"d3-time@1 - 3", "d3-time@2.1.1 - 3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" - integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== - dependencies: - d3-array "2 - 3" - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -danger@^11.3.1: - version "11.3.1" - resolved "https://registry.yarnpkg.com/danger/-/danger-11.3.1.tgz#9df659fb58c15a82d9880231ba3f676c934e565d" - integrity sha512-+slkGnbf0czY7g4LSuYpYkKJgFrb9YIXFJvV5JAuLLF39CXLlUw0iebgeL3ASK1t6RDb8xe+Rk2F5ilh2Hdv2w== - dependencies: - "@gitbeaker/core" "^35.8.1" - "@gitbeaker/node" "^35.8.1" - "@octokit/rest" "^18.12.0" - async-retry "1.2.3" - chalk "^2.3.0" - commander "^2.18.0" - core-js "^3.8.2" - debug "^4.1.1" - fast-json-patch "^3.0.0-1" - get-stdin "^6.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - hyperlinker "^1.0.0" - json5 "^2.1.0" - jsonpointer "^5.0.0" - jsonwebtoken "^9.0.0" - lodash.find "^4.6.0" - lodash.includes "^4.3.0" - lodash.isobject "^3.0.2" - lodash.keys "^4.0.8" - lodash.mapvalues "^4.6.0" - lodash.memoize "^4.1.2" - memfs-or-file-map-to-github-branch "^1.2.1" - micromatch "^4.0.4" - node-cleanup "^2.1.2" - node-fetch "^2.6.7" - override-require "^1.1.1" - p-limit "^2.1.0" - parse-diff "^0.7.0" - parse-git-config "^2.0.3" - parse-github-url "^1.0.2" - parse-link-header "^2.0.0" - pinpoint "^1.1.0" - prettyjson "^1.2.1" - readline-sync "^1.4.9" - regenerator-runtime "^0.13.9" - require-from-string "^2.0.2" - supports-hyperlinks "^1.0.1" - -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -data-urls@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" - integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== - dependencies: - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - -date-fns-jalali@^2.13.0-0: - version "2.13.0-0" - resolved "https://registry.yarnpkg.com/date-fns-jalali/-/date-fns-jalali-2.13.0-0.tgz#9e9d9d4a63910654aa72a550c55af9a80e89c060" - integrity sha512-yjlI9O18Z6ryGNagryrLO8OQ+3rishM3+A0UOX2UX10cWMn2NTlQcQ+ywTEJvF5IJz0FwX/slt2nCcpyQ/c8gw== - -date-fns-jalali@^2.21.3-1: - version "2.21.3-1" - resolved "https://registry.yarnpkg.com/date-fns-jalali/-/date-fns-jalali-2.21.3-1.tgz#b87a01c1d7bb2fe827faed34b33478a5fe4aa027" - integrity sha512-Sgw1IdgCgyWDKCpq6uwAu24vPMOtvmcXXXuETr1jQO/aVj4h23XAltcP7hLbo+osqoiJnPmiydbI/q1W7TYAjA== - -"date-fns-v3@https://registry.npmjs.org/date-fns/-/date-fns-3.2.0.tgz": - version "3.2.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-3.2.0.tgz#c97cf685b62c829aa4ecba554e4a51768cf0bffc" - -date-fns@^2.30.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" - -date-format@^4.0.14: - version "4.0.14" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" - integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== - -dateformat@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -dayjs@^1.11.10, dayjs@^1.8.34: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== - -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.1.0, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decimal.js@^10.4.3: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" - -deep-equal@^2.0.5: - version "2.2.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" - integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.5" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.2" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.13" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -default-require-extensions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" - integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== - dependencies: - strip-bom "^4.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delaunator@5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" - integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== - dependencies: - robust-predicates "^3.0.2" - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== - -detect-libc@^2.0.0, detect-libc@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" - integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - -diff@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -discontinuous-range@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" - integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - -dom-serialize@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv@~16.3.1: - version "16.3.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.2.tgz#3cb611ce5a63002dbabf7c281bc331f69d28f03f" - integrity sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ== - -duplexer2@^0.1.2, duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - -duplexer@^0.1.1, duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.7: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.668: - version "1.4.690" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz#dd5145d45c49c08a9a6f7454127e660bdf9a3fa7" - integrity sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -engine.io-parser@~5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.1.tgz#9f213c77512ff1a6cc0c7a86108a7ffceb16fcfb" - integrity sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ== - -engine.io@~6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.4.tgz#6822debf324e781add2254e912f8568508850cdc" - integrity sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== - dependencies: - "@types/cookie" "^0.4.1" - "@types/cors" "^2.8.12" - "@types/node" ">=10.0.0" - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.4.1" - cors "~2.8.5" - debug "~4.3.1" - engine.io-parser "~5.2.1" - ws "~8.11.0" - -enhanced-resolve@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - integrity sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - -enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@7.8.1: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -envinfo@^7.7.3: - version "7.11.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" - integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== - -enzyme-adapter-utils@^1.13.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz#f30db15dafc22e0ccd44f5acc8d93be29218cdcf" - integrity sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ== - dependencies: - airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.5" - has "^1.0.3" - object.assign "^4.1.4" - object.fromentries "^2.0.5" - prop-types "^15.8.1" - semver "^5.7.1" - -enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz#5528a897a6ad2bdc417c7221a7db682cd01711ba" - integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== - dependencies: - has "^1.0.3" - object-is "^1.1.5" - -enzyme@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" - integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== - dependencies: - array.prototype.flat "^1.2.3" - cheerio "^1.0.0-rc.3" - enzyme-shallow-equal "^1.0.1" - function.prototype.name "^1.1.2" - has "^1.0.3" - html-element-map "^1.2.0" - is-boolean-object "^1.0.1" - is-callable "^1.1.5" - is-number-object "^1.0.4" - is-regex "^1.0.5" - is-string "^1.0.5" - is-subset "^0.1.1" - lodash.escape "^4.0.1" - lodash.isequal "^4.5.0" - object-inspect "^1.7.0" - object-is "^1.0.2" - object.assign "^4.1.0" - object.entries "^1.1.1" - object.values "^1.1.1" - raf "^3.4.1" - rst-selector-parser "^2.2.3" - string.prototype.trim "^1.2.1" - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.12" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.0.2, es-get-iterator@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - is-arguments "^1.1.1" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" - -es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== - dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" - -es-module-lexer@^1.2.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" - integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -esbuild@~0.19.10: - version "0.19.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" - integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== - optionalDependencies: - "@esbuild/aix-ppc64" "0.19.12" - "@esbuild/android-arm" "0.19.12" - "@esbuild/android-arm64" "0.19.12" - "@esbuild/android-x64" "0.19.12" - "@esbuild/darwin-arm64" "0.19.12" - "@esbuild/darwin-x64" "0.19.12" - "@esbuild/freebsd-arm64" "0.19.12" - "@esbuild/freebsd-x64" "0.19.12" - "@esbuild/linux-arm" "0.19.12" - "@esbuild/linux-arm64" "0.19.12" - "@esbuild/linux-ia32" "0.19.12" - "@esbuild/linux-loong64" "0.19.12" - "@esbuild/linux-mips64el" "0.19.12" - "@esbuild/linux-ppc64" "0.19.12" - "@esbuild/linux-riscv64" "0.19.12" - "@esbuild/linux-s390x" "0.19.12" - "@esbuild/linux-x64" "0.19.12" - "@esbuild/netbsd-x64" "0.19.12" - "@esbuild/openbsd-x64" "0.19.12" - "@esbuild/sunos-x64" "0.19.12" - "@esbuild/win32-arm64" "0.19.12" - "@esbuild/win32-ia32" "0.19.12" - "@esbuild/win32-x64" "0.19.12" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -eslint-config-airbnb-base@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" - integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== - dependencies: - confusing-browser-globals "^1.0.10" - object.assign "^4.1.2" - object.entries "^1.1.5" - semver "^6.3.0" - -eslint-config-airbnb-typescript@^17.1.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz#fda960eee4a510f092a9a1c139035ac588937ddc" - integrity sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig== - dependencies: - eslint-config-airbnb-base "^15.0.0" - -eslint-config-airbnb@^19.0.4: - version "19.0.4" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" - integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== - dependencies: - eslint-config-airbnb-base "^15.0.0" - object.assign "^4.1.2" - object.entries "^1.1.5" - -eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-webpack@^0.13.8: - version "0.13.8" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.8.tgz#5f64d1d653eefa19cdfd0f0165c996b6be7012f9" - integrity sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA== - dependencies: - array.prototype.find "^2.2.2" - debug "^3.2.7" - enhanced-resolve "^0.9.1" - find-root "^1.1.0" - hasown "^2.0.0" - interpret "^1.4.0" - is-core-module "^2.13.1" - is-regex "^1.1.4" - lodash "^4.17.21" - resolve "^2.0.0-next.5" - semver "^5.7.2" - -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-filenames@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz#7094f00d7aefdd6999e3ac19f72cea058e590cf7" - integrity sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w== - dependencies: - lodash.camelcase "4.3.0" - lodash.kebabcase "4.1.1" - lodash.snakecase "4.1.1" - lodash.upperfirst "4.3.1" - -eslint-plugin-import@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -eslint-plugin-jsdoc@^48.2.0: - version "48.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.0.tgz#a726fbd6fa286fad8fc14f0a6aca48488d188d95" - integrity sha512-O2B1XLBJnUCRkggFzUQ+PBYJDit8iAgXdlu8ucolqGrbmOWPvttZQZX8d1sC0MbqDMSLs8SHSQxaNPRY1RQREg== - dependencies: - "@es-joy/jsdoccomment" "~0.42.0" - are-docs-informative "^0.0.2" - comment-parser "1.4.1" - debug "^4.3.4" - escape-string-regexp "^4.0.0" - esquery "^1.5.0" - is-builtin-module "^3.2.1" - semver "^7.6.0" - spdx-expression-parse "^4.0.0" - -eslint-plugin-jsx-a11y@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== - dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" - array.prototype.flatmap "^1.3.2" - ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" - jsx-ast-utils "^3.3.5" - language-tags "^1.0.9" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - -eslint-plugin-mocha@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.3.0.tgz#a1cd40737c230f4dc7477a3bef3bbaad7f8d8282" - integrity sha512-IWzbg2K6B1Q7h37Ih4zMyW+nhmw1JvUlHlbCUUUu6PfOOAUGCB0gxmvv7/U+TQQ6e8yHUv+q7KMdIIum4bx+PA== - dependencies: - eslint-utils "^3.0.0" - rambda "^7.4.0" - -eslint-plugin-prettier@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.33.2: - version "7.33.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.1" - string.prototype.matchall "^4.0.8" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== - -esprima@^4.0.0, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-to-babel@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" - integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== - dependencies: - "@babel/traverse" "^7.1.6" - "@babel/types" "^7.2.0" - c8 "^7.6.0" - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -eventemitter3@^4.0.0, eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -exceljs@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/exceljs/-/exceljs-4.4.0.tgz#cfb1cb8dcc82c760a9fc9faa9e52dadab66b0156" - integrity sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg== - dependencies: - archiver "^5.0.0" - dayjs "^1.8.34" - fast-csv "^4.3.1" - jszip "^3.10.1" - readable-stream "^3.6.0" - saxes "^5.0.1" - tmp "^0.2.0" - unzipper "^0.10.11" - uuid "^8.3.0" - -execa@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== - dependencies: - homedir-polyfill "^1.0.1" - -exponential-backoff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" - integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== - -express@^4.16.4: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-csv@^4.3.1: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fast-csv/-/fast-csv-4.3.6.tgz#70349bdd8fe4d66b1130d8c91820b64a21bc4a63" - integrity sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw== - dependencies: - "@fast-csv/format" "4.3.5" - "@fast-csv/parse" "4.3.6" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-fifo@^1.1.0, fast-fifo@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1, fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-patch@^3.0.0-1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" - integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== - dependencies: - punycode "^1.3.2" - -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" - integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== - dependencies: - reusify "^1.0.4" - -fg-loadcss@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fg-loadcss/-/fg-loadcss-3.1.0.tgz#f7f148dccf8a6899f846a974ed50539880158acb" - integrity sha512-UgtXKza8nBUO6UWW4c+MOprRL4W5WbIkzPJafnw6y6f5jhA3FiSZkWz8eXeAeX+mC4A/qq0ByDLiAk6erNARaQ== - -figures@3.2.0, figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-babel-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.0.0.tgz#a8216f825415a839d0f23f4d18338a1cc966f701" - integrity sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw== - dependencies: - json5 "^2.1.1" - path-exists "^4.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - -finity@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/finity/-/finity-0.5.4.tgz#f2a8a9198e8286467328ec32c8bfcc19a2229c11" - integrity sha512-3l+5/1tuw616Lgb0QBimxfdd2TqaDGpfCBpfX6EqtFmqUV3FtQnVEX4Aa62DagYEqnsTIjZcTfbq9msDbXYgyA== - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.7, flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -flow-parser@0.*: - version "0.227.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.227.0.tgz#e50b65be9dc6810438c975e816a68005fbcd5107" - integrity sha512-nOygtGKcX/siZK/lFzpfdHEfOkfGcTW7rNroR1Zsz6T/JxSahPALXVt5qVHq/fgvMJuv096BTKbgxN3PzVBaDA== - -follow-redirects@^1.0.0, follow-redirects@^1.15.4: - version "1.15.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" - integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -format-util@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" - integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg== - -fs-extra@^11.1.0, fs-extra@^11.1.1, fs-extra@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-minipass@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" - integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== - dependencies: - minipass "^7.0.3" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1, function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.2, function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gaxios@^6.0.0, gaxios@^6.0.3, gaxios@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.2.0.tgz#4698976664ef63e47dbf3f61ec9320885fcc1ba1" - integrity sha512-H6+bHeoEAU5D6XNc6mPKeN5dLZqEDs9Gpk6I+SZBEzK5So58JVrHPmevNi35fRl1J9Y5TaeLW0kYx3pCJ1U2mQ== - dependencies: - extend "^3.0.2" - https-proxy-agent "^7.0.1" - is-stream "^2.0.0" - node-fetch "^2.6.9" - -gcp-metadata@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.0.tgz#9b0dd2b2445258e7597f2024332d20611cbd6b8c" - integrity sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg== - dependencies: - gaxios "^6.0.0" - json-bigint "^1.0.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-pkg-repo@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-tsconfig@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" - integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== - dependencies: - resolve-pkg-maps "^1.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -git-config-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" - integrity sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg== - dependencies: - extend-shallow "^2.0.1" - fs-exists-sync "^0.1.0" - homedir-polyfill "^1.0.0" - -git-raw-commits@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" - integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== - dependencies: - dargs "^7.0.0" - meow "^8.1.2" - split2 "^3.2.2" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-5.0.1.tgz#db748aa0e43d313bf38dcd68624d8443234e1c15" - integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== - dependencies: - meow "^8.1.2" - semver "^7.0.0" - -git-up@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" - integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== - dependencies: - is-ssh "^1.4.0" - parse-url "^8.1.0" - -git-url-parse@13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" - integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== - dependencies: - git-up "^7.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== - dependencies: - ini "^1.3.2" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - -glob-gitignore@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/glob-gitignore/-/glob-gitignore-1.0.14.tgz#8b708cb029e73bd388d22f7f935213aa93a1e7c2" - integrity sha512-YuAEPqL58bOQDqDF2kMv009rIjSAtPs+WPzyGbwRWK+wD0UWQVRoP34Pz6yJ6ivco65C9tZnaIt0I3JCuQ8NZQ== - dependencies: - glob "^7.1.3" - ignore "^5.0.5" - lodash.difference "^4.5.0" - lodash.union "^4.6.0" - make-array "^1.0.5" - util.inherits "^1.0.3" - -glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@8.1.0, glob@^8.0.1, glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@^10.2.2, glob@^10.3.10, glob@^10.3.7: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0, glob@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^9.2.0: - version "9.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@11.1.0, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@14.0.0, globby@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.0.tgz#ea9c062a3614e33f516804e778590fcf055256b9" - integrity sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ== - dependencies: - "@sindresorhus/merge-streams" "^1.0.0" - fast-glob "^3.3.2" - ignore "^5.2.4" - path-type "^5.0.0" - slash "^5.1.0" - unicorn-magic "^0.1.0" - -globby@^13.1.4: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - -gm@^1.25.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/gm/-/gm-1.25.0.tgz#cfd872b94b49a35cd6dc32988aedcb241624b99b" - integrity sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw== - dependencies: - array-parallel "~0.1.3" - array-series "~0.1.5" - cross-spawn "^4.0.0" - debug "^3.1.0" - -google-auth-library@^9.0.0, google-auth-library@^9.7.0: - version "9.7.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.7.0.tgz#dd99a08e2e3f70778de8be4ed8556460e237550a" - integrity sha512-I/AvzBiUXDzLOy4iIZ2W+Zq33W4lcukQv1nl7C8WUA6SQwyQwUwu3waNmWNAvzds//FG8SZ+DnKnW/2k6mQS8A== - dependencies: - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - gaxios "^6.1.1" - gcp-metadata "^6.1.0" - gtoken "^7.0.0" - jws "^4.0.0" - -googleapis-common@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/googleapis-common/-/googleapis-common-7.0.1.tgz#c85d0ee605ff0be9f604b963c69dfd27e46f6dec" - integrity sha512-mgt5zsd7zj5t5QXvDanjWguMdHAcJmmDrF9RkInCecNsyV7S7YtGqm5v2IWONNID88osb7zmx5FtrAP12JfD0w== - dependencies: - extend "^3.0.2" - gaxios "^6.0.3" - google-auth-library "^9.0.0" - qs "^6.7.0" - url-template "^2.0.8" - uuid "^9.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -got@^11.8.3: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -gtoken@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" - integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== - dependencies: - gaxios "^6.0.0" - jws "^4.0.0" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handlebars@^4.0.1, handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -has-unicode@2.0.1, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" - integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== - -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -he@1.2.0, he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" - integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.1.tgz#9985fcb2700467fecf7f33a4d4874e30680b5322" - integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== - dependencies: - lru-cache "^10.0.1" - -html-element-map@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.3.1.tgz#44b2cbcfa7be7aa4ff59779e47e51012e1c73c08" - integrity sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg== - dependencies: - array.prototype.filter "^1.0.0" - call-bind "^1.0.2" - -html-encoding-sniffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" - integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== - dependencies: - whatwg-encoding "^3.1.1" - -html-escaper@^2.0.0, html-escaper@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-tokenize@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-tokenize/-/html-tokenize-2.0.1.tgz#c3b2ea6e2837d4f8c06693393e9d2a12c960be5f" - integrity sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w== - dependencies: - buffer-from "~0.1.1" - inherits "~2.0.1" - minimist "~1.2.5" - readable-stream "~1.0.27-1" - through2 "~0.4.1" - -html-webpack-plugin@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" - integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" - integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== - dependencies: - agent-base "^7.0.2" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -hyperlinker@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" - integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== - -hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6.3, iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-walk@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" - integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== - dependencies: - minimatch "^5.0.1" - -ignore-walk@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.4.tgz#89950be94b4f522225eb63a13c56badb639190e9" - integrity sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== - dependencies: - minimatch "^9.0.0" - -ignore@^5.0.4, ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - -import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@3.1.0, import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indent-string@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" - integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.2, ini@^1.3.5, ini@^1.3.8, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -init-package-json@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-5.0.0.tgz#030cf0ea9c84cfc1b0dc2e898b45d171393e4b40" - integrity sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw== - dependencies: - npm-package-arg "^10.0.0" - promzard "^1.0.0" - read "^2.0.0" - read-package-json "^6.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^5.0.0" - -inquirer@^8.2.4: - version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" - -internal-slot@^1.0.4, internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -"internmap@1 - 2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" - integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== - -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - -ip@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" - integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-accessor-descriptor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4" - integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== - dependencies: - hasown "^2.0.0" - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-arguments@^1.0.4, is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-buffer@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-data-descriptor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb" - integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-descriptor@^0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33" - integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg== - dependencies: - is-accessor-descriptor "^1.0.1" - is-data-descriptor "^1.0.1" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306" - integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== - dependencies: - is-accessor-descriptor "^1.0.1" - is-data-descriptor "^1.0.1" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-electron@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" - integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.10, is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-in-browser@^1.0.2, is-in-browser@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" - integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-port-reachable@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-port-reachable/-/is-port-reachable-4.0.0.tgz#dac044091ef15319c8ab2f34604d8794181f8c2d" - integrity sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-ssh@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" - integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== - dependencies: - protocols "^2.0.1" - -is-stream@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - integrity sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== - dependencies: - text-extensions "^1.0.0" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isbinaryfile@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-processinfo@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.3" - istanbul-lib-coverage "^3.2.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^8.3.2" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2, istanbul-reports@^3.1.4: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - integrity sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg== - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -iterate-iterator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" - integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== - -iterate-value@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" - integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== - dependencies: - es-get-iterator "^1.0.2" - iterate-iterator "^1.0.1" - -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.8.7" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jalaali-js@^1.1.0: - version "1.2.6" - resolved "https://registry.yarnpkg.com/jalaali-js/-/jalaali-js-1.2.6.tgz#f4ee4bf686ed32bb9656f101225be4b7a1c3fd21" - integrity sha512-io974va+Qyu+UfuVX3UIAgJlxLhAMx9Y8VMfh+IG00Js7hXQo1qNQuwSiSa0xxco0SVgx5HWNkaiCcV+aZ8WPw== - -"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jscodeshift-add-imports@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/jscodeshift-add-imports/-/jscodeshift-add-imports-1.0.10.tgz#3d0f99d539d492cfa037aa4a63f04c4a626bcff5" - integrity sha512-VUe9DJ3zkWIR62zSRQnmsOVeyt77yD8knvYNna/PzRZlF9j799hJw5sqTZu4EX16XLIqS3FxWz3nXuGuiw9iyQ== - dependencies: - "@babel/traverse" "^7.4.5" - jscodeshift-find-imports "^2.0.2" - -jscodeshift-find-imports@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/jscodeshift-find-imports/-/jscodeshift-find-imports-2.0.4.tgz#4dc427bff6c8f8c6c766a19043cdbee4e1d10782" - integrity sha512-HxOzjWDOFFSCf8EKSTQGqCxXeRFqZszOywnZ0HuMB9YPDFHVpxftGRsY+QS+Qq8o2qUojlmNU3JEHts5DWYS1A== - -jscodeshift@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" - integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^3.1.10" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.20.4" - temp "^0.8.4" - write-file-atomic "^2.3.0" - -jsdoc-type-pratt-parser@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" - integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== - -jsdom@23.1.0: - version "23.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-23.1.0.tgz#f0871e6233605eccc11f0078b84afcaad6795af9" - integrity sha512-wRscu8dBFxi7O65Cvi0jFRDv0Qa7XEHPix8Qg/vlXHLAMQsRWV1EDeQHBermzXf4Dt7JtFgBLbva3iTcBZDXEQ== - dependencies: - cssstyle "^4.0.1" - data-urls "^5.0.0" - decimal.js "^10.4.3" - form-data "^4.0.0" - html-encoding-sniffer "^4.0.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.2" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.7" - parse5 "^7.1.2" - rrweb-cssom "^0.6.0" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.3" - w3c-xmlserializer "^5.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^3.1.1" - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - ws "^8.16.0" - xml-name-validator "^5.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" - integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== - dependencies: - bignumber.js "^9.0.0" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-parse-even-better-errors@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" - integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^1.0.1, json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.1.0, json5@^2.1.1, json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-parser@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jsonwebtoken@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" - integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^7.5.4" - -jss-plugin-camel-case@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz#27ea159bab67eb4837fa0260204eb7925d4daa1c" - integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw== - dependencies: - "@babel/runtime" "^7.3.1" - hyphenate-style-name "^1.0.3" - jss "10.10.0" - -jss-plugin-default-unit@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz#db3925cf6a07f8e1dd459549d9c8aadff9804293" - integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.10.0" - -jss-plugin-global@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz#1c55d3c35821fab67a538a38918292fc9c567efd" - integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.10.0" - -jss-plugin-nested@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz#db872ed8925688806e77f1fc87f6e62264513219" - integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.10.0" - tiny-warning "^1.0.2" - -jss-plugin-props-sort@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz#67f4dd4c70830c126f4ec49b4b37ccddb680a5d7" - integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.10.0" - -jss-plugin-rule-value-function@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz#7d99e3229e78a3712f78ba50ab342e881d26a24b" - integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.10.0" - tiny-warning "^1.0.2" - -jss-plugin-template@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz#072cda74a94c91b02d3a895d9e2408fd978ce033" - integrity sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w== - dependencies: - "@babel/runtime" "^7.3.1" - jss "10.10.0" - tiny-warning "^1.0.2" - -jss-plugin-vendor-prefixer@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz#c01428ef5a89f2b128ec0af87a314d0c767931c7" - integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg== - dependencies: - "@babel/runtime" "^7.3.1" - css-vendor "^2.0.8" - jss "10.10.0" - -jss-rtl@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/jss-rtl/-/jss-rtl-0.3.0.tgz#386961615956f9655bd5e9ec7e9d08bef223e4af" - integrity sha512-rg9jJmP1bAyhNOAp+BDZgOP/lMm4+oQ76qGueupDQ68Wq+G+6SGvCZvhIEg8OHSONRWOwFT6skCI+APGi8DgmA== - dependencies: - rtl-css-js "^1.13.1" - -jss@10.10.0, jss@^10.10.0: - version "10.10.0" - resolved "https://registry.yarnpkg.com/jss/-/jss-10.10.0.tgz#a75cc85b0108c7ac8c7b7d296c520a3e4fbc6ccc" - integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== - dependencies: - "@babel/runtime" "^7.3.1" - csstype "^3.0.2" - is-in-browser "^1.1.3" - tiny-warning "^1.0.2" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -jszip@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - -junk@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/junk/-/junk-4.0.1.tgz#7ee31f876388c05177fe36529ee714b07b50fbed" - integrity sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ== - -just-extend@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" - integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jwa@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" - integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" - integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - -karma-chrome-launcher@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" - integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== - dependencies: - which "^1.2.1" - -karma-mocha@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" - integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== - dependencies: - minimist "^1.2.3" - -karma-parallel@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/karma-parallel/-/karma-parallel-0.3.1.tgz#781876e5992b2781619e762f3e04dcbf85f47fa1" - integrity sha512-64jxNYamYi/9Y67h4+FfViSYhwDgod3rLuq+ZdZ0c3XeZFp/3q3v3HVkd8b5Czp3hCB+LLF8DIv4zlR4xFqbRw== - dependencies: - istanbul "^0.4.5" - lodash "^4.17.11" - -karma-sourcemap-loader@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488" - integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA== - dependencies: - graceful-fs "^4.2.10" - -karma-webpack@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" - integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== - dependencies: - glob "^7.1.3" - minimatch "^9.0.3" - webpack-merge "^4.1.5" - -karma@^6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.3.tgz#763e500f99597218bbb536de1a14acc4ceea7ce8" - integrity sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q== - dependencies: - "@colors/colors" "1.5.0" - body-parser "^1.19.0" - braces "^3.0.2" - chokidar "^3.5.1" - connect "^3.7.0" - di "^0.0.1" - dom-serialize "^2.2.1" - glob "^7.1.7" - graceful-fs "^4.2.6" - http-proxy "^1.18.1" - isbinaryfile "^4.0.8" - lodash "^4.17.21" - log4js "^6.4.1" - mime "^2.5.2" - minimatch "^3.0.4" - mkdirp "^0.5.5" - qjobs "^1.2.0" - range-parser "^1.2.1" - rimraf "^3.0.2" - socket.io "^4.7.2" - source-map "^0.6.1" - tmp "^0.2.1" - ua-parser-js "^0.7.30" - yargs "^16.1.1" - -keyv@^4.0.0, keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - -language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" - integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== - dependencies: - language-subtag-registry "^0.3.20" - -lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== - dependencies: - readable-stream "^2.0.5" - -lerna@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-8.1.2.tgz#441e8078d0b68557b4ef5b33202a16a6bc2a50d3" - integrity sha512-RCyBAn3XsqqvHbz3TxLfD7ylqzCi1A2UJnFEZmhURgx589vM3qYWQa/uOMeEEf565q6cAdtmulITciX1wgkAtw== - dependencies: - "@lerna/create" "8.1.2" - "@npmcli/run-script" "7.0.2" - "@nx/devkit" ">=17.1.2 < 19" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "19.0.11" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.1" - columnify "1.6.0" - conventional-changelog-angular "7.0.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "^8.2.0" - dedent "0.7.0" - envinfo "7.8.1" - execa "5.0.0" - fs-extra "^11.1.1" - get-port "5.1.1" - get-stream "6.0.0" - git-url-parse "13.1.0" - glob-parent "5.1.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - import-local "3.1.0" - ini "^1.3.8" - init-package-json "5.0.0" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - jest-diff ">=29.4.3 < 30" - js-yaml "4.1.0" - libnpmaccess "7.0.2" - libnpmpublish "7.3.0" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "8.1.1" - npm-packlist "5.1.1" - npm-registry-fetch "^14.0.5" - npmlog "^6.0.2" - nx ">=17.1.2 < 19" - p-map "4.0.0" - p-map-series "2.1.0" - p-pipe "3.1.0" - p-queue "6.6.2" - p-reduce "2.1.0" - p-waterfall "2.1.1" - pacote "^17.0.5" - pify "5.0.0" - read-cmd-shim "4.0.0" - read-package-json "6.0.4" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.8" - signal-exit "3.0.7" - slash "3.0.0" - ssri "^9.0.1" - strong-log-transformer "2.1.0" - tar "6.1.11" - temp-dir "1.0.0" - typescript ">=3 < 6" - upath "2.0.1" - uuid "^9.0.0" - validate-npm-package-license "3.0.4" - validate-npm-package-name "5.0.0" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "17.7.2" - yargs-parser "21.1.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -li@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b" - integrity sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw== - -libnpmaccess@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" - integrity sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw== - dependencies: - npm-package-arg "^10.1.0" - npm-registry-fetch "^14.0.3" - -libnpmpublish@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.3.0.tgz#2ceb2b36866d75a6cd7b4aa748808169f4d17e37" - integrity sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg== - dependencies: - ci-info "^3.6.1" - normalize-package-data "^5.0.0" - npm-package-arg "^10.1.0" - npm-registry-fetch "^14.0.3" - proc-log "^3.0.0" - semver "^7.3.7" - sigstore "^1.4.0" - ssri "^10.0.1" - -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lines-and-columns@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" - integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== - -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== - dependencies: - uc.micro "^2.0.0" - -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== - -load-json-file@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^1.1.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" - integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash.camelcase@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== - -lodash.escape@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" - integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw== - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== - -lodash.find@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - integrity sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg== - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - -lodash.groupby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1" - integrity sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw== - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isempty@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.isfunction@^3.0.8, lodash.isfunction@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" - integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - -lodash.isnil@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c" - integrity sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isobject@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isregexp@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz#e13e647b30cd559752a04cd912086faf7da1c30b" - integrity sha512-rw9+95tYcUa9nQ1FgdtKvO+hReLGNqnNMHfLq8SwK5Mo6D0R0tIsnRHGHaTHSKeYBaLCJ1JvXWdz4UmpPZ2bag== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.isundefined@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" - integrity sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== - -lodash.kebabcase@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== - -lodash.keys@^4.0.8: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" - integrity sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ== - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.omit@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash.snakecase@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== - -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash.upperfirst@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== - -lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log4js@^6.4.1: - version "6.9.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" - integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - flatted "^3.2.7" - rfdc "^1.3.0" - streamroller "^3.1.5" - -longest-streak@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" - integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== - -loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@*, lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-cache@^7.18.3, lru-cache@^7.5.1, lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -luxon@^3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" - integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== - -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - -make-array@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/make-array/-/make-array-1.0.5.tgz#326a7635c756a9f61ce0b2a6fdd5cc3460419bcb" - integrity sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA== - -make-dir@4.0.0, make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" - integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^17.0.0" - http-cache-semantics "^4.1.1" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^10.0.0" - -make-fetch-happen@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz#705d6f6cbd7faecb8eac2432f551e49475bfedf0" - integrity sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A== - dependencies: - "@npmcli/agent" "^2.0.0" - cacache "^18.0.0" - http-cache-semantics "^4.1.1" - is-lambda "^1.0.1" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - ssri "^10.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -markdown-it@14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.0.0.tgz#b4b2ddeb0f925e88d981f84c183b59bac9e3741b" - integrity sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.0" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.0.0" - -markdown-to-jsx@^7.4.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz#1ed6a60f8f9cd944bec39d9923fbbc8d3d60dcb9" - integrity sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A== - -markdownlint-cli2-formatter-default@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz#81e26b0a50409c0357c6f0d38d8246946b236fab" - integrity sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg== - -markdownlint-cli2@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.12.1.tgz#9743ded8ee65cf5704b21deb24259d3e7cc242c4" - integrity sha512-RcK+l5FjJEyrU3REhrThiEUXNK89dLYNJCYbvOUKypxqIGfkcgpz8g08EKqhrmUbYfYoLC5nEYQy53NhJSEtfQ== - dependencies: - globby "14.0.0" - jsonc-parser "3.2.0" - markdownlint "0.33.0" - markdownlint-cli2-formatter-default "0.0.4" - micromatch "4.0.5" - yaml "2.3.4" - -markdownlint-micromark@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/markdownlint-micromark/-/markdownlint-micromark-0.1.8.tgz#d39297e9988169a846cda1ca99df86f982ae69ba" - integrity sha512-1ouYkMRo9/6gou9gObuMDnvZM8jC/ly3QCFQyoSPCS2XV1ZClU0xpKbL1Ar3bWWRT1RnBZkWUEiNKrI2CwiBQA== - -markdownlint@0.33.0: - version "0.33.0" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.33.0.tgz#cc3852b2c54d5b0193710c6fdf97c5fbde7e322a" - integrity sha512-4lbtT14A3m0LPX1WS/3d1m7Blg+ZwiLq36WvjQqFGsX3Gik99NV+VXp/PW3n+Q62xyPdbvGOCfjPqjW+/SKMig== - dependencies: - markdown-it "14.0.0" - markdownlint-micromark "0.1.8" - -marked@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-5.1.2.tgz#62b5ccfc75adf72ca3b64b2879b551d89e77677f" - integrity sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg== - -mdast-util-from-markdown@^0.8.0: - version "0.8.5" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" - -mdast-util-to-markdown@^0.6.0: - version "0.6.5" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" - integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== - dependencies: - "@types/unist" "^2.0.0" - longest-streak "^2.0.0" - mdast-util-to-string "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.0.0" - zwitch "^1.0.0" - -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== - -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs-or-file-map-to-github-branch@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.2.1.tgz#fdb9a85408262316a9bd5567409bf89be7d72f96" - integrity sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ== - dependencies: - "@octokit/rest" "^16.43.0 || ^17.11.0 || ^18.12.0" - -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - integrity sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng== - -meow@^12.0.1: - version "12.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" - integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== - -meow@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromark@~2.11.0: - version "2.11.4" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== - dependencies: - debug "^4.0.0" - parse-entities "^2.0.0" - -micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -"minimatch@2 || 3", minimatch@3.1.2, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" - integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^5.0.1, minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.5: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-collect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" - integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== - dependencies: - minipass "^7.0.3" - -minipass-fetch@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" - integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== - dependencies: - minipass "^7.0.3" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3: - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -minizlib@^2.1.1, minizlib@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mocha@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" - integrity sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "8.1.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -modify-values@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -moment-hijri@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/moment-hijri/-/moment-hijri-2.1.2.tgz#ed95fa4f1fec45b41da132c9d4103b2726215225" - integrity sha512-p5ZOA1UzBHAAXiePh37XRjjwuyH78+1ShYZ7R6jogxketewG7kTCUjUmcP9c4Qsx8D8cqxwUWrESjtgdT6tNoA== - dependencies: - moment "^2.24.0" - -moment-jalaali@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/moment-jalaali/-/moment-jalaali-0.10.0.tgz#4e5de7605bc9597e01f7c62c3cc70268ae4ddf8d" - integrity sha512-XICH1+UHd3zyaE1bXWQBlhoXBqbzEyFfT0TrifNobHxLALRuTSwXn376bX8FmkYg9mZimevwwdd6EB57s5wuFA== - dependencies: - jalaali-js "^1.1.0" - moment "^2.22.2" - moment-timezone "^0.5.21" - rimraf "^3.0.2" - -moment-timezone@^0.5.21, moment-timezone@^0.5.45: - version "0.5.45" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.45.tgz#cb685acd56bac10e69d93c536366eb65aa6bcf5c" - integrity sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ== - dependencies: - moment "^2.29.4" - -moment@>=2.14.0, moment@^2.22.2, moment@^2.24.0, moment@^2.29.4, moment@^2.30.1: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - -moo@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c" - integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== - -mri@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multimatch@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -multipipe@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-1.0.2.tgz#cc13efd833c9cda99f224f868461b8e1a3fd939d" - integrity sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ== - dependencies: - duplexer2 "^0.1.2" - object-assign "^4.1.0" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mute-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.6, nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -nearley@^2.7.10: - version "2.20.1" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" - integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== - dependencies: - commander "^2.19.0" - moo "^0.5.0" - railroad-diagrams "^1.0.0" - randexp "0.4.6" - -negotiator@0.6.3, negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nested-error-stacks@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" - integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== - -next@^14.1.1: - version "14.1.1" - resolved "https://registry.yarnpkg.com/next/-/next-14.1.1.tgz#92bd603996c050422a738e90362dff758459a171" - integrity sha512-McrGJqlGSHeaz2yTRPkEucxQKe5Zq7uPwyeHNmJaZNY4wx9E9QdxmTp310agFRoMuIYgQrCrT3petg13fSVOww== - dependencies: - "@next/env" "14.1.1" - "@swc/helpers" "0.5.2" - busboy "1.6.0" - caniuse-lite "^1.0.30001579" - graceful-fs "^4.2.11" - postcss "8.4.31" - styled-jsx "5.1.1" - optionalDependencies: - "@next/swc-darwin-arm64" "14.1.1" - "@next/swc-darwin-x64" "14.1.1" - "@next/swc-linux-arm64-gnu" "14.1.1" - "@next/swc-linux-arm64-musl" "14.1.1" - "@next/swc-linux-x64-gnu" "14.1.1" - "@next/swc-linux-x64-musl" "14.1.1" - "@next/swc-win32-arm64-msvc" "14.1.1" - "@next/swc-win32-ia32-msvc" "14.1.1" - "@next/swc-win32-x64-msvc" "14.1.1" - -nise@^5.1.4: - version "5.1.7" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.7.tgz#03ca96539efb306612eb60a8c5d6beeb208e27e5" - integrity sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers" "^11.2.2" - "@sinonjs/text-encoding" "^0.7.2" - just-extend "^6.2.0" - path-to-regexp "^6.2.1" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-abi@^3.3.0: - version "3.54.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.54.0.tgz#f6386f7548817acac6434c6cba02999c9aebcc69" - integrity sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA== - dependencies: - semver "^7.3.5" - -node-addon-api@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - -node-cleanup@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" - integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== - -node-dir@^0.1.10, node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-environment-flags@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.7, node-fetch@^2.6.9: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.0.1.tgz#205514fc19e5830fa991e4a689f9e81af377a966" - integrity sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^10.3.10" - graceful-fs "^4.2.6" - make-fetch-happen "^13.0.0" - nopt "^7.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - tar "^6.1.2" - which "^4.0.0" - -node-machine-id@1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== - dependencies: - abbrev "1" - -nopt@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" - integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== - dependencies: - abbrev "^2.0.0" - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0, normalize-package-data@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" - integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== - dependencies: - hosted-git-info "^6.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-package-data@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.0.tgz#68a96b3c11edd462af7189c837b6b1064a484196" - integrity sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== - dependencies: - hosted-git-info "^7.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-bundled@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" - integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-install-checks@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" - integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" - integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== - dependencies: - hosted-git-info "^6.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" - integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-packlist@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" - integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== - dependencies: - glob "^8.0.1" - ignore-walk "^5.0.1" - npm-bundled "^1.1.2" - npm-normalize-package-bin "^1.0.1" - -npm-packlist@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" - integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== - dependencies: - ignore-walk "^6.0.4" - -npm-pick-manifest@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz#f87a4c134504a2c7931f2bb8733126e3c3bb7e8f" - integrity sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - -npm-registry-fetch@^14.0.3, npm-registry-fetch@^14.0.5: - version "14.0.5" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" - integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" - -npm-registry-fetch@^16.0.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz#10227b7b36c97bc1cf2902a24e4f710cfe62803c" - integrity sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw== - dependencies: - make-fetch-happen "^13.0.0" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^11.0.0" - proc-log "^3.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" - integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== - dependencies: - path-key "^4.0.0" - -npmlog@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nwsapi@^2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== - -nx@18.0.4, "nx@>=17.1.2 < 19": - version "18.0.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-18.0.4.tgz#3a77de6b51869449d849dccab7db74b35ec32a6b" - integrity sha512-Njb1fGppOw/wM7nOA1hYlLduV2aL4PdXSv5QS5cVYicHT5tw5RnG/0z4j9e6QfFj2EydxVeDUtlGR98diZ3/Yw== - dependencies: - "@nrwl/tao" "18.0.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "3.0.0-rc.46" - "@zkochan/js-yaml" "0.0.6" - axios "^1.6.0" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^8.0.1" - dotenv "~16.3.1" - dotenv-expand "~10.0.0" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^11.1.0" - ignore "^5.0.4" - jest-diff "^29.4.1" - js-yaml "4.1.0" - jsonc-parser "3.2.0" - lines-and-columns "~2.0.3" - minimatch "9.0.3" - node-machine-id "1.1.12" - npm-run-path "^4.0.1" - open "^8.4.0" - ora "5.3.0" - semver "^7.5.3" - string-width "^4.2.3" - strong-log-transformer "^2.1.0" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "18.0.4" - "@nx/nx-darwin-x64" "18.0.4" - "@nx/nx-freebsd-x64" "18.0.4" - "@nx/nx-linux-arm-gnueabihf" "18.0.4" - "@nx/nx-linux-arm64-gnu" "18.0.4" - "@nx/nx-linux-arm64-musl" "18.0.4" - "@nx/nx-linux-x64-gnu" "18.0.4" - "@nx/nx-linux-x64-musl" "18.0.4" - "@nx/nx-win32-arm64-msvc" "18.0.4" - "@nx/nx-win32-x64-msvc" "18.0.4" - -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^2.0.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" - integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== - -object-inspect@^1.13.1, object-inspect@^1.7.0, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.5, object.entries@^1.1.6, object.entries@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.fromentries@^2.0.5, object.fromentries@^2.0.6, object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.7" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" - integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== - dependencies: - array.prototype.reduce "^1.0.6" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - safe-array-concat "^1.0.0" - -object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - -object.hasown@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" - integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== - dependencies: - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.1, object.values@^1.1.6, object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -ora@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -override-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df" - integrity sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg== - -p-cancelable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-event@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-5.0.1.tgz#614624ec02ae7f4f13d09a721c90586184af5b0c" - integrity sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ== - dependencies: - p-timeout "^5.0.2" - -p-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-3.0.0.tgz#ce50e03b24b23930e11679ab8694bd09a2d7ed35" - integrity sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg== - dependencies: - p-map "^5.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.1.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map-series@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - -p-map@4.0.0, p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-map@^5.1.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-5.5.0.tgz#054ca8ca778dfa4cf3f8db6638ccb5b937266715" - integrity sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg== - dependencies: - aggregate-error "^4.0.0" - -p-map@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-6.0.0.tgz#4d9c40d3171632f86c47601b709f4b4acd70fed4" - integrity sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw== - -p-pipe@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== - -p-queue@6.6.2, p-queue@^6.6.1: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-queue@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" - integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== - -p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-retry@^4.0.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-timeout@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" - integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -p-waterfall@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== - dependencies: - p-reduce "^2.0.0" - -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - -pacote@^17.0.5: - version "17.0.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.6.tgz#874bb59cda5d44ab784d0b6530fcb4a7d9b76a60" - integrity sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ== - dependencies: - "@npmcli/git" "^5.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^7.0.0" - "@npmcli/run-script" "^7.0.0" - cacache "^18.0.0" - fs-minipass "^3.0.0" - minipass "^7.0.2" - npm-package-arg "^11.0.0" - npm-packlist "^8.0.0" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^16.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^7.0.0" - read-package-json-fast "^3.0.0" - sigstore "^2.2.0" - ssri "^10.0.0" - tar "^6.1.11" - -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-diff@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.7.1.tgz#9b7a2451c3725baf2c87c831ba192d40ee2237d4" - integrity sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg== - -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-git-config@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb" - integrity sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A== - dependencies: - expand-tilde "^2.0.2" - git-config-path "^1.0.1" - ini "^1.3.5" - -parse-github-url@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" - integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-link-header@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-2.0.0.tgz#949353e284f8aa01f2ac857a98f692b57733f6b7" - integrity sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw== - dependencies: - xtend "~4.0.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== - -parse-path@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" - integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== - dependencies: - protocols "^2.0.0" - -parse-url@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" - integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== - dependencies: - parse-path "^7.0.0" - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0, parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -patch-package@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-7.0.2.tgz#c01589bb6964854b5210506a5845d47900641f5a" - integrity sha512-PMYfL8LXxGIRmxXLqlEaBxzKPu7/SdP13ld6GSfAUJUZRmBDPp8chZs0dpzaAFn9TSPnFiMwkC6PJt6pBiAl8Q== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^4.1.2" - ci-info "^3.7.0" - cross-spawn "^7.0.3" - find-yarn-workspace-root "^2.0.0" - fs-extra "^9.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.6" - open "^7.4.2" - rimraf "^2.6.3" - semver "^7.5.3" - slash "^2.0.0" - tmp "^0.0.33" - yaml "^2.2.2" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1, path-scurry@^1.6.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== - -path-to-regexp@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" - integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -path-type@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" - integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" - integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== - -pify@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinpoint@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874" - integrity sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg== - -pirates@^4.0.1, pirates@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -playwright-core@1.41.2: - version "1.41.2" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.41.2.tgz#db22372c708926c697acc261f0ef8406606802d9" - integrity sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA== - -playwright@1.41.2: - version "1.41.2" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.41.2.tgz#4e760b1c79f33d9129a8c65cc27953be6dd35042" - integrity sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A== - dependencies: - playwright-core "1.41.2" - optionalDependencies: - fsevents "2.3.2" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@8.4.31: - version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.4.35: - version "8.4.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" - integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - -prebuild-install@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" - integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-format@^27.0.2: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-quick@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-4.0.0.tgz#ea5cce85a5804bfbec7327b0e064509155d03f39" - integrity sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ== - dependencies: - execa "^5.1.1" - find-up "^5.0.0" - ignore "^5.3.0" - mri "^1.2.0" - picocolors "^1.0.0" - picomatch "^3.0.1" - tslib "^2.6.2" - -prettyjson@^1.2.1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.5.tgz#ef3cfffcc70505c032abc59785884b4027031835" - integrity sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw== - dependencies: - colors "1.4.0" - minimist "^1.2.0" - -prismjs@^1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== - dependencies: - fromentries "^1.2.0" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -promise.allsettled@^1.0.2: - version "1.0.7" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.7.tgz#b9dd51e9cffe496243f5271515652c468865f2d8" - integrity sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA== - dependencies: - array.prototype.map "^1.0.5" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - iterate-value "^1.0.2" - -promzard@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.0.tgz#3246f8e6c9895a77c0549cefb65828ac0f6c006b" - integrity sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig== - dependencies: - read "^2.0.0" - -prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -protocols@^2.0.0, protocols@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" - integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -qjobs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.10.1, qs@^6.7.0: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - dependencies: - side-channel "^1.0.4" - -query-string@^7.0.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue-tick@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" - integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -railroad-diagrams@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" - integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A== - -rambda@^7.4.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" - integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== - -randexp@0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" - integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== - dependencies: - discontinuous-range "1.0.0" - ret "~0.1.10" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2, raw-body@^2.3.3: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-loader@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-1.0.0.tgz#3f9889e73dadbda9a424bce79809b4133ad46405" - integrity sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-docgen@^5.4.3: - version "5.4.3" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.3.tgz#7d297f73b977d0c7611402e5fc2a168acf332b26" - integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== - dependencies: - "@babel/core" "^7.7.5" - "@babel/generator" "^7.12.11" - "@babel/runtime" "^7.7.6" - ast-types "^0.14.2" - commander "^2.19.0" - doctrine "^3.0.0" - estree-to-babel "^3.1.0" - neo-async "^2.6.1" - node-dir "^0.1.10" - strip-indent "^3.0.0" - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-hook-form@^7.51.0: - version "7.51.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.51.0.tgz#757ae71b37c26e00590bd3788508287dcc5ecdaf" - integrity sha512-BggOy5j58RdhdMzzRUHGOYhSz1oeylFAv6jUSG86OvCIvlAvS7KvnRY7yoAf2pfEiPN7BesnR0xx73nEk3qIiw== - -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^16.13.1, react-is@^16.7.0, react-is@^17.0.1, react-is@^18.0.0, react-is@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-reconciler@^0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.29.0.tgz#ee769bd362915076753f3845822f2d1046603de7" - integrity sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-router-dom@^6.22.3: - version "6.22.3" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.3.tgz#9781415667fd1361a475146c5826d9f16752a691" - integrity sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw== - dependencies: - "@remix-run/router" "1.15.3" - react-router "6.22.3" - -react-router@6.22.3, react-router@^6.22.3: - version "6.22.3" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.3.tgz#9d9142f35e08be08c736a2082db5f0c9540a885e" - integrity sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ== - dependencies: - "@remix-run/router" "1.15.3" - -react-runner@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/react-runner/-/react-runner-1.0.3.tgz#b519bf19eec73dece3ec720b15657f73a55746e3" - integrity sha512-KyAzNzSVdrBc4A7aGW3FD0wVuujfgcBlyIGF0QVicJu0ucMpLYyTHE+PgBu82Iq698TPKRH+eEi6Mrq/e7OffA== - dependencies: - sucrase "^3.21.0" - -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - -react-simple-code-editor@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.13.1.tgz#4514553fa132dcaffec33a6612c58f1613c52416" - integrity sha512-XYeVwRZwgyKtjNIYcAEgg2FaQcCZwhbarnkJIV20U2wkCU9q/CPFBo8nRXrK4GXUz3AvbqZFsZRrpUTkqqEYyQ== - -react-test-renderer@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e" - integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA== - dependencies: - react-is "^18.2.0" - react-shallow-renderer "^16.15.0" - scheduler "^0.23.0" - -react-transition-group@^4.4.5: - version "4.4.5" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" - integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-cmd-shim@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" - integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== - -read-package-json-fast@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@6.0.4, read-package-json@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" - integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^5.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-7.0.0.tgz#d605c9dcf6bc5856da24204aa4e9518ee9714be0" - integrity sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - npm-normalize-package-bin "^3.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/read/-/read-2.1.0.tgz#69409372c54fe3381092bc363a00650b6ac37218" - integrity sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ== - dependencies: - mute-stream "~1.0.0" - -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.17, readable-stream@~1.0.27-1: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdir-glob@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" - integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== - dependencies: - minimatch "^5.1.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -readline-sync@^1.4.9: - version "1.4.10" - resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" - integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== - -recast@^0.20.3, recast@^0.20.4: - version "0.20.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" - integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== - dependencies: - ast-types "0.14.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -recast@^0.23.5: - version "0.23.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.5.tgz#07f5594a0d36e7754356160b70e90393cca0406d" - integrity sha512-M67zIddJiwXdfPQRYKJ0qZO1SLdH1I0hYeb0wzxA+pNOvAZiQHulWzuk+fYsEWRQ8VfZrgjyucqsCOtCyM01/A== - dependencies: - ast-types "^0.16.1" - esprima "~4.0.0" - source-map "~0.6.1" - tiny-invariant "^1.3.3" - tslib "^2.0.1" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg== - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.9: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -registry-auth-token@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" - integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA== - dependencies: - rc "^1.0.1" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== - dependencies: - es6-error "^4.0.1" - -remark-parse@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" - integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== - dependencies: - mdast-util-from-markdown "^0.8.0" - -remark-stringify@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" - integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== - dependencies: - mdast-util-to-markdown "^0.6.0" - -remark@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" - integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== - dependencies: - remark-parse "^9.0.0" - remark-stringify "^9.0.0" - unified "^9.1.0" - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.0.0, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -reselect@^4.1.7, reselect@^4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== - -resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== - -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@0.12.0, retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" - integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== - -rimraf@2, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" - integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== - dependencies: - glob "^9.2.0" - -rimraf@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" - integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== - dependencies: - glob "^10.3.7" - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -robust-predicates@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" - integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== - -rrweb-cssom@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" - integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== - -rst-selector-parser@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" - integrity sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA== - dependencies: - lodash.flattendeep "^4.4.0" - nearley "^2.7.10" - -rtl-css-js@^1.13.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" - integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg== - dependencies: - "@babel/runtime" "^7.1.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.5.5, rxjs@^7.8.1: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" - integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== - dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" - integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== - dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" - is-regex "^1.1.4" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0, schema-utils@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - -"semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.0, semver@^5.7.1, semver@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-handler@6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" - integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.1.2" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -serve@^14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.1.tgz#3f078d292ed5e7b2c5a64f957af2765b0459798b" - integrity sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA== - dependencies: - "@zeit/schemas" "2.29.0" - ajv "8.11.0" - arg "5.0.2" - boxen "7.0.0" - chalk "5.0.1" - chalk-template "0.4.0" - clipboardy "3.0.0" - compression "1.7.4" - is-port-reachable "4.0.0" - serve-handler "6.1.5" - update-check "1.5.4" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" - integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== - dependencies: - define-data-property "^1.1.1" - function-bind "^1.1.2" - get-intrinsic "^1.2.2" - gopd "^1.0.1" - has-property-descriptors "^1.0.1" - -set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.5, setimmediate@~1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -sharp@^0.32.5: - version "0.32.6" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" - integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== - dependencies: - color "^4.2.3" - detect-libc "^2.0.2" - node-addon-api "^6.1.0" - prebuild-install "^7.1.1" - semver "^7.5.4" - simple-get "^4.0.1" - tar-fs "^3.0.4" - tunnel-agent "^0.6.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sigstore@^1.4.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" - integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - "@sigstore/sign" "^1.0.0" - "@sigstore/tuf" "^1.0.3" - make-fetch-happen "^11.0.1" - -sigstore@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.2.0.tgz#acba5f73ca2158d2b0507bc52d3592149c3ed20e" - integrity sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug== - dependencies: - "@sigstore/bundle" "^2.1.1" - "@sigstore/core" "^0.2.0" - "@sigstore/protobuf-specs" "^0.2.1" - "@sigstore/sign" "^2.2.1" - "@sigstore/tuf" "^2.3.0" - "@sigstore/verify" "^0.1.0" - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^4.0.0, simple-get@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -sinon@^16.1.3: - version "16.1.3" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-16.1.3.tgz#b760ddafe785356e2847502657b4a0da5501fba8" - integrity sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers" "^10.3.0" - "@sinonjs/samsam" "^8.0.0" - diff "^5.1.0" - nise "^5.1.4" - supports-color "^7.2.0" - -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - -slash@3.0.0, slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slash@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" - integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-adapter@~2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" - integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA== - dependencies: - ws "~8.11.0" - -socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - -socket.io@^4.7.2: - version "4.7.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.4.tgz#2401a2d7101e4bdc64da80b140d5d8b6a8c7738b" - integrity sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw== - dependencies: - accepts "~1.3.4" - base64id "~2.0.0" - cors "~2.8.5" - debug "~4.3.2" - engine.io "~6.5.2" - socket.io-adapter "~2.5.2" - socket.io-parser "~4.2.4" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks-proxy-agent@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" - integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== - dependencies: - agent-base "^7.0.2" - debug "^4.3.4" - socks "^2.7.1" - -socks@^2.6.2, socks@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.0.0" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.16, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== - dependencies: - amdefine ">=0.0.4" - -spawn-command@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" - integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== - -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz#c07a4ede25b16e4f78e6707bbd84b15a45c19c1b" - integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-expression-parse@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" - integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split2@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -ssri@^10.0.0, ssri@^10.0.1: - version "10.0.5" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" - integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== - dependencies: - minipass "^7.0.3" - -ssri@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -stop-iteration-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" - -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -streamroller@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" - integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - fs-extra "^8.1.0" - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -streamx@^2.15.0: - version "2.15.6" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887" - integrity sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw== - dependencies: - fast-fifo "^1.1.0" - queue-tick "^1.0.1" - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-replace-loader@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-replace-loader/-/string-replace-loader-3.1.0.tgz#11ac6ee76bab80316a86af358ab773193dd57a4f" - integrity sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.1, string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - -styled-components@^6.1.8: - version "6.1.8" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.8.tgz#c109d36aeea52d8f049e12de2f3be39a6fc86201" - integrity sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw== - dependencies: - "@emotion/is-prop-valid" "1.2.1" - "@emotion/unitless" "0.8.0" - "@types/stylis" "4.2.0" - css-to-react-native "3.2.0" - csstype "3.1.2" - postcss "8.4.31" - shallowequal "1.1.0" - stylis "4.3.1" - tslib "2.5.0" - -styled-jsx@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" - integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== - dependencies: - client-only "0.0.1" - -stylis-plugin-rtl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/stylis-plugin-rtl/-/stylis-plugin-rtl-2.1.1.tgz#16707809c878494835f77e5d4aadaae3db639b5e" - integrity sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg== - dependencies: - cssjanus "^2.0.1" - -stylis@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - -stylis@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" - integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== - -sucrase@^3.21.0: - version "3.35.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== - dependencies: - has-flag "^1.0.0" - -supports-color@^5.0.0, supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0, supports-color@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" - integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== - dependencies: - has-flag "^2.0.0" - supports-color "^5.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -tapable@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - integrity sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-fs@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf" - integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== - dependencies: - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^3.1.5" - -tar-stream@^2.1.4, tar-stream@^2.2.0, tar-stream@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar-stream@^3.1.5: - version "3.1.7" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" - integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== - dependencies: - b4a "^1.6.4" - fast-fifo "^1.2.0" - streamx "^2.15.0" - -tar@6.1.11: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tar@^6.1.11, tar@^6.1.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -terser-webpack-plugin@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.10.0, terser@^5.26.0: - version "5.27.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" - integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" - integrity sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ== - dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tiny-invariant@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== - -tiny-warning@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.2.0, tmp@^0.2.1, tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -tough-cookie@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.0.0.tgz#3b46d583613ec7283020d79019f1335723801cec" - integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== - dependencies: - punycode "^2.3.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsscmp@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tsx@^4.7.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.7.1.tgz#27af6cbf4e1cdfcb9b5425b1c61bb7e668eb5e84" - integrity sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g== - dependencies: - esbuild "~0.19.10" - get-tsconfig "^4.7.2" - optionalDependencies: - fsevents "~2.3.3" - -tuf-js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" - integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== - dependencies: - "@tufjs/models" "1.0.4" - debug "^4.3.4" - make-fetch-happen "^11.1.1" - -tuf-js@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.0.tgz#4daaa8620ba7545501d04dfa933c98abbcc959b9" - integrity sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg== - dependencies: - "@tufjs/models" "2.0.0" - debug "^4.3.4" - make-fetch-happen "^13.0.0" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.0, type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^2.13.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -"typescript@>=3 < 6", typescript@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== - -ua-parser-js@^0.7.30: - version "0.7.37" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" - integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== - -uc.micro@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.0.0.tgz#84b3c335c12b1497fd9e80fcd3bfa7634c363ff1" - integrity sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig== - -uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unicorn-magic@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" - integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== - -unified@^9.1.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" - integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-buffer "^2.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== - dependencies: - "@types/unist" "^2.0.2" - -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - -unist-util-visit@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" - -universal-user-agent@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" - integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -unzipper@^0.10.11: - version "0.10.14" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.14.tgz#d2b33c977714da0fbc0f82774ad35470a7c962b1" - integrity sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - -upath@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-check@1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.4.tgz#5b508e259558f1ad7dbc8b4b0457d4c9d28c8743" - integrity sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ== - dependencies: - registry-auth-token "3.3.2" - registry-url "3.1.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== - -urlpattern-polyfill@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" - integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util.inherits@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util.inherits/-/util.inherits-1.0.3.tgz#a9c626a0d06d34829d47ba56cab1278d745f9ce6" - integrity sha512-gMirHcfcq5D87nXDwbZqf5vl65S0mpMZBsHXJsXOO3Hc3G+JoQLwgaJa1h+PL7h3WhocnuLqoe8CuvMlztkyCA== - -util@^0.12.5: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^8.3.0, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0, uuid@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -v8-to-istanbul@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -v8flags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" - integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@5.0.0, validate-npm-package-name@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" - integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== - dependencies: - builtins "^5.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vfile-message@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" - integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== - dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^2.0.0" - -vfile@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" - integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== - dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== - -w3c-xmlserializer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" - integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== - dependencies: - xml-name-validator "^5.0.0" - -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wcwidth@^1.0.0, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-bundle-analyzer@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" - integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - is-plain-object "^5.0.0" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-cli@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" - integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - colorette "^2.0.14" - commander "^10.0.1" - cross-spawn "^7.0.3" - envinfo "^7.7.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^5.7.3" - -webpack-merge@^4.1.5: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5, webpack@^5.90.3: - version "5.90.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" - integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -whatwg-encoding@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" - integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" - integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== - -whatwg-url@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.0.0.tgz#00baaa7fd198744910c4b1ef68378f2200e4ceb6" - integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== - dependencies: - tr46 "^5.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.2, which-typed-array@^1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" - integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== - dependencies: - available-typed-arrays "^1.0.6" - call-bind "^1.0.5" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.1" - -which@^1.1.1, which@^1.2.1, which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" - integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== - dependencies: - isexe "^3.1.1" - -wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== - dependencies: - string-width "^5.0.1" - -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -word-wrap@~1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -workerpool@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-pkg@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - -ws@^7.3.1, ws@^7.5.3: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.16.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== - -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== - -xcase@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9" - integrity sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw== - -xml-name-validator@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" - integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@2.3.4, yaml@^2.2.2: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@21.1.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.7, yargs-parser@^20.2.9: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@16.2.0, yargs@^16.1.1, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@17.7.2, yargs@^17.6.2, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yarn-deduplicate@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/yarn-deduplicate/-/yarn-deduplicate-6.0.2.tgz#63498d2d4c3a8567e992a994ce0ab51aa5681f2e" - integrity sha512-Efx4XEj82BgbRJe5gvQbZmEO7pU5DgHgxohYZp98/+GwPqdU90RXtzvHirb7hGlde0sQqk5G3J3Woyjai8hVqA== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - commander "^10.0.1" - semver "^7.5.0" - tslib "^2.5.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - -zip-stream@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.1.tgz#1337fe974dbaffd2fa9a1ba09662a66932bd7135" - integrity sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ== - dependencies: - archiver-utils "^3.0.4" - compress-commons "^4.1.2" - readable-stream "^3.6.0" - -zwitch@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" - integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== From 9cf5a91366343fa3b6f0f83b1bf8895f1425158b Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 25 Apr 2024 10:05:27 +0300 Subject: [PATCH 163/912] [core] Fix `l10n` GH workflow (#12895) --- .github/workflows/l10n.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/l10n.yml b/.github/workflows/l10n.yml index 9c79175f3246..8d35aca60ea1 100644 --- a/.github/workflows/l10n.yml +++ b/.github/workflows/l10n.yml @@ -18,12 +18,16 @@ jobs: steps: - run: echo "${{ github.actor }}" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d #v3.0.0 + with: + version: 8 + run_install: false - name: Use Node.js 20.x uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 20 cache: 'pnpm' # https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#caching-packages-dependencies - - run: pnpm install + - run: pnpm install --frozen-lockfile - name: pnpm l10n --report env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From f1b84a137e70e079b4e151187d0de49bef2adc2d Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 25 Apr 2024 10:37:14 +0300 Subject: [PATCH 164/912] [core] Remove redundant `setupFiles` entries in `package.json` (#12899) --- package.json | 3 --- packages/x-charts/package.json | 3 --- packages/x-data-grid-generator/package.json | 3 --- packages/x-data-grid-premium/package.json | 3 --- packages/x-data-grid-pro/package.json | 3 --- packages/x-data-grid/package.json | 3 --- packages/x-date-pickers-pro/package.json | 3 --- packages/x-date-pickers/package.json | 3 --- packages/x-license/package.json | 3 --- packages/x-tree-view-pro/package.json | 3 --- packages/x-tree-view/package.json | 3 --- 11 files changed, 33 deletions(-) diff --git a/package.json b/package.json index 39d98f3cf454..115d682ea074 100644 --- a/package.json +++ b/package.json @@ -188,9 +188,6 @@ "webpack-cli": "^5.1.4", "yargs": "^17.7.2" }, - "setupFiles": [ - "/src/setupTests.js" - ], "resolutions": { "react-is": "^18.2.0", "@types/node": "^18.19.23" diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 8b7801e19186..869f3bd49eb1 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -92,9 +92,6 @@ "default": "./esm/*/index.js" } }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 25b2af38c5b5..339b9b2b703b 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -50,9 +50,6 @@ "@mui/material": "^5.15.14", "react": "^17.0.0 || ^18.0.0" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index ba22cce968ab..6ef2a0653b01 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -65,9 +65,6 @@ "date-fns": "^2.30.0", "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index e437acfbad04..ef0605015835 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -62,9 +62,6 @@ "@types/prop-types": "^15.7.11", "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 89cc90eae04b..d0afd0118a63 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -65,9 +65,6 @@ "@types/prop-types": "^15.7.11", "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index c2509ec23366..89071aaef1da 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -104,9 +104,6 @@ "moment": "^2.30.1", "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 90bed6235255..7d60c8176048 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -112,9 +112,6 @@ "moment-timezone": "^0.5.44", "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-license/package.json b/packages/x-license/package.json index b8a6aedf9be0..2a5cb171c93e 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -43,9 +43,6 @@ "devDependencies": { "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 9af54e3f6709..c2c0529aef81 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -64,9 +64,6 @@ "devDependencies": { "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index d9a0b5863291..3ec4ec9a526b 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -63,9 +63,6 @@ "@types/prop-types": "^15.7.11", "rimraf": "^5.0.5" }, - "setupFiles": [ - "/src/setupTests.js" - ], "engines": { "node": ">=14.0.0" } From bd6cb52adb216a219b369ce40facce65df514271 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:58:05 +0200 Subject: [PATCH 165/912] [charts] Round y values for bar chart (#12846) --- packages/x-charts/src/BarChart/BarElement.tsx | 1 - packages/x-charts/src/BarChart/BarPlot.tsx | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/x-charts/src/BarChart/BarElement.tsx b/packages/x-charts/src/BarChart/BarElement.tsx index 1eeaef8c2135..74c9249b8357 100644 --- a/packages/x-charts/src/BarChart/BarElement.tsx +++ b/packages/x-charts/src/BarChart/BarElement.tsx @@ -55,7 +55,6 @@ export const BarElementPath = styled(animated.rect, { overridesResolver: (_, styles) => styles.root, })<{ ownerState: BarElementOwnerState }>(({ ownerState }) => ({ stroke: 'none', - shapeRendering: 'crispEdges', fill: ownerState.isHighlighted ? d3Color(ownerState.color)!.brighter(0.5).formatHex() : ownerState.color, diff --git a/packages/x-charts/src/BarChart/BarPlot.tsx b/packages/x-charts/src/BarChart/BarPlot.tsx index 627993b0931f..ae62ce8877e8 100644 --- a/packages/x-charts/src/BarChart/BarPlot.tsx +++ b/packages/x-charts/src/BarChart/BarPlot.tsx @@ -180,8 +180,8 @@ const useAggregatedData = (): CompletedBarData[] => { return stackedData.map((values, dataIndex: number) => { const valueCoordinates = values.map((v) => (verticalLayout ? yScale(v)! : xScale(v)!)); - const minValueCoord = Math.min(...valueCoordinates); - const maxValueCoord = Math.max(...valueCoordinates); + const minValueCoord = Math.round(Math.min(...valueCoordinates)); + const maxValueCoord = Math.round(Math.max(...valueCoordinates)); return { seriesId, From 20af68d2efcd4275d3412694a56bd13e19443b53 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 25 Apr 2024 16:12:14 +0200 Subject: [PATCH 166/912] [core] Use `describeTreeView` for type-ahead tests (#12811) --- .../src/TreeItem/TreeItem.test.tsx | 155 ----------- .../useTreeViewKeyboardNavigation.test.tsx | 251 ++++++++++++++---- .../useTreeViewKeyboardNavigation.ts | 6 +- .../describeTreeView/describeTreeView.tsx | 12 +- .../describeTreeView.types.ts | 2 +- 5 files changed, 219 insertions(+), 207 deletions(-) diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index beebfefe762d..857b8866ae14 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -683,129 +683,6 @@ describe('', () => { }); }); - describe('type-ahead functionality', () => { - it('moves focus to the next item with a name that starts with the typed character', () => { - const { getByTestId } = render( - - - two} data-testid="two" /> - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - - expect(getByTestId('one')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('one'), { key: 't' }); - - expect(getByTestId('two')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('two'), { key: 'f' }); - - expect(getByTestId('four')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('four'), { key: 'o' }); - - expect(getByTestId('one')).toHaveFocus(); - }); - - it('moves focus to the next item with the same starting character', () => { - const { getByTestId } = render( - - - - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - - expect(getByTestId('one')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('one'), { key: 't' }); - - expect(getByTestId('two')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('two'), { key: 't' }); - - expect(getByTestId('three')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('three'), { key: 't' }); - - expect(getByTestId('two')).toHaveFocus(); - }); - - it('should not move focus when pressing a modifier key + letter', () => { - const { getByTestId } = render( - - - - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - - expect(getByTestId('one')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('one'), { key: 'f', ctrlKey: true }); - - expect(getByTestId('one')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('one'), { key: 'f', metaKey: true }); - - expect(getByTestId('one')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('one'), { key: 'f', shiftKey: true }); - - expect(getByTestId('one')).toHaveFocus(); - }); - - it('should not throw when an item is removed', () => { - function TestComponent() { - const [hide, setState] = React.useState(false); - return ( - - - - {!hide && } - - - - - ); - } - - const { getByText, getByTestId } = render(); - fireEvent.click(getByText('Hide')); - expect(getByTestId('navTo')).not.toHaveFocus(); - - expect(() => { - act(() => { - getByTestId('keyDown').focus(); - }); - - expect(getByTestId('keyDown')).toHaveFocus(); - - fireEvent.keyDown(getByTestId('keyDown'), { key: 'a' }); - }).not.to.throw(); - - expect(getByTestId('navTo')).toHaveFocus(); - }); - }); - describe('asterisk key interaction', () => { it('expands all siblings that are at the same level as the current item', () => { const onExpandedItemsChange = spy(); @@ -1545,22 +1422,6 @@ describe('', () => { describe('focus', () => { describe('`disabledItemsFocusable={true}`', () => { - it('should not prevent focus by type-ahead', () => { - const { getByTestId } = render( - - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - expect(getByTestId('one')).toHaveFocus(); - fireEvent.keyDown(getByTestId('one'), { key: 't' }); - expect(getByTestId('two')).toHaveFocus(); - }); - it('should not prevent focus by arrow keys', () => { const { getByTestId } = render( @@ -1581,22 +1442,6 @@ describe('', () => { }); describe('`disabledItemsFocusable=false`', () => { - it('should prevent focus by type-ahead', () => { - const { getByTestId } = render( - - - - , - ); - - act(() => { - getByTestId('one').focus(); - }); - expect(getByTestId('one')).toHaveFocus(); - fireEvent.keyDown(getByTestId('one'), { key: 't' }); - expect(getByTestId('one')).toHaveFocus(); - }); - it('should be skipped on navigation with arrow keys', () => { const { getByTestId } = render( diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx index 970bed10f721..5b5c7a4990f5 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx @@ -1,53 +1,208 @@ import * as React from 'react'; import { expect } from 'chai'; -import { act, createRenderer, fireEvent } from '@mui-internal/test-utils'; -import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; - -describe('useTreeViewKeyboardNavigation', () => { - const { render } = createRenderer(); - - it('should work after adding / removing items', () => { - const { getByRole, setProps } = render( - , - ); - - act(() => { - getByRole('treeitem', { name: 'one' }).focus(); - }); +import { act, fireEvent } from '@mui-internal/test-utils'; +import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; +import { + UseTreeViewItemsSignature, + UseTreeViewKeyboardNavigationSignature, +} from '@mui/x-tree-view/internals'; - fireEvent.keyDown(getByRole('treeitem', { name: 'one' }), { key: 'f' }); - expect(getByRole('treeitem', { name: 'four' })).toHaveFocus(); +describeTreeView<[UseTreeViewKeyboardNavigationSignature, UseTreeViewItemsSignature]>( + 'useTreeViewKeyboardNavigation', + ({ render, treeViewComponent }) => { + describe('Type-ahead', () => { + it('should move the focus to the next item with a name that starts with the typed character', () => { + const { getFocusedItemId, getItemRoot } = render({ + items: [ + { id: '1', label: 'one' }, + { id: '2', label: 'two' }, + { id: '3', label: 'three' }, + { id: '4', label: 'four' }, + ], + }); - setProps({ - items: [ - { id: 'one', label: 'one' }, - { id: 'two', label: 'two' }, - { id: 'three', label: 'three' }, - ], - }); - expect(getByRole('treeitem', { name: 'one' })).toHaveFocus(); - - fireEvent.keyDown(getByRole('treeitem', { name: 'one' }), { key: 't' }); - expect(getByRole('treeitem', { name: 'two' })).toHaveFocus(); - - setProps({ - items: [ - { id: 'one', label: 'one' }, - { id: 'two', label: 'two' }, - { id: 'three', label: 'three' }, - { id: 'four', label: 'four' }, - ], - }); - expect(getByRole('treeitem', { name: 'two' })).toHaveFocus(); + act(() => { + getItemRoot('1').focus(); + }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't' }); + expect(getFocusedItemId()).to.equal('2'); + + fireEvent.keyDown(getItemRoot('2'), { key: 'f' }); + expect(getFocusedItemId()).to.equal('4'); + + fireEvent.keyDown(getItemRoot('4'), { key: 'o' }); + expect(getFocusedItemId()).to.equal('1'); + }); + + it('should move to the next item in the displayed order when typing the same starting character', () => { + const { getFocusedItemId, getItemRoot } = render({ + items: [{ id: 'A1' }, { id: 'B1' }, { id: 'A2' }, { id: 'B3' }, { id: 'B2' }], + }); + + act(() => { + getItemRoot('A1').focus(); + }); + expect(getFocusedItemId()).to.equal('A1'); + + fireEvent.keyDown(getItemRoot('A1'), { key: 'b' }); + expect(getFocusedItemId()).to.equal('B1'); + + fireEvent.keyDown(getItemRoot('B1'), { key: 'b' }); + expect(getFocusedItemId()).to.equal('B3'); + + fireEvent.keyDown(getItemRoot('B3'), { key: 'b' }); + expect(getFocusedItemId()).to.equal('B2'); + + fireEvent.keyDown(getItemRoot('B2'), { key: 'b' }); + expect(getFocusedItemId()).to.equal('B1'); + }); + + it('should work with capitalized label', () => { + const { getFocusedItemId, getItemRoot } = render({ + items: [ + { id: '1', label: 'One' }, + { id: '2', label: 'Two' }, + { id: '3', label: 'Three' }, + { id: '4', label: 'Four' }, + ], + }); + + act(() => { + getItemRoot('1').focus(); + }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't' }); + expect(getFocusedItemId()).to.equal('2'); + + fireEvent.keyDown(getItemRoot('2'), { key: 'f' }); + expect(getFocusedItemId()).to.equal('4'); + + fireEvent.keyDown(getItemRoot('4'), { key: 'o' }); + expect(getFocusedItemId()).to.equal('1'); + }); + + it('should work with ReactElement label', function test() { + // Only the SimpleTreeView can have React Element labels. + if (treeViewComponent !== 'SimpleTreeView') { + this.skip(); + } + + const { getFocusedItemId, getItemRoot } = render({ + items: [ + { id: '1', label: one }, + { id: '2', label: two }, + { id: '3', label: three }, + { id: '4', label: four }, + ], + }); + + act(() => { + getItemRoot('1').focus(); + }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't' }); + expect(getFocusedItemId()).to.equal('2'); - fireEvent.keyDown(getByRole('treeitem', { name: 'two' }), { key: 'f' }); - expect(getByRole('treeitem', { name: 'four' })).toHaveFocus(); - }); -}); + fireEvent.keyDown(getItemRoot('2'), { key: 'f' }); + expect(getFocusedItemId()).to.equal('4'); + + fireEvent.keyDown(getItemRoot('4'), { key: 'o' }); + expect(getFocusedItemId()).to.equal('1'); + }); + + it('should work after adding / removing items', () => { + const { getFocusedItemId, getItemRoot, setItems } = render({ + items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], + }); + + act(() => { + getItemRoot('1').focus(); + }); + + fireEvent.keyDown(getItemRoot('1'), { key: '4' }); + expect(getFocusedItemId()).to.equal('4'); + + setItems([{ id: '1' }, { id: '2' }, { id: '3' }]); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: '2' }); + expect(getFocusedItemId()).to.equal('2'); + + setItems([{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }]); + expect(getFocusedItemId()).to.equal('2'); + + fireEvent.keyDown(getItemRoot('2'), { key: '4' }); + expect(getFocusedItemId()).to.equal('4'); + }); + + it('should not move focus when pressing a modifier key and a letter', () => { + const { getFocusedItemId, getItemRoot } = render({ + items: [ + { id: '1', label: 'one' }, + { id: '2', label: 'two' }, + { id: '3', label: 'three' }, + { id: '4', label: 'four' }, + ], + }); + + act(() => { + getItemRoot('1').focus(); + }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't', ctrlKey: true }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't', metaKey: true }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't', shiftKey: true }); + expect(getFocusedItemId()).to.equal('1'); + }); + + it('should work on disabled item when disabledItemsFocusable={true}', () => { + const { getFocusedItemId, getItemRoot } = render({ + items: [ + { id: '1', label: 'one', disabled: true }, + { id: '2', label: 'two', disabled: true }, + { id: '3', label: 'three', disabled: true }, + { id: '4', label: 'four', disabled: true }, + ], + disabledItemsFocusable: true, + }); + + act(() => { + getItemRoot('1').focus(); + }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't' }); + expect(getFocusedItemId()).to.equal('2'); + }); + + it('should not move focus on disabled item when disabledItemsFocusable={false}', () => { + const { getFocusedItemId, getItemRoot } = render({ + items: [ + { id: '1', label: 'one', disabled: true }, + { id: '2', label: 'two', disabled: true }, + { id: '3', label: 'three', disabled: true }, + { id: '4', label: 'four', disabled: true }, + ], + disabledItemsFocusable: false, + }); + + act(() => { + getItemRoot('1').focus(); + }); + expect(getFocusedItemId()).to.equal('1'); + + fireEvent.keyDown(getItemRoot('1'), { key: 't' }); + expect(getFocusedItemId()).to.equal('1'); + }); + }); + }, +); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index df6d4b7a2a33..75a7538bc1d1 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -61,11 +61,13 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< let matchingItemId: string | null = null; let currentItemId: string = getNextItem(itemId); - // The "currentItemId !== itemId" condition is to avoid an infinite loop when there is no matching item. - while (matchingItemId == null && currentItemId !== itemId) { + const checkedItems: Record = {}; + // The "!checkedItems[currentItemId]" condition avoids an infinite loop when there is no matching item. + while (matchingItemId == null && !checkedItems[currentItemId]) { if (firstCharMap.current[currentItemId] === cleanQuery) { matchingItemId = currentItemId; } else { + checkedItems[currentItemId] = true; currentItemId = getNextItem(currentItemId); } } diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 6cfccabee847..3eb291137dbe 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -91,7 +91,17 @@ const innerDescribeTreeView = ( 'data-testid': ownerState.itemId, }) as any, }} - getItemLabel={(item) => item.label ?? item.id} + getItemLabel={(item) => { + if (item.label) { + if (typeof item.label !== 'string') { + throw new Error('Only use string labels when testing RichTreeView(Pro)'); + } + + return item.label; + } + + return item.id; + }} isItemDisabled={(item) => !!item.disabled} {...other} /> diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index ba15ccee9e59..082f2fb3bd4d 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -115,7 +115,7 @@ interface DescribeTreeViewTestRunnerParams Date: Fri, 26 Apr 2024 15:48:31 +0500 Subject: [PATCH 167/912] v7.3.1 (#12909) Signed-off-by: Lukas Signed-off-by: Bilal Shafi Co-authored-by: Lukas Co-authored-by: Andrew Cherniavskii --- CHANGELOG.md | 77 +++++++++++++++++++++ package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 10 files changed, 86 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8184073b87e8..fefa8208a159 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,83 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.3.1 + +_Apr 26, 2024_ + +We'd like to offer a big thanks to the 13 contributors who made this release possible. Here are some highlights ✨: + +- 🎁 Scatter Charts get a [z-axis to allow coloring data points independently from their coordinates](https://mui.com/x/react-charts/scatter/#color-scale) +- 🌍 Improve Catalan (ca-ES) and Spanish (es-ES) locales on the Date and Time Pickers +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@7.3.1` + +- [DataGrid] Fix date filtering for negative timezone offsets (#12836) @cherniavskii +- [DataGrid] Fix flex column width when used with pinned columns (#12849) @romgrk +- [DataGrid] Fix group header resize (#12863) @arminmeh +- [DataGrid] Pass slot props to `columnHeaders` slot (#12768) @cherniavskii + +#### `@mui/x-data-grid-pro@7.3.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.3.1`. + +#### `@mui/x-data-grid-premium@7.3.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.3.1`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.3.1` + +- [l10n] Improve Catalan (ca-ES) locale (#12856) @soler1212 +- [l10n] Improve Spanish (es-ES) locale (#12858) @soler1212 + +#### `@mui/x-date-pickers-pro@7.3.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.3.1`. + +### Charts + +#### `@mui/x-charts@7.3.1` + +- [charts] Add documentation on border radius alternative for `BarCharts` (#12859) @JCQuintas +- [charts] Add z-axis to colorize scatter charts (#12738) @alexfauquette +- [charts] Fix left/bottomAxis not picking up default axis id (#12894) @JCQuintas +- [charts] Improve default tooltip content (#12257) @oliviertassinari +- [charts] Round y values for bar chart (#12846) @alexfauquette + +### Tree View + +#### `@mui/x-tree-view@7.3.1` + +- [TreeView] Remove un-needed `aria-activedescendant` attribute (#12867) @flaviendelangle +- [TreeView] Rework the selection internals (#12703) @flaviendelangle +- [TreeView] Use the order in which the items are displayed for `type-ahead` (#12827) @flaviendelangle + +### Docs + +- [docs] Add demo for styling charts with `sx` props (#12791) @derek-0000 +- [docs] Cover webpack 4 support in migration guide (#12710) @cherniavskii +- [docs] Document interfaces for charts (#12656) @alexfauquette +- [docs] Fix Vale regression (#12862) @oliviertassinari +- [docs] Improve Data Grid migration guide (#12879) @MBilalShafi +- [docs] Update Column features availability (#12865) @DanailH + +### Core + +- [core] Fix `l10n` GH workflow (#12895) @LukasTy +- [core] Match Base UI and Toolpad @oliviertassinari +- [core] Remove redundant `setupFiles` entries in `package.json` (#12899) @LukasTy +- [core] Use `describeTreeView` for focus tests (#12698) @flaviendelangle +- [core] Use `describeTreeView` for type-ahead tests (#12811) @flaviendelangle +- [code-infra] Change package manager to `pnpm` (#11875) @LukasTy +- [code-infra] Closer sync with eslint config of codebase (#12864) @oliviertassinari +- [support-infra] Add release announcement to GitHub workflows (#11867) (#12843) @michelengelen + ## 7.3.0 _Apr 18, 2024_ diff --git a/package.json b/package.json index 115d682ea074..bb5b88f54d77 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.3.0", + "version": "7.3.1", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 869f3bd49eb1..1ff42e78fc9e 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.3.0", + "version": "7.3.1", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 339b9b2b703b..744491e626f6 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.3.0", + "version": "7.3.1", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 6ef2a0653b01..69fa79fb05de 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.3.0", + "version": "7.3.1", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index ef0605015835..de1d196bec2e 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.3.0", + "version": "7.3.1", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index d0afd0118a63..a93f7fdbaa8b 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.3.0", + "version": "7.3.1", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 89071aaef1da..1cab394c29b3 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.2.0", + "version": "7.3.1", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 7d60c8176048..a1d7d6dabeb2 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.2.0", + "version": "7.3.1", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 3ec4ec9a526b..19c310db3f81 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.3.0", + "version": "7.3.1", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From d8050dd0fc7be0551568bcaaba2b2afde2d2c027 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Fri, 26 Apr 2024 13:54:09 +0200 Subject: [PATCH 168/912] [pickers] Fix typo on the `viewRenderers` prop description (#12915) --- .../api-docs/date-pickers/date-picker/date-picker.json | 2 +- .../date-pickers/date-range-picker/date-range-picker.json | 2 +- .../date-pickers/date-time-picker/date-time-picker.json | 2 +- .../date-time-range-picker/date-time-range-picker.json | 2 +- .../date-pickers/desktop-date-picker/desktop-date-picker.json | 2 +- .../desktop-date-range-picker/desktop-date-range-picker.json | 2 +- .../desktop-date-time-picker/desktop-date-time-picker.json | 2 +- .../desktop-date-time-range-picker.json | 2 +- .../date-pickers/desktop-time-picker/desktop-time-picker.json | 2 +- .../date-pickers/mobile-date-picker/mobile-date-picker.json | 2 +- .../mobile-date-range-picker/mobile-date-range-picker.json | 2 +- .../mobile-date-time-picker/mobile-date-time-picker.json | 2 +- .../mobile-date-time-range-picker.json | 2 +- .../date-pickers/mobile-time-picker/mobile-time-picker.json | 2 +- .../date-pickers/static-date-picker/static-date-picker.json | 2 +- .../static-date-range-picker/static-date-range-picker.json | 2 +- .../static-date-time-picker/static-date-time-picker.json | 2 +- .../date-pickers/static-time-picker/static-time-picker.json | 2 +- .../api-docs/date-pickers/time-picker/time-picker.json | 2 +- .../x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx | 2 +- packages/x-date-pickers-pro/src/DateRangePicker/shared.tsx | 2 +- .../src/DateTimeRangePicker/DateTimeRangePicker.tsx | 2 +- packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx | 2 +- .../src/DesktopDateRangePicker/DesktopDateRangePicker.tsx | 2 +- .../DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx | 2 +- .../src/MobileDateRangePicker/MobileDateRangePicker.tsx | 2 +- .../src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx | 2 +- .../src/StaticDateRangePicker/StaticDateRangePicker.tsx | 2 +- packages/x-date-pickers/src/DatePicker/DatePicker.tsx | 2 +- packages/x-date-pickers/src/DatePicker/shared.tsx | 2 +- packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx | 2 +- packages/x-date-pickers/src/DateTimePicker/shared.tsx | 2 +- .../x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx | 2 +- .../src/DesktopDateTimePicker/DesktopDateTimePicker.tsx | 2 +- .../x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx | 2 +- .../x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx | 2 +- .../src/MobileDateTimePicker/MobileDateTimePicker.tsx | 2 +- .../x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx | 2 +- .../x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx | 2 +- .../src/StaticDateTimePicker/StaticDateTimePicker.tsx | 2 +- .../x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx | 2 +- packages/x-date-pickers/src/TimePicker/TimePicker.tsx | 2 +- packages/x-date-pickers/src/TimePicker/shared.tsx | 2 +- .../src/internals/hooks/usePicker/usePickerViews.ts | 2 +- 44 files changed, 44 insertions(+), 44 deletions(-) diff --git a/docs/translations/api-docs/date-pickers/date-picker/date-picker.json b/docs/translations/api-docs/date-pickers/date-picker/date-picker.json index b668d9cce6fa..00f34183a45d 100644 --- a/docs/translations/api-docs/date-pickers/date-picker/date-picker.json +++ b/docs/translations/api-docs/date-pickers/date-picker/date-picker.json @@ -153,7 +153,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/date-range-picker/date-range-picker.json b/docs/translations/api-docs/date-pickers/date-range-picker/date-range-picker.json index c611e6d21646..000a3f38538e 100644 --- a/docs/translations/api-docs/date-pickers/date-range-picker/date-range-picker.json +++ b/docs/translations/api-docs/date-pickers/date-range-picker/date-range-picker.json @@ -146,7 +146,7 @@ }, "value": { "description": "The selected value. Used when the component is controlled." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/date-pickers/date-time-picker/date-time-picker.json b/docs/translations/api-docs/date-pickers/date-time-picker/date-time-picker.json index ed02c1200ef9..fa71ce0a4449 100644 --- a/docs/translations/api-docs/date-pickers/date-time-picker/date-time-picker.json +++ b/docs/translations/api-docs/date-pickers/date-time-picker/date-time-picker.json @@ -190,7 +190,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json b/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json index 0f72e517db20..84e6d78c3eca 100644 --- a/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json +++ b/docs/translations/api-docs/date-pickers/date-time-range-picker/date-time-range-picker.json @@ -190,7 +190,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/docs/translations/api-docs/date-pickers/desktop-date-picker/desktop-date-picker.json b/docs/translations/api-docs/date-pickers/desktop-date-picker/desktop-date-picker.json index b79689614dc6..ef1e3c68ff30 100644 --- a/docs/translations/api-docs/date-pickers/desktop-date-picker/desktop-date-picker.json +++ b/docs/translations/api-docs/date-pickers/desktop-date-picker/desktop-date-picker.json @@ -150,7 +150,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/desktop-date-range-picker/desktop-date-range-picker.json b/docs/translations/api-docs/date-pickers/desktop-date-range-picker/desktop-date-range-picker.json index 37f5382422fb..7bae50042082 100644 --- a/docs/translations/api-docs/date-pickers/desktop-date-range-picker/desktop-date-range-picker.json +++ b/docs/translations/api-docs/date-pickers/desktop-date-range-picker/desktop-date-range-picker.json @@ -143,7 +143,7 @@ }, "value": { "description": "The selected value. Used when the component is controlled." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/date-pickers/desktop-date-time-picker/desktop-date-time-picker.json b/docs/translations/api-docs/date-pickers/desktop-date-time-picker/desktop-date-time-picker.json index 31eb2d4af4ac..b1ad8f362650 100644 --- a/docs/translations/api-docs/date-pickers/desktop-date-time-picker/desktop-date-time-picker.json +++ b/docs/translations/api-docs/date-pickers/desktop-date-time-picker/desktop-date-time-picker.json @@ -187,7 +187,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json b/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json index 0ab25ea155fd..e6af4b354161 100644 --- a/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json +++ b/docs/translations/api-docs/date-pickers/desktop-date-time-range-picker/desktop-date-time-range-picker.json @@ -187,7 +187,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/docs/translations/api-docs/date-pickers/desktop-time-picker/desktop-time-picker.json b/docs/translations/api-docs/date-pickers/desktop-time-picker/desktop-time-picker.json index 897981187fe0..f34197ca9139 100644 --- a/docs/translations/api-docs/date-pickers/desktop-time-picker/desktop-time-picker.json +++ b/docs/translations/api-docs/date-pickers/desktop-time-picker/desktop-time-picker.json @@ -123,7 +123,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/docs/translations/api-docs/date-pickers/mobile-date-picker/mobile-date-picker.json b/docs/translations/api-docs/date-pickers/mobile-date-picker/mobile-date-picker.json index 1e0eaf91dca0..40892fb4d29e 100644 --- a/docs/translations/api-docs/date-pickers/mobile-date-picker/mobile-date-picker.json +++ b/docs/translations/api-docs/date-pickers/mobile-date-picker/mobile-date-picker.json @@ -150,7 +150,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/mobile-date-range-picker/mobile-date-range-picker.json b/docs/translations/api-docs/date-pickers/mobile-date-range-picker/mobile-date-range-picker.json index 030601daceb3..a739219eaec1 100644 --- a/docs/translations/api-docs/date-pickers/mobile-date-range-picker/mobile-date-range-picker.json +++ b/docs/translations/api-docs/date-pickers/mobile-date-range-picker/mobile-date-range-picker.json @@ -140,7 +140,7 @@ }, "value": { "description": "The selected value. Used when the component is controlled." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/date-pickers/mobile-date-time-picker/mobile-date-time-picker.json b/docs/translations/api-docs/date-pickers/mobile-date-time-picker/mobile-date-time-picker.json index 0dec4b4e84de..da66472874cf 100644 --- a/docs/translations/api-docs/date-pickers/mobile-date-time-picker/mobile-date-time-picker.json +++ b/docs/translations/api-docs/date-pickers/mobile-date-time-picker/mobile-date-time-picker.json @@ -178,7 +178,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json b/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json index 135c8a9594b2..58b39282f42e 100644 --- a/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json +++ b/docs/translations/api-docs/date-pickers/mobile-date-time-range-picker/mobile-date-time-range-picker.json @@ -184,7 +184,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/docs/translations/api-docs/date-pickers/mobile-time-picker/mobile-time-picker.json b/docs/translations/api-docs/date-pickers/mobile-time-picker/mobile-time-picker.json index 80fd21ef71fd..43f9d92678fe 100644 --- a/docs/translations/api-docs/date-pickers/mobile-time-picker/mobile-time-picker.json +++ b/docs/translations/api-docs/date-pickers/mobile-time-picker/mobile-time-picker.json @@ -114,7 +114,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/docs/translations/api-docs/date-pickers/static-date-picker/static-date-picker.json b/docs/translations/api-docs/date-pickers/static-date-picker/static-date-picker.json index b59bbd0f3453..419ab0e226cc 100644 --- a/docs/translations/api-docs/date-pickers/static-date-picker/static-date-picker.json +++ b/docs/translations/api-docs/date-pickers/static-date-picker/static-date-picker.json @@ -125,7 +125,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/static-date-range-picker/static-date-range-picker.json b/docs/translations/api-docs/date-pickers/static-date-range-picker/static-date-range-picker.json index 5c312fa77d83..3789c66ef902 100644 --- a/docs/translations/api-docs/date-pickers/static-date-range-picker/static-date-range-picker.json +++ b/docs/translations/api-docs/date-pickers/static-date-range-picker/static-date-range-picker.json @@ -114,7 +114,7 @@ }, "value": { "description": "The selected value. Used when the component is controlled." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." } }, "classDescriptions": {}, diff --git a/docs/translations/api-docs/date-pickers/static-date-time-picker/static-date-time-picker.json b/docs/translations/api-docs/date-pickers/static-date-time-picker/static-date-time-picker.json index cda54bc81038..412c84399a30 100644 --- a/docs/translations/api-docs/date-pickers/static-date-time-picker/static-date-time-picker.json +++ b/docs/translations/api-docs/date-pickers/static-date-time-picker/static-date-time-picker.json @@ -153,7 +153,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." }, "yearsPerRow": { "description": "Years rendered per row." } diff --git a/docs/translations/api-docs/date-pickers/static-time-picker/static-time-picker.json b/docs/translations/api-docs/date-pickers/static-time-picker/static-time-picker.json index 24cc3737ab71..407f598837a7 100644 --- a/docs/translations/api-docs/date-pickers/static-time-picker/static-time-picker.json +++ b/docs/translations/api-docs/date-pickers/static-time-picker/static-time-picker.json @@ -89,7 +89,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/docs/translations/api-docs/date-pickers/time-picker/time-picker.json b/docs/translations/api-docs/date-pickers/time-picker/time-picker.json index c766c72c5bb5..c5a1a885b348 100644 --- a/docs/translations/api-docs/date-pickers/time-picker/time-picker.json +++ b/docs/translations/api-docs/date-pickers/time-picker/time-picker.json @@ -126,7 +126,7 @@ "description": "The visible view. Used when the component view is controlled. Must be a valid option from views list." }, "viewRenderers": { - "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be the used." + "description": "Define custom view renderers for each section. If null, the section will only have field editing. If undefined, internally defined view will be used." }, "views": { "description": "Available views." } }, diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx index 6d48492f955f..bb82189f082a 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx @@ -349,7 +349,7 @@ DateRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/shared.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/shared.tsx index 5a0b72b9bdd0..36beb3a913bb 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/shared.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/shared.tsx @@ -58,7 +58,7 @@ export interface BaseDateRangePickerProps /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers?: Partial< PickerViewRendererLookup, 'day', DateRangeViewRendererProps, {}> diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx index 6c16000d18d2..6e501d487ac4 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx @@ -429,7 +429,7 @@ DateTimeRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx index 34d53e01ead6..9c1e7463e31c 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/shared.tsx @@ -119,7 +119,7 @@ export interface BaseDateTimeRangePickerProps /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers?: Partial>; } diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx index 83f7274a8e5b..950ec64a3492 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx @@ -384,7 +384,7 @@ DesktopDateRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index b22137768f1d..70cd3bfb0dbc 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -593,7 +593,7 @@ DesktopDateTimeRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx index 5dfa0b6ed65c..f7911b49293a 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx @@ -380,7 +380,7 @@ MobileDateRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index 698cbca01bb1..088b1f9b845c 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -583,7 +583,7 @@ MobileDateTimeRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx b/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx index 5d099a332328..c4edec88d5b2 100644 --- a/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx @@ -290,7 +290,7 @@ StaticDateRangePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/DatePicker/DatePicker.tsx b/packages/x-date-pickers/src/DatePicker/DatePicker.tsx index 0fb35eb2fa6d..ce3e8cbe9344 100644 --- a/packages/x-date-pickers/src/DatePicker/DatePicker.tsx +++ b/packages/x-date-pickers/src/DatePicker/DatePicker.tsx @@ -357,7 +357,7 @@ DatePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/DatePicker/shared.tsx b/packages/x-date-pickers/src/DatePicker/shared.tsx index 8bbbffc21c19..abfb67d545de 100644 --- a/packages/x-date-pickers/src/DatePicker/shared.tsx +++ b/packages/x-date-pickers/src/DatePicker/shared.tsx @@ -62,7 +62,7 @@ export interface BaseDatePickerProps /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers?: Partial>; } diff --git a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx index 43d1ca2b9dff..17f220ad2a9b 100644 --- a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx @@ -424,7 +424,7 @@ DateTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/DateTimePicker/shared.tsx b/packages/x-date-pickers/src/DateTimePicker/shared.tsx index 0caf3dad3d42..4c34b61987e9 100644 --- a/packages/x-date-pickers/src/DateTimePicker/shared.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/shared.tsx @@ -102,7 +102,7 @@ export interface BaseDateTimePickerProps< /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers?: Partial>; } diff --git a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx index 741ba0caf36d..ac3b3eb16202 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx @@ -401,7 +401,7 @@ DesktopDatePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx index 5ee528306825..0cdbf5249418 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx @@ -605,7 +605,7 @@ DesktopDateTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx b/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx index 656455d8f9d4..9062a5843187 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx @@ -405,7 +405,7 @@ DesktopTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ hours: PropTypes.func, diff --git a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx index eb6084ac6dd7..0ce73052f7ac 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx @@ -398,7 +398,7 @@ MobileDatePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx index 0f88dd08f014..e987ca9c9cf1 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx @@ -459,7 +459,7 @@ MobileDateTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx b/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx index c27094adc47c..63e299d86f32 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx @@ -347,7 +347,7 @@ MobileTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ hours: PropTypes.func, diff --git a/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx b/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx index a079d4cedb3d..02b551d184a9 100644 --- a/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx +++ b/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx @@ -299,7 +299,7 @@ StaticDatePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx index 48133682a595..90c1564ba713 100644 --- a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx +++ b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx @@ -359,7 +359,7 @@ StaticDateTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ day: PropTypes.func, diff --git a/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx b/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx index d68b76d9029f..fc36aa627a6a 100644 --- a/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx +++ b/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.tsx @@ -247,7 +247,7 @@ StaticTimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ hours: PropTypes.func, diff --git a/packages/x-date-pickers/src/TimePicker/TimePicker.tsx b/packages/x-date-pickers/src/TimePicker/TimePicker.tsx index 9d734dd9ef2c..00366525a661 100644 --- a/packages/x-date-pickers/src/TimePicker/TimePicker.tsx +++ b/packages/x-date-pickers/src/TimePicker/TimePicker.tsx @@ -323,7 +323,7 @@ TimePicker.propTypes = { /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PropTypes.shape({ hours: PropTypes.func, diff --git a/packages/x-date-pickers/src/TimePicker/shared.tsx b/packages/x-date-pickers/src/TimePicker/shared.tsx index 5827164ec17f..aeb8e9686733 100644 --- a/packages/x-date-pickers/src/TimePicker/shared.tsx +++ b/packages/x-date-pickers/src/TimePicker/shared.tsx @@ -64,7 +64,7 @@ export interface BaseTimePickerProps< /** * Define custom view renderers for each section. * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers?: Partial>; } diff --git a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerViews.ts b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerViews.ts index 1b77420f2299..d1262bf8a76e 100644 --- a/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerViews.ts +++ b/packages/x-date-pickers/src/internals/hooks/usePicker/usePickerViews.ts @@ -64,7 +64,7 @@ export interface UsePickerViewsBaseProps< disabled?: boolean; /** * If `null`, the section will only have field editing. - * If `undefined`, internally defined view will be the used. + * If `undefined`, internally defined view will be used. */ viewRenderers: PickerViewRendererLookup; /** From 48989e4be6d5de6e169f9fd5d67e10db027471b3 Mon Sep 17 00:00:00 2001 From: Michael Tzahi <71826961+michaelNXT1@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:32:47 +0300 Subject: [PATCH 169/912] [l10n] Improve Hebrew (he-IL) locale (#12910) Signed-off-by: Michael Tzahi <71826961+michaelNXT1@users.noreply.github.com> Co-authored-by: alexandre --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/heIL.ts | 26 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 1ea439619b64..ab897ccab6ab 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -99,7 +99,7 @@ "languageTag": "he-IL", "importName": "heIL", "localeName": "Hebrew", - "missingKeysCount": 14, + "missingKeysCount": 1, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/heIL.ts" }, diff --git a/packages/x-date-pickers/src/locales/heIL.ts b/packages/x-date-pickers/src/locales/heIL.ts index 30903ddd79b6..5068ec458a50 100644 --- a/packages/x-date-pickers/src/locales/heIL.ts +++ b/packages/x-date-pickers/src/locales/heIL.ts @@ -25,10 +25,10 @@ const heILPickers: Partial> = { // DateRange labels start: 'תחילה', end: 'סיום', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'תאריך תחילה', + startTime: 'שעת תחילה', + endDate: 'תאריך סיום', + endTime: 'שעת סיום', // Action bar cancelButtonLabel: 'ביטול', @@ -67,7 +67,7 @@ const heILPickers: Partial> = { value !== null && utils.isValid(value) ? `בחירת שעה, השעה שנבחרה היא ${utils.format(value, 'fullTime')}` : 'בחירת שעה', - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'נקה ערך', // Table labels timeTableLabel: 'בחירת שעה', @@ -84,17 +84,17 @@ const heILPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', + year: 'שנה', + month: 'חודש', + day: 'יום', + weekDay: 'יום בשבוע', + hours: 'שעות', + minutes: 'דקות', + seconds: 'שניות', // meridiem: 'Meridiem', // Common - // empty: 'Empty', + empty: 'ריק', }; export const heIL = getPickersLocalization(heILPickers); From a61561abbe4fd927936f0617a29912ec11ed273f Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Fri, 26 Apr 2024 16:30:41 +0200 Subject: [PATCH 170/912] [pickers] Improve TypeScript performance in `PickersDay` (#12920) --- packages/x-date-pickers/src/PickersDay/PickersDay.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-date-pickers/src/PickersDay/PickersDay.tsx b/packages/x-date-pickers/src/PickersDay/PickersDay.tsx index a614588756fd..5ff08df53f70 100644 --- a/packages/x-date-pickers/src/PickersDay/PickersDay.tsx +++ b/packages/x-date-pickers/src/PickersDay/PickersDay.tsx @@ -239,7 +239,7 @@ const PickersDayRaw = React.forwardRef(function PickersDay, forwardedRef: React.Ref, ) { - const props = useThemeProps, 'MuiPickersDay'>({ + const props = useThemeProps({ props: inProps, name: 'MuiPickersDay', }); From 2b4a75d7c9c6e6c1e06919b104f642bcdb0c1b35 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:09:45 +0200 Subject: [PATCH 171/912] [docs-infra] Use the `@mui/docs/HighlightedCode` (#12848) Signed-off-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Lukas --- docs/data/charts/bars/BarClickNoSnap.js | 2 +- .../{ColorScaleNoSnap.js => ColorScale.js} | 5 ++- .../{ColorScaleNoSnap.tsx => ColorScale.tsx} | 5 ++- docs/data/charts/bars/bars.md | 2 +- .../{ColorScaleNoSnap.js => ColorScale.js} | 5 ++- .../{ColorScaleNoSnap.tsx => ColorScale.tsx} | 5 ++- .../charts/lines/InterpolationDemoNoSnap.js | 2 +- docs/data/charts/lines/LineClickNoSnap.js | 2 +- docs/data/charts/lines/lines.md | 2 +- docs/data/charts/pie/PieClickNoSnap.js | 2 +- .../{ColorScaleNoSnap.js => ColorScale.js} | 5 ++- .../{ColorScaleNoSnap.tsx => ColorScale.tsx} | 5 ++- .../data/charts/scatter/ScatterClickNoSnap.js | 2 +- docs/data/charts/scatter/scatter.md | 2 +- .../data-grid/events/CatalogOfEventsNoSnap.js | 2 +- .../base-concepts/ComponentExplorerNoSnap.js | 2 +- .../base-concepts/ComponentExplorerNoSnap.tsx | 2 +- docs/src/modules/components/ApiDocs.js | 2 +- .../src/modules/components/ChartsUsageDemo.js | 2 +- .../components/CustomizationPlayground.tsx | 2 +- .../modules/components/InterfaceApiPage.js | 4 +-- .../modules/components/LocalizationTable.js | 2 +- .../PickersRenderingInstructions.js | 2 +- docs/src/modules/components/SelectorsDocs.js | 4 +-- package.json | 7 ++--- pnpm-lock.yaml | 31 ++++++++----------- tsconfig.json | 2 ++ 27 files changed, 50 insertions(+), 60 deletions(-) rename docs/data/charts/bars/{ColorScaleNoSnap.js => ColorScale.js} (97%) rename docs/data/charts/bars/{ColorScaleNoSnap.tsx => ColorScale.tsx} (97%) rename docs/data/charts/lines/{ColorScaleNoSnap.js => ColorScale.js} (97%) rename docs/data/charts/lines/{ColorScaleNoSnap.tsx => ColorScale.tsx} (97%) rename docs/data/charts/scatter/{ColorScaleNoSnap.js => ColorScale.js} (98%) rename docs/data/charts/scatter/{ColorScaleNoSnap.tsx => ColorScale.tsx} (98%) diff --git a/docs/data/charts/bars/BarClickNoSnap.js b/docs/data/charts/bars/BarClickNoSnap.js index da4a899c22ab..779097099389 100644 --- a/docs/data/charts/bars/BarClickNoSnap.js +++ b/docs/data/charts/bars/BarClickNoSnap.js @@ -7,7 +7,7 @@ import UndoOutlinedIcon from '@mui/icons-material/UndoOutlined'; import { BarChart } from '@mui/x-charts/BarChart'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const barChartsParams = { series: [ diff --git a/docs/data/charts/bars/ColorScaleNoSnap.js b/docs/data/charts/bars/ColorScale.js similarity index 97% rename from docs/data/charts/bars/ColorScaleNoSnap.js rename to docs/data/charts/bars/ColorScale.js index 810588162df1..dc3eb0778e8a 100644 --- a/docs/data/charts/bars/ColorScaleNoSnap.js +++ b/docs/data/charts/bars/ColorScale.js @@ -3,12 +3,11 @@ import { BarChart } from '@mui/x-charts/BarChart'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; -// @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const series = [{ data: [-2, -9, 12, 11, 6, -4] }]; -export default function ColorScaleNoSnap() { +export default function ColorScale() { const [colorX, setColorX] = React.useState('piecewise'); const [colorY, setColorY] = React.useState('None'); diff --git a/docs/data/charts/bars/ColorScaleNoSnap.tsx b/docs/data/charts/bars/ColorScale.tsx similarity index 97% rename from docs/data/charts/bars/ColorScaleNoSnap.tsx rename to docs/data/charts/bars/ColorScale.tsx index 2b2594dc2cee..bda7278912dd 100644 --- a/docs/data/charts/bars/ColorScaleNoSnap.tsx +++ b/docs/data/charts/bars/ColorScale.tsx @@ -3,12 +3,11 @@ import { BarChart } from '@mui/x-charts/BarChart'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; -// @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const series = [{ data: [-2, -9, 12, 11, 6, -4] }]; -export default function ColorScaleNoSnap() { +export default function ColorScale() { const [colorX, setColorX] = React.useState< 'None' | 'piecewise' | 'continuous' | 'ordinal' >('piecewise'); diff --git a/docs/data/charts/bars/bars.md b/docs/data/charts/bars/bars.md index 487e445b42c6..a3c41180f20c 100644 --- a/docs/data/charts/bars/bars.md +++ b/docs/data/charts/bars/bars.md @@ -98,7 +98,7 @@ The bar charts use by priority: Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). -{{"demo": "ColorScaleNoSnap.js"}} +{{"demo": "ColorScale.js"}} ### Border Radius diff --git a/docs/data/charts/lines/ColorScaleNoSnap.js b/docs/data/charts/lines/ColorScale.js similarity index 97% rename from docs/data/charts/lines/ColorScaleNoSnap.js rename to docs/data/charts/lines/ColorScale.js index b88e8815f141..1744ee298e1a 100644 --- a/docs/data/charts/lines/ColorScaleNoSnap.js +++ b/docs/data/charts/lines/ColorScale.js @@ -3,10 +3,9 @@ import { LineChart } from '@mui/x-charts/LineChart'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; -// @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; -export default function ColorScaleNoSnap() { +export default function ColorScale() { const [colorX, setColorX] = React.useState('None'); const [colorY, setColorY] = React.useState('piecewise'); diff --git a/docs/data/charts/lines/ColorScaleNoSnap.tsx b/docs/data/charts/lines/ColorScale.tsx similarity index 97% rename from docs/data/charts/lines/ColorScaleNoSnap.tsx rename to docs/data/charts/lines/ColorScale.tsx index 164b1c1430e8..281bc9f8c040 100644 --- a/docs/data/charts/lines/ColorScaleNoSnap.tsx +++ b/docs/data/charts/lines/ColorScale.tsx @@ -3,10 +3,9 @@ import { LineChart } from '@mui/x-charts/LineChart'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; -// @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; -export default function ColorScaleNoSnap() { +export default function ColorScale() { const [colorX, setColorX] = React.useState< 'None' | 'piecewise' | 'continuous' | 'ordinal' >('None'); diff --git a/docs/data/charts/lines/InterpolationDemoNoSnap.js b/docs/data/charts/lines/InterpolationDemoNoSnap.js index 7d96ed6587b1..2560facdf22d 100644 --- a/docs/data/charts/lines/InterpolationDemoNoSnap.js +++ b/docs/data/charts/lines/InterpolationDemoNoSnap.js @@ -4,7 +4,7 @@ import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; import { LineChart } from '@mui/x-charts/LineChart'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const curveTypes = [ 'catmullRom', diff --git a/docs/data/charts/lines/LineClickNoSnap.js b/docs/data/charts/lines/LineClickNoSnap.js index f60adf562389..7cb6be04697b 100644 --- a/docs/data/charts/lines/LineClickNoSnap.js +++ b/docs/data/charts/lines/LineClickNoSnap.js @@ -7,7 +7,7 @@ import UndoOutlinedIcon from '@mui/icons-material/UndoOutlined'; import { LineChart } from '@mui/x-charts/LineChart'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const lineChartsParams = { series: [ diff --git a/docs/data/charts/lines/lines.md b/docs/data/charts/lines/lines.md index 9b203541adca..83ec7505ffd6 100644 --- a/docs/data/charts/lines/lines.md +++ b/docs/data/charts/lines/lines.md @@ -159,7 +159,7 @@ The line charts use by priority: Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). -{{"demo": "ColorScaleNoSnap.js"}} +{{"demo": "ColorScale.js"}} :::warning For now, ordinal config is not supported for line chart. diff --git a/docs/data/charts/pie/PieClickNoSnap.js b/docs/data/charts/pie/PieClickNoSnap.js index 9e20f6c90adf..de00ca705a95 100644 --- a/docs/data/charts/pie/PieClickNoSnap.js +++ b/docs/data/charts/pie/PieClickNoSnap.js @@ -7,7 +7,7 @@ import UndoOutlinedIcon from '@mui/icons-material/UndoOutlined'; import { PieChart } from '@mui/x-charts/PieChart'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const data1 = [ { label: 'Group A', value: 400 }, diff --git a/docs/data/charts/scatter/ColorScaleNoSnap.js b/docs/data/charts/scatter/ColorScale.js similarity index 98% rename from docs/data/charts/scatter/ColorScaleNoSnap.js rename to docs/data/charts/scatter/ColorScale.js index b51c3e27dc99..5c046a3de76d 100644 --- a/docs/data/charts/scatter/ColorScaleNoSnap.js +++ b/docs/data/charts/scatter/ColorScale.js @@ -4,15 +4,14 @@ import { ScatterChart } from '@mui/x-charts/ScatterChart'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; -// @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import { Chance } from 'chance'; const POINTS_NUMBER = 50; const chance = new Chance(42); -export default function ColorScaleNoSnap() { +export default function ColorScale() { const [colorX, setColorX] = React.useState('piecewise'); const [colorY, setColorY] = React.useState('None'); const [colorZ, setColorZ] = React.useState('None'); diff --git a/docs/data/charts/scatter/ColorScaleNoSnap.tsx b/docs/data/charts/scatter/ColorScale.tsx similarity index 98% rename from docs/data/charts/scatter/ColorScaleNoSnap.tsx rename to docs/data/charts/scatter/ColorScale.tsx index db875306f935..42e6b349def2 100644 --- a/docs/data/charts/scatter/ColorScaleNoSnap.tsx +++ b/docs/data/charts/scatter/ColorScale.tsx @@ -4,15 +4,14 @@ import { ScatterValueType } from '@mui/x-charts'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import MenuItem from '@mui/material/MenuItem'; -// @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import { Chance } from 'chance'; const POINTS_NUMBER = 50; const chance = new Chance(42); -export default function ColorScaleNoSnap() { +export default function ColorScale() { const [colorX, setColorX] = React.useState<'None' | 'piecewise' | 'continuous'>( 'piecewise', ); diff --git a/docs/data/charts/scatter/ScatterClickNoSnap.js b/docs/data/charts/scatter/ScatterClickNoSnap.js index decb628cb1fa..546306d7c508 100644 --- a/docs/data/charts/scatter/ScatterClickNoSnap.js +++ b/docs/data/charts/scatter/ScatterClickNoSnap.js @@ -7,7 +7,7 @@ import UndoOutlinedIcon from '@mui/icons-material/UndoOutlined'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const scatterChartsParams = { series: [ diff --git a/docs/data/charts/scatter/scatter.md b/docs/data/charts/scatter/scatter.md index 1ebeebf8ec9f..188c91bdd01b 100644 --- a/docs/data/charts/scatter/scatter.md +++ b/docs/data/charts/scatter/scatter.md @@ -88,7 +88,7 @@ Here are three ways to set z value to 5. Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts/styling/#values-color). -{{"demo": "ColorScaleNoSnap.js"}} +{{"demo": "ColorScale.js"}} ### Grid diff --git a/docs/data/data-grid/events/CatalogOfEventsNoSnap.js b/docs/data/data-grid/events/CatalogOfEventsNoSnap.js index a8961cf3d97b..8f770edab4fd 100644 --- a/docs/data/data-grid/events/CatalogOfEventsNoSnap.js +++ b/docs/data/data-grid/events/CatalogOfEventsNoSnap.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import { styled } from '@mui/material/styles'; diff --git a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js index f433e8e610ba..76af09a232a1 100644 --- a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js +++ b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.js @@ -1,6 +1,6 @@ import * as React from 'react'; // @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import Stack from '@mui/material/Stack'; import Box from '@mui/material/Box'; diff --git a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx index 91d5d2de445e..531a1122486c 100644 --- a/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx +++ b/docs/data/date-pickers/base-concepts/ComponentExplorerNoSnap.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; // @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; import Stack from '@mui/material/Stack'; import Box from '@mui/material/Box'; diff --git a/docs/src/modules/components/ApiDocs.js b/docs/src/modules/components/ApiDocs.js index ecbbaa43d693..fbe880b9da06 100644 --- a/docs/src/modules/components/ApiDocs.js +++ b/docs/src/modules/components/ApiDocs.js @@ -7,7 +7,7 @@ import AccordionDetails from '@mui/material/AccordionDetails'; import Typography from '@mui/material/Typography'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import PropTypes from 'prop-types'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; const PrimaryHeading = styled(Typography)(({ theme }) => ({ fontSize: theme.typography.pxToRem(15), diff --git a/docs/src/modules/components/ChartsUsageDemo.js b/docs/src/modules/components/ChartsUsageDemo.js index 5005b023a4d0..79087370cb16 100644 --- a/docs/src/modules/components/ChartsUsageDemo.js +++ b/docs/src/modules/components/ChartsUsageDemo.js @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import Box from '@mui/joy/Box'; import BrandingProvider from 'docs/src/BrandingProvider'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import DemoPropsForm from './DemoPropsForm'; export default function ChartsUsageDemo({ diff --git a/docs/src/modules/components/CustomizationPlayground.tsx b/docs/src/modules/components/CustomizationPlayground.tsx index c4a099370294..6f131c36a9e6 100644 --- a/docs/src/modules/components/CustomizationPlayground.tsx +++ b/docs/src/modules/components/CustomizationPlayground.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; // @ts-ignore -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; // @ts-ignore import BrandingProvider from 'docs/src/BrandingProvider'; import { styled, Theme, alpha, useTheme } from '@mui/material/styles'; diff --git a/docs/src/modules/components/InterfaceApiPage.js b/docs/src/modules/components/InterfaceApiPage.js index a2b02e6f8291..5dc94acc9d88 100644 --- a/docs/src/modules/components/InterfaceApiPage.js +++ b/docs/src/modules/components/InterfaceApiPage.js @@ -7,8 +7,8 @@ import Alert from '@mui/material/Alert'; import VerifiedRoundedIcon from '@mui/icons-material/VerifiedRounded'; import { alpha } from '@mui/material/styles'; import { useTranslate, useUserLanguage } from 'docs/src/modules/utils/i18n'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; -import MarkdownElement from 'docs/src/modules/components/MarkdownElement'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; +import { MarkdownElement } from '@mui/docs/MarkdownElement'; import AppLayoutDocs from 'docs/src/modules/components/AppLayoutDocs'; import PropertiesSection from 'docs/src/modules/components/ApiPage/sections/PropertiesSection'; import { DEFAULT_API_LAYOUT_STORAGE_KEYS } from 'docs/src/modules/components/ApiPage/sections/ToggleDisplayOption'; diff --git a/docs/src/modules/components/LocalizationTable.js b/docs/src/modules/components/LocalizationTable.js index a06ef6d54b82..bd0b241c1a57 100644 --- a/docs/src/modules/components/LocalizationTable.js +++ b/docs/src/modules/components/LocalizationTable.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled } from '@mui/material/styles'; import { Link } from '@mui/docs/Link'; -import MarkdownElement from 'docs/src/modules/components/MarkdownElement'; +import { MarkdownElement } from '@mui/docs/MarkdownElement'; const Root = styled('div')(({ theme }) => ({ position: 'relative', diff --git a/docs/src/modules/components/PickersRenderingInstructions.js b/docs/src/modules/components/PickersRenderingInstructions.js index c42d8104486c..f2825cc13262 100644 --- a/docs/src/modules/components/PickersRenderingInstructions.js +++ b/docs/src/modules/components/PickersRenderingInstructions.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; import Stack from '@mui/material/Stack'; import ToggleOptions from './ToggleOptions'; diff --git a/docs/src/modules/components/SelectorsDocs.js b/docs/src/modules/components/SelectorsDocs.js index 1319adc4fb6a..97409689cf21 100644 --- a/docs/src/modules/components/SelectorsDocs.js +++ b/docs/src/modules/components/SelectorsDocs.js @@ -7,8 +7,8 @@ import AccordionDetails from '@mui/material/AccordionDetails'; import Typography from '@mui/material/Typography'; import Box from '@mui/material/Box'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -import HighlightedCode from 'docs/src/modules/components/HighlightedCode'; -import MarkdownElement from 'docs/src/modules/components/MarkdownElement'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; +import { MarkdownElement } from '@mui/docs/MarkdownElement'; import allSelectors from 'docsx/pages/x/api/data-grid/selectors.json'; const SelectorDetails = styled(AccordionDetails)({ diff --git a/package.json b/package.json index bb5b88f54d77..41bcd6fceb43 100644 --- a/package.json +++ b/package.json @@ -86,9 +86,9 @@ "@emotion/styled": "^11.11.0", "@mnajdova/enzyme-adapter-react-18": "^0.2.0", "@mui/icons-material": "^5.15.14", - "@mui/internal-markdown": "^1.0.0", + "@mui/internal-markdown": "^1.0.3", "@mui/material": "^5.15.14", - "@mui/monorepo": "github:mui/material-ui#e1d94d5ce097815bcd738352e69bb43ce03bd266", + "@mui/monorepo": "github:mui/material-ui#afffc2ffc3db1e6abf48f3b3e13a41e8b758f874", "@mui/utils": "^5.15.14", "@next/eslint-plugin-next": "14.0.4", "@octokit/plugin-retry": "^6.0.1", @@ -197,8 +197,7 @@ "patchedDependencies": { "date-fns-jalali@2.13.0-0": "patches/date-fns-jalali@2.13.0-0.patch", "karma-mocha@2.0.1": "patches/karma-mocha@2.0.1.patch", - "babel-plugin-replace-imports@1.0.2": "patches/babel-plugin-replace-imports@1.0.2.patch", - "@mui/monorepo@6.0.0-alpha.0": "patches/@mui__monorepo@6.0.0-alpha.0.patch" + "babel-plugin-replace-imports@1.0.2": "patches/babel-plugin-replace-imports@1.0.2.patch" } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef24adee6c7d..b651f4d56501 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,9 +9,6 @@ overrides: '@types/node': ^18.19.23 patchedDependencies: - '@mui/monorepo@6.0.0-alpha.0': - hash: m6s35rhse6xiedzuwdr24itknq - path: patches/@mui__monorepo@6.0.0-alpha.0.patch babel-plugin-replace-imports@1.0.2: hash: h4cab4lqksemkw6ln3l3h4s77e path: patches/babel-plugin-replace-imports@1.0.2.patch @@ -90,14 +87,14 @@ importers: specifier: ^5.15.14 version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0) '@mui/internal-markdown': - specifier: ^1.0.0 - version: 1.0.1 + specifier: ^1.0.3 + version: 1.0.3 '@mui/material': specifier: ^5.15.14 version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/monorepo': - specifier: github:mui/material-ui#e1d94d5ce097815bcd738352e69bb43ce03bd266 - version: github.com/mui/material-ui/e1d94d5ce097815bcd738352e69bb43ce03bd266(patch_hash=m6s35rhse6xiedzuwdr24itknq) + specifier: github:mui/material-ui#afffc2ffc3db1e6abf48f3b3e13a41e8b758f874 + version: github.com/mui/material-ui/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874 '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -3577,8 +3574,8 @@ packages: typescript: 5.4.5 dev: true - /@mui/internal-markdown@1.0.1: - resolution: {integrity: sha512-goTCzEbx0yxDbCU9ngHo02f5TBHwngF6RDM2ALqtgUsvNp14/lVU3OFytvpxcwjeSrrbVPEw4MSidYO8FnlUKQ==} + /@mui/internal-markdown@1.0.3: + resolution: {integrity: sha512-b+8T8S1raSuaOXaNyKiChyw1Lb/nEY1ITGsw6oygVLacsN6mZ7EB5cmvEbHA4EQiNwqCn7BgI9OoBTTr0GdZtg==} dependencies: '@babel/runtime': 7.24.4 lodash: 4.17.21 @@ -10466,8 +10463,8 @@ packages: - supports-color dev: true - /google-auth-library@9.7.0: - resolution: {integrity: sha512-I/AvzBiUXDzLOy4iIZ2W+Zq33W4lcukQv1nl7C8WUA6SQwyQwUwu3waNmWNAvzds//FG8SZ+DnKnW/2k6mQS8A==} + /google-auth-library@9.9.0: + resolution: {integrity: sha512-9l+zO07h1tDJdIHN74SpnWIlNR+OuOemXlWJlLP9pXy6vFtizgpEzMuwJa4lqY9UAdiAv5DVd5ql0Am916I+aA==} engines: {node: '>=14'} dependencies: base64-js: 1.5.1 @@ -10487,7 +10484,7 @@ packages: dependencies: extend: 3.0.2 gaxios: 6.1.1 - google-auth-library: 9.7.0 + google-auth-library: 9.9.0 qs: 6.11.2 url-template: 2.0.8 uuid: 9.0.1 @@ -18079,18 +18076,17 @@ packages: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: true - github.com/mui/material-ui/e1d94d5ce097815bcd738352e69bb43ce03bd266(patch_hash=m6s35rhse6xiedzuwdr24itknq): - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/e1d94d5ce097815bcd738352e69bb43ce03bd266} - id: github.com/mui/material-ui/e1d94d5ce097815bcd738352e69bb43ce03bd266 + github.com/mui/material-ui/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874: + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874} name: '@mui/monorepo' - version: 6.0.0-alpha.0 + version: 6.0.0-alpha.4 requiresBuild: true dependencies: '@googleapis/sheets': 5.0.5 '@netlify/functions': 2.6.0 '@slack/bolt': 3.17.1 execa: 8.0.1 - google-auth-library: 9.7.0 + google-auth-library: 9.9.0 transitivePeerDependencies: - bufferutil - debug @@ -18098,4 +18094,3 @@ packages: - supports-color - utf-8-validate dev: true - patched: true diff --git a/tsconfig.json b/tsconfig.json index 60fb7c569b55..d862faac9216 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,6 +28,8 @@ "@mui/x-tree-view-pro/*": ["./packages/x-tree-view-pro/src/*"], "@mui/x-license": ["./packages/x-license/src"], "@mui/x-license/*": ["./packages/x-license/src/*"], + "@mui/docs": ["./node_modules/@mui/monorepo/packages/mui-docs/src"], + "@mui/docs/*": ["./node_modules/@mui/monorepo/packages/mui-docs/src/*"], "@mui-internal/test-utils": ["./node_modules/@mui/monorepo/packages/test-utils/src"], "@mui-internal/test-utils/*": ["./node_modules/@mui/monorepo/packages/test-utils/src/*"], "@mui-internal/api-docs-builder": ["./node_modules/@mui/monorepo/packages/api-docs-builder"], From c49cc4f3987bb5586045ccf0083aaf7a1db11eb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Apr 2024 02:05:31 +0300 Subject: [PATCH 172/912] Bump @types/node to ^18.19.31 (#12472) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- pnpm-lock.yaml | 60 +++++++++++++++++++++++++------------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 41bcd6fceb43..fb5bf57b2be7 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "@types/fs-extra": "^11.0.4", "@types/lodash": "^4.17.0", "@types/mocha": "^10.0.6", - "@types/node": "^18.19.23", + "@types/node": "^18.19.31", "@types/prettier": "^2.7.3", "@types/react": "^18.2.60", "@types/react-dom": "^18.2.19", @@ -190,7 +190,7 @@ }, "resolutions": { "react-is": "^18.2.0", - "@types/node": "^18.19.23" + "@types/node": "^18.19.31" }, "packageManager": "pnpm@8.15.1", "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b651f4d56501..2ea36e868142 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: react-is: ^18.2.0 - '@types/node': ^18.19.23 + '@types/node': ^18.19.31 patchedDependencies: babel-plugin-replace-imports@1.0.2: @@ -135,8 +135,8 @@ importers: specifier: ^10.0.6 version: 10.0.6 '@types/node': - specifier: ^18.19.23 - version: 18.19.29 + specifier: ^18.19.31 + version: 18.19.31 '@types/prettier': specifier: ^2.7.3 version: 2.7.3 @@ -3250,7 +3250,7 @@ packages: /@fast-csv/format@4.3.5: resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 lodash.escaperegexp: 4.1.2 lodash.isboolean: 3.0.3 lodash.isequal: 4.5.0 @@ -3261,7 +3261,7 @@ packages: /@fast-csv/parse@4.3.6: resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 lodash.escaperegexp: 4.1.2 lodash.groupby: 4.6.0 lodash.isfunction: 3.0.9 @@ -4768,14 +4768,14 @@ packages: resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@slack/logger@4.0.0: resolution: {integrity: sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==} engines: {node: '>= 18', npm: '>= 8.6.0'} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@slack/oauth@2.6.2: @@ -4785,7 +4785,7 @@ packages: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.0 '@types/jsonwebtoken': 8.5.9 - '@types/node': 18.19.29 + '@types/node': 18.19.31 jsonwebtoken: 9.0.2 lodash.isstring: 4.0.1 transitivePeerDependencies: @@ -4798,7 +4798,7 @@ packages: dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.0 - '@types/node': 18.19.29 + '@types/node': 18.19.31 '@types/p-queue': 2.3.2 '@types/ws': 7.4.7 eventemitter3: 3.1.2 @@ -4824,7 +4824,7 @@ packages: '@slack/logger': 3.0.0 '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 - '@types/node': 18.19.29 + '@types/node': 18.19.31 axios: 1.6.7(debug@4.3.4) eventemitter3: 3.1.2 form-data: 2.5.1 @@ -4945,7 +4945,7 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/cacheable-request@6.0.3: @@ -4953,7 +4953,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 18.19.29 + '@types/node': 18.19.31 '@types/responselike': 1.0.3 dev: true @@ -4974,13 +4974,13 @@ packages: /@types/cheerio@0.22.35: resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/cookie@0.4.1: @@ -4990,7 +4990,7 @@ packages: /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/d3-color@3.1.3: @@ -5056,7 +5056,7 @@ packages: /@types/express-serve-static-core@4.17.42: resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -5079,7 +5079,7 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/history@4.7.11: @@ -5101,7 +5101,7 @@ packages: /@types/is-stream@1.1.0: resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/istanbul-lib-coverage@2.0.6: @@ -5125,19 +5125,19 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/jsonwebtoken@8.5.9: resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/lodash@4.17.0: @@ -5193,8 +5193,8 @@ packages: moment: 2.30.1 dev: true - /@types/node@18.19.29: - resolution: {integrity: sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==} + /@types/node@18.19.31: + resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} dependencies: undici-types: 5.26.5 @@ -5274,7 +5274,7 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/retry@0.12.0: @@ -5292,7 +5292,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/serve-static@1.15.5: @@ -5300,7 +5300,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/sinon@10.0.20: @@ -5332,7 +5332,7 @@ packages: /@types/webpack-bundle-analyzer@4.7.0(webpack-cli@5.1.4): resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 tapable: 2.2.1 webpack: 5.91.0(webpack-cli@5.1.4) transitivePeerDependencies: @@ -5345,7 +5345,7 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 dev: true /@types/yargs-parser@21.0.3: @@ -8721,7 +8721,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 18.19.29 + '@types/node': 18.19.31 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -11667,7 +11667,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.19.29 + '@types/node': 18.19.31 merge-stream: 2.0.0 supports-color: 8.1.1 From 2a8673b4fc57b1f89445f260a0746e90e0fddb5d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Apr 2024 02:09:34 +0300 Subject: [PATCH 173/912] Bump tsx to ^4.7.3 (#12392) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fb5bf57b2be7..e6bf37bac132 100644 --- a/package.json +++ b/package.json @@ -179,7 +179,7 @@ "stream-browserify": "^3.0.0", "string-replace-loader": "^3.1.0", "terser-webpack-plugin": "^5.3.10", - "tsx": "^4.7.0", + "tsx": "^4.7.3", "typescript": "^5.4.5", "unist-util-visit": "^2.0.3", "util": "^0.12.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ea36e868142..1e76c23e8e0b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -366,8 +366,8 @@ importers: specifier: ^5.3.10 version: 5.3.10(webpack@5.91.0) tsx: - specifier: ^4.7.0 - version: 4.7.2 + specifier: ^4.7.3 + version: 4.7.3 typescript: specifier: ^5.4.5 version: 5.4.5 @@ -16964,8 +16964,8 @@ packages: typescript: 5.4.5 dev: true - /tsx@4.7.2: - resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==} + /tsx@4.7.3: + resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} engines: {node: '>=18.0.0'} hasBin: true dependencies: From 1c57445f8c3202b5cb6c9e829605fcf07f52e368 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:15:36 +0300 Subject: [PATCH 174/912] Bump GitHub Actions (major) (#11841) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/maintenance.yml | 2 +- .github/workflows/priority-support-validation-prompt.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maintenance.yml b/.github/workflows/maintenance.yml index ab9528b9fc05..5442f8e19417 100644 --- a/.github/workflows/maintenance.yml +++ b/.github/workflows/maintenance.yml @@ -25,7 +25,7 @@ jobs: pull-requests: write steps: - name: check if prs are dirty - uses: eps1lon/actions-label-merge-conflict@fd1f295ee7443d13745804bc49fe158e240f6c6e # v2.1.0 + uses: eps1lon/actions-label-merge-conflict@e62d7a53ff8be8b97684bffb6cfbbf3fc1115e2e # v3.0.0 with: dirtyLabel: 'PR: out-of-date' repoToken: '${{ secrets.GITHUB_TOKEN }}' diff --git a/.github/workflows/priority-support-validation-prompt.yml b/.github/workflows/priority-support-validation-prompt.yml index cfb435293944..021003075108 100644 --- a/.github/workflows/priority-support-validation-prompt.yml +++ b/.github/workflows/priority-support-validation-prompt.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Find Comment - uses: peter-evans/find-comment@a54c31d7fa095754bfef525c0c8e5e5674c4b4b1 # v2.4.0 + uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3.1.0 id: findComment with: issue-number: ${{ github.event.issue.number }} @@ -25,7 +25,7 @@ jobs: - name: Create comment if: ${{ steps.findComment.outputs.comment-id == '' && contains(github.event.label.name, 'unknown') }} - uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 with: issue-number: ${{ github.event.issue.number }} body: | @@ -39,7 +39,7 @@ jobs: - name: Update comment if: ${{ steps.findComment.outputs.comment-id != '' && contains(github.event.label.name, 'priority') }} - uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 with: comment-id: ${{ steps.findComment.outputs.comment-id }} body: | From f9b1a6328faf2721cab27e303fdbba38e693a416 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:25:58 +0200 Subject: [PATCH 175/912] [charts] Add an overlay for "no data" or "loading" states (#12817) --- docs/data/charts/styling/CustomOverlay.js | 76 +++++++++++++++++++ docs/data/charts/styling/CustomOverlay.tsx | 76 +++++++++++++++++++ docs/data/charts/styling/Overlay.js | 18 +++++ docs/data/charts/styling/Overlay.tsx | 18 +++++ docs/data/charts/styling/Overlay.tsx.preview | 2 + docs/data/charts/styling/OverlayWithAxis.js | 38 ++++++++++ docs/data/charts/styling/OverlayWithAxis.tsx | 38 ++++++++++ docs/data/charts/styling/styling.md | 34 +++++++++ docs/pages/x/api/charts/bar-chart.json | 13 ++++ .../default-charts-axis-tooltip-content.json | 4 +- docs/pages/x/api/charts/line-chart.json | 13 ++++ docs/pages/x/api/charts/pie-chart.json | 13 ++++ docs/pages/x/api/charts/scatter-chart.json | 13 ++++ .../api-docs/charts/bar-chart/bar-chart.json | 3 + .../charts/line-chart/line-chart.json | 3 + .../api-docs/charts/pie-chart/pie-chart.json | 3 + .../charts/scatter-chart/scatter-chart.json | 3 + .../data-grid-premium/data-grid-premium.json | 2 +- .../data-grid-pro/data-grid-pro.json | 2 +- .../data-grid/data-grid/data-grid.json | 2 +- packages/x-charts/src/BarChart/BarChart.tsx | 21 ++++- .../ChartsOverlay/ChartsLoadingOverlay.tsx | 23 ++++++ .../src/ChartsOverlay/ChartsNoDataOverlay.tsx | 23 ++++++ .../src/ChartsOverlay/ChartsOverlay.tsx | 68 +++++++++++++++++ packages/x-charts/src/ChartsOverlay/index.ts | 3 + .../ChartsAxisTooltipContent.tsx | 8 +- .../DefaultChartsAxisTooltipContent.tsx | 2 +- .../x-charts/src/ChartsXAxis/ChartsXAxis.tsx | 7 ++ .../x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 7 ++ packages/x-charts/src/LineChart/LineChart.tsx | 21 ++++- packages/x-charts/src/PieChart/PieChart.tsx | 21 ++++- .../src/ScatterChart/ScatterChart.tsx | 21 ++++- packages/x-charts/src/hooks/useScale.ts | 10 ++- packages/x-charts/src/hooks/useTicks.ts | 5 ++ packages/x-charts/src/models/axis.ts | 2 +- .../src/DataGridPremium/DataGridPremium.tsx | 2 +- .../src/DataGridPro/DataGridPro.tsx | 2 +- .../x-data-grid/src/DataGrid/DataGrid.tsx | 2 +- .../src/models/props/DataGridProps.ts | 2 +- scripts/buildApiDocs/chartsSettings/index.ts | 3 + 40 files changed, 600 insertions(+), 27 deletions(-) create mode 100644 docs/data/charts/styling/CustomOverlay.js create mode 100644 docs/data/charts/styling/CustomOverlay.tsx create mode 100644 docs/data/charts/styling/Overlay.js create mode 100644 docs/data/charts/styling/Overlay.tsx create mode 100644 docs/data/charts/styling/Overlay.tsx.preview create mode 100644 docs/data/charts/styling/OverlayWithAxis.js create mode 100644 docs/data/charts/styling/OverlayWithAxis.tsx create mode 100644 packages/x-charts/src/ChartsOverlay/ChartsLoadingOverlay.tsx create mode 100644 packages/x-charts/src/ChartsOverlay/ChartsNoDataOverlay.tsx create mode 100644 packages/x-charts/src/ChartsOverlay/ChartsOverlay.tsx create mode 100644 packages/x-charts/src/ChartsOverlay/index.ts diff --git a/docs/data/charts/styling/CustomOverlay.js b/docs/data/charts/styling/CustomOverlay.js new file mode 100644 index 000000000000..502ce26a93e2 --- /dev/null +++ b/docs/data/charts/styling/CustomOverlay.js @@ -0,0 +1,76 @@ +import * as React from 'react'; +import { styled } from '@mui/material/styles'; +import Stack from '@mui/material/Stack'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { useDrawingArea, useXScale, useYScale } from '@mui/x-charts/hooks'; + +const ratios = [0.2, 0.8, 0.6, 0.5]; + +const LoadingReact = styled('rect')({ + opacity: 0.2, + fill: 'lightgray', +}); + +const LoadingText = styled('text')(({ theme }) => ({ + stroke: 'none', + fill: theme.palette.text.primary, + shapeRendering: 'crispEdges', + textAnchor: 'middle', + dominantBaseline: 'middle', +})); + +function LoadingOverlay() { + const xScale = useXScale(); + const yScale = useYScale(); + const { left, width, height } = useDrawingArea(); + + const bandWidth = xScale.bandwidth(); + + const [bottom, top] = yScale.range(); + + return ( + + {xScale.domain().map((item, index) => { + const ratio = ratios[index % ratios.length]; + const barHeight = ratio * (bottom - top); + + return ( + + ); + })} + + Loading data ... + + + ); +} + +export default function CustomOverlay() { + return ( + + + + + ); +} diff --git a/docs/data/charts/styling/CustomOverlay.tsx b/docs/data/charts/styling/CustomOverlay.tsx new file mode 100644 index 000000000000..99af073ed8d5 --- /dev/null +++ b/docs/data/charts/styling/CustomOverlay.tsx @@ -0,0 +1,76 @@ +import * as React from 'react'; +import { styled } from '@mui/material/styles'; +import Stack from '@mui/material/Stack'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { useDrawingArea, useXScale, useYScale } from '@mui/x-charts/hooks'; + +const ratios = [0.2, 0.8, 0.6, 0.5]; + +const LoadingReact = styled('rect')({ + opacity: 0.2, + fill: 'lightgray', +}); + +const LoadingText = styled('text')(({ theme }) => ({ + stroke: 'none', + fill: theme.palette.text.primary, + shapeRendering: 'crispEdges', + textAnchor: 'middle', + dominantBaseline: 'middle', +})); + +function LoadingOverlay() { + const xScale = useXScale<'band'>(); + const yScale = useYScale(); + const { left, width, height } = useDrawingArea(); + + const bandWidth = xScale.bandwidth(); + + const [bottom, top] = yScale.range(); + + return ( + + {xScale.domain().map((item, index) => { + const ratio = ratios[index % ratios.length]; + const barHeight = ratio * (bottom - top); + + return ( + + ); + })} + + Loading data ... + + + ); +} + +export default function CustomOverlay() { + return ( + + + + + ); +} diff --git a/docs/data/charts/styling/Overlay.js b/docs/data/charts/styling/Overlay.js new file mode 100644 index 000000000000..586e8f5b2ad0 --- /dev/null +++ b/docs/data/charts/styling/Overlay.js @@ -0,0 +1,18 @@ +import * as React from 'react'; +import Stack from '@mui/material/Stack'; +import { LineChart } from '@mui/x-charts/LineChart'; + +const emptySeries = { + series: [], + margin: { top: 10, right: 10, left: 25, bottom: 25 }, + height: 150, +}; + +export default function Overlay() { + return ( + + + + + ); +} diff --git a/docs/data/charts/styling/Overlay.tsx b/docs/data/charts/styling/Overlay.tsx new file mode 100644 index 000000000000..586e8f5b2ad0 --- /dev/null +++ b/docs/data/charts/styling/Overlay.tsx @@ -0,0 +1,18 @@ +import * as React from 'react'; +import Stack from '@mui/material/Stack'; +import { LineChart } from '@mui/x-charts/LineChart'; + +const emptySeries = { + series: [], + margin: { top: 10, right: 10, left: 25, bottom: 25 }, + height: 150, +}; + +export default function Overlay() { + return ( + + + + + ); +} diff --git a/docs/data/charts/styling/Overlay.tsx.preview b/docs/data/charts/styling/Overlay.tsx.preview new file mode 100644 index 000000000000..caa7653ae1e2 --- /dev/null +++ b/docs/data/charts/styling/Overlay.tsx.preview @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/docs/data/charts/styling/OverlayWithAxis.js b/docs/data/charts/styling/OverlayWithAxis.js new file mode 100644 index 000000000000..3a9aaab01e60 --- /dev/null +++ b/docs/data/charts/styling/OverlayWithAxis.js @@ -0,0 +1,38 @@ +import * as React from 'react'; +import Stack from '@mui/material/Stack'; +import { LineChart } from '@mui/x-charts/LineChart'; + +const emptySeries = { + series: [], + margin: { top: 10, right: 10, left: 25, bottom: 25 }, + height: 150, +}; + +export default function OverlayWithAxis() { + return ( + + + + + ); +} diff --git a/docs/data/charts/styling/OverlayWithAxis.tsx b/docs/data/charts/styling/OverlayWithAxis.tsx new file mode 100644 index 000000000000..3a9aaab01e60 --- /dev/null +++ b/docs/data/charts/styling/OverlayWithAxis.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; +import Stack from '@mui/material/Stack'; +import { LineChart } from '@mui/x-charts/LineChart'; + +const emptySeries = { + series: [], + margin: { top: 10, right: 10, left: 25, bottom: 25 }, + height: 150, +}; + +export default function OverlayWithAxis() { + return ( + + + + + ); +} diff --git a/docs/data/charts/styling/styling.md b/docs/data/charts/styling/styling.md index 61d1a1357f6d..3ab1003b62f9 100644 --- a/docs/data/charts/styling/styling.md +++ b/docs/data/charts/styling/styling.md @@ -102,6 +102,40 @@ This configuration can be used in Bar Charts to set colors according to string c } ``` +## Overlay + +Charts have a _loading_ and _noData_ overlays that appears if + +- `loading` prop is set to `true`. +- There is no data to display. + +{{"demo": "Overlay.js"}} + +### Axis display + +You can provide the axes data in order to display them while loading the data. + +{{"demo": "OverlayWithAxis.js"}} + +### Custom overlay + +To modify the overly message, you can use the `message` props as follow. + +```jsx + +``` + +For more advanced customization, use the `loadingOverlay` and `noDataOverlay` slots link in the following demo. + +{{"demo": "CustomOverlay.js"}} + ## Styling ### Size diff --git a/docs/pages/x/api/charts/bar-chart.json b/docs/pages/x/api/charts/bar-chart.json index 6b8bb27f372b..5e16516b000a 100644 --- a/docs/pages/x/api/charts/bar-chart.json +++ b/docs/pages/x/api/charts/bar-chart.json @@ -36,6 +36,7 @@ "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, + "loading": { "type": { "name": "bool" } }, "margin": { "type": { "name": "shape", @@ -152,6 +153,18 @@ "description": "Custom component for displaying tooltip content when triggered by item event.", "default": "DefaultChartsItemTooltipContent", "class": null + }, + { + "name": "loadingOverlay", + "description": "Overlay component rendered when the chart is in a loading state.", + "default": "ChartsLoadingOverlay", + "class": null + }, + { + "name": "noDataOverlay", + "description": "Overlay component rendered when the chart has no data to display.", + "default": "ChartsNoDataOverlay", + "class": null } ], "classes": [], diff --git a/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json b/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json index 951dac84a962..0e922896786a 100644 --- a/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json +++ b/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json @@ -8,7 +8,6 @@ }, "required": true }, - "axisValue": { "type": { "name": "any" }, "required": true }, "classes": { "type": { "name": "object" }, "required": true, @@ -18,6 +17,9 @@ "type": { "name": "arrayOf", "description": "Array<object>" }, "required": true }, + "axisValue": { + "type": { "name": "union", "description": "Date
    | number
    | string" } + }, "dataIndex": { "type": { "name": "number" } } }, "name": "DefaultChartsAxisTooltipContent", diff --git a/docs/pages/x/api/charts/line-chart.json b/docs/pages/x/api/charts/line-chart.json index b1d80bcaf2f8..0da1697a0aa1 100644 --- a/docs/pages/x/api/charts/line-chart.json +++ b/docs/pages/x/api/charts/line-chart.json @@ -34,6 +34,7 @@ "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, + "loading": { "type": { "name": "bool" } }, "margin": { "type": { "name": "shape", @@ -155,6 +156,18 @@ "description": "Custom component for displaying tooltip content when triggered by item event.", "default": "DefaultChartsItemTooltipContent", "class": null + }, + { + "name": "loadingOverlay", + "description": "Overlay component rendered when the chart is in a loading state.", + "default": "ChartsLoadingOverlay", + "class": null + }, + { + "name": "noDataOverlay", + "description": "Overlay component rendered when the chart has no data to display.", + "default": "ChartsNoDataOverlay", + "class": null } ], "classes": [], diff --git a/docs/pages/x/api/charts/pie-chart.json b/docs/pages/x/api/charts/pie-chart.json index 69293d2a8da2..8583de3dbaa3 100644 --- a/docs/pages/x/api/charts/pie-chart.json +++ b/docs/pages/x/api/charts/pie-chart.json @@ -39,6 +39,7 @@ "deprecated": true, "deprecationInfo": "Consider using slotProps.legend instead." }, + "loading": { "type": { "name": "bool" } }, "margin": { "type": { "name": "shape", @@ -139,6 +140,18 @@ "description": "Custom component for displaying tooltip content when triggered by item event.", "default": "DefaultChartsItemTooltipContent", "class": null + }, + { + "name": "loadingOverlay", + "description": "Overlay component rendered when the chart is in a loading state.", + "default": "ChartsLoadingOverlay", + "class": null + }, + { + "name": "noDataOverlay", + "description": "Overlay component rendered when the chart has no data to display.", + "default": "ChartsNoDataOverlay", + "class": null } ], "classes": [], diff --git a/docs/pages/x/api/charts/scatter-chart.json b/docs/pages/x/api/charts/scatter-chart.json index d5ef16720554..ff1370a2a4d3 100644 --- a/docs/pages/x/api/charts/scatter-chart.json +++ b/docs/pages/x/api/charts/scatter-chart.json @@ -34,6 +34,7 @@ "type": { "name": "union", "description": "object
    | string" }, "default": "yAxisIds[0] The id of the first provided axis" }, + "loading": { "type": { "name": "bool" } }, "margin": { "type": { "name": "shape", @@ -145,6 +146,18 @@ "description": "Custom component for displaying tooltip content when triggered by item event.", "default": "DefaultChartsItemTooltipContent", "class": null + }, + { + "name": "loadingOverlay", + "description": "Overlay component rendered when the chart is in a loading state.", + "default": "ChartsLoadingOverlay", + "class": null + }, + { + "name": "noDataOverlay", + "description": "Overlay component rendered when the chart has no data to display.", + "default": "ChartsNoDataOverlay", + "class": null } ], "classes": [], diff --git a/docs/translations/api-docs/charts/bar-chart/bar-chart.json b/docs/translations/api-docs/charts/bar-chart/bar-chart.json index 176f08e5a0a9..ee7dd914cfdb 100644 --- a/docs/translations/api-docs/charts/bar-chart/bar-chart.json +++ b/docs/translations/api-docs/charts/bar-chart/bar-chart.json @@ -23,6 +23,7 @@ "leftAxis": { "description": "Indicate which axis to display the left of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "margin": { "description": "The margin between the SVG and the drawing area. It's used for leaving some space for extra information such as the x- and y-axis or legend. Accepts an object with the optional properties: top, bottom, left, and right." }, @@ -76,6 +77,8 @@ "bar": "The component that renders the bar.", "itemContent": "Custom component for displaying tooltip content when triggered by item event.", "legend": "Custom rendering of the legend.", + "loadingOverlay": "Overlay component rendered when the chart is in a loading state.", + "noDataOverlay": "Overlay component rendered when the chart has no data to display.", "popper": "Custom component for the tooltip popper." } } diff --git a/docs/translations/api-docs/charts/line-chart/line-chart.json b/docs/translations/api-docs/charts/line-chart/line-chart.json index eed651782034..2df6f3875d55 100644 --- a/docs/translations/api-docs/charts/line-chart/line-chart.json +++ b/docs/translations/api-docs/charts/line-chart/line-chart.json @@ -25,6 +25,7 @@ "leftAxis": { "description": "Indicate which axis to display the left of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "margin": { "description": "The margin between the SVG and the drawing area. It's used for leaving some space for extra information such as the x- and y-axis or legend. Accepts an object with the optional properties: top, bottom, left, and right." }, @@ -76,7 +77,9 @@ "legend": "Custom rendering of the legend.", "line": "The component that renders the line.", "lineHighlight": "", + "loadingOverlay": "Overlay component rendered when the chart is in a loading state.", "mark": "", + "noDataOverlay": "Overlay component rendered when the chart has no data to display.", "popper": "Custom component for the tooltip popper." } } diff --git a/docs/translations/api-docs/charts/pie-chart/pie-chart.json b/docs/translations/api-docs/charts/pie-chart/pie-chart.json index fdbc83823da9..d5a4ea4df15e 100644 --- a/docs/translations/api-docs/charts/pie-chart/pie-chart.json +++ b/docs/translations/api-docs/charts/pie-chart/pie-chart.json @@ -22,6 +22,7 @@ "description": "Indicate which axis to display the left of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, "legend": { "description": "The props of the legend." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "margin": { "description": "The margin between the SVG and the drawing area. It's used for leaving some space for extra information such as the x- and y-axis or legend. Accepts an object with the optional properties: top, bottom, left, and right." }, @@ -61,6 +62,8 @@ "axisTickLabel": "Custom component for tick label.", "itemContent": "Custom component for displaying tooltip content when triggered by item event.", "legend": "Custom rendering of the legend.", + "loadingOverlay": "Overlay component rendered when the chart is in a loading state.", + "noDataOverlay": "Overlay component rendered when the chart has no data to display.", "pieArc": "", "pieArcLabel": "", "popper": "Custom component for the tooltip popper." diff --git a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json index e21764d22d4c..7c64bdaf7757 100644 --- a/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json +++ b/docs/translations/api-docs/charts/scatter-chart/scatter-chart.json @@ -25,6 +25,7 @@ "leftAxis": { "description": "Indicate which axis to display the left of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "margin": { "description": "The margin between the SVG and the drawing area. It's used for leaving some space for extra information such as the x- and y-axis or legend. Accepts an object with the optional properties: top, bottom, left, and right." }, @@ -73,6 +74,8 @@ "axisTickLabel": "Custom component for tick label.", "itemContent": "Custom component for displaying tooltip content when triggered by item event.", "legend": "Custom rendering of the legend.", + "loadingOverlay": "Overlay component rendered when the chart is in a loading state.", + "noDataOverlay": "Overlay component rendered when the chart has no data to display.", "popper": "Custom component for the tooltip popper.", "scatter": "" } diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index dc1028649c3e..891f2d299dc2 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -232,7 +232,7 @@ "keepNonExistentRowsSelected": { "description": "If true, the selection model will retain selected rows that do not exist. Useful when using server side pagination and row selections need to be retained when changing pages." }, - "loading": { "description": "If true, a loading overlay is displayed." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "localeText": { "description": "Set the locale text of the Data Grid. You can find all the translation keys supported in the source in the GitHub repository." }, diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index 3bc27f5060e0..be79188d0bbc 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -213,7 +213,7 @@ "keepNonExistentRowsSelected": { "description": "If true, the selection model will retain selected rows that do not exist. Useful when using server side pagination and row selections need to be retained when changing pages." }, - "loading": { "description": "If true, a loading overlay is displayed." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "localeText": { "description": "Set the locale text of the Data Grid. You can find all the translation keys supported in the source in the GitHub repository." }, diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index abe89e1a6073..7ea702d9b210 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -156,7 +156,7 @@ "keepNonExistentRowsSelected": { "description": "If true, the selection model will retain selected rows that do not exist. Useful when using server side pagination and row selections need to be retained when changing pages." }, - "loading": { "description": "If true, a loading overlay is displayed." }, + "loading": { "description": "If true, a loading overlay is displayed." }, "localeText": { "description": "Set the locale text of the Data Grid. You can find all the translation keys supported in the source in the GitHub repository." }, diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 6d812f1bdc27..e2514278171b 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -30,22 +30,31 @@ import { ChartsOnAxisClickHandler, ChartsOnAxisClickHandlerProps, } from '../ChartsOnAxisClickHandler'; +import { + ChartsOverlay, + ChartsOverlayProps, + ChartsOverlaySlotProps, + ChartsOverlaySlots, +} from '../ChartsOverlay/ChartsOverlay'; export interface BarChartSlots extends ChartsAxisSlots, BarPlotSlots, ChartsLegendSlots, - ChartsTooltipSlots {} + ChartsTooltipSlots, + ChartsOverlaySlots {} export interface BarChartSlotProps extends ChartsAxisSlotProps, BarPlotSlotProps, ChartsLegendSlotProps, - ChartsTooltipSlotProps {} + ChartsTooltipSlotProps, + ChartsOverlaySlotProps {} export interface BarChartProps extends Omit, Omit, Omit, + Omit, ChartsOnAxisClickHandlerProps { /** * The series to display in the bar chart. @@ -128,6 +137,7 @@ const BarChart = React.forwardRef(function BarChart(props: BarChartProps, ref) { children, slots, slotProps, + loading, } = props; const id = useId(); @@ -187,6 +197,7 @@ const BarChart = React.forwardRef(function BarChart(props: BarChartProps, ref) { skipAnimation={skipAnimation} onItemClick={onItemClick} /> + - + {!loading && } {children} @@ -280,6 +291,10 @@ BarChart.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, }), + /** + * If `true`, a loading overlay is displayed. + */ + loading: PropTypes.bool, /** * The margin between the SVG and the drawing area. * It's used for leaving some space for extra information such as the x- and y-axis or legend. diff --git a/packages/x-charts/src/ChartsOverlay/ChartsLoadingOverlay.tsx b/packages/x-charts/src/ChartsOverlay/ChartsLoadingOverlay.tsx new file mode 100644 index 000000000000..aff9dc1678b7 --- /dev/null +++ b/packages/x-charts/src/ChartsOverlay/ChartsLoadingOverlay.tsx @@ -0,0 +1,23 @@ +import * as React from 'react'; +import { styled } from '@mui/material/styles'; +import { useDrawingArea } from '../hooks/useDrawingArea'; +import type { CommonOverlayProps } from './ChartsOverlay'; + +const StyledText = styled('text')(({ theme }) => ({ + stroke: 'none', + fill: theme.palette.text.primary, + shapeRendering: 'crispEdges', + textAnchor: 'middle', + dominantBaseline: 'middle', +})); + +export function ChartsLoadingOverlay(props: CommonOverlayProps) { + const { message, ...other } = props; + const { top, left, height, width } = useDrawingArea(); + + return ( + + {message ?? 'Loading data ...'} + + ); +} diff --git a/packages/x-charts/src/ChartsOverlay/ChartsNoDataOverlay.tsx b/packages/x-charts/src/ChartsOverlay/ChartsNoDataOverlay.tsx new file mode 100644 index 000000000000..3567e83b4b1e --- /dev/null +++ b/packages/x-charts/src/ChartsOverlay/ChartsNoDataOverlay.tsx @@ -0,0 +1,23 @@ +import * as React from 'react'; +import { styled } from '@mui/material/styles'; +import { useDrawingArea } from '../hooks/useDrawingArea'; +import type { CommonOverlayProps } from './ChartsOverlay'; + +const StyledText = styled('text')(({ theme }) => ({ + stroke: 'none', + fill: theme.palette.text.primary, + shapeRendering: 'crispEdges', + textAnchor: 'middle', + dominantBaseline: 'middle', +})); + +export function ChartsNoDataOverlay(props: CommonOverlayProps) { + const { message, ...other } = props; + const { top, left, height, width } = useDrawingArea(); + + return ( + + {message ?? 'No data to display'} + + ); +} diff --git a/packages/x-charts/src/ChartsOverlay/ChartsOverlay.tsx b/packages/x-charts/src/ChartsOverlay/ChartsOverlay.tsx new file mode 100644 index 000000000000..ef1e7371336f --- /dev/null +++ b/packages/x-charts/src/ChartsOverlay/ChartsOverlay.tsx @@ -0,0 +1,68 @@ +import * as React from 'react'; +import { SxProps, Theme } from '@mui/material/styles'; +import { ChartsLoadingOverlay } from './ChartsLoadingOverlay'; +import { useSeries } from '../hooks/useSeries'; +import { SeriesId } from '../models/seriesType/common'; +import { ChartsNoDataOverlay } from './ChartsNoDataOverlay'; + +export function useNoData() { + const seriesPerType = useSeries(); + + return Object.values(seriesPerType).every((seriesOfGivenType) => { + if (!seriesOfGivenType) { + return true; + } + const { series, seriesOrder } = seriesOfGivenType; + + return seriesOrder.every((seriesId: SeriesId) => series[seriesId].data.length === 0); + }); +} + +export type CommonOverlayProps = React.SVGAttributes & { + /** + * The message displayed by the overlay. + */ + message?: string; + sx?: SxProps; +}; + +export interface ChartsOverlaySlots { + /** + * Overlay component rendered when the chart is in a loading state. + * @default ChartsLoadingOverlay + */ + loadingOverlay?: React.ElementType; + /** + * Overlay component rendered when the chart has no data to display. + * @default ChartsNoDataOverlay + */ + noDataOverlay?: React.ElementType; +} +export interface ChartsOverlaySlotProps { + loadingOverlay?: Partial; + noDataOverlay?: Partial; +} + +export interface ChartsOverlayProps { + /** + * If `true`, a loading overlay is displayed. + */ + loading?: boolean; + + slots?: ChartsOverlaySlots; + slotProps?: ChartsOverlaySlotProps; +} + +export function ChartsOverlay(props: ChartsOverlayProps) { + const noData = useNoData(); + + if (props.loading) { + const LoadingOverlay = props.slots?.loadingOverlay ?? ChartsLoadingOverlay; + return ; + } + if (noData) { + const NoDataOverlay = props.slots?.noDataOverlay ?? ChartsNoDataOverlay; + return ; + } + return null; +} diff --git a/packages/x-charts/src/ChartsOverlay/index.ts b/packages/x-charts/src/ChartsOverlay/index.ts new file mode 100644 index 000000000000..200c86e4c607 --- /dev/null +++ b/packages/x-charts/src/ChartsOverlay/index.ts @@ -0,0 +1,3 @@ +export { ChartsOverlay } from './ChartsOverlay'; +export { ChartsLoadingOverlay } from './ChartsLoadingOverlay'; +export { ChartsNoDataOverlay } from './ChartsNoDataOverlay'; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 8eaadafc69c0..29c4d26e8835 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -37,7 +37,7 @@ export type ChartsAxisContentProps = { /** * The value associated to the current mouse position. */ - axisValue: any; + axisValue: string | number | Date | null; /** * Override or extend the styles applied to the component. */ @@ -157,7 +157,11 @@ ChartsAxisTooltipContent.propTypes = { .isRequired, }), }), - axisValue: PropTypes.any, + axisValue: PropTypes.oneOfType([ + PropTypes.instanceOf(Date), + PropTypes.number, + PropTypes.string, + ]), classes: PropTypes.object, dataIndex: PropTypes.number, series: PropTypes.arrayOf(PropTypes.object), diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx index 1b224e78fb2e..8254e1c9ed64 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx @@ -96,7 +96,7 @@ DefaultChartsAxisTooltipContent.propTypes = { /** * The value associated to the current mouse position. */ - axisValue: PropTypes.any.isRequired, + axisValue: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]), /** * Override or extend the styles applied to the component. */ diff --git a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx index 1bd054d7e6e3..35917b184509 100644 --- a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx +++ b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx @@ -192,6 +192,13 @@ function ChartsXAxis(inProps: ChartsXAxisProps) { ownerState: {}, }); + const domain = xScale.domain(); + if (domain.length === 0 || domain[0] === domain[1]) { + // Skip axis rendering if + // - the data is empty (for band and point axis) + // - No data is associated to the axis (other scale types) + return null; + } return ( , Omit, + Omit, ChartsOnAxisClickHandlerProps { /** * The series to display in the line chart. @@ -155,6 +164,7 @@ const LineChart = React.forwardRef(function LineChart(props: LineChartProps, ref slots, slotProps, skipAnimation, + loading, } = props; const id = useId(); @@ -209,6 +219,7 @@ const LineChart = React.forwardRef(function LineChart(props: LineChartProps, ref onItemClick={onLineClick} skipAnimation={skipAnimation} /> + - + {!loading && } {children} @@ -307,6 +318,10 @@ LineChart.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, }), + /** + * If `true`, a loading overlay is displayed. + */ + loading: PropTypes.bool, /** * The margin between the SVG and the drawing area. * It's used for leaving some space for extra information such as the x- and y-axis or legend. diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index b358e0e00576..380252524043 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -30,22 +30,31 @@ import { ChartsYAxisProps, } from '../models/axis'; import { useIsRTL } from '../internals/useIsRTL'; +import { + ChartsOverlay, + ChartsOverlayProps, + ChartsOverlaySlotProps, + ChartsOverlaySlots, +} from '../ChartsOverlay/ChartsOverlay'; export interface PieChartSlots extends ChartsAxisSlots, PiePlotSlots, ChartsLegendSlots, - ChartsTooltipSlots {} + ChartsTooltipSlots, + ChartsOverlaySlots {} export interface PieChartSlotProps extends ChartsAxisSlotProps, PiePlotSlotProps, ChartsLegendSlotProps, - ChartsTooltipSlotProps {} + ChartsTooltipSlotProps, + ChartsOverlaySlotProps {} export interface PieChartProps extends Omit, Omit, + Omit, Pick { /** * Indicate which axis to display the bottom of the charts. @@ -133,6 +142,7 @@ function PieChart(props: PieChartProps) { slots, slotProps, onItemClick, + loading, } = props; const isRTL = useIsRTL(); @@ -181,9 +191,10 @@ function PieChart(props: PieChartProps) { onItemClick={onItemClick} skipAnimation={skipAnimation} /> + - + {!loading && } {children} ); @@ -253,6 +264,10 @@ PieChart.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, }), + /** + * If `true`, a loading overlay is displayed. + */ + loading: PropTypes.bool, /** * The margin between the SVG and the drawing area. * It's used for leaving some space for extra information such as the x- and y-axis or legend. diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index ba6afc0469af..eb8666d4ec51 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -25,6 +25,12 @@ import { ChartsLegendSlotProps, ChartsLegendSlots, } from '../ChartsLegend'; +import { + ChartsOverlay, + ChartsOverlayProps, + ChartsOverlaySlotProps, + ChartsOverlaySlots, +} from '../ChartsOverlay/ChartsOverlay'; import { ChartsAxisHighlight, ChartsAxisHighlightProps } from '../ChartsAxisHighlight'; import { ChartsAxisSlots, ChartsAxisSlotProps } from '../models/axis'; import { @@ -38,17 +44,20 @@ export interface ScatterChartSlots extends ChartsAxisSlots, ScatterPlotSlots, ChartsLegendSlots, - ChartsTooltipSlots {} + ChartsTooltipSlots, + ChartsOverlaySlots {} export interface ScatterChartSlotProps extends ChartsAxisSlotProps, ScatterPlotSlotProps, ChartsLegendSlotProps, - ChartsTooltipSlotProps {} + ChartsTooltipSlotProps, + ChartsOverlaySlotProps {} export interface ScatterChartProps extends Omit, Omit, Omit, + Omit, Omit { /** * The series to display in the scatter chart. @@ -133,6 +142,7 @@ const ScatterChart = React.forwardRef(function ScatterChart(props: ScatterChartP children, slots, slotProps, + loading, } = props; return ( + - + {!loading && } {children} @@ -253,6 +264,10 @@ ScatterChart.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, }), + /** + * If `true`, a loading overlay is displayed. + */ + loading: PropTypes.bool, /** * The margin between the SVG and the drawing area. * It's used for leaving some space for extra information such as the x- and y-axis or legend. diff --git a/packages/x-charts/src/hooks/useScale.ts b/packages/x-charts/src/hooks/useScale.ts index c891a82d0af1..736435eeab43 100644 --- a/packages/x-charts/src/hooks/useScale.ts +++ b/packages/x-charts/src/hooks/useScale.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { CartesianContext } from '../context/CartesianContextProvider'; import { isBandScale } from '../internals/isBandScale'; -import { D3Scale } from '../models/axis'; +import { AxisScaleConfig, D3Scale, ScaleName } from '../models/axis'; /** * For a given scale return a function that map value to their position. @@ -16,7 +16,9 @@ export function getValueToPositionMapper(scale: D3Scale) { return (value: any) => scale(value) as number; } -export function useXScale(identifier?: number | string) { +export function useXScale( + identifier?: number | string, +): AxisScaleConfig[S]['scale'] { const { xAxis, xAxisIds } = React.useContext(CartesianContext); const id = typeof identifier === 'string' ? identifier : xAxisIds[identifier ?? 0]; @@ -24,7 +26,9 @@ export function useXScale(identifier?: number | string) { return xAxis[id].scale; } -export function useYScale(identifier?: number | string) { +export function useYScale( + identifier?: number | string, +): AxisScaleConfig[S]['scale'] { const { yAxis, yAxisIds } = React.useContext(CartesianContext); const id = typeof identifier === 'string' ? identifier : yAxisIds[identifier ?? 0]; diff --git a/packages/x-charts/src/hooks/useTicks.ts b/packages/x-charts/src/hooks/useTicks.ts index fe8f84f3f39e..2e861a33c88e 100644 --- a/packages/x-charts/src/hooks/useTicks.ts +++ b/packages/x-charts/src/hooks/useTicks.ts @@ -139,6 +139,11 @@ export function useTicks( })); } + if (scale.domain().length === 0 || scale.domain()[0] === scale.domain()[1]) { + // The axis should not be visible, so ticks should also be hidden. + return []; + } + const ticks = typeof tickInterval === 'object' ? tickInterval : scale.ticks(tickNumber); return ticks.map((value: any) => ({ value, diff --git a/packages/x-charts/src/models/axis.ts b/packages/x-charts/src/models/axis.ts index fe9bba7b5109..cb6b11300956 100644 --- a/packages/x-charts/src/models/axis.ts +++ b/packages/x-charts/src/models/axis.ts @@ -159,7 +159,7 @@ export interface ChartsXAxisProps extends ChartsAxisProps { export type ScaleName = 'linear' | 'band' | 'point' | 'log' | 'pow' | 'sqrt' | 'time' | 'utc'; export type ContinuousScaleName = 'linear' | 'log' | 'pow' | 'sqrt' | 'time' | 'utc'; -interface AxisScaleConfig { +export interface AxisScaleConfig { band: { scaleType: 'band'; scale: ScaleBand; diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 9e3f04214546..2528ab754e58 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -515,7 +515,7 @@ DataGridPremiumRaw.propTypes = { */ keepNonExistentRowsSelected: PropTypes.bool, /** - * If `true`, a loading overlay is displayed. + * If `true`, a loading overlay is displayed. */ loading: PropTypes.bool, /** diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index cd6c469747b2..00861a129946 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -456,7 +456,7 @@ DataGridProRaw.propTypes = { */ keepNonExistentRowsSelected: PropTypes.bool, /** - * If `true`, a loading overlay is displayed. + * If `true`, a loading overlay is displayed. */ loading: PropTypes.bool, /** diff --git a/packages/x-data-grid/src/DataGrid/DataGrid.tsx b/packages/x-data-grid/src/DataGrid/DataGrid.tsx index 56a9868fa182..5be3925e2bfd 100644 --- a/packages/x-data-grid/src/DataGrid/DataGrid.tsx +++ b/packages/x-data-grid/src/DataGrid/DataGrid.tsx @@ -367,7 +367,7 @@ DataGridRaw.propTypes = { */ keepNonExistentRowsSelected: PropTypes.bool, /** - * If `true`, a loading overlay is displayed. + * If `true`, a loading overlay is displayed. */ loading: PropTypes.bool, /** diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index 3d80dcdb101c..dab6bbdef927 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -735,7 +735,7 @@ export interface DataGridPropsWithoutDefaultValue; /** - * If `true`, a loading overlay is displayed. + * If `true`, a loading overlay is displayed. */ loading?: boolean; /** diff --git a/scripts/buildApiDocs/chartsSettings/index.ts b/scripts/buildApiDocs/chartsSettings/index.ts index bf83efd12a60..1beaabaa78d6 100644 --- a/scripts/buildApiDocs/chartsSettings/index.ts +++ b/scripts/buildApiDocs/chartsSettings/index.ts @@ -65,6 +65,9 @@ export default apiPages; 'x-charts/src/Gauge/GaugeReferenceArc.tsx', 'x-charts/src/Gauge/GaugeValueArc.tsx', 'x-charts/src/Gauge/GaugeValueText.tsx', + 'x-charts/src/ChartsOverlay/ChartsOverlay.tsx', + 'x-charts/src/ChartsOverlay/ChartsNoDataOverlay.tsx', + 'x-charts/src/ChartsOverlay/ChartsLoadingOverlay.tsx', ].some((invalidPath) => filename.endsWith(invalidPath)); }, skipAnnotatingComponentDefinition: true, From c808d8cbae50db08026d3e08ddbb1340be79d95c Mon Sep 17 00:00:00 2001 From: Norbert Csaba Herczeg Date: Mon, 29 Apr 2024 11:41:40 +0200 Subject: [PATCH 176/912] [l10n] Improve Hungarian (hu-HU) locale (#12930) --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/huHU.ts | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index ab897ccab6ab..92307676e08c 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -107,7 +107,7 @@ "languageTag": "hu-HU", "importName": "huHU", "localeName": "Hungarian", - "missingKeysCount": 14, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/huHU.ts" }, diff --git a/packages/x-date-pickers/src/locales/huHU.ts b/packages/x-date-pickers/src/locales/huHU.ts index eeaf2448bd4a..2738f681e3c7 100644 --- a/packages/x-date-pickers/src/locales/huHU.ts +++ b/packages/x-date-pickers/src/locales/huHU.ts @@ -26,10 +26,10 @@ const huHUPickers: Partial> = { // DateRange labels start: 'Kezdő dátum', end: 'Záró dátum', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Kezdő dátum', + startTime: 'Kezdő idő', + endDate: 'Záró dátum', + endTime: 'Záró idő', // Action bar cancelButtonLabel: 'Mégse', @@ -78,24 +78,24 @@ const huHUPickers: Partial> = { fieldYearPlaceholder: (params) => 'É'.repeat(params.digitAmount), fieldMonthPlaceholder: (params) => (params.contentType === 'letter' ? 'HHHH' : 'HH'), fieldDayPlaceholder: () => 'NN', - // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE', + fieldWeekDayPlaceholder: (params) => (params.contentType === 'letter' ? 'NNNN' : 'NN'), fieldHoursPlaceholder: () => 'óó', fieldMinutesPlaceholder: () => 'pp', fieldSecondsPlaceholder: () => 'mm', fieldMeridiemPlaceholder: () => 'dd', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Év', + month: 'Hónap', + day: 'Nap', + weekDay: 'Hétköznap', + hours: timeViews.hours, + minutes: timeViews.minutes, + seconds: timeViews.seconds, + meridiem: timeViews.meridiem, // Common - // empty: 'Empty', + empty: 'Üres', }; export const huHU = getPickersLocalization(huHUPickers); From c0b6932e0711379097791126e6895e110009a6a5 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Mon, 29 Apr 2024 12:05:01 +0200 Subject: [PATCH 177/912] [DataGrid] Derive `formattedValue` from the edit value when passing to `renderEditCell` (#12870) --- packages/x-data-grid/src/components/cell/GridCell.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid/src/components/cell/GridCell.tsx b/packages/x-data-grid/src/components/cell/GridCell.tsx index 0a84b3eb627e..81a23061e4da 100644 --- a/packages/x-data-grid/src/components/cell/GridCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridCell.tsx @@ -215,7 +215,7 @@ const GridCell = React.forwardRef((props, ref) => }), ); - const { cellMode, hasFocus, isEditable = false, value, formattedValue } = cellParamsWithAPI; + const { cellMode, hasFocus, isEditable = false, value } = cellParamsWithAPI; const canManageOwnFocus = column.type === 'actions' && @@ -256,7 +256,7 @@ const GridCell = React.forwardRef((props, ref) => classNames.push(getCellClassName(cellParamsWithAPI)); } - const valueToRender = formattedValue == null ? value : formattedValue; + const valueToRender = cellParamsWithAPI.formattedValue ?? value; const cellRef = React.useRef(null); const handleRef = useForkRef(ref, cellRef); const focusElementRef = React.useRef(null); @@ -420,9 +420,14 @@ const GridCell = React.forwardRef((props, ref) => // eslint-disable-next-line @typescript-eslint/naming-convention const { changeReason, unstable_updateValueOnRender, ...editCellStateRest } = editCellState; + const formattedValue = column.valueFormatter + ? column.valueFormatter(editCellState.value as never, updatedRow, column, apiRef) + : cellParamsWithAPI.formattedValue; + const params: GridRenderEditCellParams = { ...cellParamsWithAPI, row: updatedRow, + formattedValue, ...editCellStateRest, }; From f1114f00e269327926edb56c7731e3db140048e3 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Mon, 29 Apr 2024 15:42:30 +0200 Subject: [PATCH 178/912] [charts] Fix docs/translations/errors typos (#12941) --- docs/pages/x/api/charts/area-element.json | 2 +- docs/pages/x/api/charts/charts-axis.json | 2 +- docs/pages/x/api/charts/gauge.json | 4 ++-- docs/pages/x/api/charts/line-element.json | 2 +- docs/pages/x/api/charts/mark-element.json | 2 +- docs/pages/x/api/charts/pie-arc-label.json | 2 +- docs/pages/x/api/charts/pie-arc.json | 2 +- .../api-docs/charts/area-element/area-element.json | 2 +- .../api-docs/charts/bar-series-type.json | 2 +- .../api-docs/charts/charts-axis/charts-axis.json | 2 +- .../charts-reference-line/charts-reference-line.json | 2 +- .../charts/charts-tooltip/charts-tooltip.json | 4 ++-- .../charts/gauge-container/gauge-container.json | 2 +- docs/translations/api-docs/charts/gauge/gauge.json | 6 +++--- .../api-docs/charts/line-element/line-element.json | 2 +- .../api-docs/charts/line-series-type.json | 2 +- .../api-docs/charts/mark-element/mark-element.json | 2 +- .../pie-arc-label-plot/pie-arc-label-plot.json | 6 +++--- .../api-docs/charts/pie-arc-label/pie-arc-label.json | 2 +- .../api-docs/charts/pie-arc-plot/pie-arc-plot.json | 6 +++--- .../api-docs/charts/pie-arc/pie-arc.json | 2 +- .../api-docs/charts/pie-series-type.json | 6 +++--- packages/x-charts/src/BarChart/BarPlot.tsx | 12 ++++++------ packages/x-charts/src/ChartsAxis/axisClasses.ts | 2 +- .../src/ChartsReferenceLine/ChartsReferenceLine.tsx | 2 +- packages/x-charts/src/ChartsReferenceLine/common.tsx | 2 +- .../x-charts/src/ChartsTooltip/ChartsTooltip.tsx | 8 ++++---- packages/x-charts/src/Gauge/Gauge.tsx | 2 +- packages/x-charts/src/Gauge/GaugeContainer.tsx | 2 +- packages/x-charts/src/Gauge/GaugeProvider.tsx | 6 +++--- packages/x-charts/src/Gauge/gaugeClasses.ts | 4 ++-- packages/x-charts/src/Gauge/utils.ts | 8 ++++---- packages/x-charts/src/LineChart/AreaElement.tsx | 2 +- packages/x-charts/src/LineChart/LineElement.tsx | 2 +- packages/x-charts/src/LineChart/MarkElement.tsx | 2 +- packages/x-charts/src/LineChart/formatter.test.ts | 2 +- packages/x-charts/src/PieChart/PieArc.tsx | 2 +- packages/x-charts/src/PieChart/PieArcLabel.tsx | 4 ++-- packages/x-charts/src/PieChart/PieArcLabelPlot.tsx | 8 ++++---- packages/x-charts/src/PieChart/PieArcPlot.tsx | 8 ++++---- .../x-charts/src/context/SeriesContextProvider.tsx | 2 +- packages/x-charts/src/hooks/useReducedMotion.ts | 2 +- packages/x-charts/src/hooks/useScale.ts | 2 +- .../ChartsAxesGradients/ChartsAxesGradients.tsx | 10 +++++----- .../ChartsAxesGradients/ChartsContinuousGradient.tsx | 8 ++++---- .../ChartsAxesGradients/ChartsPiecewiseGradient.tsx | 8 ++++---- packages/x-charts/src/internals/utils.ts | 2 +- packages/x-charts/src/models/seriesType/bar.ts | 2 +- packages/x-charts/src/models/seriesType/line.ts | 2 +- packages/x-charts/src/models/seriesType/pie.ts | 8 ++++---- 50 files changed, 94 insertions(+), 94 deletions(-) diff --git a/docs/pages/x/api/charts/area-element.json b/docs/pages/x/api/charts/area-element.json index b5dfedae13bd..a8dbe63ab15c 100644 --- a/docs/pages/x/api/charts/area-element.json +++ b/docs/pages/x/api/charts/area-element.json @@ -31,7 +31,7 @@ { "key": "highlighted", "className": "MuiAreaElement-highlighted", - "description": "Styles applied to the root element when higlighted.", + "description": "Styles applied to the root element when highlighted.", "isGlobal": false }, { diff --git a/docs/pages/x/api/charts/charts-axis.json b/docs/pages/x/api/charts/charts-axis.json index 43c16ca688f3..1375af3010dd 100644 --- a/docs/pages/x/api/charts/charts-axis.json +++ b/docs/pages/x/api/charts/charts-axis.json @@ -86,7 +86,7 @@ { "key": "tickContainer", "className": "MuiChartsAxis-tickContainer", - "description": "Styles applied to group ingruding the tick and its label.", + "description": "Styles applied to group including the tick and its label.", "isGlobal": false }, { diff --git a/docs/pages/x/api/charts/gauge.json b/docs/pages/x/api/charts/gauge.json index a17d90adb673..e72db8e5cbf0 100644 --- a/docs/pages/x/api/charts/gauge.json +++ b/docs/pages/x/api/charts/gauge.json @@ -39,7 +39,7 @@ { "key": "referenceArc", "className": "MuiGauge-referenceArc", - "description": "Styles applied to the arc diplaying the range of available values.", + "description": "Styles applied to the arc displaying the range of available values.", "isGlobal": false }, { @@ -51,7 +51,7 @@ { "key": "valueArc", "className": "MuiGauge-valueArc", - "description": "Styles applied to the arc diplaying the value.", + "description": "Styles applied to the arc displaying the value.", "isGlobal": false }, { diff --git a/docs/pages/x/api/charts/line-element.json b/docs/pages/x/api/charts/line-element.json index 3d971c68082e..62b49427bde2 100644 --- a/docs/pages/x/api/charts/line-element.json +++ b/docs/pages/x/api/charts/line-element.json @@ -31,7 +31,7 @@ { "key": "highlighted", "className": "MuiLineElement-highlighted", - "description": "Styles applied to the root element when higlighted.", + "description": "Styles applied to the root element when highlighted.", "isGlobal": false }, { diff --git a/docs/pages/x/api/charts/mark-element.json b/docs/pages/x/api/charts/mark-element.json index 492c60b29943..52f4607173f9 100644 --- a/docs/pages/x/api/charts/mark-element.json +++ b/docs/pages/x/api/charts/mark-element.json @@ -25,7 +25,7 @@ { "key": "highlighted", "className": "MuiMarkElement-highlighted", - "description": "Styles applied to the root element when higlighted.", + "description": "Styles applied to the root element when highlighted.", "isGlobal": false }, { diff --git a/docs/pages/x/api/charts/pie-arc-label.json b/docs/pages/x/api/charts/pie-arc-label.json index 042bedf7db33..e9911651f7fa 100644 --- a/docs/pages/x/api/charts/pie-arc-label.json +++ b/docs/pages/x/api/charts/pie-arc-label.json @@ -15,7 +15,7 @@ { "key": "highlighted", "className": "MuiPieArcLabel-highlighted", - "description": "Styles applied to the root element when higlighted.", + "description": "Styles applied to the root element when highlighted.", "isGlobal": false }, { diff --git a/docs/pages/x/api/charts/pie-arc.json b/docs/pages/x/api/charts/pie-arc.json index 1b476378b538..8a1d36a481a8 100644 --- a/docs/pages/x/api/charts/pie-arc.json +++ b/docs/pages/x/api/charts/pie-arc.json @@ -15,7 +15,7 @@ { "key": "highlighted", "className": "MuiPieArc-highlighted", - "description": "Styles applied to the root element when higlighted.", + "description": "Styles applied to the root element when highlighted.", "isGlobal": false }, { diff --git a/docs/translations/api-docs/charts/area-element/area-element.json b/docs/translations/api-docs/charts/area-element/area-element.json index 35ae13088523..92618a368f7a 100644 --- a/docs/translations/api-docs/charts/area-element/area-element.json +++ b/docs/translations/api-docs/charts/area-element/area-element.json @@ -14,7 +14,7 @@ "highlighted": { "description": "Styles applied to {{nodeName}} when {{conditions}}.", "nodeName": "the root element", - "conditions": "higlighted" + "conditions": "highlighted" }, "root": { "description": "Styles applied to the root element." } }, diff --git a/docs/translations/api-docs/charts/bar-series-type.json b/docs/translations/api-docs/charts/bar-series-type.json index d93ba6d135b4..26372eca00f0 100644 --- a/docs/translations/api-docs/charts/bar-series-type.json +++ b/docs/translations/api-docs/charts/bar-series-type.json @@ -4,7 +4,7 @@ "type": { "description": "" }, "color": { "description": "" }, "data": { "description": "Data associated to each bar." }, - "dataKey": { "description": "The key used to retrive data from the dataset." }, + "dataKey": { "description": "The key used to retrieve data from the dataset." }, "highlightScope": { "description": "" }, "id": { "description": "" }, "label": { "description": "" }, diff --git a/docs/translations/api-docs/charts/charts-axis/charts-axis.json b/docs/translations/api-docs/charts/charts-axis/charts-axis.json index 8241499e75c3..51b8fe93be72 100644 --- a/docs/translations/api-docs/charts/charts-axis/charts-axis.json +++ b/docs/translations/api-docs/charts/charts-axis/charts-axis.json @@ -34,7 +34,7 @@ "tick": { "description": "Styles applied to {{nodeName}}.", "nodeName": "ticks" }, "tickContainer": { "description": "Styles applied to {{nodeName}}.", - "nodeName": "group ingruding the tick and its label" + "nodeName": "group including the tick and its label" }, "tickLabel": { "description": "Styles applied to {{nodeName}}.", "nodeName": "ticks label" }, "top": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the top axis" } diff --git a/docs/translations/api-docs/charts/charts-reference-line/charts-reference-line.json b/docs/translations/api-docs/charts/charts-reference-line/charts-reference-line.json index 8c2a97a846b6..f73433287434 100644 --- a/docs/translations/api-docs/charts/charts-reference-line/charts-reference-line.json +++ b/docs/translations/api-docs/charts/charts-reference-line/charts-reference-line.json @@ -8,7 +8,7 @@ "labelStyle": { "description": "The style applied to the label." }, "lineStyle": { "description": "The style applied to the line." }, "spacing": { - "description": "Additional space arround the label in px. Can be a number or an object { x, y } to distinguish space with the reference line and space with axes." + "description": "Additional space around the label in px. Can be a number or an object { x, y } to distinguish space with the reference line and space with axes." }, "x": { "description": "The x value associated with the reference line. If defined the reference line will be vertical." diff --git a/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json b/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json index 1eb9f471154a..152217da8fe5 100644 --- a/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json +++ b/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json @@ -2,11 +2,11 @@ "componentDescription": "", "propDescriptions": { "axisContent": { - "description": "Component to override the tooltip content when triger is set to 'axis'." + "description": "Component to override the tooltip content when trigger is set to 'axis'." }, "classes": { "description": "Override or extend the styles applied to the component." }, "itemContent": { - "description": "Component to override the tooltip content when triger is set to 'item'." + "description": "Component to override the tooltip content when trigger is set to 'item'." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." }, diff --git a/docs/translations/api-docs/charts/gauge-container/gauge-container.json b/docs/translations/api-docs/charts/gauge-container/gauge-container.json index 06c25cdf282c..37908f418af5 100644 --- a/docs/translations/api-docs/charts/gauge-container/gauge-container.json +++ b/docs/translations/api-docs/charts/gauge-container/gauge-container.json @@ -18,7 +18,7 @@ "description": "The height of the chart in px. If not defined, it takes the height of the parent element." }, "innerRadius": { - "description": "The radius between circle center and the begining of the arc. Can be a number (in px) or a string with a percentage such as '50%'. The '100%' is the maximal radius that fit into the drawing area." + "description": "The radius between circle center and the beginning of the arc. Can be a number (in px) or a string with a percentage such as '50%'. The '100%' is the maximal radius that fit into the drawing area." }, "margin": { "description": "The margin between the SVG and the drawing area. It's used for leaving some space for extra information such as the x- and y-axis or legend. Accepts an object with the optional properties: top, bottom, left, and right." diff --git a/docs/translations/api-docs/charts/gauge/gauge.json b/docs/translations/api-docs/charts/gauge/gauge.json index 9e20b3914942..4833ce77d746 100644 --- a/docs/translations/api-docs/charts/gauge/gauge.json +++ b/docs/translations/api-docs/charts/gauge/gauge.json @@ -18,7 +18,7 @@ "description": "The height of the chart in px. If not defined, it takes the height of the parent element." }, "innerRadius": { - "description": "The radius between circle center and the begining of the arc. Can be a number (in px) or a string with a percentage such as '50%'. The '100%' is the maximal radius that fit into the drawing area." + "description": "The radius between circle center and the beginning of the arc. Can be a number (in px) or a string with a percentage such as '50%'. The '100%' is the maximal radius that fit into the drawing area." }, "margin": { "description": "The margin between the SVG and the drawing area. It's used for leaving some space for extra information such as the x- and y-axis or legend. Accepts an object with the optional properties: top, bottom, left, and right." @@ -39,12 +39,12 @@ "classDescriptions": { "referenceArc": { "description": "Styles applied to {{nodeName}}.", - "nodeName": "the arc diplaying the range of available values" + "nodeName": "the arc displaying the range of available values" }, "root": { "description": "Styles applied to the root element." }, "valueArc": { "description": "Styles applied to {{nodeName}}.", - "nodeName": "the arc diplaying the value" + "nodeName": "the arc displaying the value" }, "valueText": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the value text" } } diff --git a/docs/translations/api-docs/charts/line-element/line-element.json b/docs/translations/api-docs/charts/line-element/line-element.json index c638934e73ea..75e6c531f709 100644 --- a/docs/translations/api-docs/charts/line-element/line-element.json +++ b/docs/translations/api-docs/charts/line-element/line-element.json @@ -14,7 +14,7 @@ "highlighted": { "description": "Styles applied to {{nodeName}} when {{conditions}}.", "nodeName": "the root element", - "conditions": "higlighted" + "conditions": "highlighted" }, "root": { "description": "Styles applied to the root element." } }, diff --git a/docs/translations/api-docs/charts/line-series-type.json b/docs/translations/api-docs/charts/line-series-type.json index 964a3778533a..5cb2fa665932 100644 --- a/docs/translations/api-docs/charts/line-series-type.json +++ b/docs/translations/api-docs/charts/line-series-type.json @@ -9,7 +9,7 @@ }, "curve": { "description": "" }, "data": { "description": "Data associated to the line." }, - "dataKey": { "description": "The key used to retrive data from the dataset." }, + "dataKey": { "description": "The key used to retrieve data from the dataset." }, "disableHighlight": { "description": "Do not render the line highlight item if set to true." }, diff --git a/docs/translations/api-docs/charts/mark-element/mark-element.json b/docs/translations/api-docs/charts/mark-element/mark-element.json index 522d722c7a87..a3224ad7eaef 100644 --- a/docs/translations/api-docs/charts/mark-element/mark-element.json +++ b/docs/translations/api-docs/charts/mark-element/mark-element.json @@ -14,7 +14,7 @@ "highlighted": { "description": "Styles applied to {{nodeName}} when {{conditions}}.", "nodeName": "the root element", - "conditions": "higlighted" + "conditions": "highlighted" }, "root": { "description": "Styles applied to the root element." } } diff --git a/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json b/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json index c4bf2a349430..592c6f7ff011 100644 --- a/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json +++ b/docs/translations/api-docs/charts/pie-arc-label-plot/pie-arc-label-plot.json @@ -9,10 +9,10 @@ "cornerRadius": { "description": "The radius applied to arc corners (similar to border radius)." }, - "faded": { "description": "Override the arc attibutes when it is faded." }, - "highlighted": { "description": "Override the arc attibutes when it is highlighted." }, + "faded": { "description": "Override the arc attributes when it is faded." }, + "highlighted": { "description": "Override the arc attributes when it is highlighted." }, "innerRadius": { - "description": "The radius between circle center and the begining of the arc." + "description": "The radius between circle center and the beginning of the arc." }, "outerRadius": { "description": "The radius between circle center and the end of the arc." }, "paddingAngle": { "description": "The padding angle (deg) between two arcs." }, diff --git a/docs/translations/api-docs/charts/pie-arc-label/pie-arc-label.json b/docs/translations/api-docs/charts/pie-arc-label/pie-arc-label.json index a185a73a081a..85717777b4ac 100644 --- a/docs/translations/api-docs/charts/pie-arc-label/pie-arc-label.json +++ b/docs/translations/api-docs/charts/pie-arc-label/pie-arc-label.json @@ -10,7 +10,7 @@ "highlighted": { "description": "Styles applied to {{nodeName}} when {{conditions}}.", "nodeName": "the root element", - "conditions": "higlighted" + "conditions": "highlighted" }, "root": { "description": "Styles applied to the root element." } } diff --git a/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json b/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json index 72d44f2ee1d9..09045121dde1 100644 --- a/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json +++ b/docs/translations/api-docs/charts/pie-arc-plot/pie-arc-plot.json @@ -7,10 +7,10 @@ "cornerRadius": { "description": "The radius applied to arc corners (similar to border radius)." }, - "faded": { "description": "Override the arc attibutes when it is faded." }, - "highlighted": { "description": "Override the arc attibutes when it is highlighted." }, + "faded": { "description": "Override the arc attributes when it is faded." }, + "highlighted": { "description": "Override the arc attributes when it is highlighted." }, "innerRadius": { - "description": "The radius between circle center and the begining of the arc." + "description": "The radius between circle center and the beginning of the arc." }, "onItemClick": { "description": "Callback fired when a pie item is clicked.", diff --git a/docs/translations/api-docs/charts/pie-arc/pie-arc.json b/docs/translations/api-docs/charts/pie-arc/pie-arc.json index a185a73a081a..85717777b4ac 100644 --- a/docs/translations/api-docs/charts/pie-arc/pie-arc.json +++ b/docs/translations/api-docs/charts/pie-arc/pie-arc.json @@ -10,7 +10,7 @@ "highlighted": { "description": "Styles applied to {{nodeName}} when {{conditions}}.", "nodeName": "the root element", - "conditions": "higlighted" + "conditions": "highlighted" }, "root": { "description": "Styles applied to the root element." } } diff --git a/docs/translations/api-docs/charts/pie-series-type.json b/docs/translations/api-docs/charts/pie-series-type.json index 0320a5522271..d11f88c9565c 100644 --- a/docs/translations/api-docs/charts/pie-series-type.json +++ b/docs/translations/api-docs/charts/pie-series-type.json @@ -19,12 +19,12 @@ "description": "The y coordinate of the pie center.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the height the drawing area." }, "endAngle": { "description": "The end angle (deg) of the last item." }, - "faded": { "description": "Override the arc attibutes when it is faded." }, - "highlighted": { "description": "Override the arc attibutes when it is highlighted." }, + "faded": { "description": "Override the arc attributes when it is faded." }, + "highlighted": { "description": "Override the arc attributes when it is highlighted." }, "highlightScope": { "description": "" }, "id": { "description": "" }, "innerRadius": { - "description": "The radius between circle center and the begining of the arc.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the maximal radius that fit into the drawing area." + "description": "The radius between circle center and the beginning of the arc.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the maximal radius that fit into the drawing area." }, "outerRadius": { "description": "The radius between circle center and the end of the arc.
    Can be a number (in px) or a string with a percentage such as '50%'.
    The '100%' is the maximal radius that fit into the drawing area." diff --git a/packages/x-charts/src/BarChart/BarPlot.tsx b/packages/x-charts/src/BarChart/BarPlot.tsx index ae62ce8877e8..4fc7befb51cf 100644 --- a/packages/x-charts/src/BarChart/BarPlot.tsx +++ b/packages/x-charts/src/BarChart/BarPlot.tsx @@ -108,7 +108,7 @@ const useAggregatedData = (): CompletedBarData[] => { xAxisKey === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"` - } shoud be of type "band" to display the bar series of id "${seriesId}".`, + } should be of type "band" to display the bar series of id "${seriesId}".`, ); } if (xAxis[xAxisKey].data === undefined) { @@ -117,7 +117,7 @@ const useAggregatedData = (): CompletedBarData[] => { xAxisKey === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"` - } shoud have data property.`, + } should have data property.`, ); } baseScaleConfig = xAxisConfig as AxisDefaultized<'band'>; @@ -127,7 +127,7 @@ const useAggregatedData = (): CompletedBarData[] => { yAxisKey === DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"` - } shoud be a continuous type to display the bar series of id "${seriesId}".`, + } should be a continuous type to display the bar series of id "${seriesId}".`, ); } } else { @@ -137,7 +137,7 @@ const useAggregatedData = (): CompletedBarData[] => { yAxisKey === DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"` - } shoud be of type "band" to display the bar series of id "${seriesId}".`, + } should be of type "band" to display the bar series of id "${seriesId}".`, ); } @@ -147,7 +147,7 @@ const useAggregatedData = (): CompletedBarData[] => { yAxisKey === DEFAULT_Y_AXIS_KEY ? 'The first `yAxis`' : `The y-axis with id "${yAxisKey}"` - } shoud have data property.`, + } should have data property.`, ); } baseScaleConfig = yAxisConfig as AxisDefaultized<'band'>; @@ -157,7 +157,7 @@ const useAggregatedData = (): CompletedBarData[] => { xAxisKey === DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"` - } shoud be a continuous type to display the bar series of id "${seriesId}".`, + } should be a continuous type to display the bar series of id "${seriesId}".`, ); } } diff --git a/packages/x-charts/src/ChartsAxis/axisClasses.ts b/packages/x-charts/src/ChartsAxis/axisClasses.ts index 4bc68967b1fb..5f04fafe0583 100644 --- a/packages/x-charts/src/ChartsAxis/axisClasses.ts +++ b/packages/x-charts/src/ChartsAxis/axisClasses.ts @@ -8,7 +8,7 @@ export interface ChartsAxisClasses { root: string; /** Styles applied to the main line element. */ line: string; - /** Styles applied to group ingruding the tick and its label. */ + /** Styles applied to group including the tick and its label. */ tickContainer: string; /** Styles applied to ticks. */ tick: string; diff --git a/packages/x-charts/src/ChartsReferenceLine/ChartsReferenceLine.tsx b/packages/x-charts/src/ChartsReferenceLine/ChartsReferenceLine.tsx index c58f28fe8538..2050086fee21 100644 --- a/packages/x-charts/src/ChartsReferenceLine/ChartsReferenceLine.tsx +++ b/packages/x-charts/src/ChartsReferenceLine/ChartsReferenceLine.tsx @@ -61,7 +61,7 @@ ChartsReferenceLine.propTypes = { */ lineStyle: PropTypes.object, /** - * Additional space arround the label in px. + * Additional space around the label in px. * Can be a number or an object `{ x, y }` to distinguish space with the reference line and space with axes. * @default 5 */ diff --git a/packages/x-charts/src/ChartsReferenceLine/common.tsx b/packages/x-charts/src/ChartsReferenceLine/common.tsx index 0459ae20e0bb..6dc3c877d1fb 100644 --- a/packages/x-charts/src/ChartsReferenceLine/common.tsx +++ b/packages/x-charts/src/ChartsReferenceLine/common.tsx @@ -14,7 +14,7 @@ export type CommonChartsReferenceLineProps = { */ label?: string; /** - * Additional space arround the label in px. + * Additional space around the label in px. * Can be a number or an object `{ x, y }` to distinguish space with the reference line and space with axes. * @default 5 */ diff --git a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx index 937f3c79d542..3f8f0f6f0335 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx @@ -62,12 +62,12 @@ export type ChartsTooltipProps = { */ trigger?: TriggerOptions; /** - * Component to override the tooltip content when triger is set to 'item'. + * Component to override the tooltip content when trigger is set to 'item'. * @deprecated Use slots.itemContent instead */ itemContent?: React.ElementType>; /** - * Component to override the tooltip content when triger is set to 'axis'. + * Component to override the tooltip content when trigger is set to 'axis'. * @deprecated Use slots.axisContent instead */ axisContent?: React.ElementType; @@ -189,7 +189,7 @@ ChartsTooltip.propTypes = { // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- /** - * Component to override the tooltip content when triger is set to 'axis'. + * Component to override the tooltip content when trigger is set to 'axis'. * @deprecated Use slots.axisContent instead */ axisContent: PropTypes.elementType, @@ -198,7 +198,7 @@ ChartsTooltip.propTypes = { */ classes: PropTypes.object, /** - * Component to override the tooltip content when triger is set to 'item'. + * Component to override the tooltip content when trigger is set to 'item'. * @deprecated Use slots.itemContent instead */ itemContent: PropTypes.elementType, diff --git a/packages/x-charts/src/Gauge/Gauge.tsx b/packages/x-charts/src/Gauge/Gauge.tsx index 7277481fe3b6..6f165afe9023 100644 --- a/packages/x-charts/src/Gauge/Gauge.tsx +++ b/packages/x-charts/src/Gauge/Gauge.tsx @@ -81,7 +81,7 @@ Gauge.propTypes = { */ height: PropTypes.number, /** - * The radius between circle center and the begining of the arc. + * The radius between circle center and the beginning of the arc. * Can be a number (in px) or a string with a percentage such as '50%'. * The '100%' is the maximal radius that fit into the drawing area. * @default '80%' diff --git a/packages/x-charts/src/Gauge/GaugeContainer.tsx b/packages/x-charts/src/Gauge/GaugeContainer.tsx index f0352db75410..ca7679a86dd5 100644 --- a/packages/x-charts/src/Gauge/GaugeContainer.tsx +++ b/packages/x-charts/src/Gauge/GaugeContainer.tsx @@ -158,7 +158,7 @@ GaugeContainer.propTypes = { */ height: PropTypes.number, /** - * The radius between circle center and the begining of the arc. + * The radius between circle center and the beginning of the arc. * Can be a number (in px) or a string with a percentage such as '50%'. * The '100%' is the maximal radius that fit into the drawing area. * @default '80%' diff --git a/packages/x-charts/src/Gauge/GaugeProvider.tsx b/packages/x-charts/src/Gauge/GaugeProvider.tsx index a73efb81a479..c9fcb4d08a78 100644 --- a/packages/x-charts/src/Gauge/GaugeProvider.tsx +++ b/packages/x-charts/src/Gauge/GaugeProvider.tsx @@ -16,7 +16,7 @@ interface CircularConfig { */ endAngle?: number; /** - * The radius between circle center and the begining of the arc. + * The radius between circle center and the beginning of the arc. * Can be a number (in px) or a string with a percentage such as '50%'. * The '100%' is the maximal radius that fit into the drawing area. * @default '80%' @@ -59,7 +59,7 @@ interface ProcessedCircularConfig { */ endAngle: number; /** - * The radius between circle center and the begining of the arc. + * The radius between circle center and the beginning of the arc. */ innerRadius: number; /** @@ -160,7 +160,7 @@ export function GaugeProvider(props: GaugeProviderProps) { const maxRadius = getAvailableRadius(innerCx, innerCy, width, height, ratios); - // If the center is not defined, after computation of the available radius, udpate the center to use the remaining space. + // If the center is not defined, after computation of the available radius, update the center to use the remaining space. if (cxParam === undefined) { const usedWidth = maxRadius * (ratios.maxX - ratios.minX); cx = left + (width - usedWidth) / 2 + ratios.cx * usedWidth; diff --git a/packages/x-charts/src/Gauge/gaugeClasses.ts b/packages/x-charts/src/Gauge/gaugeClasses.ts index 1fdca8354d35..0db1ca9313e9 100644 --- a/packages/x-charts/src/Gauge/gaugeClasses.ts +++ b/packages/x-charts/src/Gauge/gaugeClasses.ts @@ -4,9 +4,9 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass'; export interface GaugeClasses { /** Styles applied to the root element. */ root: string; - /** Styles applied to the arc diplaying the value. */ + /** Styles applied to the arc displaying the value. */ valueArc: string; - /** Styles applied to the arc diplaying the range of available values. */ + /** Styles applied to the arc displaying the range of available values. */ referenceArc: string; /** Styles applied to the value text. */ valueText: string; diff --git a/packages/x-charts/src/Gauge/utils.ts b/packages/x-charts/src/Gauge/utils.ts index f8730c788e6c..ac6a1bf37ae9 100644 --- a/packages/x-charts/src/Gauge/utils.ts +++ b/packages/x-charts/src/Gauge/utils.ts @@ -7,7 +7,7 @@ function getPoint(angle: number): [number, number] { } /** - * Retruns the ratio of the arc bounding box and its center. + * Returns the ratio of the arc bounding box and its center. * @param startAngle The start angle (in deg) * @param endAngle The end angle (in deg) */ @@ -22,9 +22,9 @@ export function getArcRatios(startAngle: number, endAngle: number) { const initialAngle = Math.floor(minAngle / 90) * 90; for (let step = 1; step <= 4; step += 1) { - const cartinalAngle = initialAngle + step * 90; - if (cartinalAngle < maxAngle) { - points.push(getPoint(cartinalAngle)); + const cardinalAngle = initialAngle + step * 90; + if (cardinalAngle < maxAngle) { + points.push(getPoint(cardinalAngle)); } } diff --git a/packages/x-charts/src/LineChart/AreaElement.tsx b/packages/x-charts/src/LineChart/AreaElement.tsx index bd62f4ab8b28..42eaf7ed67e5 100644 --- a/packages/x-charts/src/LineChart/AreaElement.tsx +++ b/packages/x-charts/src/LineChart/AreaElement.tsx @@ -17,7 +17,7 @@ import { SeriesId } from '../models/seriesType/common'; export interface AreaElementClasses { /** Styles applied to the root element. */ root: string; - /** Styles applied to the root element when higlighted. */ + /** Styles applied to the root element when highlighted. */ highlighted: string; /** Styles applied to the root element when faded. */ faded: string; diff --git a/packages/x-charts/src/LineChart/LineElement.tsx b/packages/x-charts/src/LineChart/LineElement.tsx index bfdff554e057..aa486947b4ad 100644 --- a/packages/x-charts/src/LineChart/LineElement.tsx +++ b/packages/x-charts/src/LineChart/LineElement.tsx @@ -17,7 +17,7 @@ import { SeriesId } from '../models/seriesType/common'; export interface LineElementClasses { /** Styles applied to the root element. */ root: string; - /** Styles applied to the root element when higlighted. */ + /** Styles applied to the root element when highlighted. */ highlighted: string; /** Styles applied to the root element when faded. */ faded: string; diff --git a/packages/x-charts/src/LineChart/MarkElement.tsx b/packages/x-charts/src/LineChart/MarkElement.tsx index f78aac65b721..b4dd57b5ad34 100644 --- a/packages/x-charts/src/LineChart/MarkElement.tsx +++ b/packages/x-charts/src/LineChart/MarkElement.tsx @@ -19,7 +19,7 @@ import { SeriesId } from '../models/seriesType/common'; export interface MarkElementClasses { /** Styles applied to the root element. */ root: string; - /** Styles applied to the root element when higlighted. */ + /** Styles applied to the root element when highlighted. */ highlighted: string; /** Styles applied to the root element when faded. */ faded: string; diff --git a/packages/x-charts/src/LineChart/formatter.test.ts b/packages/x-charts/src/LineChart/formatter.test.ts index 2066391c29ab..627ac7bfe491 100644 --- a/packages/x-charts/src/LineChart/formatter.test.ts +++ b/packages/x-charts/src/LineChart/formatter.test.ts @@ -9,7 +9,7 @@ const seriesDataset: FormatterParams<'line'>['series'] = { type: 'line', id: 'id1', color: 'red', - // usefull info + // useful info dataKey: 'k', }, }; diff --git a/packages/x-charts/src/PieChart/PieArc.tsx b/packages/x-charts/src/PieChart/PieArc.tsx index 8b0717359e16..2b5fcb45555d 100644 --- a/packages/x-charts/src/PieChart/PieArc.tsx +++ b/packages/x-charts/src/PieChart/PieArc.tsx @@ -13,7 +13,7 @@ import { PieItemId } from '../models'; export interface PieArcClasses { /** Styles applied to the root element. */ root: string; - /** Styles applied to the root element when higlighted. */ + /** Styles applied to the root element when highlighted. */ highlighted: string; /** Styles applied to the root element when faded. */ faded: string; diff --git a/packages/x-charts/src/PieChart/PieArcLabel.tsx b/packages/x-charts/src/PieChart/PieArcLabel.tsx index 4896e623a2a5..10a96f78ecfb 100644 --- a/packages/x-charts/src/PieChart/PieArcLabel.tsx +++ b/packages/x-charts/src/PieChart/PieArcLabel.tsx @@ -11,7 +11,7 @@ import { PieItemId } from '../models/seriesType/pie'; export interface PieArcLabelClasses { /** Styles applied to the root element. */ root: string; - /** Styles applied to the root element when higlighted. */ + /** Styles applied to the root element when highlighted. */ highlighted: string; /** Styles applied to the root element when faded. */ faded: string; @@ -71,7 +71,7 @@ export type PieArcLabelProps = PieArcLabelOwnerState & /** * Helper to compute label position. - * It's not an inline function because we need it in inerpolation. + * It's not an inline function because we need it in interpolation. */ const getLabelPosition = (formattedArcLabel: string | null | undefined, variable: 'x' | 'y') => diff --git a/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx b/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx index eb1d9c627f5b..2d21db1b13c5 100644 --- a/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx +++ b/packages/x-charts/src/PieChart/PieArcLabelPlot.tsx @@ -60,7 +60,7 @@ export interface PieArcLabelPlotProps >, ComputedPieRadius { /** - * Override the arc attibutes when it is faded. + * Override the arc attributes when it is faded. * @default { additionalRadius: -5 } */ faded?: DefaultizedPieSeriesType['faded']; @@ -205,7 +205,7 @@ PieArcLabelPlot.propTypes = { }), ).isRequired, /** - * Override the arc attibutes when it is faded. + * Override the arc attributes when it is faded. * @default { additionalRadius: -5 } */ faded: PropTypes.shape({ @@ -218,7 +218,7 @@ PieArcLabelPlot.propTypes = { paddingAngle: PropTypes.number, }), /** - * Override the arc attibutes when it is highlighted. + * Override the arc attributes when it is highlighted. */ highlighted: PropTypes.shape({ additionalRadius: PropTypes.number, @@ -235,7 +235,7 @@ PieArcLabelPlot.propTypes = { }), id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, /** - * The radius between circle center and the begining of the arc. + * The radius between circle center and the beginning of the arc. * @default 0 */ innerRadius: PropTypes.number, diff --git a/packages/x-charts/src/PieChart/PieArcPlot.tsx b/packages/x-charts/src/PieChart/PieArcPlot.tsx index 0e3e072ddb89..cc693ced0685 100644 --- a/packages/x-charts/src/PieChart/PieArcPlot.tsx +++ b/packages/x-charts/src/PieChart/PieArcPlot.tsx @@ -30,7 +30,7 @@ export interface PieArcPlotProps >, ComputedPieRadius { /** - * Override the arc attibutes when it is faded. + * Override the arc attributes when it is faded. * @default { additionalRadius: -5 } */ faded?: DefaultizedPieSeriesType['faded']; @@ -179,7 +179,7 @@ PieArcPlot.propTypes = { }), ).isRequired, /** - * Override the arc attibutes when it is faded. + * Override the arc attributes when it is faded. * @default { additionalRadius: -5 } */ faded: PropTypes.shape({ @@ -192,7 +192,7 @@ PieArcPlot.propTypes = { paddingAngle: PropTypes.number, }), /** - * Override the arc attibutes when it is highlighted. + * Override the arc attributes when it is highlighted. */ highlighted: PropTypes.shape({ additionalRadius: PropTypes.number, @@ -209,7 +209,7 @@ PieArcPlot.propTypes = { }), id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, /** - * The radius between circle center and the begining of the arc. + * The radius between circle center and the beginning of the arc. * @default 0 */ innerRadius: PropTypes.number, diff --git a/packages/x-charts/src/context/SeriesContextProvider.tsx b/packages/x-charts/src/context/SeriesContextProvider.tsx index b957fd6c3835..e39746611bd4 100644 --- a/packages/x-charts/src/context/SeriesContextProvider.tsx +++ b/packages/x-charts/src/context/SeriesContextProvider.tsx @@ -76,7 +76,7 @@ const formatSeries = (series: AllSeriesType[], colors: string[], dataset?: Datas }); const formattedSeries: FormattedSeries = {}; - // Apply formater on a type group + // Apply formatter on a type group (Object.keys(seriesTypeFormatter) as ChartSeriesType[]).forEach((type) => { if (seriesGroups[type] !== undefined) { formattedSeries[type] = diff --git a/packages/x-charts/src/hooks/useReducedMotion.ts b/packages/x-charts/src/hooks/useReducedMotion.ts index f73b9b373b98..d9df669f241b 100644 --- a/packages/x-charts/src/hooks/useReducedMotion.ts +++ b/packages/x-charts/src/hooks/useReducedMotion.ts @@ -5,7 +5,7 @@ import { useIsomorphicLayoutEffect, Globals } from '@react-spring/web'; * set skipAnimations to the value of the user's * `prefers-reduced-motion` query. * - * The return value, post-effect, is the value of their prefered setting + * The return value, post-effect, is the value of their preferred setting */ export const useReducedMotion = () => { // Taken from: https://github.com/pmndrs/react-spring/blob/02ec877bbfab0df46da0e4a47d5f68d3e731206a/packages/shared/src/hooks/useReducedMotion.ts#L13 diff --git a/packages/x-charts/src/hooks/useScale.ts b/packages/x-charts/src/hooks/useScale.ts index 736435eeab43..648249f21c75 100644 --- a/packages/x-charts/src/hooks/useScale.ts +++ b/packages/x-charts/src/hooks/useScale.ts @@ -5,7 +5,7 @@ import { AxisScaleConfig, D3Scale, ScaleName } from '../models/axis'; /** * For a given scale return a function that map value to their position. - * Usefull when dealing with specific scale such as band. + * Useful when dealing with specific scale such as band. * @param scale The scale to use * @returns (value: any) => number */ diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx index ce79c1fb89b0..2e388f111c11 100644 --- a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsAxesGradients.tsx @@ -8,7 +8,7 @@ import ChartsContinuousGradient from './ChartsContinuousGradient'; export function useChartGradient() { const { chartId } = React.useContext(DrawingContext); return React.useCallback( - (axisId: string, direction: 'x' | 'y') => `${chartId}-graient-${direction}-${axisId}`, + (axisId: string, direction: 'x' | 'y') => `${chartId}-gradient-${direction}-${axisId}`, [chartId], ); } @@ -32,7 +32,7 @@ export function ChartsAxesGradients() { return ( p !== undefined); @@ -40,7 +40,7 @@ export default function ChartsContinuousGradient(props: ChartsContinuousGradient x2="0" y1="0" y2="0" - {...{ [`${direction}${isReveresed ? 1 : 2}`]: `${size}px` }} + {...{ [`${direction}${isReversed ? 1 : 2}`]: `${size}px` }} gradientUnits="userSpaceOnUse" // Use the SVG coordinate instead of the component ones. > {Array.from({ length: numberOfPoints + 1 }, (_, index) => { @@ -52,7 +52,7 @@ export default function ChartsContinuousGradient(props: ChartsContinuousGradient if (x === undefined) { return null; } - const offset = isReveresed ? 1 - x / size : x / size; + const offset = isReversed ? 1 - x / size : x / size; const color = colorScale(value); if (color === null) { diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx index d2c27c35dc5d..6b6957ab154d 100644 --- a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsPiecewiseGradient.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { PiecewiseColorConfig } from '../../../models/colorMapping'; type ChartsPiecewiseGradientProps = { - isReveresed?: boolean; + isReversed?: boolean; gradientId: string; size: number; direction: 'x' | 'y'; @@ -11,7 +11,7 @@ type ChartsPiecewiseGradientProps = { }; export default function ChartsPiecewiseGradient(props: ChartsPiecewiseGradientProps) { - const { isReveresed, gradientId, size, direction, scale, colorMap } = props; + const { isReversed, gradientId, size, direction, scale, colorMap } = props; return ( {colorMap.thresholds.map((threshold, index) => { @@ -29,7 +29,7 @@ export default function ChartsPiecewiseGradient(props: ChartsPiecewiseGradientPr if (x === undefined) { return null; } - const offset = isReveresed ? 1 - x / size : x / size; + const offset = isReversed ? 1 - x / size : x / size; return ( diff --git a/packages/x-charts/src/internals/utils.ts b/packages/x-charts/src/internals/utils.ts index 8dfdd4ea9d82..db998650387e 100644 --- a/packages/x-charts/src/internals/utils.ts +++ b/packages/x-charts/src/internals/utils.ts @@ -10,7 +10,7 @@ type Without = { [P in Exclude]?: never }; export type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; /** - * Transform mouse event position to corrdinates inside the SVG. + * Transform mouse event position to coordinates inside the SVG. * @param svg The SVG element * @param event The mouseEvent to transform */ diff --git a/packages/x-charts/src/models/seriesType/bar.ts b/packages/x-charts/src/models/seriesType/bar.ts index 50f998087cf5..0a783fa16448 100644 --- a/packages/x-charts/src/models/seriesType/bar.ts +++ b/packages/x-charts/src/models/seriesType/bar.ts @@ -17,7 +17,7 @@ export interface BarSeriesType */ data?: (number | null)[]; /** - * The key used to retrive data from the dataset. + * The key used to retrieve data from the dataset. */ dataKey?: string; label?: string; diff --git a/packages/x-charts/src/models/seriesType/line.ts b/packages/x-charts/src/models/seriesType/line.ts index 43f22233db29..ba5dae1c84ce 100644 --- a/packages/x-charts/src/models/seriesType/line.ts +++ b/packages/x-charts/src/models/seriesType/line.ts @@ -51,7 +51,7 @@ export interface LineSeriesType */ data?: (number | null)[]; /** - * The key used to retrive data from the dataset. + * The key used to retrieve data from the dataset. */ dataKey?: string; stack?: string; diff --git a/packages/x-charts/src/models/seriesType/pie.ts b/packages/x-charts/src/models/seriesType/pie.ts index 7b731ed68b2e..a67415998c39 100644 --- a/packages/x-charts/src/models/seriesType/pie.ts +++ b/packages/x-charts/src/models/seriesType/pie.ts @@ -23,7 +23,7 @@ export interface PieSeriesType extends CommonSeriesType extends CommonSeriesType extends CommonSeriesType Date: Mon, 29 Apr 2024 22:49:54 +0300 Subject: [PATCH 179/912] Bump Playwright (#12302) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- .circleci/config.yml | 10 +++++----- package.json | 2 +- pnpm-lock.yaml | 24 ++++++++++++------------ test/e2e/.mocharc.js | 2 +- test/e2e/index.test.ts | 5 ++++- test/package.json | 2 +- test/regressions/.mocharc.js | 2 +- test/regressions/index.test.js | 2 +- 8 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 129d90984ae7..272d900fdd54 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -193,7 +193,7 @@ jobs: test_browser: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.41.2-focal + - image: mcr.microsoft.com/playwright:v1.43.1-focal environment: NODE_ENV: development # Needed if playwright is in `devDependencies` steps: @@ -226,7 +226,7 @@ jobs: test_e2e: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.41.2-focal + - image: mcr.microsoft.com/playwright:v1.43.1-focal environment: NODE_ENV: development # Needed if playwright is in `devDependencies` steps: @@ -239,7 +239,7 @@ jobs: test_e2e_website: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.41.2-focal + - image: mcr.microsoft.com/playwright:v1.43.1-focal environment: NODE_ENV: development # Needed if playwright is in `devDependencies` steps: @@ -254,7 +254,7 @@ jobs: test_regressions: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.41.2-focal + - image: mcr.microsoft.com/playwright:v1.43.1-focal environment: NODE_ENV: development # Needed if playwright is in `devDependencies` steps: @@ -270,7 +270,7 @@ jobs: run_danger: <<: *default-job docker: - - image: mcr.microsoft.com/playwright:v1.41.2-focal + - image: mcr.microsoft.com/playwright:v1.43.1-focal environment: NODE_ENV: development # Needed if playwright is in `devDependencies` steps: diff --git a/package.json b/package.json index e6bf37bac132..c07ab6d06078 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@next/eslint-plugin-next": "14.0.4", "@octokit/plugin-retry": "^6.0.1", "@octokit/rest": "^20.0.2", - "@playwright/test": "1.41.2", + "@playwright/test": "1.43.1", "@testing-library/react": "^14.2.1", "@types/babel__core": "^7.20.5", "@types/chai": "^4.3.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e76c23e8e0b..41d6b07b9fc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,8 +108,8 @@ importers: specifier: ^20.0.2 version: 20.0.2 '@playwright/test': - specifier: 1.41.2 - version: 1.41.2 + specifier: 1.43.1 + version: 1.43.1 '@testing-library/react': specifier: ^14.2.1 version: 14.2.2(react-dom@18.2.0)(react@18.2.0) @@ -1294,8 +1294,8 @@ importers: specifier: workspace:* version: link:../packages/x-date-pickers-pro/build '@playwright/test': - specifier: 1.41.2 - version: 1.41.2 + specifier: 1.43.1 + version: 1.43.1 '@react-spring/web': specifier: ^9.7.3 version: 9.7.3(react-dom@18.2.0)(react@18.2.0) @@ -4547,12 +4547,12 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@playwright/test@1.41.2: - resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} + /@playwright/test@1.43.1: + resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.41.2 + playwright: 1.43.1 dev: true /@polka/url@1.0.0-next.24: @@ -14566,18 +14566,18 @@ packages: dependencies: find-up: 3.0.0 - /playwright-core@1.41.2: - resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + /playwright-core@1.43.1: + resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.2: - resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + /playwright@1.43.1: + resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.2 + playwright-core: 1.43.1 optionalDependencies: fsevents: 2.3.2 dev: true diff --git a/test/e2e/.mocharc.js b/test/e2e/.mocharc.js index e10f844d06e1..5f5eed680bae 100644 --- a/test/e2e/.mocharc.js +++ b/test/e2e/.mocharc.js @@ -2,7 +2,7 @@ module.exports = { extension: ['js', 'ts', 'tsx'], recursive: true, slow: 500, - timeout: (process.env.CIRCLECI === 'true' ? 4 : 2) * 1000, // Circle CI has low-performance CPUs. + timeout: (process.env.CIRCLECI === 'true' ? 5 : 2) * 1000, // Circle CI has low-performance CPUs. reporter: 'dot', require: [require.resolve('../utils/setupBabel')], }; diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index 5fefbc785d5a..23a9d8147401 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -716,7 +716,10 @@ async function initializeEnvironment( it('should focus the first field section after clearing a value in v6 input', async () => { await renderFixture('DatePicker/BasicClearableDesktopDatePicker'); - await page.getByRole('textbox').fill('2'); + const textbox = page.getByRole('textbox'); + // locator.fill('2') does not work reliably for this case in all browsers + await textbox.focus(); + await textbox.press('2'); await page.getByRole('button', { name: 'Clear value' }).click(); // firefox does not support document.getSelection().toString() on input elements diff --git a/test/package.json b/test/package.json index 5a940006b515..c256ea8926a4 100644 --- a/test/package.json +++ b/test/package.json @@ -15,7 +15,7 @@ "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", "@react-spring/web": "^9.7.3", - "@playwright/test": "1.41.2", + "@playwright/test": "1.43.1", "@types/chai": "^4.3.12", "@types/prop-types": "^15.7.11", "@types/react": "18.2.60", diff --git a/test/regressions/.mocharc.js b/test/regressions/.mocharc.js index 1070a73a55e7..25ded7571a03 100644 --- a/test/regressions/.mocharc.js +++ b/test/regressions/.mocharc.js @@ -1,6 +1,6 @@ module.exports = { recursive: true, slow: 500, - timeout: (process.env.CIRCLECI === 'true' ? 4 : 2) * 1000, // Circle CI has low-performance CPUs. + timeout: (process.env.CIRCLECI === 'true' ? 5 : 2) * 1000, // Circle CI has low-performance CPUs. require: [require.resolve('@babel/register')], }; diff --git a/test/regressions/index.test.js b/test/regressions/index.test.js index bc6b774a2ecd..cb4971f83010 100644 --- a/test/regressions/index.test.js +++ b/test/regressions/index.test.js @@ -207,7 +207,7 @@ async function main() { return new Promise((resolve, reject) => { // See https://ffmpeg.org/ffmpeg-devices.html#x11grab - const args = `-y -f x11grab -framerate 1 -video_size 460x400 -i :99.0+90,85 -vframes 1 ${screenshotPath}`; + const args = `-y -f x11grab -framerate 1 -video_size 460x400 -i :99.0+90,95 -vframes 1 ${screenshotPath}`; const ffmpeg = childProcess.spawn('ffmpeg', args.split(' ')); ffmpeg.on('close', (code) => { From 0ae7e4b3fdf08067d8a0450096d3e38d0e8d5ee6 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 30 Apr 2024 10:52:01 +0200 Subject: [PATCH 180/912] [charts][PieChart] Fix `prop.slots` and `prop.slotProps` not passed to `` (#12939) --- packages/x-charts/src/PieChart/PieChart.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 380252524043..50ed25c630f9 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -194,7 +194,7 @@ function PieChart(props: PieChartProps) { - {!loading && } + {!loading && } {children} ); From 9a5006fee981412e392cb20a2d3e833d4fb28776 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:15:54 +0300 Subject: [PATCH 181/912] Bump GitHub Actions (#12932) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/cherry-pick-master-to-v6.yml | 4 ++-- .github/workflows/cherry-pick-next-to-master.yml | 4 ++-- .github/workflows/closed-issue-message.yaml | 2 +- .github/workflows/codeql.yml | 6 +++--- .github/workflows/l10n.yml | 2 +- .github/workflows/scorecards.yml | 4 ++-- .github/workflows/vale-action.yml | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/cherry-pick-master-to-v6.yml b/.github/workflows/cherry-pick-master-to-v6.yml index 78a52ec9ed67..6d1d08e55cad 100644 --- a/.github/workflows/cherry-pick-master-to-v6.yml +++ b/.github/workflows/cherry-pick-master-to-v6.yml @@ -18,13 +18,13 @@ jobs: if: ${{ contains(github.event.pull_request.labels.*.name, 'needs cherry-pick') && github.event.pull_request.merged == true }} steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: fetch-depth: 0 - name: Cherry pick and create the new PR env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: carloscastrojumo/github-cherry-pick-action@a145da1b8142e752d3cbc11aaaa46a535690f0c5 # v1.0.9 + uses: carloscastrojumo/github-cherry-pick-action@503773289f4a459069c832dc628826685b75b4b3 # v1.0.10 with: branch: v6.x body: 'Cherry-pick of #{old_pull_request_id}' diff --git a/.github/workflows/cherry-pick-next-to-master.yml b/.github/workflows/cherry-pick-next-to-master.yml index 50b64c79b8d0..20f0f827b8b4 100644 --- a/.github/workflows/cherry-pick-next-to-master.yml +++ b/.github/workflows/cherry-pick-next-to-master.yml @@ -18,13 +18,13 @@ jobs: if: ${{ contains(github.event.pull_request.labels.*.name, 'needs cherry-pick') && github.event.pull_request.merged == true }} steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: fetch-depth: 0 - name: Cherry pick and create the new PR env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: carloscastrojumo/github-cherry-pick-action@a145da1b8142e752d3cbc11aaaa46a535690f0c5 # v1.0.9 + uses: carloscastrojumo/github-cherry-pick-action@503773289f4a459069c832dc628826685b75b4b3 # v1.0.10 with: branch: master body: 'Cherry-pick of #{old_pull_request_id}' diff --git a/.github/workflows/closed-issue-message.yaml b/.github/workflows/closed-issue-message.yaml index b652b7e5954d..4bd174876fa5 100644 --- a/.github/workflows/closed-issue-message.yaml +++ b/.github/workflows/closed-issue-message.yaml @@ -25,7 +25,7 @@ jobs: permissions: issues: write steps: - - uses: actions-cool/check-user-permission@a0668c9aec87f3875fc56170b6452a453e9dd819 + - uses: actions-cool/check-user-permission@956b2e73cdfe3bcb819bb7225e490cb3b18fd76e id: checkUser with: require: 'write' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 93bcb4210384..4d698485e3c2 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -16,10 +16,10 @@ jobs: security-events: write steps: - name: Checkout repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: languages: typescript # If you wish to specify custom queries, you can do so here or in a config file. @@ -29,4 +29,4 @@ jobs: # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 diff --git a/.github/workflows/l10n.yml b/.github/workflows/l10n.yml index 8d35aca60ea1..8e49e1b7ce70 100644 --- a/.github/workflows/l10n.yml +++ b/.github/workflows/l10n.yml @@ -17,7 +17,7 @@ jobs: issues: write steps: - run: echo "${{ github.actor }}" - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d #v3.0.0 with: version: 8 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index c32bf3cf5b8e..8d45e4dae6be 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false @@ -44,6 +44,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: results.sarif diff --git a/.github/workflows/vale-action.yml b/.github/workflows/vale-action.yml index dc6d9faaf213..e47135018906 100644 --- a/.github/workflows/vale-action.yml +++ b/.github/workflows/vale-action.yml @@ -12,7 +12,7 @@ jobs: contents: read pull-requests: write steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: errata-ai/vale-action@38bf078c328061f59879b347ca344a718a736018 # v2.1.0 with: reporter: github-pr-review From 74d1ee3c78626e9d002d42de4bccf8db7497338a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:31:18 +0300 Subject: [PATCH 182/912] Bump eslint-plugin-mocha to ^10.4.3 (#12394) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c07ab6d06078..beac5344b30f 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "eslint-plugin-jsdoc": "^48.2.0", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-material-ui": "workspace:^", - "eslint-plugin-mocha": "^10.3.0", + "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41d6b07b9fc9..5756366ec21a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,8 +252,8 @@ importers: specifier: workspace:^ version: link:packages/eslint-plugin-material-ui eslint-plugin-mocha: - specifier: ^10.3.0 - version: 10.4.1(eslint@8.57.0) + specifier: ^10.4.3 + version: 10.4.3(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) @@ -9254,8 +9254,8 @@ packages: object.fromentries: 2.0.7 dev: true - /eslint-plugin-mocha@10.4.1(eslint@8.57.0): - resolution: {integrity: sha512-G85ALUgKaLzuEuHhoW3HVRgPTmia6njQC3qCG6CEvA8/Ja9PDZnRZOuzekMki+HaViEQXINuYsmhp5WR5/4MfA==} + /eslint-plugin-mocha@10.4.3(eslint@8.57.0): + resolution: {integrity: sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==} engines: {node: '>=14.0.0'} peerDependencies: eslint: '>=7.0.0' From 1a7b08c73f7d2f41b72f57ac739ebad3dde9ca19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:31:50 +0300 Subject: [PATCH 183/912] Bump @next/eslint-plugin-next to 14.2.3 (#11768) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 21 +++++---------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index beac5344b30f..80fc5cec1405 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "@mui/material": "^5.15.14", "@mui/monorepo": "github:mui/material-ui#afffc2ffc3db1e6abf48f3b3e13a41e8b758f874", "@mui/utils": "^5.15.14", - "@next/eslint-plugin-next": "14.0.4", + "@next/eslint-plugin-next": "14.2.3", "@octokit/plugin-retry": "^6.0.1", "@octokit/rest": "^20.0.2", "@playwright/test": "1.43.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5756366ec21a..018b51c615a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,8 +99,8 @@ importers: specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) '@next/eslint-plugin-next': - specifier: 14.0.4 - version: 14.0.4 + specifier: 14.2.3 + version: 14.2.3 '@octokit/plugin-retry': specifier: ^6.0.1 version: 6.0.1(@octokit/core@5.1.0) @@ -3847,10 +3847,10 @@ packages: resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} dev: false - /@next/eslint-plugin-next@14.0.4: - resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} + /@next/eslint-plugin-next@14.2.3: + resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} dependencies: - glob: 7.1.7 + glob: 10.3.10 dev: true /@next/swc-darwin-arm64@14.1.4: @@ -10357,17 +10357,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: From 4456afac2aad79cdbb495b5b22e40aae73fe61f2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:45:59 +0300 Subject: [PATCH 184/912] Bump @docsearch/react to ^3.6.0 (#12393) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/package.json b/docs/package.json index 0d88b45691b3..5b21fcb1180e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -22,7 +22,7 @@ "@babel/core": "^7.24.0", "@babel/runtime": "^7.24.0", "@babel/runtime-corejs2": "^7.24.0", - "@docsearch/react": "^3.5.2", + "@docsearch/react": "^3.6.0", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.11.4", "@emotion/server": "^11.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 018b51c615a2..efe51bbfd16a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -402,8 +402,8 @@ importers: specifier: ^7.24.0 version: 7.24.4 '@docsearch/react': - specifier: ^3.5.2 - version: 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + specifier: ^3.6.0 + version: 3.6.0(@algolia/client-search@4.22.1)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@emotion/cache': specifier: ^11.11.0 version: 11.11.0 @@ -2840,12 +2840,12 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - /@docsearch/css@3.5.2: - resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} + /@docsearch/css@3.6.0: + resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): - resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} + /@docsearch/react@3.6.0(@algolia/client-search@4.22.1)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -2863,7 +2863,7 @@ packages: dependencies: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) - '@docsearch/css': 3.5.2 + '@docsearch/css': 3.6.0 '@types/react': 18.2.60 algoliasearch: 4.22.1 react: 18.2.0 From 1a2aadedc69b74a39a82f4de77f7e38ef4568d54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:46:38 +0300 Subject: [PATCH 185/912] Bump eslint-plugin-react to ^7.34.1 (#12395) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 636 ++++++++++++++++++++++++++++--------------------- 2 files changed, 370 insertions(+), 268 deletions(-) diff --git a/package.json b/package.json index 80fc5cec1405..30297572ab6c 100644 --- a/package.json +++ b/package.json @@ -143,7 +143,7 @@ "eslint-plugin-material-ui": "workspace:^", "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react": "^7.34.1", "eslint-plugin-react-hooks": "^4.6.0", "fast-glob": "^3.3.2", "format-util": "^1.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efe51bbfd16a..7ccde31766c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,7 +226,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: ^17.1.0 version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -258,8 +258,8 @@ importers: specifier: ^5.1.3 version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-react: - specifier: ^7.33.2 - version: 7.33.2(eslint@8.57.0) + specifier: ^7.34.1 + version: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: specifier: ^4.6.0 version: 4.6.0(eslint@8.57.0) @@ -6255,11 +6255,12 @@ packages: engines: {node: '>=0.10.0'} dev: false - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 dev: true /array-differ@3.0.0: @@ -6279,10 +6280,10 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -6308,9 +6309,9 @@ packages: resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 dev: true @@ -6318,9 +6319,21 @@ packages: /array.prototype.find@2.2.2: resolution: {integrity: sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 dev: true @@ -6328,20 +6341,20 @@ packages: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -6349,9 +6362,9 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -6359,9 +6372,9 @@ packages: resolution: {integrity: sha512-nK1psgF2cXqP3wSyCSq0Hc7zwNq3sfljQqaG27r/7a7ooNUnn5nGq6yYWyks9jMO5EoFQ0ax80hSg6oXSRNXaw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 dev: true @@ -6370,34 +6383,44 @@ packages: resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 dev: true - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 dev: true /arrify@1.0.1: @@ -6476,12 +6499,6 @@ packages: /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - dev: true - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true @@ -6507,9 +6524,11 @@ packages: postcss: 8.4.38 postcss-value-parser: 4.2.0 - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 dev: true /axe-core@4.7.0: @@ -7134,12 +7153,15 @@ packages: write-file-atomic: 3.0.3 dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.2.0 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -8212,6 +8234,33 @@ packages: whatwg-url: 14.0.0 dev: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + /date-fns-jalali@2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si): resolution: {integrity: sha512-yjlI9O18Z6ryGNagryrLO8OQ+3rishM3+A0UOX2UX10cWMn2NTlQcQ+ywTEJvF5IJz0FwX/slt2nCcpyQ/c8gw==} patched: true @@ -8327,24 +8376,24 @@ packages: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 isarray: 2.0.5 object-is: 1.1.5 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 + regexp.prototype.flags: 1.5.2 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /deep-extend@0.6.0: @@ -8374,13 +8423,13 @@ packages: engines: {node: '>=10'} dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -8391,8 +8440,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 /define-property@0.2.5: @@ -8842,7 +8891,7 @@ packages: object.values: 1.1.7 raf: 3.4.1 rst-selector-parser: 2.2.3 - string.prototype.trim: 1.2.8 + string.prototype.trim: 1.2.9 dev: true /err-code@2.0.3: @@ -8861,60 +8910,77 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.2 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -8924,41 +8990,49 @@ packages: stop-iteration-iterator: 1.0.0 dev: true - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + engines: {node: '>= 0.4'} dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 dev: true /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -9069,7 +9143,7 @@ packages: eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9083,7 +9157,7 @@ packages: eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.33.2(eslint@8.57.0) + eslint-plugin-react: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 @@ -9120,7 +9194,7 @@ packages: enhanced-resolve: 0.9.1 eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) find-root: 1.1.0 - hasown: 2.0.0 + hasown: 2.0.2 interpret: 1.4.0 is-core-module: 2.13.1 is-regex: 1.1.4 @@ -9194,7 +9268,7 @@ packages: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) - hasown: 2.0.0 + hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -9244,9 +9318,9 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.15 + es-iterator-helpers: 1.0.18 eslint: 8.57.0 - hasown: 2.0.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 @@ -9296,17 +9370,19 @@ packages: eslint: 8.57.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.57.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + /eslint-plugin-react@7.34.1(eslint@8.57.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.7 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 + es-iterator-helpers: 1.0.18 eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 @@ -10105,9 +10181,9 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true @@ -10165,13 +10241,15 @@ packages: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -10221,12 +10299,13 @@ packages: engines: {node: '>=16'} dev: true - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 dev: true /get-tsconfig@4.7.3: @@ -10485,7 +10564,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} @@ -10568,21 +10647,21 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -10652,8 +10731,8 @@ packages: type-fest: 0.8.1 dev: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -10719,7 +10798,7 @@ packages: resolution: {integrity: sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==} dependencies: array.prototype.filter: 1.0.3 - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /html-encoding-sniffer@4.0.0: @@ -11027,12 +11106,12 @@ packages: wrap-ansi: 6.2.0 dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 + es-errors: 1.3.0 + hasown: 2.0.2 side-channel: 1.0.4 dev: true @@ -11063,7 +11142,7 @@ packages: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: false /is-alphabetical@1.0.4: @@ -11081,16 +11160,16 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-arrayish@0.2.1: @@ -11104,7 +11183,7 @@ packages: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: @@ -11133,8 +11212,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-buffer@1.1.6: @@ -11168,20 +11247,27 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 /is-data-descriptor@1.0.1: resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: false + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-decimal@1.0.4: @@ -11232,7 +11318,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-fullwidth-code-point@3.0.0: @@ -11243,7 +11329,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@3.1.0: @@ -11281,8 +11367,8 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} dev: true @@ -11290,7 +11376,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@3.0.0: @@ -11347,18 +11433,19 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-ssh@1.4.0: @@ -11391,7 +11478,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-subset@0.1.1: @@ -11412,11 +11499,11 @@ packages: text-extensions: 1.9.0 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /is-typedarray@1.0.0: @@ -11435,14 +11522,14 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-windows@1.0.2: @@ -11609,7 +11696,7 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 @@ -13838,7 +13925,7 @@ packages: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 dev: true @@ -13861,7 +13948,7 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -13870,18 +13957,18 @@ packages: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /object.getownpropertydescriptors@2.1.7: @@ -13889,26 +13976,26 @@ packages: engines: {node: '>= 0.8'} dependencies: array.prototype.reduce: 1.0.6 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - safe-array-concat: 1.1.0 + es-abstract: 1.23.3 + safe-array-concat: 1.1.2 dev: true /object.groupby@1.0.1: resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 dev: true /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /object.pick@1.3.0: @@ -13922,9 +14009,9 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 dev: true /on-finished@2.3.0: @@ -14582,6 +14669,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -14740,10 +14832,10 @@ packages: engines: {node: '>= 0.4'} dependencies: array.prototype.map: 1.0.6 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 iterate-value: 1.0.2 dev: true @@ -15287,10 +15379,10 @@ packages: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true @@ -15328,12 +15420,13 @@ packages: safe-regex: 1.1.0 dev: false - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 + es-errors: 1.3.0 set-function-name: 2.0.1 dev: true @@ -15618,12 +15711,12 @@ packages: dependencies: tslib: 2.6.2 - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -15634,12 +15727,12 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex-test@1.0.2: - resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true @@ -15816,23 +15909,24 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true /set-value@2.0.1: @@ -15903,8 +15997,8 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 /signal-exit@3.0.7: @@ -16271,7 +16365,7 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.6 + internal-slot: 1.0.7 dev: true /stream-browserify@2.0.2: @@ -16366,40 +16460,42 @@ packages: /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 set-function-name: 2.0.1 side-channel: 1.0.4 dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true /string_decoder@0.10.31: @@ -17058,42 +17154,48 @@ packages: mime-types: 2.1.35 dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 dev: true /typedarray-to-buffer@3.1.5: @@ -17130,7 +17232,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -17375,8 +17477,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /utila@0.4.0: @@ -17717,7 +17819,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -17727,7 +17829,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /which-collection@1.0.1: @@ -17743,15 +17845,15 @@ packages: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /which@1.3.1: From 622cc12760e427cfd611ca3707e3489a1cd3ad8c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:47:38 +0300 Subject: [PATCH 186/912] Bump eslint-config-airbnb-typescript to ^18.0.0 (#12397) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 30297572ab6c..d43cd38a9942 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "enzyme": "^3.11.0", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-webpack": "^0.13.8", "eslint-plugin-filenames": "^1.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ccde31766c5..0165331a638e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -228,8 +228,8 @@ importers: specifier: ^19.0.4 version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0) eslint-config-airbnb-typescript: - specifier: ^17.1.0 - version: 17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + specifier: ^18.0.0 + version: 18.0.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -9128,19 +9128,19 @@ packages: semver: 6.3.1 dev: true - /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} + /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 - '@typescript-eslint/parser': ^5.0.0 || ^6.0.0 - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 + '@typescript-eslint/eslint-plugin': ^7.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 dependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + transitivePeerDependencies: + - eslint-plugin-import dev: true /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0): From c4a94b98a2222b19bfcab18d75841032b3364569 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:50:08 +0300 Subject: [PATCH 187/912] Bump @argos-ci/core to ^1.5.5 (#12470) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d43cd38a9942..72ff603101b6 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "clean:node_modules": "rimraf --glob \"**/node_modules\"" }, "devDependencies": { - "@argos-ci/core": "^1.5.4", + "@argos-ci/core": "^1.5.5", "@babel/cli": "^7.23.9", "@babel/core": "^7.24.0", "@babel/node": "^7.23.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0165331a638e..a935fa14cd6d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: .: devDependencies: '@argos-ci/core': - specifier: ^1.5.4 + specifier: ^1.5.5 version: 1.5.5 '@babel/cli': specifier: ^7.23.9 From cfb2061bfefd4f0843248c367866a15461d5b8be Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:53:22 +0300 Subject: [PATCH 188/912] Bump @emotion/styled to ^11.11.5 (#12933) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 120 ++++++++++++++++++++++++---------------------- 3 files changed, 65 insertions(+), 59 deletions(-) diff --git a/docs/package.json b/docs/package.json index 5b21fcb1180e..943dce82a1f0 100644 --- a/docs/package.json +++ b/docs/package.json @@ -26,7 +26,7 @@ "@emotion/cache": "^11.11.0", "@emotion/react": "^11.11.4", "@emotion/server": "^11.11.0", - "@emotion/styled": "^11.11.0", + "@emotion/styled": "^11.11.5", "@mui/base": "^5.0.0-beta.40", "@mui/icons-material": "^5.15.14", "@mui/joy": "^5.0.0-beta.32", diff --git a/package.json b/package.json index 72ff603101b6..5da4353d1caa 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@babel/types": "^7.24.0", "@emotion/cache": "^11.11.0", "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.0", + "@emotion/styled": "^11.11.5", "@mnajdova/enzyme-adapter-react-18": "^0.2.0", "@mui/icons-material": "^5.15.14", "@mui/internal-markdown": "^1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a935fa14cd6d..c7b7ac5e30d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,8 +78,8 @@ importers: specifier: ^11.11.4 version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@emotion/styled': - specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + specifier: ^11.11.5 + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mnajdova/enzyme-adapter-react-18': specifier: ^0.2.0 version: 0.2.0(enzyme@3.11.0)(react-dom@18.2.0)(react@18.2.0) @@ -91,7 +91,7 @@ importers: version: 1.0.3 '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/monorepo': specifier: github:mui/material-ui#afffc2ffc3db1e6abf48f3b3e13a41e8b758f874 version: github.com/mui/material-ui/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874 @@ -414,8 +414,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 '@emotion/styled': - specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + specifier: ^11.11.5 + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) @@ -424,19 +424,19 @@ importers: version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0) '@mui/joy': specifier: ^5.0.0-beta.32 - version: 5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/lab': specifier: ^5.0.0-alpha.169 - version: 5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.15)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: ^5.15.14 version: 5.15.15(@types/react@18.2.60)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -686,16 +686,16 @@ importers: version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -807,10 +807,10 @@ importers: version: 7.24.4 '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -832,7 +832,7 @@ importers: devDependencies: '@mui/joy': specifier: ^5.0.0-beta.24 - version: 5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/types': specifier: ^7.2.14 version: 7.2.14(@types/react@18.2.60) @@ -857,7 +857,7 @@ importers: version: 5.15.15(@mui/material@5.15.15)(@types/react@18.2.60)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid-premium': specifier: workspace:* version: link:../x-data-grid-premium/build @@ -892,10 +892,10 @@ importers: version: 7.24.4 '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -948,10 +948,10 @@ importers: version: 7.24.4 '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -998,16 +998,16 @@ importers: version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -1081,16 +1081,16 @@ importers: version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -1175,16 +1175,16 @@ importers: version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -1225,16 +1225,16 @@ importers: version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/system': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -1280,7 +1280,7 @@ importers: version: 11.11.4(@types/react@18.2.60)(react@18.2.0) '@mui/material': specifier: ^5.15.14 - version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid': specifier: workspace:* version: link:../packages/x-data-grid/build @@ -2880,7 +2880,7 @@ packages: '@babel/runtime': 7.24.4 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.3 + '@emotion/serialize': 1.1.4 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 @@ -2904,6 +2904,12 @@ packages: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 + dev: false + + /@emotion/is-prop-valid@1.2.2: + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + dependencies: + '@emotion/memoize': 0.8.1 /@emotion/memoize@0.8.1: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} @@ -2920,7 +2926,7 @@ packages: '@babel/runtime': 7.24.4 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.3 + '@emotion/serialize': 1.1.4 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 @@ -2928,8 +2934,8 @@ packages: hoist-non-react-statics: 3.3.2 react: 18.2.0 - /@emotion/serialize@1.1.3: - resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + /@emotion/serialize@1.1.4: + resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==} dependencies: '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 @@ -2954,8 +2960,8 @@ packages: /@emotion/sheet@1.2.2: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0): - resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + /@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0): + resolution: {integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' @@ -2966,9 +2972,9 @@ packages: dependencies: '@babel/runtime': 7.24.4 '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.1 + '@emotion/is-prop-valid': 1.2.2 '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) - '@emotion/serialize': 1.1.3 + '@emotion/serialize': 1.1.4 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@types/react': 18.2.60 @@ -3563,7 +3569,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 - '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.60 react: 18.2.0 @@ -3600,7 +3606,7 @@ packages: - supports-color dev: true - /@mui/joy@5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + /@mui/joy@5.0.0-beta.32(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-QJW5Mu2GTJUX4sXjxt4nQBugpJAiSkUT49S/bwoKCCWx8bCfsEyplTzZPK+FraweiGhGgZWExWOTAPpxH83RUQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3619,10 +3625,10 @@ packages: dependencies: '@babel/runtime': 7.24.4 '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.15.15 - '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 @@ -3631,7 +3637,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.15)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + /@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@mui/material@5.15.15)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-0bDVECGmrNjd3+bLdcLiwYZ0O4HP5j5WSQm5DV6iA/Z9kr8O6AnvZ1bv9ImQbbX7Gj3pX4o43EKwCutj3EQxQg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3651,10 +3657,10 @@ packages: dependencies: '@babel/runtime': 7.24.4 '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 @@ -3664,7 +3670,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@mui/material@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3683,10 +3689,10 @@ packages: dependencies: '@babel/runtime': 7.24.4 '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.15.15 - '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0) + '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 @@ -3715,7 +3721,7 @@ packages: prop-types: 15.8.1 react: 18.2.0 - /@mui/styled-engine@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0): + /@mui/styled-engine@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0): resolution: {integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3731,7 +3737,7 @@ packages: '@babel/runtime': 7.24.4 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 @@ -3767,7 +3773,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.60)(react@18.2.0): + /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react@18.2.0): resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3785,9 +3791,9 @@ packages: dependencies: '@babel/runtime': 7.24.4 '@emotion/react': 11.11.4(@types/react@18.2.60)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) + '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.60)(react@18.2.0) '@mui/private-theming': 5.15.14(@types/react@18.2.60)(react@18.2.0) - '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 From 3818e2760d510ca5d2883cc1439bb084ce1eee54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:53:47 +0300 Subject: [PATCH 189/912] Bump @types/chai to ^4.3.14 (#12934) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 4 ++-- test/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5da4353d1caa..f406c7b2c3a2 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@playwright/test": "1.43.1", "@testing-library/react": "^14.2.1", "@types/babel__core": "^7.20.5", - "@types/chai": "^4.3.12", + "@types/chai": "^4.3.14", "@types/chai-dom": "^1.11.3", "@types/enzyme": "3.10.12", "@types/fs-extra": "^11.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c7b7ac5e30d3..2e17aee439b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,7 +117,7 @@ importers: specifier: ^7.20.5 version: 7.20.5 '@types/chai': - specifier: ^4.3.12 + specifier: ^4.3.14 version: 4.3.14 '@types/chai-dom': specifier: ^1.11.3 @@ -1300,7 +1300,7 @@ importers: specifier: ^9.7.3 version: 9.7.3(react-dom@18.2.0)(react@18.2.0) '@types/chai': - specifier: ^4.3.12 + specifier: ^4.3.14 version: 4.3.14 '@types/prop-types': specifier: ^15.7.11 diff --git a/test/package.json b/test/package.json index c256ea8926a4..a873e46c72fb 100644 --- a/test/package.json +++ b/test/package.json @@ -16,7 +16,7 @@ "@mui/x-date-pickers-pro": "workspace:*", "@react-spring/web": "^9.7.3", "@playwright/test": "1.43.1", - "@types/chai": "^4.3.12", + "@types/chai": "^4.3.14", "@types/prop-types": "^15.7.11", "@types/react": "18.2.60", "chai": "^4.4.1", From 5d8ab52dbe05904e797ef067c5563227e5ae5aa1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:57:52 +0300 Subject: [PATCH 190/912] Bump @mui/internal-scripts to ^1.0.3 (#12471) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index 943dce82a1f0..6e2d68e336df 100644 --- a/docs/package.json +++ b/docs/package.json @@ -99,7 +99,7 @@ "@babel/plugin-transform-react-constant-elements": "^7.23.3", "@babel/preset-typescript": "^7.23.3", "@mui/internal-docs-utils": "^1.0.4", - "@mui/internal-scripts": "^1.0.1", + "@mui/internal-scripts": "^1.0.3", "@types/d3-scale": "^4.0.8", "@types/doctrine": "^0.0.9", "@types/lodash": "^4.14.202", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e17aee439b8..67a9d4b9010e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -628,7 +628,7 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@mui/internal-scripts': - specifier: ^1.0.1 + specifier: ^1.0.3 version: 1.0.3 '@types/d3-scale': specifier: ^4.0.8 From f2ffece76ad8d1664868cae573121e9da77da2fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:13:23 +0300 Subject: [PATCH 191/912] Bump recast to ^0.23.6 (#12391) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index 6e2d68e336df..b57ac06d7815 100644 --- a/docs/package.json +++ b/docs/package.json @@ -87,7 +87,7 @@ "react-router-dom": "^6.22.3", "react-runner": "^1.0.3", "react-simple-code-editor": "^0.13.1", - "recast": "^0.23.5", + "recast": "^0.23.6", "rimraf": "^5.0.5", "rxjs": "^7.8.1", "styled-components": "^6.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67a9d4b9010e..cbe10a5c4109 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -597,7 +597,7 @@ importers: specifier: ^0.13.1 version: 0.13.1(react-dom@18.2.0)(react@18.2.0) recast: - specifier: ^0.23.5 + specifier: ^0.23.6 version: 0.23.6 rimraf: specifier: ^5.0.5 From 059c643b6224de7bee46f8124cd934d2b37d7d0a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:23:39 +0300 Subject: [PATCH 192/912] Bump eslint-plugin-jsdoc to ^48.2.3 (#12389) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f406c7b2c3a2..2af321eb5329 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "eslint-import-resolver-webpack": "^0.13.8", "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.2.0", + "eslint-plugin-jsdoc": "^48.2.3", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-material-ui": "workspace:^", "eslint-plugin-mocha": "^10.4.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbe10a5c4109..ba3e06aa9ec7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -243,7 +243,7 @@ importers: specifier: ^2.29.1 version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsdoc: - specifier: ^48.2.0 + specifier: ^48.2.3 version: 48.2.3(eslint@8.57.0) eslint-plugin-jsx-a11y: specifier: ^6.8.0 From ad0c9bfbf2da0497beccbb99aaae0c78de205ef4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 17:31:12 +0300 Subject: [PATCH 193/912] Bump next to ^14.2.3 (#12390) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 87 +++++++++++++++++++++++++---------------------- 2 files changed, 47 insertions(+), 42 deletions(-) diff --git a/docs/package.json b/docs/package.json index b57ac06d7815..94a999391e0c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -72,7 +72,7 @@ "moment": "^2.30.1", "moment-hijri": "^2.1.2", "moment-timezone": "^0.5.45", - "next": "^14.1.1", + "next": "^14.2.3", "nprogress": "^0.2.0", "postcss": "^8.4.35", "prismjs": "^1.29.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba3e06aa9ec7..303cedb34404 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -552,8 +552,8 @@ importers: specifier: ^0.5.45 version: 0.5.45 next: - specifier: ^14.1.1 - version: 14.1.4(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.2.3 + version: 14.2.3(@babel/core@7.24.4)(@playwright/test@1.43.1)(react-dom@18.2.0)(react@18.2.0) nprogress: specifier: ^0.2.0 version: 0.2.0 @@ -3849,8 +3849,8 @@ packages: urlpattern-polyfill: 8.0.2 dev: true - /@next/env@14.1.4: - resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} + /@next/env@14.2.3: + resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} dev: false /@next/eslint-plugin-next@14.2.3: @@ -3859,8 +3859,8 @@ packages: glob: 10.3.10 dev: true - /@next/swc-darwin-arm64@14.1.4: - resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} + /@next/swc-darwin-arm64@14.2.3: + resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3868,8 +3868,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.4: - resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} + /@next/swc-darwin-x64@14.2.3: + resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3877,8 +3877,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.4: - resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} + /@next/swc-linux-arm64-gnu@14.2.3: + resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3886,8 +3886,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.4: - resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} + /@next/swc-linux-arm64-musl@14.2.3: + resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3895,8 +3895,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.4: - resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} + /@next/swc-linux-x64-gnu@14.2.3: + resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3904,8 +3904,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.4: - resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} + /@next/swc-linux-x64-musl@14.2.3: + resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3913,8 +3913,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.4: - resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} + /@next/swc-win32-arm64-msvc@14.2.3: + resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3922,8 +3922,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.4: - resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} + /@next/swc-win32-ia32-msvc@14.2.3: + resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -3931,8 +3931,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.4: - resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} + /@next/swc-win32-x64-msvc@14.2.3: + resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4559,7 +4559,6 @@ packages: hasBin: true dependencies: playwright: 1.43.1 - dev: true /@polka/url@1.0.0-next.24: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} @@ -4846,9 +4845,14 @@ packages: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: + '@swc/counter': 0.1.3 tslib: 2.6.2 dev: false @@ -10160,7 +10164,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /fsevents@2.3.3: @@ -13408,23 +13411,27 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /next@14.1.4(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} + /next@14.2.3(@babel/core@7.24.4)(@playwright/test@1.43.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true sass: optional: true dependencies: - '@next/env': 14.1.4 - '@swc/helpers': 0.5.2 + '@next/env': 14.2.3 + '@playwright/test': 1.43.1 + '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001606 graceful-fs: 4.2.11 @@ -13433,15 +13440,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.4 - '@next/swc-darwin-x64': 14.1.4 - '@next/swc-linux-arm64-gnu': 14.1.4 - '@next/swc-linux-arm64-musl': 14.1.4 - '@next/swc-linux-x64-gnu': 14.1.4 - '@next/swc-linux-x64-musl': 14.1.4 - '@next/swc-win32-arm64-msvc': 14.1.4 - '@next/swc-win32-ia32-msvc': 14.1.4 - '@next/swc-win32-x64-msvc': 14.1.4 + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -14652,7 +14659,6 @@ packages: resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} engines: {node: '>=16'} hasBin: true - dev: true /playwright@1.43.1: resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} @@ -14662,7 +14668,6 @@ packages: playwright-core: 1.43.1 optionalDependencies: fsevents: 2.3.2 - dev: true /please-upgrade-node@3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} From 71896bd21d03bc8ac475031652de1342add4513f Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 1 May 2024 10:33:25 +0300 Subject: [PATCH 194/912] [core] Fix depedencies (#12951) --- package.json | 4 +- .../eslint-plugin-material-ui/package.json | 2 +- .../src/rules/no-direct-state-access.js | 2 +- .../src/rules/no-direct-state-access.test.js | 2 +- pnpm-lock.yaml | 103 ++---------------- test/package.json | 4 +- 6 files changed, 14 insertions(+), 103 deletions(-) diff --git a/package.json b/package.json index 2af321eb5329..adc66a6c8214 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@next/eslint-plugin-next": "14.2.3", "@octokit/plugin-retry": "^6.0.1", "@octokit/rest": "^20.0.2", - "@playwright/test": "1.43.1", + "@playwright/test": "^1.43.1", "@testing-library/react": "^14.2.1", "@types/babel__core": "^7.20.5", "@types/chai": "^4.3.14", @@ -164,7 +164,7 @@ "lerna": "^8.1.2", "lodash": "^4.17.21", "markdownlint-cli2": "^0.12.1", - "mocha": "^10.3.0", + "mocha": "^10.4.0", "moment": "^2.30.1", "moment-timezone": "^0.5.44", "nyc": "^15.1.0", diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index 87cdbf6ee1ce..1d0824e8c637 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -6,7 +6,7 @@ "main": "src/index.js", "devDependencies": { "@types/eslint": "^8.56.5", - "@typescript-eslint/experimental-utils": "^5.62.0", + "@typescript-eslint/utils": "^6.21.0", "@typescript-eslint/parser": "^6.21.0" }, "scripts": { diff --git a/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.js b/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.js index 6b67202bee09..32d35ca8867e 100644 --- a/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.js +++ b/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.js @@ -1,4 +1,4 @@ -const { ESLintUtils, AST_NODE_TYPES } = require('@typescript-eslint/experimental-utils'); +const { ESLintUtils, AST_NODE_TYPES } = require('@typescript-eslint/utils'); const createESLintRule = ESLintUtils.RuleCreator(() => ``); diff --git a/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.test.js b/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.test.js index f0cb4654f903..bf7ae7143c53 100644 --- a/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.test.js +++ b/packages/eslint-plugin-material-ui/src/rules/no-direct-state-access.test.js @@ -7,7 +7,7 @@ const originalDocument = global.document; global.document = undefined; const path = require('path'); -const { TSESLint } = require('@typescript-eslint/experimental-utils'); +const { TSESLint } = require('@typescript-eslint/utils'); const rule = require('./no-direct-state-access'); const ruleTester = new TSESLint.RuleTester({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 303cedb34404..b39c13c3dd5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,7 +108,7 @@ importers: specifier: ^20.0.2 version: 20.0.2 '@playwright/test': - specifier: 1.43.1 + specifier: ^1.43.1 version: 1.43.1 '@testing-library/react': specifier: ^14.2.1 @@ -321,7 +321,7 @@ importers: specifier: ^0.12.1 version: 0.12.1 mocha: - specifier: ^10.3.0 + specifier: ^10.4.0 version: 10.4.0 moment: specifier: ^2.30.1 @@ -669,12 +669,12 @@ importers: '@types/eslint': specifier: ^8.56.5 version: 8.56.7 - '@typescript-eslint/experimental-utils': - specifier: ^5.62.0 - version: 5.62.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^6.21.0 version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) packages/x-charts: dependencies: @@ -1294,7 +1294,7 @@ importers: specifier: workspace:* version: link:../packages/x-date-pickers-pro/build '@playwright/test': - specifier: 1.43.1 + specifier: ^1.43.1 version: 1.43.1 '@react-spring/web': specifier: ^9.7.3 @@ -1306,7 +1306,7 @@ importers: specifier: ^15.7.11 version: 15.7.11 '@types/react': - specifier: 18.2.60 + specifier: ^18.2.60 version: 18.2.60 chai: specifier: ^4.4.1 @@ -5397,19 +5397,6 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -5431,14 +5418,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - /@typescript-eslint/scope-manager@6.21.0: resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -5467,37 +5446,11 @@ packages: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@6.21.0: resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -5520,26 +5473,6 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - eslint: 8.57.0 - eslint-scope: 5.1.1 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -5559,14 +5492,6 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.21.0: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} @@ -17034,10 +16959,6 @@ packages: strip-bom: 3.0.0 dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false @@ -17050,16 +16971,6 @@ packages: engines: {node: '>=0.6.x'} dev: true - /tsutils@3.21.0(typescript@5.4.5): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.4.5 - dev: true - /tsx@4.7.3: resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} engines: {node: '>=18.0.0'} diff --git a/test/package.json b/test/package.json index a873e46c72fb..f2376ef54e34 100644 --- a/test/package.json +++ b/test/package.json @@ -15,10 +15,10 @@ "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", "@react-spring/web": "^9.7.3", - "@playwright/test": "1.43.1", + "@playwright/test": "^1.43.1", "@types/chai": "^4.3.14", "@types/prop-types": "^15.7.11", - "@types/react": "18.2.60", + "@types/react": "^18.2.60", "chai": "^4.4.1", "dayjs": "^1.11.10", "prop-types": "^15.8.1", From c9c7fadce3b7bbbd614f6baf887fa48edacd1a22 Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 1 May 2024 10:34:02 +0300 Subject: [PATCH 195/912] [test] Restore `t` command (#12948) --- package.json | 4 ++-- scripts/test.mjs | 39 +++++++++++++++++++++++++++++++++++++++ test/cli.js | 1 + 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 scripts/test.mjs diff --git a/package.json b/package.json index adc66a6c8214..05ecbe7a35fa 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ "proptypes": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./docs/scripts/generateProptypes.ts", "size:snapshot": "node --max-old-space-size=2048 ./scripts/sizeSnapshot/create", "size:why": "pnpm size:snapshot --analyze --accurateBundles", - "t": "TZ=UTC node test/cli.js", - "test": "lerna run test --parallel", + "tc": "node test/cli.js", + "test": "node scripts/test.mjs", "test:coverage": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc mocha --exclude '**/node_modules/**' && nyc report -r lcovonly", "test:coverage:html": "cross-env NODE_ENV=test BABEL_ENV=coverage nyc mocha --exclude '**/node_modules/**' && nyc report --reporter=html", "test:karma": "cross-env NODE_ENV=test TZ=UTC karma start test/karma.conf.js", diff --git a/scripts/test.mjs b/scripts/test.mjs new file mode 100644 index 000000000000..d2a4b5485de6 --- /dev/null +++ b/scripts/test.mjs @@ -0,0 +1,39 @@ +/* eslint-disable no-console */ +import { spawn } from 'node:child_process'; + +/* +This script ensures that we can use the same commands to run tests +when using pnpm as when using Yarn. +It enables to run `pnpm test` (or `pnpm t`) without any arguments, to run all tests, +or `pnpm test ` (or `pnpm t `) to run a subset of tests in watch mode. + +See https://github.com/mui/mui-x/pull/12948 for more context. +*/ + +if (process.argv.length < 3) { + console.log('Running unit tests...'); + spawn('pnpm', ['test:unit'], { + shell: true, + stdio: ['inherit', 'inherit', 'inherit'], + env: { + ...process.env, + TZ: 'UTC', + }, + }); +} else { + console.log('Running selected tests in watch mode...'); + console.warn( + 'Note: run `pnpm tc` to have a better experience (and be able to pass in additional parameters).', + ); + + console.log('cmd', ['tc', ...process.argv.slice(2)]); + + spawn('pnpm', ['tc', ...process.argv.slice(2)], { + shell: true, + stdio: ['inherit', 'inherit', 'inherit'], + env: { + ...process.env, + TZ: 'UTC', + }, + }); +} diff --git a/test/cli.js b/test/cli.js index 20e8527904ef..509892a5809c 100644 --- a/test/cli.js +++ b/test/cli.js @@ -58,6 +58,7 @@ async function run(argv) { ...process.env, BABEL_ENV: 'test', NODE_ENV: argv.production ? 'production' : 'test', + TZ: 'UTC', }, shell: true, stdio: ['inherit', 'inherit', 'inherit'], From cbba3c12b23a9c1aa63d6ef1cc93346a31d863d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 11:02:37 +0300 Subject: [PATCH 196/912] Bump typescript-eslint to ^7.8.0 (major) (#12116) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 +- .../eslint-plugin-material-ui/package.json | 4 +- pnpm-lock.yaml | 199 +++++++++--------- 3 files changed, 107 insertions(+), 100 deletions(-) diff --git a/package.json b/package.json index 05ecbe7a35fa..fa47aa0afa02 100644 --- a/package.json +++ b/package.json @@ -110,8 +110,8 @@ "@types/requestidlecallback": "^0.3.7", "@types/sinon": "^10.0.20", "@types/yargs": "^17.0.32", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.8.0", + "@typescript-eslint/parser": "^7.8.0", "autoprefixer": "^10.4.18", "axe-core": "4.8.4", "babel-loader": "^9.1.3", diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index 1d0824e8c637..cf8737248c0a 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -6,8 +6,8 @@ "main": "src/index.js", "devDependencies": { "@types/eslint": "^8.56.5", - "@typescript-eslint/utils": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0" + "@typescript-eslint/utils": "^7.8.0", + "@typescript-eslint/parser": "^7.8.0" }, "scripts": { "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/eslint-plugin-material-ui/**/*.test.js' --timeout 3000" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b39c13c3dd5c..bf9b4eea406d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,11 +159,11 @@ importers: specifier: ^17.0.32 version: 17.0.32 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.8.0 + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.8.0 + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) autoprefixer: specifier: ^10.4.18 version: 10.4.19(postcss@8.4.38) @@ -229,7 +229,7 @@ importers: version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.8.0)(@typescript-eslint/parser@7.8.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -241,7 +241,7 @@ importers: version: 1.3.2(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsdoc: specifier: ^48.2.3 version: 48.2.3(eslint@8.57.0) @@ -670,11 +670,11 @@ importers: specifier: ^8.56.5 version: 8.56.7 '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.8.0 + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.8.0 + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) packages/x-charts: dependencies: @@ -3239,7 +3239,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4094,7 +4094,7 @@ packages: '@nrwl/devkit': 17.3.0(nx@17.3.0) ejs: 3.1.9 enquirer: 2.3.6 - ignore: 5.3.0 + ignore: 5.3.1 nx: 17.3.0 semver: 7.5.3 tmp: 0.2.1 @@ -4911,7 +4911,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.3 + minimatch: 9.0.4 dev: true /@tufjs/models@2.0.0: @@ -4919,7 +4919,7 @@ packages: engines: {node: ^16.14.0 || >=18.0.0} dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.3 + minimatch: 9.0.4 dev: true /@types/aria-query@5.0.4: @@ -5294,8 +5294,8 @@ packages: /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true /@types/send@0.17.4: @@ -5368,49 +5368,49 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.0.3(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 typescript: 5.4.5 @@ -5418,73 +5418,73 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.8.0: + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 dev: true - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 - ts-api-utils: 1.0.3(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.8.0: + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5): + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.0.3(typescript@5.4.5) + ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -5492,11 +5492,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.8.0: + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 dev: true @@ -9057,21 +9057,21 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 semver: 6.3.1 dev: true - /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@6.21.0)(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.8.0)(@typescript-eslint/parser@7.8.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} peerDependencies: '@typescript-eslint/eslint-plugin': ^7.0.0 '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: @@ -9090,7 +9090,7 @@ packages: dependencies: eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) @@ -9127,7 +9127,7 @@ packages: array.prototype.find: 2.2.2 debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -9141,7 +9141,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -9162,7 +9162,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -9183,7 +9183,7 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -9193,7 +9193,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -9202,7 +9202,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -9405,7 +9405,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -10317,7 +10317,7 @@ packages: engines: {node: '>= 6'} dependencies: glob: 7.2.3 - ignore: 5.3.0 + ignore: 5.3.1 lodash.difference: 4.5.0 lodash.union: 4.6.0 make-array: 1.0.5 @@ -10356,7 +10356,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.1 @@ -10425,7 +10425,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -10436,7 +10436,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 dev: true @@ -10447,7 +10447,7 @@ packages: dependencies: '@sindresorhus/merge-streams': 1.0.0 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 @@ -10944,11 +10944,11 @@ packages: resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minimatch: 9.0.3 + minimatch: 9.0.4 dev: true - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true @@ -12063,7 +12063,7 @@ packages: webpack: ^5.0.0 dependencies: glob: 7.2.3 - minimatch: 9.0.3 + minimatch: 9.0.4 webpack: 5.91.0(webpack-cli@5.1.4) webpack-merge: 4.2.2 dev: true @@ -13019,6 +13019,13 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -13769,7 +13776,7 @@ packages: figures: 3.2.0 flat: 5.0.2 fs-extra: 11.2.0 - ignore: 5.3.0 + ignore: 5.3.1 jest-diff: 29.7.0 js-yaml: 4.1.0 jsonc-parser: 3.2.0 @@ -14706,7 +14713,7 @@ packages: dependencies: execa: 5.1.1 find-up: 5.0.0 - ignore: 5.3.0 + ignore: 5.3.1 mri: 1.2.0 picocolors: 1.0.0 picomatch: 3.0.1 @@ -16928,9 +16935,9 @@ packages: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: true - /ts-api-utils@1.0.3(typescript@5.4.5): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: From 30b410cc71082b31f94e0f8fe93c7b5281699daa Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 1 May 2024 12:20:03 +0300 Subject: [PATCH 197/912] [code-infra] Bump node image used by CI in docker (#12961) --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 272d900fdd54..db7b6d12f160 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,7 +36,7 @@ default-job: &default-job REACT_DIST_TAG: << parameters.react-dist-tag >> working_directory: /tmp/mui docker: - - image: cimg/node:18.19 + - image: cimg/node:18.20 # CircleCI has disabled the cache across forks for security reasons. # Following their official statement, it was a quick solution, they # are working on providing this feature back with appropriate security measures. From 8e24d71ecfa96f84eb1027324cc50366d726c1bf Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 1 May 2024 12:24:27 +0300 Subject: [PATCH 198/912] Bump `markdownlint-cli2` and `globby` (#12962) --- package.json | 4 +-- pnpm-lock.yaml | 71 +++++++++++++++++++++++++------------------------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index fa47aa0afa02..0a18c0806883 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "format-util": "^1.0.5", "fs-extra": "^11.2.0", "glob-gitignore": "^1.0.14", - "globby": "^14.0.0", + "globby": "^14.0.1", "html-webpack-plugin": "^5.6.0", "jsdom": "23.1.0", "jss": "^10.10.0", @@ -163,7 +163,7 @@ "karma-webpack": "^5.0.1", "lerna": "^8.1.2", "lodash": "^4.17.21", - "markdownlint-cli2": "^0.12.1", + "markdownlint-cli2": "^0.13.0", "mocha": "^10.4.0", "moment": "^2.30.1", "moment-timezone": "^0.5.44", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf9b4eea406d..68b2d9682cb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -276,8 +276,8 @@ importers: specifier: ^1.0.14 version: 1.0.14 globby: - specifier: ^14.0.0 - version: 14.0.0 + specifier: ^14.0.1 + version: 14.0.1 html-webpack-plugin: specifier: ^5.6.0 version: 5.6.0(webpack@5.91.0) @@ -318,8 +318,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 markdownlint-cli2: - specifier: ^0.12.1 - version: 0.12.1 + specifier: ^0.13.0 + version: 0.13.0 mocha: specifier: ^10.4.0 version: 10.4.0 @@ -4702,8 +4702,8 @@ packages: engines: {node: '>=10'} dev: true - /@sindresorhus/merge-streams@1.0.0: - resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} dev: true @@ -10441,11 +10441,11 @@ packages: slash: 4.0.0 dev: true - /globby@14.0.0: - resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + /globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} dependencies: - '@sindresorhus/merge-streams': 1.0.0 + '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 ignore: 5.3.1 path-type: 5.0.0 @@ -11850,6 +11850,10 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -12297,7 +12301,7 @@ packages: /linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} dependencies: - uc.micro: 2.0.0 + uc.micro: 2.1.0 dev: true /listenercount@1.0.1: @@ -12695,8 +12699,8 @@ packages: object-visit: 1.0.1 dev: false - /markdown-it@14.0.0: - resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} + /markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true dependencies: argparse: 2.0.1 @@ -12704,7 +12708,7 @@ packages: linkify-it: 5.0.0 mdurl: 2.0.0 punycode.js: 2.3.1 - uc.micro: 2.0.0 + uc.micro: 2.1.0 dev: true /markdown-to-jsx@7.4.1(react@18.2.0): @@ -12716,38 +12720,38 @@ packages: react: 18.2.0 dev: false - /markdownlint-cli2-formatter-default@0.0.4(markdownlint-cli2@0.12.1): + /markdownlint-cli2-formatter-default@0.0.4(markdownlint-cli2@0.13.0): resolution: {integrity: sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==} peerDependencies: markdownlint-cli2: '>=0.0.4' dependencies: - markdownlint-cli2: 0.12.1 + markdownlint-cli2: 0.13.0 dev: true - /markdownlint-cli2@0.12.1: - resolution: {integrity: sha512-RcK+l5FjJEyrU3REhrThiEUXNK89dLYNJCYbvOUKypxqIGfkcgpz8g08EKqhrmUbYfYoLC5nEYQy53NhJSEtfQ==} + /markdownlint-cli2@0.13.0: + resolution: {integrity: sha512-Pg4nF7HlopU97ZXtrcVISWp3bdsuc5M0zXyLp2/sJv2zEMlInrau0ZKK482fQURzVezJzWBpNmu4u6vGAhij+g==} engines: {node: '>=18'} hasBin: true dependencies: - globby: 14.0.0 - jsonc-parser: 3.2.0 - markdownlint: 0.33.0 - markdownlint-cli2-formatter-default: 0.0.4(markdownlint-cli2@0.12.1) + globby: 14.0.1 + js-yaml: 4.1.0 + jsonc-parser: 3.2.1 + markdownlint: 0.34.0 + markdownlint-cli2-formatter-default: 0.0.4(markdownlint-cli2@0.13.0) micromatch: 4.0.5 - yaml: 2.3.4 dev: true - /markdownlint-micromark@0.1.8: - resolution: {integrity: sha512-1ouYkMRo9/6gou9gObuMDnvZM8jC/ly3QCFQyoSPCS2XV1ZClU0xpKbL1Ar3bWWRT1RnBZkWUEiNKrI2CwiBQA==} - engines: {node: '>=16'} + /markdownlint-micromark@0.1.9: + resolution: {integrity: sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==} + engines: {node: '>=18'} dev: true - /markdownlint@0.33.0: - resolution: {integrity: sha512-4lbtT14A3m0LPX1WS/3d1m7Blg+ZwiLq36WvjQqFGsX3Gik99NV+VXp/PW3n+Q62xyPdbvGOCfjPqjW+/SKMig==} + /markdownlint@0.34.0: + resolution: {integrity: sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==} engines: {node: '>=18'} dependencies: - markdown-it: 14.0.0 - markdownlint-micromark: 0.1.8 + markdown-it: 14.1.0 + markdownlint-micromark: 0.1.9 dev: true /marked@5.1.2: @@ -17146,8 +17150,8 @@ packages: resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} dev: true - /uc.micro@2.0.0: - resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} dev: true /uglify-js@3.17.4: @@ -17997,11 +18001,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} - dev: true - /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} From ddf9fccdf3b9b1bae0b66a7f122486e464aa6e82 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Wed, 1 May 2024 15:29:11 +0200 Subject: [PATCH 199/912] [docs] Polish refernces to the plans (#12922) --- CHANGELOG.md | 10 +- .../getting-started/getting-started.md | 106 +++++++++--------- docsTech/processing.md | 2 +- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fefa8208a159..283f586a4c64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -305,7 +305,7 @@ Same changes as in `@mui/x-date-pickers@7.1.1`, plus: - [TreeView] Add JSDoc to all `publicAPI` methods (#12649) @flaviendelangle - [TreeView] Create `RichTreeViewPro` component (not released yet) (#12610) @flaviendelangle -- [TreeView] Create pro package (not released yet) (#12240) @flaviendelangle +- [TreeView] Create Pro package (not released yet) (#12240) @flaviendelangle - [TreeView] Fix typo in errors (#12623) @alissa-tung - [TreeView] New API method: `setItemExpansion` (#12595) @flaviendelangle @@ -2517,7 +2517,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.3`. - [core] Make `@mui/system` a direct dependency (#11128) @LukasTy - [core] Remove blank lines, coding style @oliviertassinari - [core] Remove outdated `ENABLE_AD` env variable (#11181) @oliviertassinari -- [github] Do not add `plan: Pro` and `plan: Premium` labels on pro / premium issue templates (#10183) @flaviendelangle +- [github] Do not add `plan: Pro` and `plan: Premium` labels on Pro / Premium issue templates (#10183) @flaviendelangle ## 7.0.0-alpha.2 @@ -3440,10 +3440,10 @@ Same changes as in `@mui/x-date-pickers@6.19.5`. - [docs] Fix the Treemap illustration (#12189) @danilo-leal - [docs] Fix typo for `AdapterDateFnsV3` (#12037) @flaviendelangle - [docs] Improve performance on Charts entry point @oliviertassinari -- [docs] Move Heatmap to pro (#12170) @alexfauquette +- [docs] Move Heatmap to Pro (#12170) @alexfauquette - [docs] Remove Charts installation next tag call-out (#12133) @LukasTy - [docs] Removed `focused` prop from demo (#12126) @michelengelen -- [docs] Add missing Heatmap pro icon @oliviertassinari +- [docs] Add missing Heatmap Pro icon @oliviertassinari - [docs] Add more illustrations to the Overview page (#12041) @danilo-leal - [docs] Avoid use of shorthand (#12009) @oliviertassinari @@ -6170,7 +6170,7 @@ We'd like to offer a big thanks to the 11 contributors who made this release pos - [docs] Create examples of pickers with custom fields (#8034) @flaviendelangle - [docs] Fix 301 redirections @oliviertassinari - [docs] Fix link to React's docs @oliviertassinari -- [docs] Fix pro license links to point to the same page (#8303) @LukasTy +- [docs] Fix Pro license links to point to the same page (#8303) @LukasTy - [docs] Give an incentive to upgrade (#8269) @oliviertassinari - [docs] Improve contrast on data grid navigation (#8239) @oliviertassinari - [docs] Update shortcuts page to use slotProps (#8288) @dcorb diff --git a/docs/data/data-grid/getting-started/getting-started.md b/docs/data/data-grid/getting-started/getting-started.md index 77c6e7def9b3..84dae9faae03 100644 --- a/docs/data/data-grid/getting-started/getting-started.md +++ b/docs/data/data-grid/getting-started/getting-started.md @@ -176,59 +176,59 @@ The following table summarizes the features available in the community `DataGrid All the features of the community version are available in the enterprise one. The enterprise components come in two plans: Pro and Premium. -| Features | Community | Pro | Premium | -| :------------------------------------------------------------------------------------- | :-------: | :--------------------------------: | :----------------------------------------: | -| **Column** | | | | -| [Column groups](/x/react-data-grid/column-groups/) | ✅ | ✅ | ✅ | -| [Column spanning](/x/react-data-grid/column-spanning/) | ✅ | ✅ | ✅ | -| [Column resizing](/x/react-data-grid/column-dimensions/#resizing) | ✅ | ✅ | ✅ | -| [Column autosizing](/x/react-data-grid/column-dimensions/#autosizing) | ✅ | ✅ | ✅ | -| [Column reorder](/x/react-data-grid/column-ordering/) | ❌ | ✅ | ✅ | -| [Column pinning](/x/react-data-grid/column-pinning/) | ❌ | ✅ | ✅ | -| **Row** | | | | -| [Row height](/x/react-data-grid/row-height/) | ✅ | ✅ | ✅ | -| [Row spanning](/x/react-data-grid/row-spanning/) | 🚧 | 🚧 | 🚧 | -| [Row reordering](/x/react-data-grid/row-ordering/) | ❌ | ✅ | ✅ | -| [Row pinning](/x/react-data-grid/row-pinning/) | ❌ | ✅ | ✅ | -| **Selection** | | | | -| [Single row selection](/x/react-data-grid/row-selection/#single-row-selection) | ✅ | ✅ | ✅ | -| [Checkbox selection](/x/react-data-grid/row-selection/#checkbox-selection) | ✅ | ✅ | ✅ | -| [Multiple row selection](/x/react-data-grid/row-selection/#multiple-row-selection) | ❌ | ✅ | ✅ | -| [Cell range selection](/x/react-data-grid/cell-selection/) | ❌ | ❌ | ✅ | -| **Filtering** | | | | -| [Quick filter](/x/react-data-grid/filtering/quick-filter/) | ✅ | ✅ | ✅ | -| [Column filters](/x/react-data-grid/filtering/#single-and-multi-filters) | ✅ | ✅ | ✅ | -| [Multi-column filtering](/x/react-data-grid/filtering/multi-filters/) | ❌ | ✅ | ✅ | -| [Header filtering](/x/react-data-grid/filtering/header-filters/) | ❌ | ✅ | ✅ | -| **Sorting** | | | | -| [Column sorting](/x/react-data-grid/sorting/) | ✅ | ✅ | ✅ | -| [Multi-column sorting](/x/react-data-grid/sorting/#multi-sorting) | ❌ | ✅ | ✅ | -| **Pagination** | | | | -| [Pagination](/x/react-data-grid/pagination/) | ✅ | ✅ | ✅ | -| [Pagination > 100 rows per page](/x/react-data-grid/pagination/#size-of-the-page) | ❌ | ✅ | ✅ | -| **Editing** | | | | -| [Row editing](/x/react-data-grid/editing/#row-editing) | ✅ | ✅ | ✅ | -| [Cell editing](/x/react-data-grid/editing/) | ✅ | ✅ | ✅ | -| **Import & export** | | | | -| [CSV export](/x/react-data-grid/export/#csv-export) | ✅ | ✅ | ✅ | -| [Print](/x/react-data-grid/export/#print-export) | ✅ | ✅ | ✅ | -| [Clipboard copy](/x/react-data-grid/clipboard/#clipboard-copy) | ✅ | ✅ | ✅ | -| [Clipboard paste](/x/react-data-grid/clipboard/#clipboard-paste) | ❌ | ❌ | ✅ | -| [Excel export](/x/react-data-grid/export/#excel-export) | ❌ | ❌ | ✅ | -| **Rendering** | | | | -| [Customizable components](/x/react-data-grid/components/) | ✅ | ✅ | ✅ | -| [Column virtualization](/x/react-data-grid/virtualization/#column-virtualization) | ✅ | ✅ | ✅ | -| [Row virtualization > 100 rows](/x/react-data-grid/virtualization/#row-virtualization) | ❌ | ✅ | ✅ | -| **Group & Pivot** | | | | -| [Tree data](/x/react-data-grid/tree-data/) | ❌ | ✅ | ✅ | -| [Master detail](/x/react-data-grid/master-detail/) | ❌ | ✅ | ✅ | -| [Row grouping](/x/react-data-grid/row-grouping/) | ❌ | ❌ | ✅ | -| [Aggregation](/x/react-data-grid/aggregation/) | ❌ | ❌ | ✅ | -| [Pivoting](/x/react-data-grid/pivoting/) | ❌ | ❌ | 🚧 | -| **Misc** | | | | -| [Accessibility](/x/react-data-grid/accessibility/) | ✅ | ✅ | ✅ | -| [Keyboard navigation](/x/react-data-grid/accessibility/#keyboard-navigation) | ✅ | ✅ | ✅ | -| [Localization](/x/react-data-grid/localization/) | ✅ | ✅ | ✅ | +| Features | Community | Pro [](/x/introduction/licensing/#pro-plan 'Pro plan') | Premium [](/x/introduction/licensing/#premium-plan 'Premium plan') | +| :------------------------------------------------------------------------------------- | :-------: | :----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------: | +| **Column** | | | | +| [Column groups](/x/react-data-grid/column-groups/) | ✅ | ✅ | ✅ | +| [Column spanning](/x/react-data-grid/column-spanning/) | ✅ | ✅ | ✅ | +| [Column resizing](/x/react-data-grid/column-dimensions/#resizing) | ✅ | ✅ | ✅ | +| [Column autosizing](/x/react-data-grid/column-dimensions/#autosizing) | ✅ | ✅ | ✅ | +| [Column reorder](/x/react-data-grid/column-ordering/) | ❌ | ✅ | ✅ | +| [Column pinning](/x/react-data-grid/column-pinning/) | ❌ | ✅ | ✅ | +| **Row** | | | | +| [Row height](/x/react-data-grid/row-height/) | ✅ | ✅ | ✅ | +| [Row spanning](/x/react-data-grid/row-spanning/) | 🚧 | 🚧 | 🚧 | +| [Row reordering](/x/react-data-grid/row-ordering/) | ❌ | ✅ | ✅ | +| [Row pinning](/x/react-data-grid/row-pinning/) | ❌ | ✅ | ✅ | +| **Selection** | | | | +| [Single row selection](/x/react-data-grid/row-selection/#single-row-selection) | ✅ | ✅ | ✅ | +| [Checkbox selection](/x/react-data-grid/row-selection/#checkbox-selection) | ✅ | ✅ | ✅ | +| [Multiple row selection](/x/react-data-grid/row-selection/#multiple-row-selection) | ❌ | ✅ | ✅ | +| [Cell range selection](/x/react-data-grid/cell-selection/) | ❌ | ❌ | ✅ | +| **Filtering** | | | | +| [Quick filter](/x/react-data-grid/filtering/quick-filter/) | ✅ | ✅ | ✅ | +| [Column filters](/x/react-data-grid/filtering/#single-and-multi-filters) | ✅ | ✅ | ✅ | +| [Multi-column filtering](/x/react-data-grid/filtering/multi-filters/) | ❌ | ✅ | ✅ | +| [Header filtering](/x/react-data-grid/filtering/header-filters/) | ❌ | ✅ | ✅ | +| **Sorting** | | | | +| [Column sorting](/x/react-data-grid/sorting/) | ✅ | ✅ | ✅ | +| [Multi-column sorting](/x/react-data-grid/sorting/#multi-sorting) | ❌ | ✅ | ✅ | +| **Pagination** | | | | +| [Pagination](/x/react-data-grid/pagination/) | ✅ | ✅ | ✅ | +| [Pagination > 100 rows per page](/x/react-data-grid/pagination/#size-of-the-page) | ❌ | ✅ | ✅ | +| **Editing** | | | | +| [Row editing](/x/react-data-grid/editing/#row-editing) | ✅ | ✅ | ✅ | +| [Cell editing](/x/react-data-grid/editing/) | ✅ | ✅ | ✅ | +| **Import & export** | | | | +| [CSV export](/x/react-data-grid/export/#csv-export) | ✅ | ✅ | ✅ | +| [Print](/x/react-data-grid/export/#print-export) | ✅ | ✅ | ✅ | +| [Clipboard copy](/x/react-data-grid/clipboard/#clipboard-copy) | ✅ | ✅ | ✅ | +| [Clipboard paste](/x/react-data-grid/clipboard/#clipboard-paste) | ❌ | ❌ | ✅ | +| [Excel export](/x/react-data-grid/export/#excel-export) | ❌ | ❌ | ✅ | +| **Rendering** | | | | +| [Customizable components](/x/react-data-grid/components/) | ✅ | ✅ | ✅ | +| [Column virtualization](/x/react-data-grid/virtualization/#column-virtualization) | ✅ | ✅ | ✅ | +| [Row virtualization > 100 rows](/x/react-data-grid/virtualization/#row-virtualization) | ❌ | ✅ | ✅ | +| **Group & Pivot** | | | | +| [Tree data](/x/react-data-grid/tree-data/) | ❌ | ✅ | ✅ | +| [Master detail](/x/react-data-grid/master-detail/) | ❌ | ✅ | ✅ | +| [Row grouping](/x/react-data-grid/row-grouping/) | ❌ | ❌ | ✅ | +| [Aggregation](/x/react-data-grid/aggregation/) | ❌ | ❌ | ✅ | +| [Pivoting](/x/react-data-grid/pivoting/) | ❌ | ❌ | 🚧 | +| **Misc** | | | | +| [Accessibility](/x/react-data-grid/accessibility/) | ✅ | ✅ | ✅ | +| [Keyboard navigation](/x/react-data-grid/accessibility/#keyboard-navigation) | ✅ | ✅ | ✅ | +| [Localization](/x/react-data-grid/localization/) | ✅ | ✅ | ✅ | ## API diff --git a/docsTech/processing.md b/docsTech/processing.md index bc39ac111e58..3435b1f87837 100644 --- a/docsTech/processing.md +++ b/docsTech/processing.md @@ -242,7 +242,7 @@ useGridRegisterPipeProcessor(apiRef, 'scrollToIndexes', calculateScrollLeft); #### List -##### `'canBeReordered'` (pro only) +##### `'canBeReordered'` (Pro only) **Publisher**: `useGridColumnReorder` when dragging a column over another. From f6a832d0a6ab5becc058980d02df12f3cf5504a8 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Wed, 1 May 2024 15:32:00 +0200 Subject: [PATCH 200/912] [docs-infra] Remove no longer needed `next.config` settings (#12861) Co-authored-by: Lukas --- docs/next.config.mjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/next.config.mjs b/docs/next.config.mjs index 83bceb213ff5..4b157e63382f 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -42,10 +42,6 @@ try { } catch (_) {} export default withDocsInfra({ - experimental: { - workerThreads: true, - cpus: 3, - }, // Avoid conflicts with the other Next.js apps hosted under https://mui.com/ assetPrefix: process.env.DEPLOY_ENV === 'development' ? undefined : '/x', env: { From 0a88646b5ef270612422b3ddb4cbe028eb8a0323 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Wed, 1 May 2024 15:48:02 +0200 Subject: [PATCH 201/912] [core] Remove inconsistent blank lines (#12966) --- packages/x-charts/src/BarChart/BarChart.tsx | 1 - .../x-data-grid-generator/src/services/gridColDefGenerator.ts | 1 - .../x-data-grid-generator/src/services/tree-data-generator.ts | 1 - .../src/hooks/features/rowGrouping/createGroupingColDef.tsx | 2 -- .../x-data-grid-pro/src/models/gridGroupingColDefOverride.ts | 3 --- .../src/components/panel/filterPanel/GridFilterPanel.tsx | 1 - .../x-data-grid/src/hooks/features/filter/gridFilterState.ts | 1 - packages/x-data-grid/src/models/api/gridCoreApi.ts | 3 --- packages/x-date-pickers/src/PickersDay/PickersDay.tsx | 1 - 9 files changed, 14 deletions(-) diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index e2514278171b..78d7ed64dcac 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -66,7 +66,6 @@ export interface BarChartProps * @see See {@link https://mui.com/x/react-charts/tooltip/ tooltip docs} for more details. */ tooltip?: ChartsTooltipProps; - /** * Option to display a cartesian grid in the background. */ diff --git a/packages/x-data-grid-generator/src/services/gridColDefGenerator.ts b/packages/x-data-grid-generator/src/services/gridColDefGenerator.ts index b082329b6ae7..370b53800263 100644 --- a/packages/x-data-grid-generator/src/services/gridColDefGenerator.ts +++ b/packages/x-data-grid-generator/src/services/gridColDefGenerator.ts @@ -12,7 +12,6 @@ export interface GridDataGeneratorContext { export type GridColDefGenerator = GridColDef & { generateData?: (row: any, context: GridDataGeneratorContext) => any; - /** * If `true`, each row will have a distinct value * If several rows are generated with the same value, then a suffix will be added to the 2nd, 3rd, ... diff --git a/packages/x-data-grid-generator/src/services/tree-data-generator.ts b/packages/x-data-grid-generator/src/services/tree-data-generator.ts index 006f3112b9f7..938537b95ba7 100644 --- a/packages/x-data-grid-generator/src/services/tree-data-generator.ts +++ b/packages/x-data-grid-generator/src/services/tree-data-generator.ts @@ -8,7 +8,6 @@ export interface AddPathToDemoDataOptions { * If not defined, the tree data will not be built */ groupingField?: string; - /** * The depth of the tree * @default 1 diff --git a/packages/x-data-grid-premium/src/hooks/features/rowGrouping/createGroupingColDef.tsx b/packages/x-data-grid-premium/src/hooks/features/rowGrouping/createGroupingColDef.tsx index e82a47871fc5..caa1a42af8f5 100644 --- a/packages/x-data-grid-premium/src/hooks/features/rowGrouping/createGroupingColDef.tsx +++ b/packages/x-data-grid-premium/src/hooks/features/rowGrouping/createGroupingColDef.tsx @@ -237,12 +237,10 @@ export const createGroupingColDefForOneGroupingCriteria = ({ interface CreateGroupingColDefSeveralCriteriaParams { apiRef: React.MutableRefObject; columnsLookup: GridColumnRawLookup; - /** * The fields from which we are grouping the rows. */ rowGroupingModel: string[]; - /** * The col def properties the user wants to override. * This value comes `prop.groupingColDef`. diff --git a/packages/x-data-grid-pro/src/models/gridGroupingColDefOverride.ts b/packages/x-data-grid-pro/src/models/gridGroupingColDefOverride.ts index ab6f80261c46..5bb832dfad66 100644 --- a/packages/x-data-grid-pro/src/models/gridGroupingColDefOverride.ts +++ b/packages/x-data-grid-pro/src/models/gridGroupingColDefOverride.ts @@ -18,13 +18,11 @@ export interface GridGroupingColDefOverride * @default The sorting and filtering is applied based on the leaf field in any, otherwise based on top level grouping criteria. */ mainGroupingCriteria?: string; - /** * The field from which we want to render the leaves of the tree. * Do not have any effect when building the tree with the `props.treeData` feature. */ leafField?: string; - /** * If `true`, the grouping cells will not render the amount of descendants. * @default false @@ -37,7 +35,6 @@ export interface GridGroupingColDefOverrideParams { * The name of the grouping algorithm currently building the grouping column. */ groupingName: string; - /** * The fields of the columns from which we want to group the values on this new grouping column. */ diff --git a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterPanel.tsx b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterPanel.tsx index dfd90cdc867e..a4d1deba6864 100644 --- a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterPanel.tsx +++ b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterPanel.tsx @@ -57,7 +57,6 @@ export interface GridFilterPanelProps * @default false */ disableRemoveAllButton?: boolean; - /** * @ignore - do not document. */ diff --git a/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts b/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts index 96926508a768..0c216b8f5519 100644 --- a/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts +++ b/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts @@ -14,7 +14,6 @@ export const getDefaultGridFilterModel: () => GridFilterModel = () => ({ export interface GridFilterState { filterModel: GridFilterModel; - /** * Filtering status for each row. * A row is filtered if it is passing the filters, whether its parents are expanded or not. diff --git a/packages/x-data-grid/src/models/api/gridCoreApi.ts b/packages/x-data-grid/src/models/api/gridCoreApi.ts index 66ea2eb2001b..702f1a9d511e 100644 --- a/packages/x-data-grid/src/models/api/gridCoreApi.ts +++ b/packages/x-data-grid/src/models/api/gridCoreApi.ts @@ -64,7 +64,6 @@ export interface GridCorePrivateApi< * The generic event emitter manager. */ eventManager: EventManager; - /** * The React ref of the grid main container div element. */ @@ -81,7 +80,6 @@ export interface GridCorePrivateApi< * The React ref of the grid header filter row element. */ headerFiltersElementRef?: React.RefObject; - register: < V extends 'public' | 'private', T extends V extends 'public' @@ -91,7 +89,6 @@ export interface GridCorePrivateApi< visibility: V, methods: T, ) => void; - /** * Returns the public API. * Can be useful on a feature hook if we want to pass the `apiRef` to a callback. diff --git a/packages/x-date-pickers/src/PickersDay/PickersDay.tsx b/packages/x-date-pickers/src/PickersDay/PickersDay.tsx index 5ff08df53f70..ef0279f6a134 100644 --- a/packages/x-date-pickers/src/PickersDay/PickersDay.tsx +++ b/packages/x-date-pickers/src/PickersDay/PickersDay.tsx @@ -58,7 +58,6 @@ export interface PickersDayProps * @default false */ disabled?: boolean; - /** * If `true`, days are rendering without margin. Useful for displaying linked range of days. * @default false From bb57c877457bdf77aa485fe0a70ff76e9f9fc2bb Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 2 May 2024 16:18:36 +0500 Subject: [PATCH 202/912] [DataGrid] Fix rows not being recomputed on `props.rowCount` change (#12833) --- .../src/hooks/features/rows/useGridRows.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts b/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts index f9001be7054b..aba863dad31c 100644 --- a/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts +++ b/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts @@ -90,6 +90,7 @@ export const useGridRows = ( const currentPage = useGridVisibleRows(apiRef, props); const lastUpdateMs = React.useRef(Date.now()); + const lastRowCount = React.useRef(props.rowCount); const timeout = useTimeout(); const getRow = React.useCallback( @@ -594,6 +595,12 @@ export const useGridRows = ( return; } + let isRowCountPropUpdated = false; + if (props.rowCount !== lastRowCount.current) { + isRowCountPropUpdated = true; + lastRowCount.current = props.rowCount; + } + const areNewRowsAlreadyInState = apiRef.current.caches.rows.rowsBeforePartialUpdates === props.rows; const isNewLoadingAlreadyInState = @@ -625,8 +632,9 @@ export const useGridRows = ( apiRef.current.caches.rows.rowCountPropBeforePartialUpdates = props.rowCount; apiRef.current.forceUpdate(); } - - return; + if (!isRowCountPropUpdated) { + return; + } } logger.debug(`Updating all rows, new length ${props.rows.length}`); From 2c397c5b511d5f3790634b93b4ab2bba516a18c0 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 2 May 2024 16:18:56 +0500 Subject: [PATCH 203/912] [docs] Improve Data Grid migration guide (#12969) --- .../migration/migration-data-grid-v6/migration-data-grid-v6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md index 05e61c411efd..e21506374d6a 100644 --- a/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md +++ b/docs/data/migration/migration-data-grid-v6/migration-data-grid-v6.md @@ -340,7 +340,7 @@ See the [Direct state access](/x/react-data-grid/state/#direct-selector-access) ```diff -groupingValueGetter: (params) => params.value.name, - +groupingValueGetter: (value: { name: string }) => value.name, + +groupingValueGetter: (value: { name: string }, row, column, apiRef) => value.name, ``` ### Density From f895c93d1f9397cc0462e1b22ecba484af56aae8 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 2 May 2024 16:20:09 +0500 Subject: [PATCH 204/912] [DataGridPremium] Fix print export not working with row grouping (#12957) --- docs/pages/x/api/data-grid/selectors.json | 10 ++--- .../features/export/useGridPrintExport.tsx | 38 +++++++++++++++---- .../features/sorting/gridSortingSelector.ts | 21 ++++++++-- 3 files changed, 53 insertions(+), 16 deletions(-) diff --git a/docs/pages/x/api/data-grid/selectors.json b/docs/pages/x/api/data-grid/selectors.json index e10bb19d717b..10cb5c8c4439 100644 --- a/docs/pages/x/api/data-grid/selectors.json +++ b/docs/pages/x/api/data-grid/selectors.json @@ -161,7 +161,7 @@ }, { "name": "gridExpandedSortedRowEntriesSelector", - "returnType": "{ id: GridRowId; model: GridValidRowModel }[]", + "returnType": "GridRowEntry[]", "category": "Filtering", "description": "Get the id and the model of the rows accessible after the filtering process.\nDoes not contain the collapsed children.", "supportsApiRef": true @@ -196,7 +196,7 @@ }, { "name": "gridFilteredSortedRowEntriesSelector", - "returnType": "{ id: GridRowId; model: GridValidRowModel }[]", + "returnType": "GridRowEntry[]", "category": "Filtering", "description": "Get the id and the model of the rows accessible after the filtering process.\nContains the collapsed children.", "supportsApiRef": true @@ -210,7 +210,7 @@ }, { "name": "gridFilteredSortedTopLevelRowEntriesSelector", - "returnType": "{ id: GridRowId; model: GridValidRowModel }[]", + "returnType": "GridRowEntry[]", "category": "Filtering", "description": "Get the id and the model of the top level rows accessible after the filtering process.", "supportsApiRef": true @@ -299,7 +299,7 @@ }, { "name": "gridPaginatedVisibleSortedGridRowEntriesSelector", - "returnType": "{ id: GridRowId; model: GridValidRowModel }[]", + "returnType": "GridRowEntry[]", "category": "Pagination", "description": "Get the id and the model of each row to include in the current page if the pagination is enabled.", "supportsApiRef": true @@ -446,7 +446,7 @@ }, { "name": "gridSortedRowEntriesSelector", - "returnType": "{ id: GridRowId; model: GridValidRowModel }[]", + "returnType": "GridRowEntry[]", "category": "Sorting", "description": "Get the id and the model of the rows after the sorting process.", "supportsApiRef": true diff --git a/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx b/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx index 909ecae28e8c..5ba08b587cdc 100644 --- a/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx +++ b/packages/x-data-grid/src/hooks/features/export/useGridPrintExport.tsx @@ -7,7 +7,7 @@ import { gridExpandedRowCountSelector } from '../filter/gridFilterSelector'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { GridPrintExportOptions } from '../../../models/gridExport'; import { GridValidRowModel } from '../../../models/gridRows'; -import { GridInitialStateCommunity } from '../../../models/gridStateCommunity'; +import { GridInitialStateCommunity, GridStateCommunity } from '../../../models/gridStateCommunity'; import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, @@ -15,6 +15,7 @@ import { import { gridClasses } from '../../../constants/gridClasses'; import { useGridApiMethod } from '../../utils/useGridApiMethod'; import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector'; +import { GRID_ID_AUTOGENERATED } from '../rows/gridRowsUtils'; import { defaultGetRowsToExport, getColumnsToExport } from './utils'; import { getDerivedPaginationModel } from '../pagination/useGridPaginationModel'; import { GridPipeProcessor, useGridRegisterPipeProcessor } from '../../core/pipeProcessing'; @@ -71,6 +72,7 @@ export const useGridPrintExport = ( const previousGridState = React.useRef(null); const previousColumnVisibility = React.useRef<{ [key: string]: boolean }>({}); const previousRows = React.useRef([]); + const previousVirtualizationState = React.useRef(); React.useEffect(() => { doc.current = ownerDocument(apiRef.current.rootElementRef!.current!); @@ -106,7 +108,15 @@ export const useGridPrintExport = ( const updateGridRowsForPrint = React.useCallback( (getRowsToExport: NonNullable) => { const rowsToExportIds = getRowsToExport({ apiRef }); - const newRows = rowsToExportIds.map((id) => apiRef.current.getRow(id)); + + const newRows = rowsToExportIds.reduce((acc, id) => { + const row = apiRef.current.getRow(id); + if (!row[GRID_ID_AUTOGENERATED]) { + acc.push(row); + } + return acc; + }, [] as GridValidRowModel[]); + apiRef.current.setRows(newRows); }, [apiRef], @@ -130,7 +140,7 @@ export const useGridPrintExport = ( const rowsMeta = gridRowsMetaSelector(apiRef.current.state); - const gridRootElement = apiRef.current.rootElementRef!.current; + const gridRootElement = apiRef.current.rootElementRef.current; const gridClone = gridRootElement!.cloneNode(true) as HTMLElement; // Allow to overflow to not hide the border of the last row @@ -181,6 +191,8 @@ export const useGridPrintExport = ( // prevents us to do it const container = document.createElement('div'); container.appendChild(gridClone); + // To avoid an empty page in start on Chromium based browsers + printDoc.body.style.marginTop = '0px'; printDoc.body.innerHTML = container.innerHTML; const defaultPageStyle = @@ -271,7 +283,10 @@ export const useGridPrintExport = ( apiRef.current.setColumnVisibilityModel(previousColumnVisibility.current); } - apiRef.current.unstable_setVirtualization(true); + apiRef.current.setState((state) => ({ + ...state, + virtualization: previousVirtualizationState.current!, + })); apiRef.current.setRows(previousRows.current); // Clear local state @@ -293,7 +308,9 @@ export const useGridPrintExport = ( previousGridState.current = apiRef.current.exportState(); // It appends that the visibility model is not exported, especially if columnVisibility is not controlled previousColumnVisibility.current = gridColumnVisibilityModelSelector(apiRef); - previousRows.current = apiRef.current.getSortedRows(); + previousRows.current = apiRef.current + .getSortedRows() + .filter((row) => !row[GRID_ID_AUTOGENERATED]); if (props.pagination) { const visibleRowCount = gridExpandedRowCountSelector(apiRef); @@ -313,8 +330,16 @@ export const useGridPrintExport = ( ), }, })); - apiRef.current.forceUpdate(); } + previousVirtualizationState.current = apiRef.current.state.virtualization; + apiRef.current.setState((state) => ({ + ...state, + virtualization: { + ...state.virtualization, + enabled: false, + enabledForColumns: false, + }, + })); await updateGridColumnsForPrint( options?.fields, @@ -324,7 +349,6 @@ export const useGridPrintExport = ( updateGridRowsForPrint(options?.getRowsToExport ?? defaultGetRowsToExport); - apiRef.current.unstable_setVirtualization(false); await raf(); // wait for the state changes to take action const printWindow = buildPrintWindow(options?.fileName); if (process.env.NODE_ENV === 'test') { diff --git a/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts b/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts index d157ad560884..90c85a1ad65f 100644 --- a/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts +++ b/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts @@ -1,7 +1,9 @@ import { createSelector, createSelectorMemoized } from '../../../utils/createSelector'; import { GridSortDirection, GridSortModel } from '../../../models/gridSortModel'; -import { GridStateCommunity } from '../../../models/gridStateCommunity'; -import { gridRowsLookupSelector } from '../rows/gridRowsSelector'; +import { gridRowTreeSelector, gridRowsLookupSelector } from '../rows/gridRowsSelector'; +import { GRID_ID_AUTOGENERATED, isAutoGeneratedRow } from '../rows/gridRowsUtils'; +import type { GridStateCommunity } from '../../../models/gridStateCommunity'; +import type { GridValidRowModel, GridRowEntry } from '../../../models/gridRows'; /** * @category Sorting @@ -25,8 +27,19 @@ export const gridSortedRowIdsSelector = createSelector( export const gridSortedRowEntriesSelector = createSelectorMemoized( gridSortedRowIdsSelector, gridRowsLookupSelector, - // TODO rows v6: Is this the best approach ? - (sortedIds, idRowsLookup) => sortedIds.map((id) => ({ id, model: idRowsLookup[id] ?? {} })), + gridRowTreeSelector, + (sortedIds, idRowsLookup, rowTree) => + sortedIds.reduce[]>((acc, id) => { + const model = idRowsLookup[id]; + if (model) { + acc.push({ id, model }); + } + const rowNode = rowTree[id]; + if (rowNode && isAutoGeneratedRow(rowNode)) { + acc.push({ id, model: { [GRID_ID_AUTOGENERATED]: id } }); + } + return acc; + }, [] as GridRowEntry[]), ); /** From 45000caa67f51514bac1f63b37c877f96b4b4843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20=C5=A0tef=C3=ADk?= <68276764+stefikp@users.noreply.github.com> Date: Thu, 2 May 2024 13:35:34 +0200 Subject: [PATCH 205/912] [l10n] Improve Slovak (sk-SK) locale (#12949) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Patrik Štefík <68276764+stefikp@users.noreply.github.com> Co-authored-by: Bilal Shafi --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/skSK.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 6726ad619312..1e124cc9f6dd 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -211,7 +211,7 @@ "languageTag": "sk-SK", "importName": "skSK", "localeName": "Slovak", - "missingKeysCount": 3, + "missingKeysCount": 0, "totalKeysCount": 117, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/skSK.ts" }, diff --git a/packages/x-data-grid/src/locales/skSK.ts b/packages/x-data-grid/src/locales/skSK.ts index 0fd00c1eb63f..81d3799f4eaa 100644 --- a/packages/x-data-grid/src/locales/skSK.ts +++ b/packages/x-data-grid/src/locales/skSK.ts @@ -46,9 +46,9 @@ const skSKGrid: Partial = { toolbarExportExcel: 'Stiahnuť ako Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementSearchTitle: 'Vyhľadať', + columnsManagementNoColumns: 'Žiadne stĺpce', + columnsManagementShowHideAllText: 'Zobraziť/Skryť všetko', // Filter panel text filterPanelAddFilter: 'Pridať filter', From 1d16c853cb27f44318fb421369b9f98ccbdd3f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Erik=20Ven=C3=B8?= Date: Thu, 2 May 2024 13:49:10 +0200 Subject: [PATCH 206/912] [l10n] Improve Danish (da-DK) locale (#12844) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Poul Erik Venø --- packages/x-data-grid/src/locales/daDK.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-data-grid/src/locales/daDK.ts b/packages/x-data-grid/src/locales/daDK.ts index 577fc80f2d5c..feb0a3266867 100644 --- a/packages/x-data-grid/src/locales/daDK.ts +++ b/packages/x-data-grid/src/locales/daDK.ts @@ -41,7 +41,7 @@ const daDKGrid: Partial = { // Columns management text columnsManagementSearchTitle: 'Søg', columnsManagementNoColumns: 'Ingen søjler', - columnsManagementShowHideAllText: 'Vis/Shjul Alle', + columnsManagementShowHideAllText: 'Vis/Skjul Alle', // Filter panel text filterPanelAddFilter: 'Tilføj filter', From 8f03743f6453c9a5e4f01c1f960ce53316924673 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 2 May 2024 18:03:53 +0500 Subject: [PATCH 207/912] [DataGrid] Allow to change reset text in columns management panel (#12972) --- docs/data/data-grid/localization/data.json | 132 +++++++++--------- .../GridColumnsManagement.tsx | 2 +- .../src/constants/localeTextConstants.ts | 1 + packages/x-data-grid/src/locales/arSD.ts | 1 + packages/x-data-grid/src/locales/beBY.ts | 1 + packages/x-data-grid/src/locales/bgBG.ts | 1 + packages/x-data-grid/src/locales/csCZ.ts | 1 + packages/x-data-grid/src/locales/daDK.ts | 1 + packages/x-data-grid/src/locales/deDE.ts | 1 + packages/x-data-grid/src/locales/elGR.ts | 1 + packages/x-data-grid/src/locales/esES.ts | 1 + packages/x-data-grid/src/locales/faIR.ts | 1 + packages/x-data-grid/src/locales/fiFI.ts | 1 + packages/x-data-grid/src/locales/frFR.ts | 1 + packages/x-data-grid/src/locales/heIL.ts | 1 + packages/x-data-grid/src/locales/hrHR.ts | 1 + packages/x-data-grid/src/locales/huHU.ts | 1 + packages/x-data-grid/src/locales/itIT.ts | 1 + packages/x-data-grid/src/locales/jaJP.ts | 1 + packages/x-data-grid/src/locales/koKR.ts | 1 + packages/x-data-grid/src/locales/nbNO.ts | 1 + packages/x-data-grid/src/locales/nlNL.ts | 1 + packages/x-data-grid/src/locales/plPL.ts | 1 + packages/x-data-grid/src/locales/ptBR.ts | 1 + packages/x-data-grid/src/locales/ptPT.ts | 1 + packages/x-data-grid/src/locales/roRO.ts | 1 + packages/x-data-grid/src/locales/ruRU.ts | 1 + packages/x-data-grid/src/locales/skSK.ts | 1 + packages/x-data-grid/src/locales/svSE.ts | 1 + packages/x-data-grid/src/locales/trTR.ts | 1 + packages/x-data-grid/src/locales/ukUA.ts | 1 + packages/x-data-grid/src/locales/urPK.ts | 1 + packages/x-data-grid/src/locales/viVN.ts | 1 + packages/x-data-grid/src/locales/zhCN.ts | 1 + packages/x-data-grid/src/locales/zhHK.ts | 1 + packages/x-data-grid/src/locales/zhTW.ts | 1 + .../src/models/api/gridLocaleTextApi.ts | 1 + 37 files changed, 102 insertions(+), 67 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 1e124cc9f6dd..551b970f981f 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -3,264 +3,264 @@ "languageTag": "ar-SD", "importName": "arSD", "localeName": "Arabic (Sudan)", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/arSD.ts" }, { "languageTag": "be-BY", "importName": "beBY", "localeName": "Belarusian", - "missingKeysCount": 29, - "totalKeysCount": 117, + "missingKeysCount": 30, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/beBY.ts" }, { "languageTag": "bg-BG", "importName": "bgBG", "localeName": "Bulgarian", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/bgBG.ts" }, { "languageTag": "zh-HK", "importName": "zhHK", "localeName": "Chinese (Hong Kong)", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/zhHK.ts" }, { "languageTag": "zh-CN", "importName": "zhCN", "localeName": "Chinese (Simplified)", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/zhCN.ts" }, { "languageTag": "zh-TW", "importName": "zhTW", "localeName": "Chinese (Taiwan)", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/zhTW.ts" }, { "languageTag": "hr-HR", "importName": "hrHR", "localeName": "Croatian", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/hrHR.ts" }, { "languageTag": "cs-CZ", "importName": "csCZ", "localeName": "Czech", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/csCZ.ts" }, { "languageTag": "da-DK", "importName": "daDK", "localeName": "Danish", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/daDK.ts" }, { "languageTag": "nl-NL", "importName": "nlNL", "localeName": "Dutch", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/nlNL.ts" }, { "languageTag": "fi-FI", "importName": "fiFI", "localeName": "Finnish", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/fiFI.ts" }, { "languageTag": "fr-FR", "importName": "frFR", "localeName": "French", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/frFR.ts" }, { "languageTag": "de-DE", "importName": "deDE", "localeName": "German", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/deDE.ts" }, { "languageTag": "el-GR", "importName": "elGR", "localeName": "Greek", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/elGR.ts" }, { "languageTag": "he-IL", "importName": "heIL", "localeName": "Hebrew", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/heIL.ts" }, { "languageTag": "hu-HU", "importName": "huHU", "localeName": "Hungarian", - "missingKeysCount": 5, - "totalKeysCount": 117, + "missingKeysCount": 6, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/huHU.ts" }, { "languageTag": "it-IT", "importName": "itIT", "localeName": "Italian", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/itIT.ts" }, { "languageTag": "ja-JP", "importName": "jaJP", "localeName": "Japanese", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/jaJP.ts" }, { "languageTag": "ko-KR", "importName": "koKR", "localeName": "Korean", - "missingKeysCount": 30, - "totalKeysCount": 117, + "missingKeysCount": 31, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/koKR.ts" }, { "languageTag": "nb-NO", "importName": "nbNO", "localeName": "Norwegian (Bokmål)", - "missingKeysCount": 28, - "totalKeysCount": 117, + "missingKeysCount": 29, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/nbNO.ts" }, { "languageTag": "fa-IR", "importName": "faIR", "localeName": "Persian", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/faIR.ts" }, { "languageTag": "pl-PL", "importName": "plPL", "localeName": "Polish", - "missingKeysCount": 30, - "totalKeysCount": 117, + "missingKeysCount": 31, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/plPL.ts" }, { "languageTag": "pt-PT", "importName": "ptPT", "localeName": "Portuguese", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/ptPT.ts" }, { "languageTag": "pt-BR", "importName": "ptBR", "localeName": "Portuguese (Brazil)", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/ptBR.ts" }, { "languageTag": "ro-RO", "importName": "roRO", "localeName": "Romanian", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/roRO.ts" }, { "languageTag": "ru-RU", "importName": "ruRU", "localeName": "Russian", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/ruRU.ts" }, { "languageTag": "sk-SK", "importName": "skSK", "localeName": "Slovak", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/skSK.ts" }, { "languageTag": "es-ES", "importName": "esES", "localeName": "Spanish", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/esES.ts" }, { "languageTag": "sv-SE", "importName": "svSE", "localeName": "Swedish", - "missingKeysCount": 0, - "totalKeysCount": 117, + "missingKeysCount": 1, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/svSE.ts" }, { "languageTag": "tr-TR", "importName": "trTR", "localeName": "Turkish", - "missingKeysCount": 18, - "totalKeysCount": 117, + "missingKeysCount": 19, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/trTR.ts" }, { "languageTag": "uk-UA", "importName": "ukUA", "localeName": "Ukrainian", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/ukUA.ts" }, { "languageTag": "ur-PK", "importName": "urPK", "localeName": "Urdu (Pakistan)", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/urPK.ts" }, { "languageTag": "vi-VN", "importName": "viVN", "localeName": "Vietnamese", - "missingKeysCount": 3, - "totalKeysCount": 117, + "missingKeysCount": 4, + "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/viVN.ts" } ] diff --git a/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx b/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx index 04f867d0bb82..7230fb48e412 100644 --- a/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx +++ b/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx @@ -282,7 +282,7 @@ function GridColumnsManagement(props: GridColumnsManagementProps) { disabled={isResetDisabled} {...rootProps.slotProps?.baseButton} > - Reset + {apiRef.current.getLocaleText('columnsManagementReset')} ) : null} diff --git a/packages/x-data-grid/src/constants/localeTextConstants.ts b/packages/x-data-grid/src/constants/localeTextConstants.ts index c9b6fd1ce816..9e250f030f7d 100644 --- a/packages/x-data-grid/src/constants/localeTextConstants.ts +++ b/packages/x-data-grid/src/constants/localeTextConstants.ts @@ -40,6 +40,7 @@ export const GRID_DEFAULT_LOCALE_TEXT: GridLocaleText = { columnsManagementSearchTitle: 'Search', columnsManagementNoColumns: 'No columns', columnsManagementShowHideAllText: 'Show/Hide All', + columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Add filter', diff --git a/packages/x-data-grid/src/locales/arSD.ts b/packages/x-data-grid/src/locales/arSD.ts index e7cc02d42d9c..a7e21456418e 100644 --- a/packages/x-data-grid/src/locales/arSD.ts +++ b/packages/x-data-grid/src/locales/arSD.ts @@ -42,6 +42,7 @@ const arSDGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'إضافة مرشِح', diff --git a/packages/x-data-grid/src/locales/beBY.ts b/packages/x-data-grid/src/locales/beBY.ts index 1641aee5d89c..d2aaaa7729c5 100644 --- a/packages/x-data-grid/src/locales/beBY.ts +++ b/packages/x-data-grid/src/locales/beBY.ts @@ -65,6 +65,7 @@ const beBYGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Дадаць фільтр', diff --git a/packages/x-data-grid/src/locales/bgBG.ts b/packages/x-data-grid/src/locales/bgBG.ts index 660bb62d6d18..9dccb867a252 100644 --- a/packages/x-data-grid/src/locales/bgBG.ts +++ b/packages/x-data-grid/src/locales/bgBG.ts @@ -41,6 +41,7 @@ const bgBGGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Добави Филтър', diff --git a/packages/x-data-grid/src/locales/csCZ.ts b/packages/x-data-grid/src/locales/csCZ.ts index 5dc9156abf89..2bf50df1aa32 100644 --- a/packages/x-data-grid/src/locales/csCZ.ts +++ b/packages/x-data-grid/src/locales/csCZ.ts @@ -49,6 +49,7 @@ const csCZGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Přidat filtr', diff --git a/packages/x-data-grid/src/locales/daDK.ts b/packages/x-data-grid/src/locales/daDK.ts index feb0a3266867..903707551090 100644 --- a/packages/x-data-grid/src/locales/daDK.ts +++ b/packages/x-data-grid/src/locales/daDK.ts @@ -42,6 +42,7 @@ const daDKGrid: Partial = { columnsManagementSearchTitle: 'Søg', columnsManagementNoColumns: 'Ingen søjler', columnsManagementShowHideAllText: 'Vis/Skjul Alle', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Tilføj filter', diff --git a/packages/x-data-grid/src/locales/deDE.ts b/packages/x-data-grid/src/locales/deDE.ts index 6df5801d716d..a4d7d88382bf 100644 --- a/packages/x-data-grid/src/locales/deDE.ts +++ b/packages/x-data-grid/src/locales/deDE.ts @@ -42,6 +42,7 @@ const deDEGrid: Partial = { columnsManagementSearchTitle: 'Suche', columnsManagementNoColumns: 'Keine Spalten', columnsManagementShowHideAllText: 'Alle anzeigen/verbergen', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Filter hinzufügen', diff --git a/packages/x-data-grid/src/locales/elGR.ts b/packages/x-data-grid/src/locales/elGR.ts index e0a2fd99f9d0..be950a449d3b 100644 --- a/packages/x-data-grid/src/locales/elGR.ts +++ b/packages/x-data-grid/src/locales/elGR.ts @@ -42,6 +42,7 @@ const elGRGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Προσθήκη φίλτρου', diff --git a/packages/x-data-grid/src/locales/esES.ts b/packages/x-data-grid/src/locales/esES.ts index 217e68ff5c68..0ac2e4341ab5 100644 --- a/packages/x-data-grid/src/locales/esES.ts +++ b/packages/x-data-grid/src/locales/esES.ts @@ -42,6 +42,7 @@ const esESGrid: Partial = { columnsManagementSearchTitle: 'Buscar', columnsManagementNoColumns: 'Sin columnas', columnsManagementShowHideAllText: 'Mostrar/Ocultar todas', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Agregar filtro', diff --git a/packages/x-data-grid/src/locales/faIR.ts b/packages/x-data-grid/src/locales/faIR.ts index 0f1b6e15f6d3..cb0f327f0f2e 100644 --- a/packages/x-data-grid/src/locales/faIR.ts +++ b/packages/x-data-grid/src/locales/faIR.ts @@ -42,6 +42,7 @@ const faIRGrid: Partial = { columnsManagementSearchTitle: 'جستجو', columnsManagementNoColumns: 'بدون سطر', columnsManagementShowHideAllText: 'نمایش/مخفی کردن همه', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'افزودن فیلتر', diff --git a/packages/x-data-grid/src/locales/fiFI.ts b/packages/x-data-grid/src/locales/fiFI.ts index 3b9d23cb135e..2d7f5c733b08 100644 --- a/packages/x-data-grid/src/locales/fiFI.ts +++ b/packages/x-data-grid/src/locales/fiFI.ts @@ -42,6 +42,7 @@ const fiFIGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Lisää suodatin', diff --git a/packages/x-data-grid/src/locales/frFR.ts b/packages/x-data-grid/src/locales/frFR.ts index dc9340fefce1..52110cc3cbe8 100644 --- a/packages/x-data-grid/src/locales/frFR.ts +++ b/packages/x-data-grid/src/locales/frFR.ts @@ -42,6 +42,7 @@ const frFRGrid: Partial = { columnsManagementSearchTitle: 'Rechercher', columnsManagementNoColumns: 'Pas de colonnes', columnsManagementShowHideAllText: 'Afficher/masquer toutes', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Ajouter un filtre', diff --git a/packages/x-data-grid/src/locales/heIL.ts b/packages/x-data-grid/src/locales/heIL.ts index 59811cd7d89d..ab33e54907aa 100644 --- a/packages/x-data-grid/src/locales/heIL.ts +++ b/packages/x-data-grid/src/locales/heIL.ts @@ -42,6 +42,7 @@ const heILGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'הוסף מסנן', diff --git a/packages/x-data-grid/src/locales/hrHR.ts b/packages/x-data-grid/src/locales/hrHR.ts index 6bad930cadf2..810bb643c637 100644 --- a/packages/x-data-grid/src/locales/hrHR.ts +++ b/packages/x-data-grid/src/locales/hrHR.ts @@ -42,6 +42,7 @@ const hrHRGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Dodajte filter', diff --git a/packages/x-data-grid/src/locales/huHU.ts b/packages/x-data-grid/src/locales/huHU.ts index 8218d5ec89c8..d2ef0c74e648 100644 --- a/packages/x-data-grid/src/locales/huHU.ts +++ b/packages/x-data-grid/src/locales/huHU.ts @@ -41,6 +41,7 @@ const huHUGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Szűrő hozzáadása', diff --git a/packages/x-data-grid/src/locales/itIT.ts b/packages/x-data-grid/src/locales/itIT.ts index 5c285f42b3c8..a3f37daa1ab3 100644 --- a/packages/x-data-grid/src/locales/itIT.ts +++ b/packages/x-data-grid/src/locales/itIT.ts @@ -42,6 +42,7 @@ const itITGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Aggiungi un filtro', diff --git a/packages/x-data-grid/src/locales/jaJP.ts b/packages/x-data-grid/src/locales/jaJP.ts index 2f98e640ffdb..716735e96847 100644 --- a/packages/x-data-grid/src/locales/jaJP.ts +++ b/packages/x-data-grid/src/locales/jaJP.ts @@ -41,6 +41,7 @@ const jaJPGrid: Partial = { columnsManagementSearchTitle: '検索', columnsManagementNoColumns: 'カラムなし', columnsManagementShowHideAllText: 'すべて表示/非表示', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'フィルター追加', diff --git a/packages/x-data-grid/src/locales/koKR.ts b/packages/x-data-grid/src/locales/koKR.ts index 928b86dfcf40..6f0546460d61 100644 --- a/packages/x-data-grid/src/locales/koKR.ts +++ b/packages/x-data-grid/src/locales/koKR.ts @@ -41,6 +41,7 @@ const koKRGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: '필터 추가', diff --git a/packages/x-data-grid/src/locales/nbNO.ts b/packages/x-data-grid/src/locales/nbNO.ts index ca7d68356255..67b35b620d95 100644 --- a/packages/x-data-grid/src/locales/nbNO.ts +++ b/packages/x-data-grid/src/locales/nbNO.ts @@ -42,6 +42,7 @@ const nbNOGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Legg til filter', diff --git a/packages/x-data-grid/src/locales/nlNL.ts b/packages/x-data-grid/src/locales/nlNL.ts index 0026aa761549..c1d65e9cc0db 100644 --- a/packages/x-data-grid/src/locales/nlNL.ts +++ b/packages/x-data-grid/src/locales/nlNL.ts @@ -42,6 +42,7 @@ const nlNLGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Filter toevoegen', diff --git a/packages/x-data-grid/src/locales/plPL.ts b/packages/x-data-grid/src/locales/plPL.ts index 8bde9b11219c..bf9bcb6eae46 100644 --- a/packages/x-data-grid/src/locales/plPL.ts +++ b/packages/x-data-grid/src/locales/plPL.ts @@ -41,6 +41,7 @@ const plPLGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Dodaj filtr', diff --git a/packages/x-data-grid/src/locales/ptBR.ts b/packages/x-data-grid/src/locales/ptBR.ts index 1a6e603141d8..3e2eb6cc008a 100644 --- a/packages/x-data-grid/src/locales/ptBR.ts +++ b/packages/x-data-grid/src/locales/ptBR.ts @@ -42,6 +42,7 @@ const ptBRGrid: Partial = { columnsManagementSearchTitle: 'Buscar', columnsManagementNoColumns: 'Nenhuma coluna', columnsManagementShowHideAllText: 'Mostrar/Ocultar Todas', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Adicionar filtro', diff --git a/packages/x-data-grid/src/locales/ptPT.ts b/packages/x-data-grid/src/locales/ptPT.ts index 7cde5b48a976..1262a3139e94 100644 --- a/packages/x-data-grid/src/locales/ptPT.ts +++ b/packages/x-data-grid/src/locales/ptPT.ts @@ -42,6 +42,7 @@ const ptPTGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Adicionar filtro', diff --git a/packages/x-data-grid/src/locales/roRO.ts b/packages/x-data-grid/src/locales/roRO.ts index af675b5f73cf..b9e9cf9c8411 100644 --- a/packages/x-data-grid/src/locales/roRO.ts +++ b/packages/x-data-grid/src/locales/roRO.ts @@ -42,6 +42,7 @@ const roROGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Adăugare filtru', diff --git a/packages/x-data-grid/src/locales/ruRU.ts b/packages/x-data-grid/src/locales/ruRU.ts index 526269330ec6..f08cfba7b4da 100644 --- a/packages/x-data-grid/src/locales/ruRU.ts +++ b/packages/x-data-grid/src/locales/ruRU.ts @@ -50,6 +50,7 @@ const ruRUGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Добавить фильтр', diff --git a/packages/x-data-grid/src/locales/skSK.ts b/packages/x-data-grid/src/locales/skSK.ts index 81d3799f4eaa..4106d3cb3482 100644 --- a/packages/x-data-grid/src/locales/skSK.ts +++ b/packages/x-data-grid/src/locales/skSK.ts @@ -49,6 +49,7 @@ const skSKGrid: Partial = { columnsManagementSearchTitle: 'Vyhľadať', columnsManagementNoColumns: 'Žiadne stĺpce', columnsManagementShowHideAllText: 'Zobraziť/Skryť všetko', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Pridať filter', diff --git a/packages/x-data-grid/src/locales/svSE.ts b/packages/x-data-grid/src/locales/svSE.ts index c014fd7f1465..dbb5add8ddd4 100644 --- a/packages/x-data-grid/src/locales/svSE.ts +++ b/packages/x-data-grid/src/locales/svSE.ts @@ -42,6 +42,7 @@ const svSEGrid: Partial = { columnsManagementSearchTitle: 'Sök', columnsManagementNoColumns: 'Inga kolumner', columnsManagementShowHideAllText: 'Visa/Dölj alla', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Lägg till filter', diff --git a/packages/x-data-grid/src/locales/trTR.ts b/packages/x-data-grid/src/locales/trTR.ts index 295a0bd4ade9..559544cce2f0 100644 --- a/packages/x-data-grid/src/locales/trTR.ts +++ b/packages/x-data-grid/src/locales/trTR.ts @@ -41,6 +41,7 @@ const trTRGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Filtre Ekle', diff --git a/packages/x-data-grid/src/locales/ukUA.ts b/packages/x-data-grid/src/locales/ukUA.ts index 0ec7cebdd8ed..22185c2c34e9 100644 --- a/packages/x-data-grid/src/locales/ukUA.ts +++ b/packages/x-data-grid/src/locales/ukUA.ts @@ -65,6 +65,7 @@ const ukUAGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Додати фільтр', diff --git a/packages/x-data-grid/src/locales/urPK.ts b/packages/x-data-grid/src/locales/urPK.ts index 9b0bf0c46b3d..13c4e58b189b 100644 --- a/packages/x-data-grid/src/locales/urPK.ts +++ b/packages/x-data-grid/src/locales/urPK.ts @@ -42,6 +42,7 @@ const urPKGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'نیا فلٹر', diff --git a/packages/x-data-grid/src/locales/viVN.ts b/packages/x-data-grid/src/locales/viVN.ts index 1956561f35e1..47cd0bbc618d 100644 --- a/packages/x-data-grid/src/locales/viVN.ts +++ b/packages/x-data-grid/src/locales/viVN.ts @@ -42,6 +42,7 @@ const viVNGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Thêm bộ lọc', diff --git a/packages/x-data-grid/src/locales/zhCN.ts b/packages/x-data-grid/src/locales/zhCN.ts index 1c24df347897..40cc526e3689 100644 --- a/packages/x-data-grid/src/locales/zhCN.ts +++ b/packages/x-data-grid/src/locales/zhCN.ts @@ -41,6 +41,7 @@ const zhCNGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: '添加筛选器', diff --git a/packages/x-data-grid/src/locales/zhHK.ts b/packages/x-data-grid/src/locales/zhHK.ts index de2681c49bd6..ec6b193f07fd 100644 --- a/packages/x-data-grid/src/locales/zhHK.ts +++ b/packages/x-data-grid/src/locales/zhHK.ts @@ -42,6 +42,7 @@ const zhHKGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: '新增過濾器', diff --git a/packages/x-data-grid/src/locales/zhTW.ts b/packages/x-data-grid/src/locales/zhTW.ts index 1b009c01e8da..6197d8122307 100644 --- a/packages/x-data-grid/src/locales/zhTW.ts +++ b/packages/x-data-grid/src/locales/zhTW.ts @@ -41,6 +41,7 @@ const zhTWGrid: Partial = { // columnsManagementSearchTitle: 'Search', // columnsManagementNoColumns: 'No columns', // columnsManagementShowHideAllText: 'Show/Hide All', + // columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: '增加篩選器', diff --git a/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts b/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts index 97735a52eb0f..0c8b4ef2f874 100644 --- a/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts +++ b/packages/x-data-grid/src/models/api/gridLocaleTextApi.ts @@ -52,6 +52,7 @@ export interface GridLocaleText { columnsManagementSearchTitle: string; columnsManagementNoColumns: string; columnsManagementShowHideAllText: string; + columnsManagementReset: string; // Filter panel text filterPanelAddFilter: React.ReactNode; From 75f63c31362851af4cf32290a79e0894c74e3058 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Thu, 2 May 2024 16:36:26 +0200 Subject: [PATCH 208/912] v7.3.2 (#12971) Signed-off-by: Jose C Quintas Jr Co-authored-by: Lukas Co-authored-by: Bilal Shafi --- CHANGELOG.md | 71 +++++++++++++++++++++ package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- 9 files changed, 79 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 283f586a4c64..12d3e6e7f4ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,77 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.3.2 + +_May 2, 2024_ + +We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨: + +- 🎁 Add "no data" and "loading" states to charts, allowing users to create [custom visualizations for each state](https://mui.com/x/react-charts/styling/#overlay) +- 🌍 Improve Hebrew (he-IL) and Hungarian (hu-HU) locales on the Date and Time Pickers +- 🌍 Improve Danish (da-DK) and Slovak (sk-SK) locales on the Data Grid +- 📝 Fix a [typo](https://github.com/mui/mui-x/pull/12941/files/4bf4bffbc2799a01a96bc7458a17318cf41c1722#diff-26c31cc69d6f51110f89e339578ef9b3d4a3551f79077fff73f7babb81c5099f) in the auto-generated Charts gradient `id` attribute. + It should not affect you, but if you were relying on the gradient `id` attribute, please update your usage. +- 🐞 Bugfixes +- 📚 Documentation improvements + + + +### Data Grid + +#### `@mui/x-data-grid@7.3.2` + +- [DataGrid] Allow to change reset text in the columns management panel (#12972) @MBilalShafi +- [DataGrid] Derive `formattedValue` from the edit value when passing to `renderEditCell` (#12870) @cherniavskii +- [DataGrid] Fix rows not being recomputed on `props.rowCount` change (#12833) @MBilalShafi +- [l10n] Improve Danish (da-DK) locale (#12844) @fosterbuster +- [l10n] Improve Slovak (sk-SK) locale (#12949) @stefikp + +#### `@mui/x-data-grid-pro@7.3.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.3.2`. + +#### `@mui/x-data-grid-premium@7.3.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.3.2`, plus: + +- [DataGridPremium] Fix print export not working with row grouping (#12957) @MBilalShafi + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.3.2` + +- [l10n] Improve Hebrew (he-IL) locale (#12910) @michaelNXT1 +- [l10n] Improve Hungarian (hu-HU) locale (#12930) @noherczeg +- [pickers] Fix typo on the `viewRenderers` prop description (#12915) @flaviendelangle +- [pickers] Improve TypeScript performance in `PickersDay` (#12920) @flaviendelangle + +#### `@mui/x-date-pickers-pro@7.3.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.3.2`. + +### Charts + +#### `@mui/x-charts@7.3.2` + +- [charts] Add an overlay for "no data" or "loading" states (#12817) @alexfauquette +- [charts] Fix typos in documentation, translations and errors (#12941) @JCQuintas +- [charts] Fix `prop.slots` and `prop.slotProps` not passed to `` (#12939) @JCQuintas + +### Docs + +- [docs] Improve Data Grid migration guide (#12969) @MBilalShafi +- [docs] Polish references to the plans (#12922) @oliviertassinari + +### Core + +- [core] Fix dependencies (#12951) @LukasTy +- [core] Remove inconsistent blank lines (#12966) @oliviertassinari +- [code-infra] Bump node image used by CI in docker (#12961) @LukasTy +- [docs-infra] Remove no longer needed `next.config` settings (#12861) @oliviertassinari +- [docs-infra] Use the `@mui/docs/HighlightedCode` (#12848) @alexfauquette +- [test] Restore `t` command (#12948) @LukasTy + ## 7.3.1 _Apr 26, 2024_ diff --git a/package.json b/package.json index 0a18c0806883..b66de5e6c9f7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.3.1", + "version": "7.3.2", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 1ff42e78fc9e..bb9bc3a418f7 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.3.1", + "version": "7.3.2", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 744491e626f6..5e5a75b6e3de 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.3.1", + "version": "7.3.2", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 69fa79fb05de..a2e9de4f4367 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.3.1", + "version": "7.3.2", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index de1d196bec2e..02e2c7f79738 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.3.1", + "version": "7.3.2", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index a93f7fdbaa8b..d29ae442762b 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.3.1", + "version": "7.3.2", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 1cab394c29b3..c093cd986277 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.3.1", + "version": "7.3.2", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index a1d7d6dabeb2..70e6ad498b7b 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.3.1", + "version": "7.3.2", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From b5a8fdae28886d1d8cef8c7acbaa0d7a83dffa6f Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Fri, 3 May 2024 14:15:49 +0300 Subject: [PATCH 209/912] [docs] Add accessibility page to TreeView docs (#12845) Signed-off-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Lukas --- docs/data/pages.ts | 1 + .../tree-view/accessibility/accessibility.md | 80 +++++++++++++++++++ docs/pages/x/react-tree-view/accessibility.js | 7 ++ 3 files changed, 88 insertions(+) create mode 100644 docs/data/tree-view/accessibility/accessibility.md create mode 100644 docs/pages/x/react-tree-view/accessibility.js diff --git a/docs/data/pages.ts b/docs/data/pages.ts index fb518feaa82a..85d9e44bf53d 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -496,6 +496,7 @@ const pages: MuiPage[] = [ children: [ { pathname: '/x/react-tree-view', title: 'Overview' }, { pathname: '/x/react-tree-view/getting-started' }, + { pathname: '/x/react-tree-view/accessibility' }, { pathname: '/x/react-tree-view/simple-tree-view', subheader: 'Simple Tree View', diff --git a/docs/data/tree-view/accessibility/accessibility.md b/docs/data/tree-view/accessibility/accessibility.md new file mode 100644 index 000000000000..7f53c06af65c --- /dev/null +++ b/docs/data/tree-view/accessibility/accessibility.md @@ -0,0 +1,80 @@ +--- +productId: x-tree-view +title: Accessibility +githubLabel: 'component: tree view' +waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/ +packageName: '@mui/x-tree-view' +--- + +# Accessibility + +

    The Tree View has complete accessibility support, including built-in keyboard interactions that follow international standards.

    + +## Guidelines + +The most commonly encountered conformance guidelines for accessibility are: + +- Globally accepted standard: [WCAG](https://www.w3.org/WAI/standards-guidelines/wcag/) +- US: + - [ADA](https://www.ada.gov/) - US Department of Justice + - [Section 508](https://www.section508.gov/) - US federal agencies +- Europe: [EAA](https://ec.europa.eu/social/main.jsp?catId=1202) (European Accessibility Act) + +WCAG 2.1 has three levels of conformance: A, AA, and AAA. +Level AA meets the most commonly encountered conformance guidelines. +This is the most common target for organizations, so we aim to support it very well. + +The [WAI-ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/patterns/treeview/) provide valuable information on how to optimize the accessibility of a Tree View. + +## Keyboard interactions + +:::info +The following key assignments apply to Windows and Linux users. + +On macOS replace Ctrl with ⌘ Command. + +::: + +| Keys | Description | +| --------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Enter | Activates the focused item.
    • If item has children, it is expanded or collapsed
    • If the item does not have children, it is selected
    | +| Arrow Up | Moves focus to the previous focusable item, without expanding or collapsing it. | +| Arrow Down | Moves focus to the next focusable item, without expanding or collapsing it. | +| Arrow Right + RTL off
    Arrow Left + RTL on |
    • If focus is on a collapsed item, expands the item without moving focus
    • If focus is on an expanded item, moves focus to the first child
    • If focus is on an end item, nothing happens
    | +| Arrow Left + RTL off
    Arrow Right RTL on |
    • If focus is on an expanded item, collapses the item
    • If focus is on a collapsed item that has a parent, moves focus to its parent
    • If focus is on a root item, nothing happens
    | +| Home | Focuses the first item in the tree | +| End | Focuses the last item in the tree | +| \* | Expands all siblings that are at the same level as the focused item without moving focus. | + +Type-ahead is supported for single characters. When typing a character, focus moves to the next item with a label that starts with the typed character. + +## Selection + +The tree view supports both single and multi-selection. To learn more about the selection API, visit the dedicated page for the [Simple Tree View](/x/react-tree-view/simple-tree-view/selection/) or the [Rich Tree View](/x/react-tree-view/rich-tree-view/selection/). + +To read more about the distinction between selection and focus, you can refer to the [WAI-ARIA Authoring Practices guide](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_focus_vs_selection). + +### On single-select trees + +When a single-select tree receives focus: + +- If none of the items are selected when the tree receives focus, focus is set on the first item. +- If an item is selected before the tree receives focus, focus is set on the selected item. + +### On multi-select trees + +When a multi-select tree receives focus: + +- If none of the items are selected when the tree receives focus, focus is set on the first item. +- If one or more items are selected before the tree receives focus, then focus is set on: + - the first selected item if it is the first render + - the item that was last selected otherwise + +| Keys | Description | +| -----------------------------------------------------------------------------------: | :---------------------------------------------------------------- | +| Space | Toggles the selection state of the focused item. | +| Shift+Arrow Up | Moves focus and toggles the selection state of the previous item. | +| Shift+Arrow Down | Moves focus and toggles the selection state of the next item. | +| Ctrl+Shift+Home | Selects the focused item and all items up to the first item. | +| Ctrl+Shift+End | Selects the focused item and all the items down to the last item. | +| Ctrl+A | Selects all items. | diff --git a/docs/pages/x/react-tree-view/accessibility.js b/docs/pages/x/react-tree-view/accessibility.js new file mode 100644 index 000000000000..455f5b67c996 --- /dev/null +++ b/docs/pages/x/react-tree-view/accessibility.js @@ -0,0 +1,7 @@ +import * as React from 'react'; +import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; +import * as pageProps from 'docsx/data/tree-view/accessibility/accessibility.md?muiMarkdown'; + +export default function Page() { + return ; +} From 02edab4c08bcbdfc4c7db3d3ce191bee8c0d8ea5 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Fri, 3 May 2024 15:12:11 +0200 Subject: [PATCH 210/912] [core] Improve release process docs (#12977) Signed-off-by: Jose C Quintas Jr Co-authored-by: Lukas --- scripts/README.md | 9 ++++++++- scripts/releaseTag.mjs | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/README.md b/scripts/README.md index 61ef45509ef5..930642d967a5 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -38,7 +38,8 @@ In case of a problem, another method to generate the changelog is available at t 3. Update the root `package.json`'s version 4. Update the versions of the other `package.json` files and of the dependencies with `pnpm release:version` (`pnpm release:version prerelease` for alpha / beta releases). 5. Open PR with changes and wait for review and green CI. -6. Merge PR once CI is green, and it has been approved. +6. Once CI is green and you have enough approvals, send a message on the `team-x` slack channel announcing a merge freeze. +7. Merge PR. ### Release the packages @@ -66,6 +67,8 @@ Once deployed, it will be accessible at https://material-ui-x.netlify.app/ for t After documentation is deployed, publish a new release on [GitHub releases page](https://github.com/mui/mui-x/releases) +Create a new release on the newly published tag, then copy/paste the new changes in the changelog while removing the "version" and "date" sections. If in doubt, check the previous release notes. + ### Announce Follow the instructions in https://mui-org.notion.site/Releases-7490ef9581b4447ebdbf86b13164272d. @@ -93,3 +96,7 @@ You can use the following script in your browser console on any GitHub page to a ### Manually create the release tag If the `pnpm release:tag` fails you can create and push the tag using the following command: `git tag -a v4.0.0-alpha.30 -m "Version 4.0.0-alpha.30" && git push upstream --tag`. + +### release:publish failed + +If you receive an error message like `There are no new packages that should be published`. Ensure you are publishing to the correct registry, not `verdaccio` or anything else. If you need to reset your configuration, you can run `npm config delete registry`. diff --git a/scripts/releaseTag.mjs b/scripts/releaseTag.mjs index c265f90a547f..8900370390a2 100644 --- a/scripts/releaseTag.mjs +++ b/scripts/releaseTag.mjs @@ -67,7 +67,7 @@ async function main(argv) { ); } - await exec(['git', 'push', muiXRemote.name, tag].join(' ')); + await exec(['git', 'push', muiXRemote.name, 'tag', tag].join(' ')); // eslint-disable-next-line no-console -- verbose logging console.log( From eea77d754cfdd9871a8c07e05b6a60a6d3714ca0 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Fri, 3 May 2024 15:12:30 +0200 Subject: [PATCH 211/912] [infra] Automation: Add release PR reviewers (#12982) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Jose C Quintas Jr --- .github/workflows/add-release-reviewers.yml | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/add-release-reviewers.yml diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml new file mode 100644 index 000000000000..d46329d994f9 --- /dev/null +++ b/.github/workflows/add-release-reviewers.yml @@ -0,0 +1,37 @@ +name: Add reviewers to release PRs + +on: + pull_request_target: + branches: ['master', 'next'] + types: ['labeled'] + +permissions: {} + +jobs: + add-reviewers: + if: ${{ github.event.label.name == 'release' }} + # Tests that label is added on the PR + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - id: get-members + uses: garnertb/get-team-members@0482f68c88601800f85145570ea93bf8fcfcf46f + with: + org: mui + team_slug: x + role: maintainer + token: ${{ secrets.GITHUB_TOKEN }} + + # assign reviewers + - name: Add reviewer + run: | + curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer " \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + /repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers \ + -d '{"reviewers":[${{ steps.get-members.outputs.members }}]}' \ + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} From 7fe71c7775ca59d1f588569edef4e49823199429 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Fri, 3 May 2024 17:53:31 +0200 Subject: [PATCH 212/912] [infra] Fix automated reviewers assignment workflow (#12986) --- .github/workflows/add-release-reviewers.yml | 32 ++++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index d46329d994f9..44bc6991e401 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -9,29 +9,39 @@ permissions: {} jobs: add-reviewers: - if: ${{ github.event.label.name == 'release' }} # Tests that label is added on the PR + if: ${{ github.event.label.name == 'release' }} runs-on: ubuntu-latest permissions: contents: read + pull-requests: write steps: - id: get-members - uses: garnertb/get-team-members@0482f68c88601800f85145570ea93bf8fcfcf46f - with: - org: mui - team_slug: x - role: maintainer - token: ${{ secrets.GITHUB_TOKEN }} + run: | + DATA=$(gh api \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + /orgs/${{ORG}}/teams/${{TEAM_SLUG}}/members \ + | jq 'reduce inputs as $i (.; . += $i)') \ + | echo "data=$DATA" >> $GITHUB_OUTPUT \ + | echo "members=${{ join(fromJson(DATA).*.login) }}" >> $GITHUB_OUTPUT \ + env: + ORG: ${{ github.event.organization }} + TEAM_SLUG: x + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # assign reviewers - - name: Add reviewer + - id: assign-reviewers run: | curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer " \ + -H "Authorization: Bearer ${{GITHUB_TOKEN}}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ - /repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers \ + https://api.github.com/repos/${{ORG}}/${{REPO}}/pulls/${{PR_NUMBER}}/requested_reviewers \ -d '{"reviewers":[${{ steps.get-members.outputs.members }}]}' \ env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + ORG: ${{ github.event.organization }} + REPO: ${{ github.repository }} + PR_NUMBER: ${{ github.event.pull_request.number }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 9e7bd156399cc8ad552c1fcd37d4116cf0d87cfd Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Sun, 5 May 2024 00:50:00 +0200 Subject: [PATCH 213/912] [infra] Fix automated reviewers assignment workflow - part 2 (#12989) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> --- .github/workflows/add-release-reviewers.yml | 32 +++++++++------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index 44bc6991e401..d9c09de4e35f 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -12,6 +12,11 @@ jobs: # Tests that label is added on the PR if: ${{ github.event.label.name == 'release' }} runs-on: ubuntu-latest + env: + ORG: ${{ github.event.organization }} + # we can use the team slug when making this a reusable workflow + TEAM_SLUG: x + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} permissions: contents: read pull-requests: write @@ -21,27 +26,18 @@ jobs: DATA=$(gh api \ -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ - /orgs/${{ORG}}/teams/${{TEAM_SLUG}}/members \ + /orgs/$ORG/teams/$TEAM_SLUG/members?role=maintainer&per_page=100 \ | jq 'reduce inputs as $i (.; . += $i)') \ - | echo "data=$DATA" >> $GITHUB_OUTPUT \ - | echo "members=${{ join(fromJson(DATA).*.login) }}" >> $GITHUB_OUTPUT \ - env: - ORG: ${{ github.event.organization }} - TEAM_SLUG: x - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + echo "data=$DATA" >> $GITHUB_OUTPUT + echo "members=${{ join(fromJson($DATA).*.login) }}" >> $GITHUB_OUTPUT # assign reviewers - id: assign-reviewers run: | curl -L \ - -X POST \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{GITHUB_TOKEN}}" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/repos/${{ORG}}/${{REPO}}/pulls/${{PR_NUMBER}}/requested_reviewers \ - -d '{"reviewers":[${{ steps.get-members.outputs.members }}]}' \ - env: - ORG: ${{ github.event.organization }} - REPO: ${{ github.repository }} - PR_NUMBER: ${{ github.event.pull_request.number }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $GITHUB_TOKEN" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/$ORG/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers \ + -d '{"reviewers":[${{ steps.get-members.outputs.members }}]}' \ From c51b73db730827c9ebe5d2de5d92762ad7f954f4 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Sun, 5 May 2024 11:57:06 +0200 Subject: [PATCH 214/912] [infra] Fix automated reviewers assignment workflow - part 3 (#13012) --- .github/workflows/add-release-reviewers.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index d9c09de4e35f..aff6ea7ef5bb 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -29,7 +29,6 @@ jobs: /orgs/$ORG/teams/$TEAM_SLUG/members?role=maintainer&per_page=100 \ | jq 'reduce inputs as $i (.; . += $i)') \ echo "data=$DATA" >> $GITHUB_OUTPUT - echo "members=${{ join(fromJson($DATA).*.login) }}" >> $GITHUB_OUTPUT # assign reviewers - id: assign-reviewers @@ -40,4 +39,4 @@ jobs: -H "Authorization: Bearer $GITHUB_TOKEN" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/$ORG/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers \ - -d '{"reviewers":[${{ steps.get-members.outputs.members }}]}' \ + -d '{"reviewers":[${{ join(fromJson(steps.get-members.outputs.data).*.login) }}]}' \ From 4b062fbf78b9b479351a6c4dcc2bd1f89e99d666 Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Mon, 6 May 2024 13:51:47 +0300 Subject: [PATCH 215/912] [pickers] Add optional `id` attribute on shortcut items (#12976) --- docs/pages/x/api/date-pickers/pickers-shortcuts.json | 2 +- .../src/PickersShortcuts/PickersShortcuts.tsx | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/pages/x/api/date-pickers/pickers-shortcuts.json b/docs/pages/x/api/date-pickers/pickers-shortcuts.json index dd402f9066e1..5aff32c05148 100644 --- a/docs/pages/x/api/date-pickers/pickers-shortcuts.json +++ b/docs/pages/x/api/date-pickers/pickers-shortcuts.json @@ -9,7 +9,7 @@ "items": { "type": { "name": "arrayOf", - "description": "Array<{ getValue: func, label: string }>" + "description": "Array<{ getValue: func, id?: string, label: string }>" }, "default": "[]" }, diff --git a/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx b/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx index 85d88255963b..b0b943ef46d1 100644 --- a/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx +++ b/packages/x-date-pickers/src/PickersShortcuts/PickersShortcuts.tsx @@ -12,6 +12,11 @@ interface PickersShortcutsItemGetValueParams { export interface PickersShortcutsItem { label: string; getValue: (params: PickersShortcutsItemGetValueParams) => TValue; + /** + * Identifier of the shortcut. + * If provided, it will be used as the key of the shortcut. + */ + id?: string; } export type PickersShortcutsItemContext = Omit, 'getValue'>; @@ -64,6 +69,7 @@ function PickersShortcuts(props: PickersShortcutsProps) { const newValue = getValue({ isValid }); return { + ...item, label: item.label, onClick: () => { onChange(newValue, changeImportance, item); @@ -87,7 +93,7 @@ function PickersShortcuts(props: PickersShortcutsProps) { > {resolvedItems.map((item) => { return ( - + ); @@ -132,6 +138,7 @@ PickersShortcuts.propTypes = { items: PropTypes.arrayOf( PropTypes.shape({ getValue: PropTypes.func.isRequired, + id: PropTypes.string, label: PropTypes.string.isRequired, }), ), From 7bf36a5837dc3ca285c0d3c469e1540792d32e0d Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 6 May 2024 12:52:55 +0200 Subject: [PATCH 216/912] [infra] changed to usage of reusable workflow (#13017) --- .github/workflows/add-release-reviewers.yml | 39 ++++----------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index aff6ea7ef5bb..1da275d11922 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -8,35 +8,10 @@ on: permissions: {} jobs: - add-reviewers: - # Tests that label is added on the PR - if: ${{ github.event.label.name == 'release' }} - runs-on: ubuntu-latest - env: - ORG: ${{ github.event.organization }} - # we can use the team slug when making this a reusable workflow - TEAM_SLUG: x - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - permissions: - contents: read - pull-requests: write - steps: - - id: get-members - run: | - DATA=$(gh api \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - /orgs/$ORG/teams/$TEAM_SLUG/members?role=maintainer&per_page=100 \ - | jq 'reduce inputs as $i (.; . += $i)') \ - echo "data=$DATA" >> $GITHUB_OUTPUT - - # assign reviewers - - id: assign-reviewers - run: | - curl -L \ - -X POST \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer $GITHUB_TOKEN" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/repos/$ORG/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers \ - -d '{"reviewers":[${{ join(fromJson(steps.get-members.outputs.data).*.login) }}]}' \ + add-reviewers-to-release-pr: + uses: mui/mui-public/.github/workflows/reusable-add-reviewers-to-pr.yml@2e8907ef6d60b6e60c058c110d61bd07c9ae8c43 + with: + team-slug: x + label-name: release + secrets: + token: ${{ secrets.GITHUB_TOKEN }} From f7c7aa518b6ba507e66f656bb6414b5882a862b5 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 6 May 2024 13:33:41 +0200 Subject: [PATCH 217/912] [docs] Fix legal link to EULA free trial (#13013) --- docs/data/introduction/licensing/licensing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/introduction/licensing/licensing.md b/docs/data/introduction/licensing/licensing.md index 13bd5aecba8c..842c3d0cc03c 100644 --- a/docs/data/introduction/licensing/licensing.md +++ b/docs/data/introduction/licensing/licensing.md @@ -98,7 +98,7 @@ For more details on how to install each package, visit the [package installation ## Evaluation (trial) licenses -In accordance with the [End User License Agreement](https://mui.com/r/x-license-trial/), you can use the Pro and Premium components without a commercial license for 30 days for non-production environments. +Per the [End User License Agreement](https://mui.com/legal/mui-x-eula/#evaluation-trial-licenses), you can use the Pro and Premium components without a commercial license for 30 days for non-production environments. You can also use it for the development of code not intended for production (for example the reproduction of an issue, doing a benchmark). You don't need to contact us to use these components for the above cases. From 750c8b9b360cb0ce80cb7e4aa8c82c45931452ac Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 6 May 2024 13:38:32 +0200 Subject: [PATCH 218/912] [core] Prepare React 19 (#12991) --- .../x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx index 2f6766072825..fa67b53ae0f1 100644 --- a/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/rowEditing.DataGridPro.test.tsx @@ -1384,7 +1384,7 @@ describe(' - Row editing', () => { }, [hasFocus, inputRef]); return ( - setInputRef(ref)} data-testid="input" /> + ); } From 733e05c1307dc302fe1142bae2eb6cf51e49cd39 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 6 May 2024 14:32:54 +0200 Subject: [PATCH 219/912] [infra] changed version to use master branch for now (#13022) --- .github/workflows/add-release-reviewers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index 1da275d11922..448037d7a997 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -9,7 +9,7 @@ permissions: {} jobs: add-reviewers-to-release-pr: - uses: mui/mui-public/.github/workflows/reusable-add-reviewers-to-pr.yml@2e8907ef6d60b6e60c058c110d61bd07c9ae8c43 + uses: mui/mui-public/.github/workflows/reusable-add-reviewers-to-pr.yml@master with: team-slug: x label-name: release From dc46ac775d068caeca2d013dba1ce39fa35a51c3 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 6 May 2024 14:47:01 +0200 Subject: [PATCH 220/912] [infra] changed permission for nested workflow (#13024) --- .github/workflows/add-release-reviewers.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index 448037d7a997..b1467befd0db 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -15,3 +15,6 @@ jobs: label-name: release secrets: token: ${{ secrets.GITHUB_TOKEN }} + permissions: + contents: read + pull-requests: write From b6c29381f00e023d20915118aee40e22335074c8 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 6 May 2024 15:17:32 +0200 Subject: [PATCH 221/912] [docs-infra] Fix Netlify PR preview path (#12993) --- docs/public/_redirects | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public/_redirects b/docs/public/_redirects index 5ae696d4b99d..e2f314a49a5b 100644 --- a/docs/public/_redirects +++ b/docs/public/_redirects @@ -1,7 +1,7 @@ / /x/introduction/ 301 /x/ https://mui.com/x/ 302 # Avoid conflicts with the other Next.js apps hosted under https://mui.com/ -/x/_next/* /_next/:splat +/x/_next/* /_next/:splat 200 # For links that we can't edit later on, for example hosted in the code published on npm or sent by email From a3add0b4084f5a89466dade2f671d1339149dd1b Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 6 May 2024 17:01:22 +0200 Subject: [PATCH 222/912] [infra] Changed action target branch (#13029) --- .github/workflows/add-release-reviewers.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/add-release-reviewers.yml b/.github/workflows/add-release-reviewers.yml index b1467befd0db..598b3459f2b1 100644 --- a/.github/workflows/add-release-reviewers.yml +++ b/.github/workflows/add-release-reviewers.yml @@ -9,7 +9,7 @@ permissions: {} jobs: add-reviewers-to-release-pr: - uses: mui/mui-public/.github/workflows/reusable-add-reviewers-to-pr.yml@master + uses: mui/mui-public/.github/workflows/reusable-add-reviewers-to-pr.yml@reviewer-action with: team-slug: x label-name: release From 05c2c21174a800996919066d20ce0d93354bd68c Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Mon, 6 May 2024 20:07:42 +0300 Subject: [PATCH 223/912] [charts] Add `ChartsGrid` to `themeAugmentation` (#13026) --- .../x-charts/src/ChartsGrid/ChartsGrid.tsx | 32 ++++++++++++------- .../src/themeAugmentation/components.d.ts | 4 +++ .../src/themeAugmentation/overrides.d.ts | 2 ++ .../x-charts/src/themeAugmentation/props.d.ts | 2 ++ 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx index c2ce6eac8f21..e91f34ced8f4 100644 --- a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx +++ b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { styled } from '@mui/material/styles'; +import { styled, useThemeProps } from '@mui/material/styles'; import { CartesianContext } from '../context/CartesianContextProvider'; import { useTicks } from '../hooks/useTicks'; @@ -14,13 +14,21 @@ import { const GridRoot = styled('g', { name: 'MuiChartsGrid', slot: 'Root', - overridesResolver: (props, styles) => styles.root, + overridesResolver: (props, styles) => [ + { [`&.${chartsGridClasses.verticalLine}`]: styles.verticalLine }, + { [`&.${chartsGridClasses.horizontalLine}`]: styles.horizontalLine }, + styles.root, + ], +})({}); + +const GridLine = styled('line', { + name: 'MuiChartsGrid', + slot: 'Line', + overridesResolver: (props, styles) => styles.line, })(({ theme }) => ({ - [`& .${chartsGridClasses.line}`]: { - stroke: (theme.vars || theme).palette.divider, - shapeRendering: 'crispEdges', - strokeWidth: 1, - }, + stroke: (theme.vars || theme).palette.divider, + shapeRendering: 'crispEdges', + strokeWidth: 1, })); const useUtilityClasses = ({ classes }: ChartsGridProps) => { @@ -58,10 +66,12 @@ export interface ChartsGridProps { * - [ChartsGrid API](https://mui.com/x/api/charts/charts-axis/) */ function ChartsGrid(props: ChartsGridProps) { - const { vertical, horizontal, ...other } = props; + const themeProps = useThemeProps({ props, name: 'MuiChartsGrid' }); + + const { vertical, horizontal, ...other } = themeProps; const { xAxis, xAxisIds, yAxis, yAxisIds } = React.useContext(CartesianContext); - const classes = useUtilityClasses(props); + const classes = useUtilityClasses(themeProps); const horizontalAxisId = yAxisIds[0]; const verticalAxisId = xAxisIds[0]; @@ -85,7 +95,7 @@ function ChartsGrid(props: ChartsGridProps) { {vertical && xTicks.map(({ formattedValue, offset }) => ( - ( - Date: Mon, 6 May 2024 22:28:29 -0400 Subject: [PATCH 224/912] [DataGrid] Fix: column group change bug (#12965) --- .../features/columnHeaders/useGridColumnHeaders.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index 02e089fcd55e..a18109c0edfb 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -29,6 +29,7 @@ import { gridVisiblePinnedColumnDefinitionsSelector, } from '../columns'; import { GridGroupingStructure } from '../columnGrouping/gridColumnGroupsInterfaces'; +import { gridColumnGroupsUnwrappedModelSelector } from '../columnGrouping/gridColumnGroupsSelector'; import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell'; import { getPinnedCellOffset } from '../../../internals/utils/getPinnedCellOffset'; import { GridColumnHeaderSeparatorSides } from '../../../components/columnHeaders/GridColumnHeaderSeparator'; @@ -98,9 +99,9 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const apiRef = useGridPrivateApiContext(); const theme = useTheme(); const rootProps = useGridRootProps(); - const hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector); - const dimensions = useGridSelector(apiRef, gridDimensionsSelector); + const hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector); + const columnGroupsModel = useGridSelector(apiRef, gridColumnGroupsUnwrappedModelSelector); const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector); const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector); const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector); @@ -347,8 +348,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const rowStructure = columnGroupsHeaderStructure[depth]; const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field; - const firstGroupToRender = - apiRef.current.getColumnGroupPath(firstColumnFieldToRender)[depth] ?? null; + const firstGroupToRender = columnGroupsModel[firstColumnFieldToRender]?.[depth] ?? null; const firstGroupIndex = rowStructure.findIndex( ({ groupId, columnFields }) => @@ -356,8 +356,8 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { ); const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field; - const lastGroupToRender = - apiRef.current.getColumnGroupPath(lastColumnFieldToRender)[depth] ?? null; + const lastGroupToRender = columnGroupsModel[lastColumnFieldToRender]?.[depth] ?? null; + const lastGroupIndex = rowStructure.findIndex( ({ groupId, columnFields }) => groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender), From 3588698841e5e3d9e3c347936248abb89348303f Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 7 May 2024 08:49:08 +0200 Subject: [PATCH 225/912] [TreeView] Fix props propagation and theme entry in `TreeItem2` (#12889) --- packages/x-tree-view/src/TreeItem2/TreeItem2.tsx | 2 +- .../x-tree-view/src/useTreeItem2/useTreeItem2.ts | 15 +++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx index c48addd33328..57450189b31c 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx @@ -130,7 +130,7 @@ export const TreeItem2IconContainer = styled('div', { }); export const TreeItem2GroupTransition = styled(Collapse, { - name: 'MuiTreeItem2GroupTransition', + name: 'MuiTreeItem2', slot: 'GroupTransition', overridesResolver: (props, styles) => styles.groupTransition, })({ diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index fe2dc1e70f76..529824dab333 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -133,10 +133,7 @@ export const useTreeItem2 = = {}>( externalProps: ExternalProps = {} as ExternalProps, ): UseTreeItem2ContentSlotProps => { - const externalEventHandlers = { - ...extractEventHandlers(parameters), - ...extractEventHandlers(externalProps), - }; + const externalEventHandlers = extractEventHandlers(externalProps); return { ...externalEventHandlers, @@ -166,10 +163,7 @@ export const useTreeItem2 = = {}>( externalProps: ExternalProps = {} as ExternalProps, ): UseTreeItemIconContainerSlotProps => { - const externalEventHandlers = { - ...extractEventHandlers(parameters), - ...extractEventHandlers(externalProps), - }; + const externalEventHandlers = extractEventHandlers(externalProps); return { ...externalEventHandlers, @@ -180,10 +174,7 @@ export const useTreeItem2 = = {}>( externalProps: ExternalProps = {} as ExternalProps, ): UseTreeItem2GroupTransitionSlotProps => { - const externalEventHandlers = { - ...extractEventHandlers(parameters), - ...extractEventHandlers(externalProps), - }; + const externalEventHandlers = extractEventHandlers(externalProps); return { ...externalEventHandlers, From 339c34e248dac01dc0970eaa59a244168e815517 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 7 May 2024 14:15:18 +0200 Subject: [PATCH 226/912] [charts] Support rounded corners on `BarChart` (#12834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jose C Quintas Jr Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: José Rodolfo Freitas Co-authored-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Lukas --- docs/data/charts/bars/BorderRadius.js | 102 +++++++--- docs/data/charts/bars/BorderRadius.tsx | 106 +++++++--- .../data/charts/bars/BorderRadius.tsx.preview | 9 - docs/data/charts/bars/bars.md | 17 +- docs/pages/x/api/charts/bar-chart.json | 1 + docs/pages/x/api/charts/bar-plot.json | 1 + .../api-docs/charts/bar-chart/bar-chart.json | 1 + .../api-docs/charts/bar-plot/bar-plot.json | 1 + packages/x-charts/src/BarChart/BarChart.tsx | 6 + .../x-charts/src/BarChart/BarClipPath.tsx | 63 ++++++ packages/x-charts/src/BarChart/BarElement.tsx | 2 + packages/x-charts/src/BarChart/BarPlot.tsx | 154 +++++++++----- .../x-charts/src/BarChart/getRadius.test.ts | 188 ++++++++++++++++++ packages/x-charts/src/BarChart/getRadius.ts | 43 ++++ packages/x-charts/src/BarChart/types.ts | 28 +++ 15 files changed, 587 insertions(+), 135 deletions(-) delete mode 100644 docs/data/charts/bars/BorderRadius.tsx.preview create mode 100644 packages/x-charts/src/BarChart/BarClipPath.tsx create mode 100644 packages/x-charts/src/BarChart/getRadius.test.ts create mode 100644 packages/x-charts/src/BarChart/getRadius.ts create mode 100644 packages/x-charts/src/BarChart/types.ts diff --git a/docs/data/charts/bars/BorderRadius.js b/docs/data/charts/bars/BorderRadius.js index 5d4c25e1a5b8..03864320f950 100644 --- a/docs/data/charts/bars/BorderRadius.js +++ b/docs/data/charts/bars/BorderRadius.js @@ -1,52 +1,90 @@ import * as React from 'react'; import { BarChart } from '@mui/x-charts/BarChart'; import { axisClasses } from '@mui/x-charts/ChartsAxis'; +import Stack from '@mui/material/Stack'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +import Slider from '@mui/material/Slider'; +import Typography from '@mui/material/Typography'; export default function BorderRadius() { + const [layout, setLayout] = React.useState('vertical'); + const [radius, setRadius] = React.useState(10); + return ( -
    + + + + Border Radius + setRadius(v)} + valueLabelDisplay="auto" + min={0} + max={50} + sx={{ mt: 2 }} + /> + + setLayout(event.target.value)} + > + Horizontal + Vertical + + + `].join( + '\n', + )} + language="jsx" + copyButtonHidden /> -
    + ); } const dataset = [ - [59, 57, 86, 21, 'Jan'], - [50, 52, 78, 28, 'Fev'], - [47, 53, 106, 41, 'Mar'], - [54, 56, 92, 73, 'Apr'], - [57, 69, 92, 99, 'May'], - [60, 63, 103, 144, 'June'], - [59, 60, 105, 319, 'July'], - [65, 60, 106, 249, 'Aug'], - [51, 51, 95, 131, 'Sept'], - [60, 65, 97, 55, 'Oct'], - [67, 64, 76, 48, 'Nov'], - [61, 70, 103, 25, 'Dec'], -].map(([london, paris, newYork, seoul, month]) => ({ - london, - paris, - newYork, - seoul, - month, + [3, -7, 'First'], + [0, -5, 'Second'], + [10, 0, 'Third'], + [9, 6, 'Fourth'], +].map(([high, low, order]) => ({ + high, + low, + order, })); - -const valueFormatter = (value) => `${value}mm`; - -const chartSetting = { - series: [{ dataKey: 'seoul', label: 'Seoul rainfall', valueFormatter }], +const chartSettingsH = { + dataset, height: 300, + yAxis: [{ scaleType: 'band', dataKey: 'order' }], sx: { [`& .${axisClasses.directionY} .${axisClasses.label}`]: { transform: 'translateX(-10px)', }, }, + slotProps: { + legend: { + direction: 'row', + position: { vertical: 'bottom', horizontal: 'middle' }, + padding: -5, + }, + }, +}; +const chartSettingsV = { + ...chartSettingsH, + xAxis: [{ scaleType: 'band', dataKey: 'order' }], + yAxis: undefined, }; diff --git a/docs/data/charts/bars/BorderRadius.tsx b/docs/data/charts/bars/BorderRadius.tsx index f171db50d7d9..e1b72ab6feac 100644 --- a/docs/data/charts/bars/BorderRadius.tsx +++ b/docs/data/charts/bars/BorderRadius.tsx @@ -1,52 +1,92 @@ import * as React from 'react'; -import { BarChart } from '@mui/x-charts/BarChart'; +import { BarChart, BarChartProps } from '@mui/x-charts/BarChart'; import { axisClasses } from '@mui/x-charts/ChartsAxis'; +import Stack from '@mui/material/Stack'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; +import TextField from '@mui/material/TextField'; +import MenuItem from '@mui/material/MenuItem'; +import Slider from '@mui/material/Slider'; +import Typography from '@mui/material/Typography'; export default function BorderRadius() { + const [layout, setLayout] = React.useState<'horizontal' | 'vertical'>('vertical'); + const [radius, setRadius] = React.useState(10); + return ( -
    + + + + Border Radius + setRadius(v as number)} + valueLabelDisplay="auto" + min={0} + max={50} + sx={{ mt: 2 }} + /> + + + setLayout(event.target.value as 'horizontal' | 'vertical') + } + > + Horizontal + Vertical + + + `].join( + '\n', + )} + language="jsx" + copyButtonHidden /> -
    + ); } const dataset = [ - [59, 57, 86, 21, 'Jan'], - [50, 52, 78, 28, 'Fev'], - [47, 53, 106, 41, 'Mar'], - [54, 56, 92, 73, 'Apr'], - [57, 69, 92, 99, 'May'], - [60, 63, 103, 144, 'June'], - [59, 60, 105, 319, 'July'], - [65, 60, 106, 249, 'Aug'], - [51, 51, 95, 131, 'Sept'], - [60, 65, 97, 55, 'Oct'], - [67, 64, 76, 48, 'Nov'], - [61, 70, 103, 25, 'Dec'], -].map(([london, paris, newYork, seoul, month]) => ({ - london, - paris, - newYork, - seoul, - month, + [3, -7, 'First'], + [0, -5, 'Second'], + [10, 0, 'Third'], + [9, 6, 'Fourth'], +].map(([high, low, order]) => ({ + high, + low, + order, })); - -const valueFormatter = (value: number | null) => `${value}mm`; - -const chartSetting = { - series: [{ dataKey: 'seoul', label: 'Seoul rainfall', valueFormatter }], +const chartSettingsH: Partial = { + dataset, height: 300, + yAxis: [{ scaleType: 'band', dataKey: 'order' }], sx: { [`& .${axisClasses.directionY} .${axisClasses.label}`]: { transform: 'translateX(-10px)', }, }, + slotProps: { + legend: { + direction: 'row', + position: { vertical: 'bottom', horizontal: 'middle' }, + padding: -5, + }, + }, +}; +const chartSettingsV: Partial = { + ...chartSettingsH, + xAxis: [{ scaleType: 'band', dataKey: 'order' }], + yAxis: undefined, }; diff --git a/docs/data/charts/bars/BorderRadius.tsx.preview b/docs/data/charts/bars/BorderRadius.tsx.preview deleted file mode 100644 index a7254b58c0f2..000000000000 --- a/docs/data/charts/bars/BorderRadius.tsx.preview +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/docs/data/charts/bars/bars.md b/docs/data/charts/bars/bars.md index a3c41180f20c..9ac226e43ddd 100644 --- a/docs/data/charts/bars/bars.md +++ b/docs/data/charts/bars/bars.md @@ -102,25 +102,12 @@ Learn more about the `colorMap` properties in the [Styling docs](/x/react-charts ### Border Radius -The border radius can be set by using a [clipPath](https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path) with -[inset](https://developer.mozilla.org/en-US/docs/Web/CSS/basic-shape/inset) on the BarChart's `bar` [slot](/x/api/charts/bar-chart/#bar-chart-prop-slots) +To give your bar chart rounded corners, you can change the value of the `borderRadius` property on the [BarChart](/x/api/charts/bar-chart/#bar-chart-prop-slots). -You can customize any of properties inside `inset`, the first property is "distance from border" and should be left at `0px` else it might break the bars alignment. - -```css -inset(0px round ) -``` +It will work with any positive value and will be properly applied to horizontal layouts, stacks and negative values. {{"demo": "BorderRadius.js"}} -:::warning -There are few limitations to this method though. - -- [Stacking](/x/react-charts/bars/#stacking) won't look right with border radius. -- On charts containing `Negative` and `Positive` values, rounding will apply to all of them in the same way, which might be undesirable. - -::: - ## Click event Bar charts provides two click handlers: diff --git a/docs/pages/x/api/charts/bar-chart.json b/docs/pages/x/api/charts/bar-chart.json index 5e16516b000a..c371698b721d 100644 --- a/docs/pages/x/api/charts/bar-chart.json +++ b/docs/pages/x/api/charts/bar-chart.json @@ -14,6 +14,7 @@ "text": "highlight docs" } }, + "borderRadius": { "type": { "name": "number" } }, "bottomAxis": { "type": { "name": "union", "description": "object
    | string" }, "default": "xAxisIds[0] The id of the first provided axis" diff --git a/docs/pages/x/api/charts/bar-plot.json b/docs/pages/x/api/charts/bar-plot.json index a5f557a11a20..51afe2f2a2d1 100644 --- a/docs/pages/x/api/charts/bar-plot.json +++ b/docs/pages/x/api/charts/bar-plot.json @@ -1,5 +1,6 @@ { "props": { + "borderRadius": { "type": { "name": "number" } }, "onItemClick": { "type": { "name": "func" }, "signature": { diff --git a/docs/translations/api-docs/charts/bar-chart/bar-chart.json b/docs/translations/api-docs/charts/bar-chart/bar-chart.json index ee7dd914cfdb..88dc2317541f 100644 --- a/docs/translations/api-docs/charts/bar-chart/bar-chart.json +++ b/docs/translations/api-docs/charts/bar-chart/bar-chart.json @@ -5,6 +5,7 @@ "description": "The configuration of axes highlight. Default is set to 'band' in the bar direction. Depends on layout prop.", "seeMoreText": "See {{link}} for more details." }, + "borderRadius": { "description": "Defines the border radius of the bar element." }, "bottomAxis": { "description": "Indicate which axis to display the bottom of the charts. Can be a string (the id of the axis) or an object ChartsXAxisProps." }, diff --git a/docs/translations/api-docs/charts/bar-plot/bar-plot.json b/docs/translations/api-docs/charts/bar-plot/bar-plot.json index 73f953ae9315..b56710ba45b2 100644 --- a/docs/translations/api-docs/charts/bar-plot/bar-plot.json +++ b/docs/translations/api-docs/charts/bar-plot/bar-plot.json @@ -1,6 +1,7 @@ { "componentDescription": "", "propDescriptions": { + "borderRadius": { "description": "Defines the border radius of the bar element." }, "onItemClick": { "description": "Callback fired when a bar item is clicked.", "typeDescriptions": { diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 78d7ed64dcac..b67cca32b75f 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -131,6 +131,7 @@ const BarChart = React.forwardRef(function BarChart(props: BarChartProps, ref) { rightAxis, bottomAxis, skipAnimation, + borderRadius, onItemClick, onAxisClick, children, @@ -195,6 +196,7 @@ const BarChart = React.forwardRef(function BarChart(props: BarChartProps, ref) { slotProps={slotProps} skipAnimation={skipAnimation} onItemClick={onItemClick} + borderRadius={borderRadius} /> @@ -230,6 +232,10 @@ BarChart.propTypes = { x: PropTypes.oneOf(['band', 'line', 'none']), y: PropTypes.oneOf(['band', 'line', 'none']), }), + /** + * Defines the border radius of the bar element. + */ + borderRadius: PropTypes.number, /** * Indicate which axis to display the bottom of the charts. * Can be a string (the id of the axis) or an object `ChartsXAxisProps`. diff --git a/packages/x-charts/src/BarChart/BarClipPath.tsx b/packages/x-charts/src/BarChart/BarClipPath.tsx new file mode 100644 index 000000000000..b42d1015d7ea --- /dev/null +++ b/packages/x-charts/src/BarChart/BarClipPath.tsx @@ -0,0 +1,63 @@ +import * as React from 'react'; +import { SpringValue, animated } from '@react-spring/web'; +import { getRadius } from './getRadius'; + +const buildInset = (corners: { + topLeft: number; + topRight: number; + bottomRight: number; + bottomLeft: number; +}) => + `inset(0px round ${corners.topLeft}px ${corners.topRight}px ${corners.bottomRight}px ${corners.bottomLeft}px)`; + +function BarClipRect(props: Record) { + const radiusData = props.ownerState; + + return ( + + ).to((value) => + buildInset({ + topLeft: Math.min(value, getRadius('top-left', radiusData)), + topRight: Math.min(value, getRadius('top-right', radiusData)), + bottomRight: Math.min(value, getRadius('bottom-right', radiusData)), + bottomLeft: Math.min(value, getRadius('bottom-left', radiusData)), + }), + ), + }} + /> + ); +} + +export interface BarClipPathProps { + maskId: string; + borderRadius?: number; + hasNegative: boolean; + hasPositive: boolean; + layout?: 'vertical' | 'horizontal'; + style: {}; +} + +/** + * @ignore - internal component. + */ +function BarClipPath(props: BarClipPathProps) { + const { style, maskId, ...rest } = props; + + if (!props.borderRadius || props.borderRadius <= 0) { + return null; + } + + return ( + + + + ); +} + +export { BarClipPath }; diff --git a/packages/x-charts/src/BarChart/BarElement.tsx b/packages/x-charts/src/BarChart/BarElement.tsx index 74c9249b8357..247e1b0344ab 100644 --- a/packages/x-charts/src/BarChart/BarElement.tsx +++ b/packages/x-charts/src/BarChart/BarElement.tsx @@ -131,6 +131,7 @@ function BarElement(props: BarElementProps) { const classes = useUtilityClasses(ownerState); const Bar = slots?.bar ?? BarElementPath; + const barProps = useSlotProps({ elementType: Bar, externalSlotProps: slotProps?.bar, @@ -144,6 +145,7 @@ function BarElement(props: BarElementProps) { }, ownerState, }); + return ; } diff --git a/packages/x-charts/src/BarChart/BarPlot.tsx b/packages/x-charts/src/BarChart/BarPlot.tsx index 4fc7befb51cf..2d51d448006c 100644 --- a/packages/x-charts/src/BarChart/BarPlot.tsx +++ b/packages/x-charts/src/BarChart/BarPlot.tsx @@ -6,11 +6,12 @@ import { CartesianContext } from '../context/CartesianContextProvider'; import { BarElement, BarElementProps, BarElementSlotProps, BarElementSlots } from './BarElement'; import { AxisDefaultized, isBandScaleConfig, isPointScaleConfig } from '../models/axis'; import { FormatterResult } from '../models/seriesType/config'; -import { HighlightScope } from '../context/HighlightProvider'; -import { BarItemIdentifier, BarSeriesType } from '../models'; +import { BarItemIdentifier } from '../models'; import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants'; -import { SeriesId } from '../models/seriesType/common'; import getColor from './getColor'; +import { useChartId } from '../hooks'; +import { AnimationData, CompletedBarData, MaskData } from './types'; +import { BarClipPath } from './BarClipPath'; /** * Solution of the equations @@ -63,33 +64,29 @@ export interface BarPlotProps extends Pick, barItemIdentifier: BarItemIdentifier, ) => void; + /** + * Defines the border radius of the bar element. + */ + borderRadius?: number; } -interface CompletedBarData { - seriesId: SeriesId; - dataIndex: number; - layout: BarSeriesType['layout']; - x: number; - y: number; - xOrigin: number; - yOrigin: number; - height: number; - width: number; - color: string; - highlightScope?: Partial; -} - -const useAggregatedData = (): CompletedBarData[] => { +const useAggregatedData = (): { + completedData: CompletedBarData[]; + masksData: MaskData[]; +} => { const seriesData = React.useContext(SeriesContext).bar ?? ({ series: {}, stackingGroups: [], seriesOrder: [] } as FormatterResult<'bar'>); const axisData = React.useContext(CartesianContext); + const chartId = useChartId(); const { series, stackingGroups } = seriesData; const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; const defaultXAxisId = xAxisIds[0]; const defaultYAxisId = yAxisIds[0]; + const masks: Record = {}; + const data = stackingGroups.flatMap(({ ids: groupIds }, groupIndex) => { return groupIds.flatMap((seriesId) => { const xAxisKey = series[seriesId].xAxisKey ?? defaultXAxisId; @@ -183,13 +180,15 @@ const useAggregatedData = (): CompletedBarData[] => { const minValueCoord = Math.round(Math.min(...valueCoordinates)); const maxValueCoord = Math.round(Math.max(...valueCoordinates)); - return { + const stackId = series[seriesId].stack; + + const result = { seriesId, dataIndex, layout: series[seriesId].layout, x: verticalLayout ? xScale(xAxis[xAxisKey].data?.[dataIndex])! + barOffset - : minValueCoord!, + : minValueCoord, y: verticalLayout ? minValueCoord : yScale(yAxis[yAxisKey].data?.[dataIndex])! + barOffset, @@ -199,15 +198,45 @@ const useAggregatedData = (): CompletedBarData[] => { width: verticalLayout ? barWidth : maxValueCoord - minValueCoord, color: colorGetter(dataIndex), highlightScope: series[seriesId].highlightScope, + value: series[seriesId].data[dataIndex], + maskId: `${chartId}_${stackId || seriesId}_${groupIndex}_${dataIndex}`, }; + + if (!masks[result.maskId]) { + masks[result.maskId] = { + id: result.maskId, + width: 0, + height: 0, + hasNegative: false, + hasPositive: false, + layout: result.layout, + xOrigin: xScale(0)!, + yOrigin: yScale(0)!, + x: 0, + y: 0, + }; + } + + const mask = masks[result.maskId]; + mask.width = result.layout === 'vertical' ? result.width : mask.width + result.width; + mask.height = result.layout === 'vertical' ? mask.height + result.height : result.height; + mask.x = Math.min(mask.x === 0 ? Infinity : mask.x, result.x); + mask.y = Math.min(mask.y === 0 ? Infinity : mask.y, result.y); + mask.hasNegative = mask.hasNegative || (result.value ?? 0) < 0; + mask.hasPositive = mask.hasPositive || (result.value ?? 0) > 0; + + return result; }); }); }); - return data; + return { + completedData: data, + masksData: Object.values(masks), + }; }; -const getOutStyle = ({ layout, yOrigin, x, width, y, xOrigin, height }: CompletedBarData) => ({ +const leaveStyle = ({ layout, yOrigin, x, width, y, xOrigin, height }: AnimationData) => ({ ...(layout === 'vertical' ? { y: yOrigin, @@ -223,7 +252,7 @@ const getOutStyle = ({ layout, yOrigin, x, width, y, xOrigin, height }: Complete }), }); -const getInStyle = ({ x, width, y, height }: CompletedBarData) => ({ +const enterStyle = ({ x, width, y, height }: AnimationData) => ({ y, x, height, @@ -242,35 +271,64 @@ const getInStyle = ({ x, width, y, height }: CompletedBarData) => ({ * - [BarPlot API](https://mui.com/x/api/charts/bar-plot/) */ function BarPlot(props: BarPlotProps) { - const completedData = useAggregatedData(); - const { skipAnimation, onItemClick, ...other } = props; - + const { completedData, masksData } = useAggregatedData(); + const { skipAnimation, onItemClick, borderRadius, ...other } = props; const transition = useTransition(completedData, { keys: (bar) => `${bar.seriesId}-${bar.dataIndex}`, - from: getOutStyle, - leave: getOutStyle, - enter: getInStyle, - update: getInStyle, + from: leaveStyle, + leave: leaveStyle, + enter: enterStyle, + update: enterStyle, + immediate: skipAnimation, + }); + + const maskTransition = useTransition(masksData, { + keys: (v) => v.id, + from: leaveStyle, + leave: leaveStyle, + enter: enterStyle, + update: enterStyle, immediate: skipAnimation, }); + return ( - {transition((style, { seriesId, dataIndex, color, highlightScope }) => ( - { - onItemClick(event, { type: 'bar', seriesId, dataIndex }); - }) - } - style={style} - /> - ))} + {maskTransition((style, { id, hasPositive, hasNegative, layout }) => { + return ( + + ); + })} + {transition((style, { seriesId, dataIndex, color, highlightScope, maskId }) => { + const barElement = ( + { + onItemClick(event, { type: 'bar', seriesId, dataIndex }); + }) + } + style={style} + /> + ); + + if (!borderRadius || borderRadius <= 0) { + return barElement; + } + + return {barElement}; + })} ); } @@ -280,6 +338,10 @@ BarPlot.propTypes = { // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "yarn proptypes" | // ---------------------------------------------------------------------- + /** + * Defines the border radius of the bar element. + */ + borderRadius: PropTypes.number, /** * Callback fired when a bar item is clicked. * @param {React.MouseEvent} event The event source of the callback. diff --git a/packages/x-charts/src/BarChart/getRadius.test.ts b/packages/x-charts/src/BarChart/getRadius.test.ts new file mode 100644 index 000000000000..461bfa3a47d2 --- /dev/null +++ b/packages/x-charts/src/BarChart/getRadius.test.ts @@ -0,0 +1,188 @@ +import { expect } from 'chai'; +import { getRadius } from './getRadius'; + +describe('getRadius', () => { + it('should return 0 if borderRadius is not provided', () => { + expect( + getRadius('top-left', { hasNegative: false, hasPositive: false, borderRadius: 0 }), + ).to.equal(0); + expect( + getRadius('top-left', { hasNegative: true, hasPositive: true, borderRadius: 0 }), + ).to.equal(0); + expect( + getRadius('top-left', { hasNegative: true, hasPositive: true, borderRadius: undefined }), + ).to.equal(0); + }); + + // ╔═─┐ + // │ │ + // └──┘ + it('should return borderRadius for top-left on vertical layout', () => { + expect( + getRadius('top-left', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(10); + expect( + getRadius('top-left', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(0); + }); + + // ╔═──┐ + // └───┘ + it('should return borderRadius for top-left on horizontal layout', () => { + expect( + getRadius('top-left', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(0); + expect( + getRadius('top-left', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(10); + }); + + // ┌─═╗ + // │ │ + // └──┘ + it('should return borderRadius for top-right on vertical layout', () => { + expect( + getRadius('top-right', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(10); + expect( + getRadius('top-right', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(0); + }); + + // ┌──═╗ + // └───┘ + it('should return borderRadius for top-right on horizontal layout', () => { + expect( + getRadius('top-right', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(10); + expect( + getRadius('top-right', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(0); + }); + + // ┌──┐ + // │ │ + // ╚═─┘ + it('should return borderRadius for bottom-right on vertical layout', () => { + expect( + getRadius('bottom-right', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(0); + expect( + getRadius('bottom-right', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(10); + }); + + // ┌───┐ + // ╚═──┘ + it('should return borderRadius for bottom-right on horizontal layout', () => { + expect( + getRadius('bottom-right', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(10); + expect( + getRadius('bottom-right', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(0); + }); + + // ┌──┐ + // │ │ + // └─═╝ + it('should return borderRadius for bottom-left on vertical layout', () => { + expect( + getRadius('bottom-left', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(0); + expect( + getRadius('bottom-left', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'vertical', + }), + ).to.equal(10); + }); + + // ┌───┐ + // └──═╝ + it('should return borderRadius for bottom-left on horizontal layout', () => { + expect( + getRadius('bottom-left', { + hasNegative: false, + hasPositive: true, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(0); + expect( + getRadius('bottom-left', { + hasNegative: true, + hasPositive: false, + borderRadius: 10, + layout: 'horizontal', + }), + ).to.equal(10); + }); +}); diff --git a/packages/x-charts/src/BarChart/getRadius.ts b/packages/x-charts/src/BarChart/getRadius.ts new file mode 100644 index 000000000000..a9ad96230720 --- /dev/null +++ b/packages/x-charts/src/BarChart/getRadius.ts @@ -0,0 +1,43 @@ +type GetRadiusData = { + hasNegative: boolean; + hasPositive: boolean; + borderRadius?: number; + layout?: 'vertical' | 'horizontal'; +}; + +type GetRadiusCorner = 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left'; + +/** + * Returns if the corner should have a radius or not based on the layout and the data. + * @param {GetRadiusCorner} corner The corner to check. + * @param {GetRadiusData} cornerData The data for the corner. + * @returns {number} The radius for the corner. + */ +export const getRadius = ( + corner: GetRadiusCorner, + { hasNegative, hasPositive, borderRadius, layout }: GetRadiusData, +): number => { + if (!borderRadius) { + return 0; + } + + const isVertical = layout === 'vertical'; + + if (corner === 'top-left' && ((isVertical && hasPositive) || (!isVertical && hasNegative))) { + return borderRadius; + } + + if (corner === 'top-right' && ((isVertical && hasPositive) || (!isVertical && hasPositive))) { + return borderRadius; + } + + if (corner === 'bottom-right' && ((isVertical && hasNegative) || (!isVertical && hasPositive))) { + return borderRadius; + } + + if (corner === 'bottom-left' && ((isVertical && hasNegative) || (!isVertical && hasNegative))) { + return borderRadius; + } + + return 0; +}; diff --git a/packages/x-charts/src/BarChart/types.ts b/packages/x-charts/src/BarChart/types.ts new file mode 100644 index 000000000000..e72cdaea18eb --- /dev/null +++ b/packages/x-charts/src/BarChart/types.ts @@ -0,0 +1,28 @@ +import type { HighlightScope } from '../context'; +import type { BarSeriesType } from '../models'; +import type { SeriesId } from '../models/seriesType/common'; + +export type AnimationData = { + x: number; + y: number; + width: number; + height: number; + yOrigin: number; + xOrigin: number; + layout: BarSeriesType['layout']; +}; + +export interface CompletedBarData extends AnimationData { + seriesId: SeriesId; + dataIndex: number; + color: string; + value: number | null; + highlightScope?: Partial; + maskId: string; +} + +export interface MaskData extends AnimationData { + id: string; + hasNegative: boolean; + hasPositive: boolean; +} From 841b482756c15ed42ed19a48b6e638e05f1565cb Mon Sep 17 00:00:00 2001 From: Ou/Olly Kunanan Tassuwan Date: Wed, 8 May 2024 02:15:19 +0700 Subject: [PATCH 227/912] [DataGrid] Fix throw error with onBlur at SVG element (#13028) --- packages/x-data-grid/src/hooks/features/focus/useGridFocus.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/x-data-grid/src/hooks/features/focus/useGridFocus.ts b/packages/x-data-grid/src/hooks/features/focus/useGridFocus.ts index f39ae2f3a973..fb01b27c54e8 100644 --- a/packages/x-data-grid/src/hooks/features/focus/useGridFocus.ts +++ b/packages/x-data-grid/src/hooks/features/focus/useGridFocus.ts @@ -331,7 +331,7 @@ export const useGridFocus = ( const handleBlur = React.useCallback>( (_, event) => { - if (event.relatedTarget?.className.includes(gridClasses.columnHeader)) { + if (event.relatedTarget?.getAttribute('class')?.includes(gridClasses.columnHeader)) { return; } logger.debug(`Clearing focus`); From 8cb2079fabc4b107058bf166430a8a6b91e8f2cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:24:43 +0300 Subject: [PATCH 228/912] Bump @mui/monorepo digest to efba47d (#12931) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index b66de5e6c9f7..d42d4b9fb7ce 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@mui/icons-material": "^5.15.14", "@mui/internal-markdown": "^1.0.3", "@mui/material": "^5.15.14", - "@mui/monorepo": "github:mui/material-ui#afffc2ffc3db1e6abf48f3b3e13a41e8b758f874", + "@mui/monorepo": "github:mui/material-ui#efba47d9ff7c65b83643447dd3b610d27ec1c4f0", "@mui/utils": "^5.15.14", "@next/eslint-plugin-next": "14.2.3", "@octokit/plugin-retry": "^6.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68b2d9682cb8..37e8a35fd986 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,8 +93,8 @@ importers: specifier: ^5.15.14 version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) '@mui/monorepo': - specifier: github:mui/material-ui#afffc2ffc3db1e6abf48f3b3e13a41e8b758f874 - version: github.com/mui/material-ui/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874 + specifier: github:mui/material-ui#efba47d9ff7c65b83643447dd3b610d27ec1c4f0 + version: github.com/mui/material-ui/efba47d9ff7c65b83643447dd3b610d27ec1c4f0 '@mui/utils': specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) @@ -4743,8 +4743,8 @@ packages: resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} dev: true - /@slack/bolt@3.17.1: - resolution: {integrity: sha512-N+4WxpkM59RXi7BL3IXUtENnn9cF7TOBn7ttaHpgvlnjUaro+yQyY60arXTlP4ytVDFJ1w0mSdfftcM17h+i2w==} + /@slack/bolt@3.18.0: + resolution: {integrity: sha512-A7bDi5kY50fS6/nsmURkQdO3iMxD8aX/rA+m1UXEM2ue2z4KijeQtx2sOZ4YkJQ/h7BsgTQM0CYh3qqmo+m5sQ==} engines: {node: '>=12.13.0', npm: '>=6.12.0'} dependencies: '@slack/logger': 4.0.0 @@ -18095,15 +18095,15 @@ packages: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: true - github.com/mui/material-ui/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874: - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/afffc2ffc3db1e6abf48f3b3e13a41e8b758f874} + github.com/mui/material-ui/efba47d9ff7c65b83643447dd3b610d27ec1c4f0: + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/efba47d9ff7c65b83643447dd3b610d27ec1c4f0} name: '@mui/monorepo' - version: 6.0.0-alpha.4 + version: 6.0.0-alpha.5 requiresBuild: true dependencies: '@googleapis/sheets': 5.0.5 '@netlify/functions': 2.6.0 - '@slack/bolt': 3.17.1 + '@slack/bolt': 3.18.0 execa: 8.0.1 google-auth-library: 9.9.0 transitivePeerDependencies: From 26df2d7c1609f90504b57ea1e75d756ee69ec0d8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:25:29 +0300 Subject: [PATCH 229/912] Bump @types/chai to ^4.3.16 (#12995) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- test/package.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index d42d4b9fb7ce..d8109b374b2c 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@playwright/test": "^1.43.1", "@testing-library/react": "^14.2.1", "@types/babel__core": "^7.20.5", - "@types/chai": "^4.3.14", + "@types/chai": "^4.3.16", "@types/chai-dom": "^1.11.3", "@types/enzyme": "3.10.12", "@types/fs-extra": "^11.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37e8a35fd986..1fe7838bcb31 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,8 +117,8 @@ importers: specifier: ^7.20.5 version: 7.20.5 '@types/chai': - specifier: ^4.3.14 - version: 4.3.14 + specifier: ^4.3.16 + version: 4.3.16 '@types/chai-dom': specifier: ^1.11.3 version: 1.11.3 @@ -1300,8 +1300,8 @@ importers: specifier: ^9.7.3 version: 9.7.3(react-dom@18.2.0)(react@18.2.0) '@types/chai': - specifier: ^4.3.14 - version: 4.3.14 + specifier: ^4.3.16 + version: 4.3.16 '@types/prop-types': specifier: ^15.7.11 version: 15.7.11 @@ -4970,11 +4970,11 @@ packages: /@types/chai-dom@1.11.3: resolution: {integrity: sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==} dependencies: - '@types/chai': 4.3.14 + '@types/chai': 4.3.16 dev: true - /@types/chai@4.3.14: - resolution: {integrity: sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==} + /@types/chai@4.3.16: + resolution: {integrity: sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==} dev: true /@types/chance@1.1.6: diff --git a/test/package.json b/test/package.json index f2376ef54e34..a3918e666a52 100644 --- a/test/package.json +++ b/test/package.json @@ -16,7 +16,7 @@ "@mui/x-date-pickers-pro": "workspace:*", "@react-spring/web": "^9.7.3", "@playwright/test": "^1.43.1", - "@types/chai": "^4.3.14", + "@types/chai": "^4.3.16", "@types/prop-types": "^15.7.11", "@types/react": "^18.2.60", "chai": "^4.4.1", From aba698e1fea6232a5f0555413299e376a8d36d36 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:25:53 +0300 Subject: [PATCH 230/912] Bump @types/eslint to ^8.56.10 (#12996) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/eslint-plugin-material-ui/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index cf8737248c0a..c483d7604956 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -5,7 +5,7 @@ "description": "Custom eslint rules for MUI X.", "main": "src/index.js", "devDependencies": { - "@types/eslint": "^8.56.5", + "@types/eslint": "^8.56.10", "@typescript-eslint/utils": "^7.8.0", "@typescript-eslint/parser": "^7.8.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1fe7838bcb31..c9ef716cadc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -667,8 +667,8 @@ importers: packages/eslint-plugin-material-ui: devDependencies: '@types/eslint': - specifier: ^8.56.5 - version: 8.56.7 + specifier: ^8.56.10 + version: 8.56.10 '@typescript-eslint/parser': specifier: ^7.8.0 version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) @@ -5051,11 +5051,11 @@ packages: /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.56.7 + '@types/eslint': 8.56.10 '@types/estree': 1.0.5 - /@types/eslint@8.56.7: - resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==} + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 From 275b6c8fae65abba318767ee6bf302e374052b37 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:26:29 +0300 Subject: [PATCH 231/912] Bump @types/lodash to ^4.17.1 (#12997) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/package.json b/docs/package.json index 94a999391e0c..3f3d8fe4d7e4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -102,7 +102,7 @@ "@mui/internal-scripts": "^1.0.3", "@types/d3-scale": "^4.0.8", "@types/doctrine": "^0.0.9", - "@types/lodash": "^4.14.202", + "@types/lodash": "^4.17.1", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/react-dom": "18.2.19", diff --git a/package.json b/package.json index d8109b374b2c..0907b783594d 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "@types/chai-dom": "^1.11.3", "@types/enzyme": "3.10.12", "@types/fs-extra": "^11.0.4", - "@types/lodash": "^4.17.0", + "@types/lodash": "^4.17.1", "@types/mocha": "^10.0.6", "@types/node": "^18.19.31", "@types/prettier": "^2.7.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9ef716cadc1..06c9f76a5f02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,8 +129,8 @@ importers: specifier: ^11.0.4 version: 11.0.4 '@types/lodash': - specifier: ^4.17.0 - version: 4.17.0 + specifier: ^4.17.1 + version: 4.17.1 '@types/mocha': specifier: ^10.0.6 version: 10.0.6 @@ -637,8 +637,8 @@ importers: specifier: ^0.0.9 version: 0.0.9 '@types/lodash': - specifier: ^4.14.202 - version: 4.17.0 + specifier: ^4.17.1 + version: 4.17.1 '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -5150,8 +5150,8 @@ packages: '@types/node': 18.19.31 dev: true - /@types/lodash@4.17.0: - resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + /@types/lodash@4.17.1: + resolution: {integrity: sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q==} dev: true /@types/lru-cache@7.10.10: From 91dfb36000a3a2ae6b3a488f61748e652dc5fb38 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:31:25 +0300 Subject: [PATCH 232/912] Bump autoprefixer to ^10.4.19 (#13001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/package.json b/docs/package.json index 3f3d8fe4d7e4..1c1a125780e2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -45,7 +45,7 @@ "@mui/x-tree-view": "workspace:*", "@react-spring/web": "^9.7.3", "ast-types": "^0.14.2", - "autoprefixer": "^10.4.18", + "autoprefixer": "^10.4.19", "babel-plugin-module-resolver": "^5.0.0", "babel-plugin-optimize-clsx": "^2.6.2", "babel-plugin-preval": "^5.1.0", diff --git a/package.json b/package.json index 0907b783594d..ce5dd5f560c1 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "@types/yargs": "^17.0.32", "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.8.0", - "autoprefixer": "^10.4.18", + "autoprefixer": "^10.4.19", "axe-core": "4.8.4", "babel-loader": "^9.1.3", "babel-plugin-istanbul": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06c9f76a5f02..2676e3774a12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,7 +165,7 @@ importers: specifier: ^7.8.0 version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) autoprefixer: - specifier: ^10.4.18 + specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) axe-core: specifier: 4.8.4 @@ -471,7 +471,7 @@ importers: specifier: ^0.14.2 version: 0.14.2 autoprefixer: - specifier: ^10.4.18 + specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) babel-plugin-module-resolver: specifier: ^5.0.0 From decdc78f9207ff1e17b43892b8cb821f43aefa4c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:38:39 +0300 Subject: [PATCH 233/912] Bump markdown-to-jsx to ^7.4.7 (#13006) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/package.json b/docs/package.json index 1c1a125780e2..d65812d3e15e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -67,7 +67,7 @@ "lodash": "^4.17.21", "luxon": "^3.4.4", "lz-string": "^1.5.0", - "markdown-to-jsx": "^7.4.1", + "markdown-to-jsx": "^7.4.7", "marked": "^5.1.2", "moment": "^2.30.1", "moment-hijri": "^2.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2676e3774a12..a3990a7e2962 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -537,8 +537,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 markdown-to-jsx: - specifier: ^7.4.1 - version: 7.4.1(react@18.2.0) + specifier: ^7.4.7 + version: 7.4.7(react@18.2.0) marked: specifier: ^5.1.2 version: 5.1.2 @@ -12711,8 +12711,8 @@ packages: uc.micro: 2.1.0 dev: true - /markdown-to-jsx@7.4.1(react@18.2.0): - resolution: {integrity: sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==} + /markdown-to-jsx@7.4.7(react@18.2.0): + resolution: {integrity: sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' From b1e11f5f1a03e86f0ae586ff0ea44b223fc31bab Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 12:39:05 +0300 Subject: [PATCH 234/912] Bump moment-timezone to ^0.5.45 (#13007) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/x-codemod/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- pnpm-lock.yaml | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ce5dd5f560c1..66cb90953cb0 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,7 @@ "markdownlint-cli2": "^0.13.0", "mocha": "^10.4.0", "moment": "^2.30.1", - "moment-timezone": "^0.5.44", + "moment-timezone": "^0.5.45", "nyc": "^15.1.0", "prettier": "^3.2.5", "pretty-quick": "^4.0.0", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 3ab816eba7c2..d6d7fc6e6d34 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -42,7 +42,7 @@ "devDependencies": { "@types/jscodeshift": "^0.11.5", "dayjs": "^1.11.10", - "moment-timezone": "^0.5.44", + "moment-timezone": "^0.5.45", "rimraf": "^5.0.5" }, "sideEffects": false, diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 70e6ad498b7b..922edcb85642 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -109,7 +109,7 @@ "moment": "^2.30.1", "moment-hijri": "^2.1.2", "moment-jalaali": "^0.10.0", - "moment-timezone": "^0.5.44", + "moment-timezone": "^0.5.45", "rimraf": "^5.0.5" }, "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3990a7e2962..9ab9ab3e877c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -327,7 +327,7 @@ importers: specifier: ^2.30.1 version: 2.30.1 moment-timezone: - specifier: ^0.5.44 + specifier: ^0.5.45 version: 0.5.45 nyc: specifier: ^15.1.0 @@ -793,7 +793,7 @@ importers: specifier: ^1.11.10 version: 1.11.10 moment-timezone: - specifier: ^0.5.44 + specifier: ^0.5.45 version: 0.5.45 rimraf: specifier: ^5.0.5 @@ -1064,7 +1064,7 @@ importers: specifier: ^0.10.0 version: 0.10.0 moment-timezone: - specifier: ^0.5.44 + specifier: ^0.5.45 version: 0.5.45 rimraf: specifier: ^5.0.5 From 138f8ce08b6a51e16ffc3a10a97717bba12c457d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:27:29 +0300 Subject: [PATCH 235/912] Bump pnpm to 8.15.8 (#13008) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 66cb90953cb0..44e188930bf5 100644 --- a/package.json +++ b/package.json @@ -192,7 +192,7 @@ "react-is": "^18.2.0", "@types/node": "^18.19.31" }, - "packageManager": "pnpm@8.15.1", + "packageManager": "pnpm@8.15.8", "pnpm": { "patchedDependencies": { "date-fns-jalali@2.13.0-0": "patches/date-fns-jalali@2.13.0-0.patch", From 0896c58c07699a1a56df199f4d86c61dc61c8983 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:28:11 +0300 Subject: [PATCH 236/912] Bump dayjs to ^1.11.11 (#13004) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/x-codemod/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- pnpm-lock.yaml | 26 ++++++++++++------------ test/package.json | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/package.json b/docs/package.json index d65812d3e15e..cc6083a737b5 100644 --- a/docs/package.json +++ b/docs/package.json @@ -59,7 +59,7 @@ "cross-env": "^7.0.3", "date-fns": "^2.30.0", "date-fns-jalali": "^2.21.3-1", - "dayjs": "^1.11.10", + "dayjs": "^1.11.11", "doctrine": "^3.0.0", "exceljs": "^4.4.0", "fg-loadcss": "^3.1.0", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index d6d7fc6e6d34..59382f0c04ab 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -41,7 +41,7 @@ }, "devDependencies": { "@types/jscodeshift": "^0.11.5", - "dayjs": "^1.11.10", + "dayjs": "^1.11.11", "moment-timezone": "^0.5.45", "rimraf": "^5.0.5" }, diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index c093cd986277..452fb3da7c54 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -99,7 +99,7 @@ "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.11", "date-fns": "^2.30.0", - "dayjs": "^1.11.10", + "dayjs": "^1.11.11", "luxon": "^3.4.4", "moment": "^2.30.1", "rimraf": "^5.0.5" diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 922edcb85642..b73d7b1eb0bc 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -104,7 +104,7 @@ "@types/prop-types": "^15.7.11", "date-fns": "^2.30.0", "date-fns-jalali": "^2.13.0-0", - "dayjs": "^1.11.10", + "dayjs": "^1.11.11", "luxon": "^3.4.4", "moment": "^2.30.1", "moment-hijri": "^2.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ab9ab3e877c..e24371a95367 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -513,8 +513,8 @@ importers: specifier: ^2.21.3-1 version: 2.21.3-1 dayjs: - specifier: ^1.11.10 - version: 1.11.10 + specifier: ^1.11.11 + version: 1.11.11 doctrine: specifier: ^3.0.0 version: 3.0.0 @@ -790,8 +790,8 @@ importers: specifier: ^0.11.5 version: 0.11.11 dayjs: - specifier: ^1.11.10 - version: 1.11.10 + specifier: ^1.11.11 + version: 1.11.11 moment-timezone: specifier: ^0.5.45 version: 0.5.45 @@ -1049,8 +1049,8 @@ importers: specifier: ^2.13.0-0 version: 2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si) dayjs: - specifier: ^1.11.10 - version: 1.11.10 + specifier: ^1.11.11 + version: 1.11.11 luxon: specifier: ^3.4.4 version: 3.4.4 @@ -1135,8 +1135,8 @@ importers: specifier: ^2.30.0 version: 2.30.0 dayjs: - specifier: ^1.11.10 - version: 1.11.10 + specifier: ^1.11.11 + version: 1.11.11 luxon: specifier: ^3.4.4 version: 3.4.4 @@ -1312,8 +1312,8 @@ importers: specifier: ^4.4.1 version: 4.4.1 dayjs: - specifier: ^1.11.10 - version: 1.11.10 + specifier: ^1.11.11 + version: 1.11.11 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -8224,8 +8224,8 @@ packages: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + /dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} /debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -9512,7 +9512,7 @@ packages: engines: {node: '>=8.3.0'} dependencies: archiver: 5.3.2 - dayjs: 1.11.10 + dayjs: 1.11.11 fast-csv: 4.3.6 jszip: 3.10.1 readable-stream: 3.6.2 diff --git a/test/package.json b/test/package.json index a3918e666a52..4c335fad18cc 100644 --- a/test/package.json +++ b/test/package.json @@ -20,7 +20,7 @@ "@types/prop-types": "^15.7.11", "@types/react": "^18.2.60", "chai": "^4.4.1", - "dayjs": "^1.11.10", + "dayjs": "^1.11.11", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", From 3568b1c2b24dabfadfab78d74ac157de881b49dc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:30:39 +0300 Subject: [PATCH 237/912] Bump babel-plugin-module-resolver to ^5.0.2 (#13002) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 26 +++++++++++--------------- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/docs/package.json b/docs/package.json index cc6083a737b5..596e30d3fbc1 100644 --- a/docs/package.json +++ b/docs/package.json @@ -46,7 +46,7 @@ "@react-spring/web": "^9.7.3", "ast-types": "^0.14.2", "autoprefixer": "^10.4.19", - "babel-plugin-module-resolver": "^5.0.0", + "babel-plugin-module-resolver": "^5.0.2", "babel-plugin-optimize-clsx": "^2.6.2", "babel-plugin-preval": "^5.1.0", "babel-plugin-react-remove-properties": "^0.3.0", diff --git a/package.json b/package.json index 44e188930bf5..87657a084ff6 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "axe-core": "4.8.4", "babel-loader": "^9.1.3", "babel-plugin-istanbul": "^6.1.1", - "babel-plugin-module-resolver": "^5.0.0", + "babel-plugin-module-resolver": "^5.0.2", "babel-plugin-optimize-clsx": "^2.6.2", "babel-plugin-react-remove-properties": "^0.3.0", "babel-plugin-replace-imports": "^1.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e24371a95367..e2710719d639 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -177,8 +177,8 @@ importers: specifier: ^6.1.1 version: 6.1.1 babel-plugin-module-resolver: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^5.0.2 + version: 5.0.2 babel-plugin-optimize-clsx: specifier: ^2.6.2 version: 2.6.2 @@ -474,8 +474,8 @@ importers: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) babel-plugin-module-resolver: - specifier: ^5.0.0 - version: 5.0.0 + specifier: ^5.0.2 + version: 5.0.2 babel-plugin-optimize-clsx: specifier: ^2.6.2 version: 2.6.2 @@ -6538,12 +6538,11 @@ packages: cosmiconfig: 7.1.0 resolve: 1.22.8 - /babel-plugin-module-resolver@5.0.0: - resolution: {integrity: sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q==} - engines: {node: '>= 16'} + /babel-plugin-module-resolver@5.0.2: + resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==} dependencies: - find-babel-config: 2.0.0 - glob: 8.1.0 + find-babel-config: 2.1.1 + glob: 9.3.5 pkg-up: 3.1.0 reselect: 4.1.8 resolve: 1.22.8 @@ -9824,9 +9823,8 @@ packages: - supports-color dev: true - /find-babel-config@2.0.0: - resolution: {integrity: sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw==} - engines: {node: '>=16.0.0'} + /find-babel-config@2.1.1: + resolution: {integrity: sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA==} dependencies: json5: 2.2.3 path-exists: 4.0.0 @@ -10389,6 +10387,7 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: true /glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} @@ -10398,7 +10397,6 @@ packages: minimatch: 8.0.4 minipass: 4.2.8 path-scurry: 1.10.1 - dev: true /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -13016,7 +13014,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -13106,7 +13103,6 @@ packages: /minipass@4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} - dev: true /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} From 8e5ab87bc5cac2eb7e475fb69a8a2cb2d67b9578 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:31:34 +0300 Subject: [PATCH 238/912] Bump postcss to ^8.4.38 (#13009) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index 596e30d3fbc1..ed17eb3b82b1 100644 --- a/docs/package.json +++ b/docs/package.json @@ -74,7 +74,7 @@ "moment-timezone": "^0.5.45", "next": "^14.2.3", "nprogress": "^0.2.0", - "postcss": "^8.4.35", + "postcss": "^8.4.38", "prismjs": "^1.29.0", "prop-types": "^15.8.1", "raw-loader": "^1.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e2710719d639..0473a90ddee8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -558,7 +558,7 @@ importers: specifier: ^0.2.0 version: 0.2.0 postcss: - specifier: ^8.4.35 + specifier: ^8.4.38 version: 8.4.38 prismjs: specifier: ^1.29.0 From 57822d5d39e2026674722b77e0fdd11acf633417 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:32:53 +0300 Subject: [PATCH 239/912] Bump react-hook-form to ^7.51.4 (#13010) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/package.json b/docs/package.json index ed17eb3b82b1..f35ec68e9d2a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -81,7 +81,7 @@ "react": "^18.2.0", "react-docgen": "^5.4.3", "react-dom": "^18.2.0", - "react-hook-form": "^7.51.0", + "react-hook-form": "^7.51.4", "react-is": "^18.2.0", "react-router": "^6.22.3", "react-router-dom": "^6.22.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0473a90ddee8..4ec2d6a8ea17 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -579,8 +579,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-hook-form: - specifier: ^7.51.0 - version: 7.51.2(react@18.2.0) + specifier: ^7.51.4 + version: 7.51.4(react@18.2.0) react-is: specifier: ^18.2.0 version: 18.2.0 @@ -15044,8 +15044,8 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-hook-form@7.51.2(react@18.2.0): - resolution: {integrity: sha512-y++lwaWjtzDt/XNnyGDQy6goHskFualmDlf+jzEZvjvz6KWDf7EboL7pUvRCzPTJd0EOPpdekYaQLEvvG6m6HA==} + /react-hook-form@7.51.4(react@18.2.0): + resolution: {integrity: sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA==} engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 From ea4aebb88d345615cc2b89a33b88d3247fa43d8a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:33:40 +0300 Subject: [PATCH 240/912] Bump serve to ^14.2.3 (#13011) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 29 ++++++++++------------------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/docs/package.json b/docs/package.json index f35ec68e9d2a..3e4446c2fa33 100644 --- a/docs/package.json +++ b/docs/package.json @@ -110,6 +110,6 @@ "@types/stylis": "^4.2.5", "@types/webpack-bundle-analyzer": "^4.7.0", "gm": "^1.25.0", - "serve": "^14.2.1" + "serve": "^14.2.3" } } diff --git a/package.json b/package.json index 87657a084ff6..c0b8151270c4 100644 --- a/package.json +++ b/package.json @@ -174,7 +174,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "remark": "^13.0.0", - "serve": "^14.2.1", + "serve": "^14.2.3", "sinon": "^16.1.3", "stream-browserify": "^3.0.0", "string-replace-loader": "^3.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4ec2d6a8ea17..99359d3684f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -351,8 +351,8 @@ importers: specifier: ^13.0.0 version: 13.0.0 serve: - specifier: ^14.2.1 - version: 14.2.1 + specifier: ^14.2.3 + version: 14.2.3 sinon: specifier: ^16.1.3 version: 16.1.3 @@ -661,8 +661,8 @@ importers: specifier: ^1.25.0 version: 1.25.0 serve: - specifier: ^14.2.1 - version: 14.2.1 + specifier: ^14.2.3 + version: 14.2.3 packages/eslint-plugin-material-ui: devDependencies: @@ -5774,8 +5774,8 @@ packages: tslib: 2.6.2 dev: true - /@zeit/schemas@2.29.0: - resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} + /@zeit/schemas@2.36.0: + resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} dev: true /@zkochan/js-yaml@0.0.6: @@ -5949,15 +5949,6 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: @@ -15828,13 +15819,13 @@ packages: - supports-color dev: true - /serve@14.2.1: - resolution: {integrity: sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==} + /serve@14.2.3: + resolution: {integrity: sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==} engines: {node: '>= 14'} hasBin: true dependencies: - '@zeit/schemas': 2.29.0 - ajv: 8.11.0 + '@zeit/schemas': 2.36.0 + ajv: 8.12.0 arg: 5.0.2 boxen: 7.0.0 chalk: 5.0.1 From 9e42fe15e819cedd9f045227246066bce59d69f4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:37:07 +0300 Subject: [PATCH 241/912] Bump clsx to ^2.1.1 (#13003) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 56 ++++++++++----------- 11 files changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/package.json b/docs/package.json index 3e4446c2fa33..e6a75452b823 100644 --- a/docs/package.json +++ b/docs/package.json @@ -54,7 +54,7 @@ "chance": "^1.1.11", "clean-css": "^5.3.3", "clipboard-copy": "^4.0.1", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "core-js": "^2.6.12", "cross-env": "^7.0.3", "date-fns": "^2.30.0", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index bb9bc3a418f7..f02c426bd651 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -45,7 +45,7 @@ "@mui/utils": "^5.15.14", "@react-spring/rafz": "^9.7.3", "@react-spring/web": "^9.7.3", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "d3-color": "^3.1.0", "d3-delaunay": "^6.0.4", "d3-interpolate": "^3.0.1", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 5e5a75b6e3de..8d373ec5ebc3 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -37,7 +37,7 @@ "@mui/base": "^5.0.0-beta.40", "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.11", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "lru-cache": "^7.18.3" }, "devDependencies": { diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index a2e9de4f4367..906a3686f619 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -50,7 +50,7 @@ "@mui/x-data-grid-pro": "workspace:*", "@mui/x-license": "workspace:*", "@types/format-util": "^1.0.4", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "exceljs": "^4.4.0", "prop-types": "^15.8.1", "reselect": "^4.1.8" diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 02e2c7f79738..0c85d2efd60e 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -49,7 +49,7 @@ "@mui/x-data-grid": "workspace:*", "@mui/x-license": "workspace:*", "@types/format-util": "^1.0.4", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "prop-types": "^15.8.1", "reselect": "^4.1.8" }, diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index d29ae442762b..b0f042f35129 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -50,7 +50,7 @@ "@babel/runtime": "^7.24.0", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "prop-types": "^15.8.1", "reselect": "^4.1.8" }, diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 452fb3da7c54..8550369e3aa4 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -48,7 +48,7 @@ "@mui/utils": "^5.15.14", "@mui/x-date-pickers": "workspace:*", "@mui/x-license": "workspace:*", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index b73d7b1eb0bc..695019b7946a 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -50,7 +50,7 @@ "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index c2c0529aef81..bf68ff5ef31d 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -50,7 +50,7 @@ "@mui/x-license": "workspace:*", "@mui/x-tree-view": "workspace:*", "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 19c310db3f81..945b26707f93 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -48,7 +48,7 @@ "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99359d3684f4..615185b3e51b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -498,8 +498,8 @@ importers: specifier: ^4.0.1 version: 4.0.1 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 core-js: specifier: ^2.6.12 version: 2.6.12 @@ -706,8 +706,8 @@ importers: specifier: ^9.7.3 version: 9.7.3(react-dom@18.2.0)(react@18.2.0) clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 d3-color: specifier: ^3.1.0 version: 3.1.0 @@ -815,8 +815,8 @@ importers: specifier: ^5.15.14 version: 5.15.14(@types/react@18.2.60)(react@18.2.0) clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -865,8 +865,8 @@ importers: specifier: ^1.1.11 version: 1.1.11 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 lru-cache: specifier: ^7.18.3 version: 7.18.3 @@ -912,8 +912,8 @@ importers: specifier: ^1.0.4 version: 1.0.4 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 exceljs: specifier: ^4.4.0 version: 4.4.0 @@ -965,8 +965,8 @@ importers: specifier: ^1.0.4 version: 1.0.4 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -1015,8 +1015,8 @@ importers: specifier: ^4.4.10 version: 4.4.10 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -1101,8 +1101,8 @@ importers: specifier: workspace:* version: link:../x-license/build clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 date-fns-jalali: specifier: ^2.13.0-0 version: 2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si) @@ -1192,8 +1192,8 @@ importers: specifier: ^4.4.10 version: 4.4.10 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -1248,8 +1248,8 @@ importers: specifier: ^4.4.10 version: 4.4.10 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -3549,7 +3549,7 @@ packages: '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@popperjs/core': 2.11.8 '@types/react': 18.2.60 - clsx: 2.1.0 + clsx: 2.1.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3632,7 +3632,7 @@ packages: '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 - clsx: 2.1.0 + clsx: 2.1.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3664,7 +3664,7 @@ packages: '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 - clsx: 2.1.0 + clsx: 2.1.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3697,7 +3697,7 @@ packages: '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 '@types/react-transition-group': 4.4.10 - clsx: 2.1.0 + clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 @@ -3758,7 +3758,7 @@ packages: '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 - clsx: 2.1.0 + clsx: 2.1.1 csstype: 3.1.3 hoist-non-react-statics: 3.3.2 jss: 10.10.0 @@ -3797,7 +3797,7 @@ packages: '@mui/types': 7.2.14(@types/react@18.2.60) '@mui/utils': 5.15.14(@types/react@18.2.60)(react@18.2.0) '@types/react': 18.2.60 - clsx: 2.1.0 + clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 @@ -7423,8 +7423,8 @@ packages: engines: {node: '>=0.8'} dev: true - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} /cmd-shim@6.0.1: From b5c534db9a50eea91dec72bbbd75188ea88e3dac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:38:24 +0300 Subject: [PATCH 242/912] Bump @types/lru-cache to ^7.10.10 (#12998) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/x-data-grid-generator/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 8d373ec5ebc3..5622ff3ef106 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@types/chance": "^1.1.6", - "@types/lru-cache": "^7.10.9", + "@types/lru-cache": "^7.10.10", "rimraf": "^5.0.5" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 615185b3e51b..c3a9c688aa13 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -878,7 +878,7 @@ importers: specifier: ^1.1.6 version: 1.1.6 '@types/lru-cache': - specifier: ^7.10.9 + specifier: ^7.10.10 version: 7.10.10 rimraf: specifier: ^5.0.5 From db61cdbeea517c5f5a78c3b47c384852f9c52023 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 13:38:59 +0300 Subject: [PATCH 243/912] Bump @types/prop-types to ^15.7.12 (#12999) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/x-charts/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 40 +++++++++++------------ test/package.json | 2 +- 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index f02c426bd651..2dcf359fd064 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -76,7 +76,7 @@ "@types/d3-interpolate": "^3.0.4", "@types/d3-scale": "^4.0.8", "@types/d3-shape": "^3.1.6", - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", "rimraf": "^5.0.5" }, diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 906a3686f619..f659d50116d9 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -61,7 +61,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", "rimraf": "^5.0.5" }, diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 0c85d2efd60e..01f945b2ff41 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -59,7 +59,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "rimraf": "^5.0.5" }, "engines": { diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index b0f042f35129..25d477cea0b6 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -62,7 +62,7 @@ "devDependencies": { "@mui/joy": "^5.0.0-beta.24", "@mui/types": "^7.2.14", - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "rimraf": "^5.0.5" }, "engines": { diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 8550369e3aa4..70b8b80fe6a7 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -97,7 +97,7 @@ }, "devDependencies": { "@types/luxon": "^3.4.2", - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", "dayjs": "^1.11.11", "luxon": "^3.4.4", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 695019b7946a..f7bb02bad865 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -101,7 +101,7 @@ "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", "date-fns-jalali": "^2.13.0-0", "dayjs": "^1.11.11", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 945b26707f93..b9813dc5442f 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -60,7 +60,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "rimraf": "^5.0.5" }, "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3a9c688aa13..b52dd77fbda7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -755,8 +755,8 @@ importers: specifier: ^3.1.6 version: 3.1.6 '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 csstype: specifier: ^3.1.3 version: 3.1.3 @@ -837,8 +837,8 @@ importers: specifier: ^7.2.14 version: 7.2.14(@types/react@18.2.60) '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 rimraf: specifier: ^5.0.5 version: 5.0.5 @@ -931,8 +931,8 @@ importers: version: 4.1.8 devDependencies: '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 date-fns: specifier: ^2.30.0 version: 2.30.0 @@ -981,8 +981,8 @@ importers: version: 4.1.8 devDependencies: '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 rimraf: specifier: ^5.0.5 version: 5.0.5 @@ -1040,8 +1040,8 @@ importers: specifier: ^0.7.9 version: 0.7.9 '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 date-fns: specifier: ^2.30.0 version: 2.30.0 @@ -1129,8 +1129,8 @@ importers: specifier: ^3.4.2 version: 3.4.2 '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 date-fns: specifier: ^2.30.0 version: 2.30.0 @@ -1208,8 +1208,8 @@ importers: version: 4.4.5(react-dom@18.2.0)(react@18.2.0) devDependencies: '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 rimraf: specifier: ^5.0.5 version: 5.0.5 @@ -1303,8 +1303,8 @@ importers: specifier: ^4.3.16 version: 4.3.16 '@types/prop-types': - specifier: ^15.7.11 - version: 15.7.11 + specifier: ^15.7.12 + version: 15.7.12 '@types/react': specifier: ^18.2.60 version: 18.2.60 @@ -3823,7 +3823,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 - '@types/prop-types': 15.7.11 + '@types/prop-types': 15.7.12 '@types/react': 18.2.60 prop-types: 15.8.1 react: 18.2.0 @@ -5227,8 +5227,8 @@ packages: resolution: {integrity: sha512-wA0UT0HeT2fGHzIFV9kWpYz5mdoyLxKrTgMdZQM++5h6pYAFH73HXcQhefg24nD1yivUFEn5KU+EF4b+CXJ4Wg==} dev: true - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} /@types/qs@6.9.11: resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} @@ -5273,7 +5273,7 @@ packages: /@types/react@18.2.60: resolution: {integrity: sha512-dfiPj9+k20jJrLGOu9Nf6eqxm2EyJRrq2NvwOFsfbb7sFExZ9WELPs67UImHj3Ayxg8ruTtKtNnbjaF8olPq0A==} dependencies: - '@types/prop-types': 15.7.11 + '@types/prop-types': 15.7.12 '@types/scheduler': 0.16.8 csstype: 3.1.3 diff --git a/test/package.json b/test/package.json index 4c335fad18cc..d704642af68c 100644 --- a/test/package.json +++ b/test/package.json @@ -17,7 +17,7 @@ "@react-spring/web": "^9.7.3", "@playwright/test": "^1.43.1", "@types/chai": "^4.3.16", - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", "@types/react": "^18.2.60", "chai": "^4.4.1", "dayjs": "^1.11.11", From 4362bfeee6000c0e7a1e1512bc3478072e8c7b68 Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 8 May 2024 14:38:43 +0300 Subject: [PATCH 244/912] [core] Update license key used for tests (#13052) --- test/regressions/index.js | 2 +- test/utils/mochaHooks.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/regressions/index.js b/test/regressions/index.js index c66587dd075b..50ae921bf03e 100644 --- a/test/regressions/index.js +++ b/test/regressions/index.js @@ -8,7 +8,7 @@ import { Globals } from '@react-spring/web'; // This license key is only valid for use with Material UI SAS's projects // See the terms: https://mui.com/r/x-license-eula LicenseInfo.setLicenseKey( - 'd483a722e0dc68f4d483487da0ccac45Tz1NVUktRG9jLEU9MTcxNTE2MzgwOTMwNyxTPXByZW1pdW0sTE09c3Vic2NyaXB0aW9uLEtWPTI=', + 'e43ff101678711136a9b81c18047cb69Tz1NVUktRG9jLEU9MTc0Njc4NzYxODIwMSxTPXByZW1pdW0sTE09c3Vic2NyaXB0aW9uLEtWPTI=', ); Globals.assign({ diff --git a/test/utils/mochaHooks.js b/test/utils/mochaHooks.js index e0c7b2fd94ed..766da79d50a2 100644 --- a/test/utils/mochaHooks.js +++ b/test/utils/mochaHooks.js @@ -17,7 +17,7 @@ export function createXMochaHooks(coreMochaHooks = {}) { // This license key is only valid for use with Material UI SAS's projects // See the terms: https://mui.com/r/x-license-eula LicenseInfo.setLicenseKey( - 'd483a722e0dc68f4d483487da0ccac45Tz1NVUktRG9jLEU9MTcxNTE2MzgwOTMwNyxTPXByZW1pdW0sTE09c3Vic2NyaXB0aW9uLEtWPTI=', + 'e43ff101678711136a9b81c18047cb69Tz1NVUktRG9jLEU9MTc0Njc4NzYxODIwMSxTPXByZW1pdW0sTE09c3Vic2NyaXB0aW9uLEtWPTI=', ); }); From 1af982d1c6136078193b0ad381f90a540422acce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 15:52:57 +0300 Subject: [PATCH 245/912] Bump eslint-plugin-react-hooks to ^4.6.2 (#13005) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index c0b8151270c4..4ac79f004f8f 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-react": "^7.34.1", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^4.6.2", "fast-glob": "^3.3.2", "format-util": "^1.0.5", "fs-extra": "^11.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b52dd77fbda7..b9a68402a405 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,7 +226,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.8.0)(@typescript-eslint/parser@7.8.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) @@ -261,8 +261,8 @@ importers: specifier: ^7.34.1 version: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@8.57.0) + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.0) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -9068,7 +9068,7 @@ packages: - eslint-plugin-import dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9083,7 +9083,7 @@ packages: eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.7 dev: true @@ -9286,8 +9286,8 @@ packages: synckit: 0.8.8 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 From 2a5b8fe05ea1aa91ae2a006d5cefadc21b433740 Mon Sep 17 00:00:00 2001 From: Seyyed Morteza Moosavi Date: Wed, 8 May 2024 20:14:37 +0330 Subject: [PATCH 246/912] [pickers] Add `AdapterDateFnsJalaliV3` adapter (#12891) Co-authored-by: Lukas --- babel.config.js | 13 +- codecov.yml | 2 + .../calendar-systems/calendar-systems.md | 18 +- docs/package.json | 2 +- package.json | 2 +- packages/x-date-pickers-pro/package.json | 3 +- .../src/AdapterDateFnsJalaliV3/index.ts | 1 + packages/x-date-pickers/package.json | 4 +- .../AdapterDateFnsJalali.ts | 8 + .../AdapterDateFnsJalaliV3.test.tsx | 86 + .../AdapterDateFnsJalaliV3.ts | 536 +++++ .../src/AdapterDateFnsJalaliV3/index.ts | 1 + patches/@mui__monorepo@6.0.0-alpha.0.patch | 13 - .../babel-plugin-replace-imports@1.0.2.patch | 4 +- patches/date-fns-jalali@2.13.0-0.patch | 1807 ----------------- pnpm-lock.yaml | 41 +- 16 files changed, 692 insertions(+), 1849 deletions(-) create mode 100644 packages/x-date-pickers-pro/src/AdapterDateFnsJalaliV3/index.ts create mode 100644 packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx create mode 100644 packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts create mode 100644 packages/x-date-pickers/src/AdapterDateFnsJalaliV3/index.ts delete mode 100644 patches/@mui__monorepo@6.0.0-alpha.0.patch delete mode 100644 patches/date-fns-jalali@2.13.0-0.patch diff --git a/babel.config.js b/babel.config.js index c778fb946a35..d8d15499e33a 100644 --- a/babel.config.js +++ b/babel.config.js @@ -91,9 +91,20 @@ module.exports = function getBabelConfig(api) { { test: /date-fns/i, replacer: 'date-fns-v3', - ignoreFilenames: 'AdapterDateFns.ts', + // This option is provided by the `patches/babel-plugin-replace-imports@1.0.2.patch` patch + filenameIncludes: 'src/AdapterDateFnsV3/', }, ]); + plugins.push([ + 'babel-plugin-replace-imports', + { + test: /date-fns-jalali/i, + replacer: 'date-fns-jalali-v3', + // This option is provided by the `patches/babel-plugin-replace-imports@1.0.2.patch` patch + filenameIncludes: 'src/AdapterDateFnsJalaliV3/', + }, + 'replace-date-fns-jalali-imports', + ]); } if (process.env.NODE_ENV === 'production') { diff --git a/codecov.yml b/codecov.yml index 1a14b3aa4602..426667acdf10 100644 --- a/codecov.yml +++ b/codecov.yml @@ -8,7 +8,9 @@ coverage: target: 100% paths: - 'packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.ts' + - 'packages/x-date-pickers/src/AdapterDateFnsV3/AdapterDateFnsV3.ts' - 'packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts' + - 'packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts' - 'packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts' - 'packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts' - 'packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts' diff --git a/docs/data/date-pickers/calendar-systems/calendar-systems.md b/docs/data/date-pickers/calendar-systems/calendar-systems.md index 10766267d5c5..aff4661cfe08 100644 --- a/docs/data/date-pickers/calendar-systems/calendar-systems.md +++ b/docs/data/date-pickers/calendar-systems/calendar-systems.md @@ -15,10 +15,26 @@ packageName: '@mui/x-date-pickers' You can use either the `AdapterDateFnsJalali` adapter, which is based on [date-fns-jalali](https://www.npmjs.com/package/date-fns-jalali), or the `AdapterMomentJalaali` adapter, which is based on [moment-jalaali](https://www.npmjs.com/package/moment-jalaali). -The following demo shows how to use the date-fns plugin: +The following demo shows how to use the `date-fns-jalali` adapter: {{"demo": "AdapterJalali.js"}} +:::info +Both `date-fns-jalali` major versions (v2.x and v3.x) are supported. + +A single adapter cannot work for both `date-fns-jalali` v2.x and v3.x, because the way functions are exported has been changed in v3.x. + +To use `date-fns-jalali` v3.x, you will have to import the adapter from `@mui/x-date-pickers/AdapterDateFnsJalaliV3` instead of `@mui/x-date-pickers/AdapterDateFnsJalali`. + +```tsx +// with date-fns-jalali v2.x +import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalali'; +// with date-fns-jalali v3.x +import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV3'; +``` + +::: + ## Hijri :::error diff --git a/docs/package.json b/docs/package.json index e6a75452b823..88735bebc31d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -58,7 +58,7 @@ "core-js": "^2.6.12", "cross-env": "^7.0.3", "date-fns": "^2.30.0", - "date-fns-jalali": "^2.21.3-1", + "date-fns-jalali": "^2.30.0-0", "dayjs": "^1.11.11", "doctrine": "^3.0.0", "exceljs": "^4.4.0", diff --git a/package.json b/package.json index 4ac79f004f8f..b027bdde2aba 100644 --- a/package.json +++ b/package.json @@ -129,6 +129,7 @@ "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "danger": "^11.3.1", + "date-fns-jalali-v3": "npm:date-fns-jalali@3.6.0-0", "date-fns-v3": "npm:date-fns@3.6.0", "enzyme": "^3.11.0", "eslint": "^8.57.0", @@ -195,7 +196,6 @@ "packageManager": "pnpm@8.15.8", "pnpm": { "patchedDependencies": { - "date-fns-jalali@2.13.0-0": "patches/date-fns-jalali@2.13.0-0.patch", "karma-mocha@2.0.1": "patches/karma-mocha@2.0.1.patch", "babel-plugin-replace-imports@1.0.2": "patches/babel-plugin-replace-imports@1.0.2.patch" } diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 70b8b80fe6a7..e160f1e2e5a5 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -57,7 +57,7 @@ "@emotion/styled": "^11.8.1", "@mui/material": "^5.15.14", "date-fns": "^2.25.0 || ^3.2.0", - "date-fns-jalali": "^2.13.0-0", + "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", "dayjs": "^1.10.7", "luxon": "^3.0.2", "moment": "^2.29.4", @@ -99,6 +99,7 @@ "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", + "date-fns-jalali": "^2.30.0-0", "dayjs": "^1.11.11", "luxon": "^3.4.4", "moment": "^2.30.1", diff --git a/packages/x-date-pickers-pro/src/AdapterDateFnsJalaliV3/index.ts b/packages/x-date-pickers-pro/src/AdapterDateFnsJalaliV3/index.ts new file mode 100644 index 000000000000..ee8f537fd113 --- /dev/null +++ b/packages/x-date-pickers-pro/src/AdapterDateFnsJalaliV3/index.ts @@ -0,0 +1 @@ +export { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV3'; diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index f7bb02bad865..17372d3f15f9 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -59,7 +59,7 @@ "@emotion/styled": "^11.8.1", "@mui/material": "^5.15.14", "date-fns": "^2.25.0 || ^3.2.0", - "date-fns-jalali": "^2.13.0-0", + "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", "dayjs": "^1.10.7", "luxon": "^3.0.2", "moment": "^2.29.4", @@ -103,7 +103,7 @@ "@types/moment-jalaali": "^0.7.9", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", - "date-fns-jalali": "^2.13.0-0", + "date-fns-jalali": "^2.30.0-0", "dayjs": "^1.11.11", "luxon": "^3.4.4", "moment": "^2.30.1", diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts index df45f1b686fb..e5194e5b2f51 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts +++ b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts @@ -207,6 +207,14 @@ export class AdapterDateFnsJalali implements MuiPickersAdapter = {}) { + if (typeof addDays !== 'function') { + throw new Error( + [ + 'MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', + 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.', + ].join('\n'), + ); + } this.locale = locale; this.formats = { ...defaultFormats, ...formats }; } diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx new file mode 100644 index 000000000000..5f505a3d4ea5 --- /dev/null +++ b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx @@ -0,0 +1,86 @@ +import { expect } from 'chai'; +import { DateTimeField } from '@mui/x-date-pickers'; +import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV3'; +import { + createPickerRenderer, + expectFieldValueV7, + describeJalaliAdapter, + buildFieldInteractions, +} from 'test/utils/pickers'; +import { enUS, faIR } from 'date-fns-jalali/locale'; +import { AdapterFormats } from '@mui/x-date-pickers/models'; + +describe('', () => { + describeJalaliAdapter(AdapterDateFnsJalali, {}); + + describe('Adapter localization', () => { + it('Formatting', () => { + const adapter = new AdapterDateFnsJalali(); + + const expectDate = (format: keyof AdapterFormats, expectedWithFaIR: string) => { + const date = adapter.date('2020-02-01T23:44:00.000Z')!; + + expect(adapter.format(date, format)).to.equal(expectedWithFaIR); + }; + + expectDate('fullDate', '12-ام بهمن 1398'); + expectDate('keyboardDate', '1398/11/12'); + expectDate('keyboardDateTime', '1398/11/12 11:44 ب.ظ.'); + expectDate('keyboardDateTime12h', '1398/11/12 11:44 ب.ظ.'); + expectDate('keyboardDateTime24h', '1398/11/12 23:44'); + }); + }); + + describe('Picker localization', () => { + const testDate = '2018-05-15T09:35:00'; + const localizedTexts = { + enUS: { + placeholder: 'MM/DD/YYYY hh:mm aa', + value: '02/25/1397 09:35 AM', + }, + faIR: { + placeholder: 'YYYY/MM/DD hh:mm aa', + value: '1397/02/25 09:35 ق.ظ.', + }, + }; + + Object.keys(localizedTexts).forEach((localeKey) => { + const localeObject = { + faIR, + enUS, + }[localeKey]; + + describe(`test with the "${localeKey}" locale`, () => { + const { render, adapter, clock } = createPickerRenderer({ + clock: 'fake', + adapterName: 'date-fns-jalali', + locale: localeObject, + }); + + const { renderWithProps } = buildFieldInteractions({ + render, + clock, + Component: DateTimeField, + }); + + it('should have correct placeholder', () => { + const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + + expectFieldValueV7( + v7Response.getSectionsContainer(), + localizedTexts[localeKey].placeholder, + ); + }); + + it('should have well formatted value', () => { + const v7Response = renderWithProps({ + enableAccessibleFieldDOMStructure: true, + value: adapter.date(testDate), + }); + + expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + }); + }); + }); + }); +}); diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts new file mode 100644 index 000000000000..112da595ed4c --- /dev/null +++ b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts @@ -0,0 +1,536 @@ +/* eslint-disable class-methods-use-this */ +// TODO remove when date-fns-jalali-v3 is the default +// @ts-nocheck +import { addSeconds } from 'date-fns-jalali/addSeconds'; +import { addMinutes } from 'date-fns-jalali/addMinutes'; +import { addHours } from 'date-fns-jalali/addHours'; +import { addDays } from 'date-fns-jalali/addDays'; +import { addWeeks } from 'date-fns-jalali/addWeeks'; +import { addMonths } from 'date-fns-jalali/addMonths'; +import { addYears } from 'date-fns-jalali/addYears'; +import { endOfDay } from 'date-fns-jalali/endOfDay'; +import { endOfWeek } from 'date-fns-jalali/endOfWeek'; +import { endOfYear } from 'date-fns-jalali/endOfYear'; +import { format as dateFnsFormat, longFormatters } from 'date-fns-jalali/format'; +import { getHours } from 'date-fns-jalali/getHours'; +import { getSeconds } from 'date-fns-jalali/getSeconds'; +import { getMilliseconds } from 'date-fns-jalali/getMilliseconds'; +import { getWeek } from 'date-fns-jalali/getWeek'; +import { getYear } from 'date-fns-jalali/getYear'; +import { getMonth } from 'date-fns-jalali/getMonth'; +import { getDate } from 'date-fns-jalali/getDate'; +import { getDaysInMonth } from 'date-fns-jalali/getDaysInMonth'; +import { getMinutes } from 'date-fns-jalali/getMinutes'; +import { isAfter } from 'date-fns-jalali/isAfter'; +import { isBefore } from 'date-fns-jalali/isBefore'; +import { isEqual } from 'date-fns-jalali/isEqual'; +import { isSameDay } from 'date-fns-jalali/isSameDay'; +import { isSameYear } from 'date-fns-jalali/isSameYear'; +import { isSameMonth } from 'date-fns-jalali/isSameMonth'; +import { isSameHour } from 'date-fns-jalali/isSameHour'; +import { isValid } from 'date-fns-jalali/isValid'; +import { parse as dateFnsParse } from 'date-fns-jalali/parse'; +import { setDate } from 'date-fns-jalali/setDate'; +import { setHours } from 'date-fns-jalali/setHours'; +import { setMinutes } from 'date-fns-jalali/setMinutes'; +import { setMonth } from 'date-fns-jalali/setMonth'; +import { setSeconds } from 'date-fns-jalali/setSeconds'; +import { setMilliseconds } from 'date-fns-jalali/setMilliseconds'; +import { setYear } from 'date-fns-jalali/setYear'; +import { startOfDay } from 'date-fns-jalali/startOfDay'; +import { startOfMonth } from 'date-fns-jalali/startOfMonth'; +import { endOfMonth } from 'date-fns-jalali/endOfMonth'; +import { startOfWeek } from 'date-fns-jalali/startOfWeek'; +import { startOfYear } from 'date-fns-jalali/startOfYear'; +import { isWithinInterval } from 'date-fns-jalali/isWithinInterval'; +import { faIR as defaultLocale } from 'date-fns-jalali/locale/fa-IR'; +// date-fns-jalali v2 does not export types +// @ts-ignore TODO remove when date-fns-jalali-v3 is the default +import { Locale as DateFnsLocale } from 'date-fns-jalali/locale/types'; +import { + AdapterFormats, + AdapterOptions, + DateBuilderReturnType, + FieldFormatTokenMap, + MuiPickersAdapter, +} from '../models'; + +const formatTokenMap: FieldFormatTokenMap = { + // Year + y: { sectionType: 'year', contentType: 'digit', maxLength: 4 }, + yy: 'year', + yyy: { sectionType: 'year', contentType: 'digit', maxLength: 4 }, + yyyy: 'year', + + // Month + M: { sectionType: 'month', contentType: 'digit', maxLength: 2 }, + MM: 'month', + MMMM: { sectionType: 'month', contentType: 'letter' }, + MMM: { sectionType: 'month', contentType: 'letter' }, + L: { sectionType: 'month', contentType: 'digit', maxLength: 2 }, + LL: 'month', + LLL: { sectionType: 'month', contentType: 'letter' }, + LLLL: { sectionType: 'month', contentType: 'letter' }, + + // Day of the month + d: { sectionType: 'day', contentType: 'digit', maxLength: 2 }, + dd: 'day', + do: { sectionType: 'day', contentType: 'digit-with-letter' }, + + // Day of the week + E: { sectionType: 'weekDay', contentType: 'letter' }, + EE: { sectionType: 'weekDay', contentType: 'letter' }, + EEE: { sectionType: 'weekDay', contentType: 'letter' }, + EEEE: { sectionType: 'weekDay', contentType: 'letter' }, + EEEEE: { sectionType: 'weekDay', contentType: 'letter' }, + i: { sectionType: 'weekDay', contentType: 'digit', maxLength: 1 }, + ii: 'weekDay', + iii: { sectionType: 'weekDay', contentType: 'letter' }, + iiii: { sectionType: 'weekDay', contentType: 'letter' }, + e: { sectionType: 'weekDay', contentType: 'digit', maxLength: 1 }, + ee: 'weekDay', + eee: { sectionType: 'weekDay', contentType: 'letter' }, + eeee: { sectionType: 'weekDay', contentType: 'letter' }, + eeeee: { sectionType: 'weekDay', contentType: 'letter' }, + eeeeee: { sectionType: 'weekDay', contentType: 'letter' }, + c: { sectionType: 'weekDay', contentType: 'digit', maxLength: 1 }, + cc: 'weekDay', + ccc: { sectionType: 'weekDay', contentType: 'letter' }, + cccc: { sectionType: 'weekDay', contentType: 'letter' }, + ccccc: { sectionType: 'weekDay', contentType: 'letter' }, + cccccc: { sectionType: 'weekDay', contentType: 'letter' }, + + // Meridiem + a: 'meridiem', + aa: 'meridiem', + aaa: 'meridiem', + + // Hours + H: { sectionType: 'hours', contentType: 'digit', maxLength: 2 }, + HH: 'hours', + h: { sectionType: 'hours', contentType: 'digit', maxLength: 2 }, + hh: 'hours', + + // Minutes + m: { sectionType: 'minutes', contentType: 'digit', maxLength: 2 }, + mm: 'minutes', + + // Seconds + s: { sectionType: 'seconds', contentType: 'digit', maxLength: 2 }, + ss: 'seconds', +}; + +const defaultFormats: AdapterFormats = { + year: 'yyyy', + month: 'LLLL', + monthShort: 'MMM', + dayOfMonth: 'd', + dayOfMonthFull: 'do', + weekday: 'EEEE', + weekdayShort: 'EEEEEE', + hours24h: 'HH', + hours12h: 'hh', + meridiem: 'aa', + minutes: 'mm', + seconds: 'ss', + + fullDate: 'PPP', + keyboardDate: 'P', + shortDate: 'd MMM', + normalDate: 'd MMMM', + normalDateWithWeekday: 'EEE, d MMMM', + + fullTime: 'p', + fullTime12h: 'hh:mm aaa', + fullTime24h: 'HH:mm', + keyboardDateTime: 'P p', + keyboardDateTime12h: 'P hh:mm aa', + keyboardDateTime24h: 'P HH:mm', +}; + +const NUMBER_SYMBOL_MAP = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰', +}; + +declare module '@mui/x-date-pickers/models' { + interface PickerValidDateLookup { + 'date-fns-jalali': Date; + } +} + +/** + * Based on `@date-io/date-fns-jalali` + * + * MIT License + * + * Copyright (c) 2017 Dmitriy Kovalenko + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +export class AdapterDateFnsJalali implements MuiPickersAdapter { + public isMUIAdapter = true; + + public isTimezoneCompatible = false; + + public lib = 'date-fns-jalali'; + + public locale?: DateFnsLocale; + + public formats: AdapterFormats; + + public formatTokenMap = formatTokenMap; + + public escapedCharacters = { start: "'", end: "'" }; + + constructor({ locale, formats }: AdapterOptions = {}) { + if (typeof addDays !== 'function') { + throw new Error( + [ + `MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, + 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.', + ].join('\n'), + ); + } + if (!longFormatters) { + throw new Error( + 'MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.', + ); + } + this.locale = locale; + this.formats = { ...defaultFormats, ...formats }; + } + + public date = ( + value?: T, + ): DateBuilderReturnType => { + type R = DateBuilderReturnType; + if (typeof value === 'undefined') { + return new Date(); + } + + if (value === null) { + return null; + } + + return new Date(value); + }; + + public getInvalidDate = () => new Date('Invalid Date'); + + public getTimezone = (): string => { + return 'default'; + }; + + public setTimezone = (value: Date): Date => { + return value; + }; + + public toJsDate = (value: Date) => { + return value; + }; + + public parse = (value: string, format: string) => { + if (value === '') { + return null; + } + + return dateFnsParse(value, format, new Date(), { locale: this.locale }); + }; + + public getCurrentLocaleCode = () => { + return this.locale?.code || 'fa-IR'; + }; + + // Note: date-fns input types are more lenient than this adapter, so we need to expose our more + // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage. + public is12HourCycleInCurrentLocale = () => { + if (this.locale) { + return /a/.test(this.locale.formatLong!.time()); + } + + // By default, date-fns-jalali is using fa-IR locale with am/pm enabled + return true; + }; + + public expandFormat = (format: string) => { + // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31 + const longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; + const locale = this.locale ?? defaultLocale; + return format + .match(longFormatRegexp)! + .map((token) => { + const firstCharacter = token[0]; + if (firstCharacter === 'p' || firstCharacter === 'P') { + const longFormatter = longFormatters[firstCharacter]; + return longFormatter(token, locale.formatLong, {}); + } + return token; + }) + .join(''); + }; + + public isValid = (value: Date | null) => { + if (value == null) { + return false; + } + + return isValid(value); + }; + + public format = (value: Date, formatKey: keyof AdapterFormats) => { + return this.formatByString(value, this.formats[formatKey]); + }; + + public formatByString = (value: Date, formatString: string) => { + return dateFnsFormat(value, formatString, { locale: this.locale }); + }; + + public formatNumber = (numberToFormat: string) => { + return numberToFormat + .replace(/\d/g, (match) => NUMBER_SYMBOL_MAP[match as keyof typeof NUMBER_SYMBOL_MAP]) + .replace(/,/g, '،'); + }; + + public isEqual = (value: Date | null, comparing: Date | null) => { + if (value === null && comparing === null) { + return true; + } + + if (value === null || comparing === null) { + return false; + } + + return isEqual(value, comparing); + }; + + public isSameYear = (value: Date, comparing: Date) => { + return isSameYear(value, comparing); + }; + + public isSameMonth = (value: Date, comparing: Date) => { + return isSameMonth(value, comparing); + }; + + public isSameDay = (value: Date, comparing: Date) => { + return isSameDay(value, comparing); + }; + + public isSameHour = (value: Date, comparing: Date) => { + return isSameHour(value, comparing); + }; + + public isAfter = (value: Date, comparing: Date) => { + return isAfter(value, comparing); + }; + + public isAfterYear = (value: Date, comparing: Date) => { + return isAfter(value, this.endOfYear(comparing)); + }; + + public isAfterDay = (value: Date, comparing: Date) => { + return isAfter(value, this.endOfDay(comparing)); + }; + + public isBefore = (value: Date, comparing: Date) => { + return isBefore(value, comparing); + }; + + public isBeforeYear = (value: Date, comparing: Date) => { + return isBefore(value, this.startOfYear(comparing)); + }; + + public isBeforeDay = (value: Date, comparing: Date) => { + return isBefore(value, this.startOfDay(comparing)); + }; + + public isWithinRange = (value: Date, [start, end]: [Date, Date]) => { + return isWithinInterval(value, { start, end }); + }; + + public startOfYear = (value: Date) => { + return startOfYear(value); + }; + + public startOfMonth = (value: Date) => { + return startOfMonth(value); + }; + + public startOfWeek = (value: Date) => { + return startOfWeek(value, { locale: this.locale }); + }; + + public startOfDay = (value: Date) => { + return startOfDay(value); + }; + + public endOfYear = (value: Date) => { + return endOfYear(value); + }; + + public endOfMonth = (value: Date) => { + return endOfMonth(value); + }; + + public endOfWeek = (value: Date) => { + return endOfWeek(value, { locale: this.locale }); + }; + + public endOfDay = (value: Date) => { + return endOfDay(value); + }; + + public addYears = (value: Date, amount: number) => { + return addYears(value, amount); + }; + + public addMonths = (value: Date, amount: number) => { + return addMonths(value, amount); + }; + + public addWeeks = (value: Date, amount: number) => { + return addWeeks(value, amount); + }; + + public addDays = (value: Date, amount: number) => { + return addDays(value, amount); + }; + + public addHours = (value: Date, amount: number) => { + return addHours(value, amount); + }; + + public addMinutes = (value: Date, amount: number) => { + return addMinutes(value, amount); + }; + + public addSeconds = (value: Date, amount: number) => { + return addSeconds(value, amount); + }; + + public getYear = (value: Date) => { + return getYear(value); + }; + + public getMonth = (value: Date) => { + return getMonth(value); + }; + + public getDate = (value: Date) => { + return getDate(value); + }; + + public getHours = (value: Date) => { + return getHours(value); + }; + + public getMinutes = (value: Date) => { + return getMinutes(value); + }; + + public getSeconds = (value: Date) => { + return getSeconds(value); + }; + + public getMilliseconds = (value: Date) => { + return getMilliseconds(value); + }; + + public setYear = (value: Date, year: number) => { + return setYear(value, year); + }; + + public setMonth = (value: Date, month: number) => { + return setMonth(value, month); + }; + + public setDate = (value: Date, date: number) => { + return setDate(value, date); + }; + + public setHours = (value: Date, hours: number) => { + return setHours(value, hours); + }; + + public setMinutes = (value: Date, minutes: number) => { + return setMinutes(value, minutes); + }; + + public setSeconds = (value: Date, seconds: number) => { + return setSeconds(value, seconds); + }; + + public setMilliseconds = (value: Date, milliseconds: number) => { + return setMilliseconds(value, milliseconds); + }; + + public getDaysInMonth = (value: Date) => { + return getDaysInMonth(value); + }; + + public getWeekArray = (value: Date) => { + const start = this.startOfWeek(this.startOfMonth(value)); + const end = this.endOfWeek(this.endOfMonth(value)); + + let count = 0; + let current = start; + const nestedWeeks: Date[][] = []; + + while (this.isBefore(current, end)) { + const weekNumber = Math.floor(count / 7); + nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || []; + nestedWeeks[weekNumber].push(current); + + current = this.addDays(current, 1); + count += 1; + } + + return nestedWeeks; + }; + + public getWeekNumber = (date: Date) => { + return getWeek(date, { locale: this.locale }); + }; + + public getDayOfWeek(value: Date) { + return value.getDay() + 1; + } + + public getYearRange = ([start, end]: [Date, Date]) => { + const startDate = this.startOfYear(start); + const endDate = this.endOfYear(end); + const years: Date[] = []; + + let current = startDate; + while (this.isBefore(current, endDate)) { + years.push(current); + current = this.addYears(current, 1); + } + + return years; + }; +} diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/index.ts b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/index.ts new file mode 100644 index 000000000000..056183daac31 --- /dev/null +++ b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/index.ts @@ -0,0 +1 @@ +export { AdapterDateFnsJalali } from './AdapterDateFnsJalaliV3'; diff --git a/patches/@mui__monorepo@6.0.0-alpha.0.patch b/patches/@mui__monorepo@6.0.0-alpha.0.patch deleted file mode 100644 index 1d4fdf8800af..000000000000 --- a/patches/@mui__monorepo@6.0.0-alpha.0.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/packages/api-docs-builder/utils/parseTest.ts b/packages/api-docs-builder/utils/parseTest.ts -index 14d2c70c9939cb2e71e7664c06e8f51700711772..e21e06960ffbaf05aff6e5d4d7faa123cb6105bc 100644 ---- a/packages/api-docs-builder/utils/parseTest.ts -+++ b/packages/api-docs-builder/utils/parseTest.ts -@@ -3,7 +3,7 @@ import * as babel from '@babel/core'; - import { readFile } from 'fs-extra'; - import glob from 'fast-glob'; - --const workspaceRoot = path.join(__dirname, '../../../'); -+const workspaceRoot = process.cwd(); - const babelConfigPath = path.join(workspaceRoot, 'babel.config.js'); - - function getTestFilesNames(filepath: string) { diff --git a/patches/babel-plugin-replace-imports@1.0.2.patch b/patches/babel-plugin-replace-imports@1.0.2.patch index 0394347226df..be94600572cd 100644 --- a/patches/babel-plugin-replace-imports@1.0.2.patch +++ b/patches/babel-plugin-replace-imports@1.0.2.patch @@ -1,8 +1,8 @@ diff --git a/lib/index.js b/lib/index.js -index 8da63adc141b73774c50363b31ee00001ccd9156..9712bcce64bfce59043f9a16c1f14d464bf82e8d 100644 +index 8da63adc141b73774c50363b31ee00001ccd9156..db49ed11479699f329f6b0bfb70fa73d6ad960e2 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1 +1 @@ -'use strict';Object.defineProperty(exports,'__esModule',{value:!0}),exports.optionLabels=void 0,exports.getErrorMessage=getErrorMessage;var _lodash=require('lodash.isempty'),_lodash2=_interopRequireDefault(_lodash),_lodash3=require('lodash.isstring'),_lodash4=_interopRequireDefault(_lodash3),_lodash5=require('lodash.isregexp'),_lodash6=_interopRequireDefault(_lodash5),_lodash7=require('lodash.isobject'),_lodash8=_interopRequireDefault(_lodash7),_lodash9=require('lodash.isfunction'),_lodash10=_interopRequireDefault(_lodash9);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var PLUGIN='babel-plugin-replace-imports',ERRORS={0:'options are required.',1:'option is required.',2:'option must be a RegExp.',3:'option must be a String or a Function',4:'options item must be an Object.'},optionLabels=exports.optionLabels={test:'test',replacer:'replacer'};function getErrorMessage(code,text){var msg=((text?'\xAB'+text+'\xBB':'')+' '+ERRORS[code]).trim();return'\n'+PLUGIN+': '+msg}function init(_ref){function throwError(code,text){var msg=getErrorMessage(code,text);throw new Error(msg)}function getOption(option){return(!(0,_lodash8.default)(option)||(0,_lodash6.default)(option)||Array.isArray(option))&&throwError(4),option}function getTestOption(option){return!(0,_lodash6.default)(option)&&(0,_lodash2.default)(option)&&throwError(1,optionLabels.test),(0,_lodash6.default)(option)||throwError(2,optionLabels.test),option}function getReplacerListOption(option){return(0,_lodash10.default)(option)?[option]:((0,_lodash2.default)(option)&&throwError(1,optionLabels.replacer),Array.isArray(option)?option:[option])}function getReplacerOption(option){return(0,_lodash4.default)(option)||(0,_lodash10.default)(option)||throwError(3,optionLabels.replacer),option}var types=_ref.types;return{visitor:{ImportDeclaration:function ImportDeclaration(path,_ref2){var opts=_ref2.opts;if(!path.node.__processed){(0,_lodash2.default)(opts)&&throwError(0);var source=path.node.source.value,transforms=[],options=opts;Array.isArray(options)||(options=[opts]);for(var _ret,_loop=function(i){var opt=getOption(options[i]),regex=getTestOption(opt[optionLabels.test]);if(regex.test(source)){var replacerList=getReplacerListOption(opt[optionLabels.replacer]);return replacerList.forEach(function(replacer){var repl=getReplacerOption(replacer),importDeclaration=types.importDeclaration(path.node.specifiers,types.stringLiteral(source.replace(regex,repl)));importDeclaration.__processed=!0,transforms.push(importDeclaration)}),'break'}},i=0;i { - - // Type Aliases - --type Interval = { -+type IntervalJalali = { - start: Date | number - end: Date | number - } --type IntervalAliased = Interval -+type IntervalAliasedJalali = IntervalJalali - --type Locale = { -+type LocaleJalali = { - code?: string - formatDistance?: (...args: Array) => any - formatRelative?: (...args: Array) => any -@@ -62,9 +62,9 @@ type Locale = { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } - } --type LocaleAliased = Locale -+type LocaleAliasedJalali = LocaleJalali - --type Duration = { -+type DurationJalali = { - years?: number - months?: number - weeks?: number -@@ -73,16 +73,16 @@ type Duration = { - minutes?: number - seconds?: number - } --type DurationAliased = Duration -+type DurationAliasedJalali = DurationJalali - - // Exported Type Aliases - - declare module 'date-fns-jalali' { -- export type Interval = IntervalAliased -+ export type Interval = IntervalAliasedJalali - -- export type Locale = LocaleAliased -+ export type Locale = LocaleAliasedJalali - -- export type Duration = DurationAliased -+ export type Duration = DurationAliasedJalali - } - - // Regular Functions -@@ -3858,7 +3858,7 @@ declare module 'date-fns-jalali/toDate/index.js' { - // FP Functions - - declare module 'date-fns-jalali/fp' { -- const add: CurriedFn2 -+ const add: CurriedFn2 - namespace add {} - - const addBusinessDays: CurriedFn2 -@@ -3894,15 +3894,15 @@ declare module 'date-fns-jalali/fp' { - const addYears: CurriedFn2 - namespace addYears {} - -- const areIntervalsOverlapping: CurriedFn2 -+ const areIntervalsOverlapping: CurriedFn2 - namespace areIntervalsOverlapping {} - - const areIntervalsOverlappingWithOptions: CurriedFn3< - { - inclusive?: boolean - }, -- Interval, -- Interval, -+ IntervalJalali, -+ IntervalJalali, - boolean - > - namespace areIntervalsOverlappingWithOptions {} -@@ -3971,7 +3971,7 @@ declare module 'date-fns-jalali/fp' { - const differenceInCalendarWeeksWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date | number, -@@ -4024,22 +4024,22 @@ declare module 'date-fns-jalali/fp' { - const differenceInYears: CurriedFn2 - namespace differenceInYears {} - -- const eachDayOfInterval: CurriedFn1 -+ const eachDayOfInterval: CurriedFn1 - namespace eachDayOfInterval {} - - const eachDayOfIntervalWithOptions: CurriedFn2< - { - step?: number - }, -- Interval, -+ IntervalJalali, - Date[] - > - namespace eachDayOfIntervalWithOptions {} - -- const eachMonthOfInterval: CurriedFn1 -+ const eachMonthOfInterval: CurriedFn1 - namespace eachMonthOfInterval {} - -- const eachWeekendOfInterval: CurriedFn1 -+ const eachWeekendOfInterval: CurriedFn1 - namespace eachWeekendOfInterval {} - - const eachWeekendOfMonth: CurriedFn1 -@@ -4048,20 +4048,20 @@ declare module 'date-fns-jalali/fp' { - const eachWeekendOfYear: CurriedFn1 - namespace eachWeekendOfYear {} - -- const eachWeekOfInterval: CurriedFn1 -+ const eachWeekOfInterval: CurriedFn1 - namespace eachWeekOfInterval {} - - const eachWeekOfIntervalWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, -- Interval, -+ IntervalJalali, - Date[] - > - namespace eachWeekOfIntervalWithOptions {} - -- const eachYearOfInterval: CurriedFn1 -+ const eachYearOfInterval: CurriedFn1 - namespace eachYearOfInterval {} - - const endOfDay: CurriedFn1 -@@ -4106,7 +4106,7 @@ declare module 'date-fns-jalali/fp' { - const endOfWeekWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -4127,7 +4127,7 @@ declare module 'date-fns-jalali/fp' { - - const formatDistanceStrictWithOptions: CurriedFn3< - { -- locale?: Locale -+ locale?: LocaleJalali - roundingMethod?: 'floor' | 'ceil' | 'round' - unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' - addSuffix?: boolean -@@ -4140,7 +4140,7 @@ declare module 'date-fns-jalali/fp' { - - const formatDistanceWithOptions: CurriedFn3< - { -- locale?: Locale -+ locale?: LocaleJalali - addSuffix?: boolean - includeSeconds?: boolean - }, -@@ -4166,7 +4166,7 @@ declare module 'date-fns-jalali/fp' { - > - namespace formatISO9075WithOptions {} - -- const formatISODuration: CurriedFn1 -+ const formatISODuration: CurriedFn1 - namespace formatISODuration {} - - const formatISOWithOptions: CurriedFn2< -@@ -4185,7 +4185,7 @@ declare module 'date-fns-jalali/fp' { - const formatRelativeWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date | number, -@@ -4214,7 +4214,7 @@ declare module 'date-fns-jalali/fp' { - useAdditionalWeekYearTokens?: boolean - firstWeekContainsDate?: number - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - string, - Date | number, -@@ -4267,7 +4267,7 @@ declare module 'date-fns-jalali/fp' { - const getMonth: CurriedFn1 - namespace getMonth {} - -- const getOverlappingDaysInIntervals: CurriedFn2 -+ const getOverlappingDaysInIntervals: CurriedFn2 - namespace getOverlappingDaysInIntervals {} - - const getQuarter: CurriedFn1 -@@ -4291,7 +4291,7 @@ declare module 'date-fns-jalali/fp' { - const getWeekOfMonthWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -4304,7 +4304,7 @@ declare module 'date-fns-jalali/fp' { - const getWeeksInMonthWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -4315,7 +4315,7 @@ declare module 'date-fns-jalali/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -4329,7 +4329,7 @@ declare module 'date-fns-jalali/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -4339,7 +4339,7 @@ declare module 'date-fns-jalali/fp' { - const getYear: CurriedFn1 - namespace getYear {} - -- const intervalToDuration: CurriedFn1 -+ const intervalToDuration: CurriedFn1 - namespace intervalToDuration {} - - const isAfter: CurriedFn2 -@@ -4402,7 +4402,7 @@ declare module 'date-fns-jalali/fp' { - const isSameWeekWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date | number, -@@ -4434,7 +4434,7 @@ declare module 'date-fns-jalali/fp' { - const isWeekend: CurriedFn1 - namespace isWeekend {} - -- const isWithinInterval: CurriedFn2 -+ const isWithinInterval: CurriedFn2 - namespace isWithinInterval {} - - const lastDayOfDecade: CurriedFn1 -@@ -4467,7 +4467,7 @@ declare module 'date-fns-jalali/fp' { - const lastDayOfWeekWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -4510,7 +4510,7 @@ declare module 'date-fns-jalali/fp' { - useAdditionalWeekYearTokens?: boolean - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - string, -@@ -4558,7 +4558,7 @@ declare module 'date-fns-jalali/fp' { - const setDayWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - number, - Date | number, -@@ -4600,7 +4600,7 @@ declare module 'date-fns-jalali/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - number, - Date | number, -@@ -4615,7 +4615,7 @@ declare module 'date-fns-jalali/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - number, - Date | number, -@@ -4659,7 +4659,7 @@ declare module 'date-fns-jalali/fp' { - const startOfWeekWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -4673,7 +4673,7 @@ declare module 'date-fns-jalali/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -4683,7 +4683,7 @@ declare module 'date-fns-jalali/fp' { - const startOfYear: CurriedFn1 - namespace startOfYear {} - -- const sub: CurriedFn2 -+ const sub: CurriedFn2 - namespace sub {} - - const subBusinessDays: CurriedFn2 -@@ -7715,7 +7715,7 @@ declare module 'date-fns-jalali/fp/toDate/index.js' { - // ECMAScript Module Functions - - declare module 'date-fns-jalali/esm' { -- function add(date: Date | number, duration: Duration): Date -+ function add(date: Date | number, duration: DurationJalali): Date - namespace add {} - - function addBusinessDays(date: Date | number, amount: number): Date -@@ -7752,8 +7752,8 @@ declare module 'date-fns-jalali/esm' { - namespace addYears {} - - function areIntervalsOverlapping( -- intervalLeft: Interval, -- intervalRight: Interval, -+ intervalLeft: IntervalJalali, -+ intervalRight: IntervalJalali, - options?: { - inclusive?: boolean - } -@@ -7821,7 +7821,7 @@ declare module 'date-fns-jalali/esm' { - dateLeft: Date | number, - dateRight: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): number -@@ -7894,17 +7894,17 @@ declare module 'date-fns-jalali/esm' { - namespace differenceInYears {} - - function eachDayOfInterval( -- interval: Interval, -+ interval: IntervalJalali, - options?: { - step?: number - } - ): Date[] - namespace eachDayOfInterval {} - -- function eachMonthOfInterval(interval: Interval): Date[] -+ function eachMonthOfInterval(interval: IntervalJalali): Date[] - namespace eachMonthOfInterval {} - -- function eachWeekendOfInterval(interval: Interval): Date[] -+ function eachWeekendOfInterval(interval: IntervalJalali): Date[] - namespace eachWeekendOfInterval {} - - function eachWeekendOfMonth(date: Date | number): Date[] -@@ -7914,15 +7914,15 @@ declare module 'date-fns-jalali/esm' { - namespace eachWeekendOfYear {} - - function eachWeekOfInterval( -- interval: Interval, -+ interval: IntervalJalali, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date[] - namespace eachWeekOfInterval {} - -- function eachYearOfInterval(interval: Interval): Date[] -+ function eachYearOfInterval(interval: IntervalJalali): Date[] - namespace eachYearOfInterval {} - - function endOfDay(date: Date | number): Date -@@ -7966,7 +7966,7 @@ declare module 'date-fns-jalali/esm' { - function endOfWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -7982,7 +7982,7 @@ declare module 'date-fns-jalali/esm' { - date: Date | number, - format: string, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: number - useAdditionalWeekYearTokens?: boolean -@@ -7997,7 +7997,7 @@ declare module 'date-fns-jalali/esm' { - options?: { - includeSeconds?: boolean - addSuffix?: boolean -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - namespace formatDistance {} -@@ -8009,7 +8009,7 @@ declare module 'date-fns-jalali/esm' { - addSuffix?: boolean - unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' - roundingMethod?: 'floor' | 'ceil' | 'round' -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - namespace formatDistanceStrict {} -@@ -8019,7 +8019,7 @@ declare module 'date-fns-jalali/esm' { - options?: { - includeSeconds?: boolean - addSuffix?: boolean -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - namespace formatDistanceToNow {} -@@ -8030,7 +8030,7 @@ declare module 'date-fns-jalali/esm' { - addSuffix?: boolean - unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' - roundingMethod?: 'floor' | 'ceil' | 'round' -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - namespace formatDistanceToNowStrict {} -@@ -8053,14 +8053,14 @@ declare module 'date-fns-jalali/esm' { - ): string - namespace formatISO9075 {} - -- function formatISODuration(duration: Duration): string -+ function formatISODuration(duration: DurationJalali): string - namespace formatISODuration {} - - function formatRelative( - date: Date | number, - baseDate: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): string -@@ -8123,8 +8123,8 @@ declare module 'date-fns-jalali/esm' { - namespace getMonth {} - - function getOverlappingDaysInIntervals( -- intervalLeft: Interval, -- intervalRight: Interval -+ intervalLeft: IntervalJalali, -+ intervalRight: IntervalJalali - ): number - namespace getOverlappingDaysInIntervals {} - -@@ -8143,7 +8143,7 @@ declare module 'date-fns-jalali/esm' { - function getWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -8153,7 +8153,7 @@ declare module 'date-fns-jalali/esm' { - function getWeekOfMonth( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): number -@@ -8162,7 +8162,7 @@ declare module 'date-fns-jalali/esm' { - function getWeeksInMonth( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): number -@@ -8171,7 +8171,7 @@ declare module 'date-fns-jalali/esm' { - function getWeekYear( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -8181,7 +8181,7 @@ declare module 'date-fns-jalali/esm' { - function getYear(date: Date | number): number - namespace getYear {} - -- function intervalToDuration(interval: Interval): Duration -+ function intervalToDuration(interval: IntervalJalali): DurationJalali - namespace intervalToDuration {} - - function isAfter(date: Date | number, dateToCompare: Date | number): boolean -@@ -8269,7 +8269,7 @@ declare module 'date-fns-jalali/esm' { - dateLeft: Date | number, - dateRight: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): boolean -@@ -8308,7 +8308,7 @@ declare module 'date-fns-jalali/esm' { - function isThisWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): boolean -@@ -8338,7 +8338,7 @@ declare module 'date-fns-jalali/esm' { - function isWeekend(date: Date | number): boolean - namespace isWeekend {} - -- function isWithinInterval(date: Date | number, interval: Interval): boolean -+ function isWithinInterval(date: Date | number, interval: IntervalJalali): boolean - namespace isWithinInterval {} - - function isYesterday(date: Date | number): boolean -@@ -8367,7 +8367,7 @@ declare module 'date-fns-jalali/esm' { - function lastDayOfWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -8390,7 +8390,7 @@ declare module 'date-fns-jalali/esm' { - formatString: string, - referenceDate: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - useAdditionalWeekYearTokens?: boolean -@@ -8439,7 +8439,7 @@ declare module 'date-fns-jalali/esm' { - date: Date | number, - day: number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -8479,7 +8479,7 @@ declare module 'date-fns-jalali/esm' { - date: Date | number, - week: number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -8490,7 +8490,7 @@ declare module 'date-fns-jalali/esm' { - date: Date | number, - weekYear: number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -8536,7 +8536,7 @@ declare module 'date-fns-jalali/esm' { - function startOfWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -8545,7 +8545,7 @@ declare module 'date-fns-jalali/esm' { - function startOfWeekYear( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -8558,7 +8558,7 @@ declare module 'date-fns-jalali/esm' { - function startOfYesterday(): Date - namespace startOfYesterday {} - -- function sub(date: Date | number, duration: Duration): Date -+ function sub(date: Date | number, duration: DurationJalali): Date - namespace sub {} - - function subBusinessDays(date: Date | number, amount: number): Date -@@ -11485,7 +11485,7 @@ declare module 'date-fns-jalali/esm/toDate/index.js' { - // ECMAScript Module FP Functions - - declare module 'date-fns-jalali/esm/fp' { -- const add: CurriedFn2 -+ const add: CurriedFn2 - namespace add {} - - const addBusinessDays: CurriedFn2 -@@ -11521,15 +11521,15 @@ declare module 'date-fns-jalali/esm/fp' { - const addYears: CurriedFn2 - namespace addYears {} - -- const areIntervalsOverlapping: CurriedFn2 -+ const areIntervalsOverlapping: CurriedFn2 - namespace areIntervalsOverlapping {} - - const areIntervalsOverlappingWithOptions: CurriedFn3< - { - inclusive?: boolean - }, -- Interval, -- Interval, -+ IntervalJalali, -+ IntervalJalali, - boolean - > - namespace areIntervalsOverlappingWithOptions {} -@@ -11598,7 +11598,7 @@ declare module 'date-fns-jalali/esm/fp' { - const differenceInCalendarWeeksWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date | number, -@@ -11651,22 +11651,22 @@ declare module 'date-fns-jalali/esm/fp' { - const differenceInYears: CurriedFn2 - namespace differenceInYears {} - -- const eachDayOfInterval: CurriedFn1 -+ const eachDayOfInterval: CurriedFn1 - namespace eachDayOfInterval {} - - const eachDayOfIntervalWithOptions: CurriedFn2< - { - step?: number - }, -- Interval, -+ IntervalJalali, - Date[] - > - namespace eachDayOfIntervalWithOptions {} - -- const eachMonthOfInterval: CurriedFn1 -+ const eachMonthOfInterval: CurriedFn1 - namespace eachMonthOfInterval {} - -- const eachWeekendOfInterval: CurriedFn1 -+ const eachWeekendOfInterval: CurriedFn1 - namespace eachWeekendOfInterval {} - - const eachWeekendOfMonth: CurriedFn1 -@@ -11675,20 +11675,20 @@ declare module 'date-fns-jalali/esm/fp' { - const eachWeekendOfYear: CurriedFn1 - namespace eachWeekendOfYear {} - -- const eachWeekOfInterval: CurriedFn1 -+ const eachWeekOfInterval: CurriedFn1 - namespace eachWeekOfInterval {} - - const eachWeekOfIntervalWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, -- Interval, -+ IntervalJalali, - Date[] - > - namespace eachWeekOfIntervalWithOptions {} - -- const eachYearOfInterval: CurriedFn1 -+ const eachYearOfInterval: CurriedFn1 - namespace eachYearOfInterval {} - - const endOfDay: CurriedFn1 -@@ -11733,7 +11733,7 @@ declare module 'date-fns-jalali/esm/fp' { - const endOfWeekWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -11754,7 +11754,7 @@ declare module 'date-fns-jalali/esm/fp' { - - const formatDistanceStrictWithOptions: CurriedFn3< - { -- locale?: Locale -+ locale?: LocaleJalali - roundingMethod?: 'floor' | 'ceil' | 'round' - unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' - addSuffix?: boolean -@@ -11767,7 +11767,7 @@ declare module 'date-fns-jalali/esm/fp' { - - const formatDistanceWithOptions: CurriedFn3< - { -- locale?: Locale -+ locale?: LocaleJalali - addSuffix?: boolean - includeSeconds?: boolean - }, -@@ -11793,7 +11793,7 @@ declare module 'date-fns-jalali/esm/fp' { - > - namespace formatISO9075WithOptions {} - -- const formatISODuration: CurriedFn1 -+ const formatISODuration: CurriedFn1 - namespace formatISODuration {} - - const formatISOWithOptions: CurriedFn2< -@@ -11812,7 +11812,7 @@ declare module 'date-fns-jalali/esm/fp' { - const formatRelativeWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date | number, -@@ -11841,7 +11841,7 @@ declare module 'date-fns-jalali/esm/fp' { - useAdditionalWeekYearTokens?: boolean - firstWeekContainsDate?: number - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - string, - Date | number, -@@ -11894,7 +11894,7 @@ declare module 'date-fns-jalali/esm/fp' { - const getMonth: CurriedFn1 - namespace getMonth {} - -- const getOverlappingDaysInIntervals: CurriedFn2 -+ const getOverlappingDaysInIntervals: CurriedFn2 - namespace getOverlappingDaysInIntervals {} - - const getQuarter: CurriedFn1 -@@ -11918,7 +11918,7 @@ declare module 'date-fns-jalali/esm/fp' { - const getWeekOfMonthWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -11931,7 +11931,7 @@ declare module 'date-fns-jalali/esm/fp' { - const getWeeksInMonthWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -11942,7 +11942,7 @@ declare module 'date-fns-jalali/esm/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -11956,7 +11956,7 @@ declare module 'date-fns-jalali/esm/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - number -@@ -11966,7 +11966,7 @@ declare module 'date-fns-jalali/esm/fp' { - const getYear: CurriedFn1 - namespace getYear {} - -- const intervalToDuration: CurriedFn1 -+ const intervalToDuration: CurriedFn1 - namespace intervalToDuration {} - - const isAfter: CurriedFn2 -@@ -12029,7 +12029,7 @@ declare module 'date-fns-jalali/esm/fp' { - const isSameWeekWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date | number, -@@ -12061,7 +12061,7 @@ declare module 'date-fns-jalali/esm/fp' { - const isWeekend: CurriedFn1 - namespace isWeekend {} - -- const isWithinInterval: CurriedFn2 -+ const isWithinInterval: CurriedFn2 - namespace isWithinInterval {} - - const lastDayOfDecade: CurriedFn1 -@@ -12094,7 +12094,7 @@ declare module 'date-fns-jalali/esm/fp' { - const lastDayOfWeekWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -12137,7 +12137,7 @@ declare module 'date-fns-jalali/esm/fp' { - useAdditionalWeekYearTokens?: boolean - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - string, -@@ -12185,7 +12185,7 @@ declare module 'date-fns-jalali/esm/fp' { - const setDayWithOptions: CurriedFn3< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - number, - Date | number, -@@ -12227,7 +12227,7 @@ declare module 'date-fns-jalali/esm/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - number, - Date | number, -@@ -12242,7 +12242,7 @@ declare module 'date-fns-jalali/esm/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - number, - Date | number, -@@ -12286,7 +12286,7 @@ declare module 'date-fns-jalali/esm/fp' { - const startOfWeekWithOptions: CurriedFn2< - { - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -12300,7 +12300,7 @@ declare module 'date-fns-jalali/esm/fp' { - { - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 -- locale?: Locale -+ locale?: LocaleJalali - }, - Date | number, - Date -@@ -12310,7 +12310,7 @@ declare module 'date-fns-jalali/esm/fp' { - const startOfYear: CurriedFn1 - namespace startOfYear {} - -- const sub: CurriedFn2 -+ const sub: CurriedFn2 - namespace sub {} - - const subBusinessDays: CurriedFn2 -@@ -15342,223 +15342,223 @@ declare module 'date-fns-jalali/esm/fp/toDate/index.js' { - // Regular Locales - - declare module 'date-fns-jalali/locale' { -- const af: Locale -+ const af: LocaleJalali - namespace af {} - -- const ar: Locale -+ const ar: LocaleJalali - namespace ar {} - -- const arDZ: Locale -+ const arDZ: LocaleJalali - namespace arDZ {} - -- const arMA: Locale -+ const arMA: LocaleJalali - namespace arMA {} - -- const arSA: Locale -+ const arSA: LocaleJalali - namespace arSA {} - -- const az: Locale -+ const az: LocaleJalali - namespace az {} - -- const be: Locale -+ const be: LocaleJalali - namespace be {} - -- const bg: Locale -+ const bg: LocaleJalali - namespace bg {} - -- const bn: Locale -+ const bn: LocaleJalali - namespace bn {} - -- const ca: Locale -+ const ca: LocaleJalali - namespace ca {} - -- const cs: Locale -+ const cs: LocaleJalali - namespace cs {} - -- const cy: Locale -+ const cy: LocaleJalali - namespace cy {} - -- const da: Locale -+ const da: LocaleJalali - namespace da {} - -- const de: Locale -+ const de: LocaleJalali - namespace de {} - -- const el: Locale -+ const el: LocaleJalali - namespace el {} - -- const enAU: Locale -+ const enAU: LocaleJalali - namespace enAU {} - -- const enCA: Locale -+ const enCA: LocaleJalali - namespace enCA {} - -- const enGB: Locale -+ const enGB: LocaleJalali - namespace enGB {} - -- const enUS: Locale -+ const enUS: LocaleJalali - namespace enUS {} - -- const eo: Locale -+ const eo: LocaleJalali - namespace eo {} - -- const es: Locale -+ const es: LocaleJalali - namespace es {} - -- const et: Locale -+ const et: LocaleJalali - namespace et {} - -- const faIR: Locale -+ const faIR: LocaleJalali - namespace faIR {} - -- const fajalaliIR: Locale -+ const fajalaliIR: LocaleJalali - namespace fajalaliIR {} - -- const fi: Locale -+ const fi: LocaleJalali - namespace fi {} - -- const fil: Locale -+ const fil: LocaleJalali - namespace fil {} - -- const fr: Locale -+ const fr: LocaleJalali - namespace fr {} - -- const frCA: Locale -+ const frCA: LocaleJalali - namespace frCA {} - -- const frCH: Locale -+ const frCH: LocaleJalali - namespace frCH {} - -- const gl: Locale -+ const gl: LocaleJalali - namespace gl {} - -- const gu: Locale -+ const gu: LocaleJalali - namespace gu {} - -- const he: Locale -+ const he: LocaleJalali - namespace he {} - -- const hi: Locale -+ const hi: LocaleJalali - namespace hi {} - -- const hr: Locale -+ const hr: LocaleJalali - namespace hr {} - -- const hu: Locale -+ const hu: LocaleJalali - namespace hu {} - -- const hy: Locale -+ const hy: LocaleJalali - namespace hy {} - -- const id: Locale -+ const id: LocaleJalali - namespace id {} - -- const is: Locale -+ const is: LocaleJalali - namespace is {} - -- const it: Locale -+ const it: LocaleJalali - namespace it {} - -- const ja: Locale -+ const ja: LocaleJalali - namespace ja {} - -- const ka: Locale -+ const ka: LocaleJalali - namespace ka {} - -- const kk: Locale -+ const kk: LocaleJalali - namespace kk {} - -- const kn: Locale -+ const kn: LocaleJalali - namespace kn {} - -- const ko: Locale -+ const ko: LocaleJalali - namespace ko {} - -- const lt: Locale -+ const lt: LocaleJalali - namespace lt {} - -- const lv: Locale -+ const lv: LocaleJalali - namespace lv {} - -- const mk: Locale -+ const mk: LocaleJalali - namespace mk {} - -- const ms: Locale -+ const ms: LocaleJalali - namespace ms {} - -- const mt: Locale -+ const mt: LocaleJalali - namespace mt {} - -- const nb: Locale -+ const nb: LocaleJalali - namespace nb {} - -- const nl: Locale -+ const nl: LocaleJalali - namespace nl {} - -- const nlBE: Locale -+ const nlBE: LocaleJalali - namespace nlBE {} - -- const nn: Locale -+ const nn: LocaleJalali - namespace nn {} - -- const pl: Locale -+ const pl: LocaleJalali - namespace pl {} - -- const pt: Locale -+ const pt: LocaleJalali - namespace pt {} - -- const ptBR: Locale -+ const ptBR: LocaleJalali - namespace ptBR {} - -- const ro: Locale -+ const ro: LocaleJalali - namespace ro {} - -- const ru: Locale -+ const ru: LocaleJalali - namespace ru {} - -- const sk: Locale -+ const sk: LocaleJalali - namespace sk {} - -- const sl: Locale -+ const sl: LocaleJalali - namespace sl {} - -- const sr: Locale -+ const sr: LocaleJalali - namespace sr {} - -- const srLatn: Locale -+ const srLatn: LocaleJalali - namespace srLatn {} - -- const sv: Locale -+ const sv: LocaleJalali - namespace sv {} - -- const ta: Locale -+ const ta: LocaleJalali - namespace ta {} - -- const te: Locale -+ const te: LocaleJalali - namespace te {} - -- const th: Locale -+ const th: LocaleJalali - namespace th {} - -- const tr: Locale -+ const tr: LocaleJalali - namespace tr {} - -- const ug: Locale -+ const ug: LocaleJalali - namespace ug {} - -- const uk: Locale -+ const uk: LocaleJalali - namespace uk {} - -- const uz: Locale -+ const uz: LocaleJalali - namespace uz {} - -- const vi: Locale -+ const vi: LocaleJalali - namespace vi {} - -- const zhCN: Locale -+ const zhCN: LocaleJalali - namespace zhCN {} - -- const zhTW: Locale -+ const zhTW: LocaleJalali - namespace zhTW {} - } - -@@ -16660,223 +16660,223 @@ declare module 'date-fns-jalali/locale/zh-TW/index.js' { - // ECMAScript Module Locales - - declare module 'date-fns-jalali/esm/locale' { -- const af: Locale -+ const af: LocaleJalali - namespace af {} - -- const ar: Locale -+ const ar: LocaleJalali - namespace ar {} - -- const arDZ: Locale -+ const arDZ: LocaleJalali - namespace arDZ {} - -- const arMA: Locale -+ const arMA: LocaleJalali - namespace arMA {} - -- const arSA: Locale -+ const arSA: LocaleJalali - namespace arSA {} - -- const az: Locale -+ const az: LocaleJalali - namespace az {} - -- const be: Locale -+ const be: LocaleJalali - namespace be {} - -- const bg: Locale -+ const bg: LocaleJalali - namespace bg {} - -- const bn: Locale -+ const bn: LocaleJalali - namespace bn {} - -- const ca: Locale -+ const ca: LocaleJalali - namespace ca {} - -- const cs: Locale -+ const cs: LocaleJalali - namespace cs {} - -- const cy: Locale -+ const cy: LocaleJalali - namespace cy {} - -- const da: Locale -+ const da: LocaleJalali - namespace da {} - -- const de: Locale -+ const de: LocaleJalali - namespace de {} - -- const el: Locale -+ const el: LocaleJalali - namespace el {} - -- const enAU: Locale -+ const enAU: LocaleJalali - namespace enAU {} - -- const enCA: Locale -+ const enCA: LocaleJalali - namespace enCA {} - -- const enGB: Locale -+ const enGB: LocaleJalali - namespace enGB {} - -- const enUS: Locale -+ const enUS: LocaleJalali - namespace enUS {} - -- const eo: Locale -+ const eo: LocaleJalali - namespace eo {} - -- const es: Locale -+ const es: LocaleJalali - namespace es {} - -- const et: Locale -+ const et: LocaleJalali - namespace et {} - -- const faIR: Locale -+ const faIR: LocaleJalali - namespace faIR {} - -- const fajalaliIR: Locale -+ const fajalaliIR: LocaleJalali - namespace fajalaliIR {} - -- const fi: Locale -+ const fi: LocaleJalali - namespace fi {} - -- const fil: Locale -+ const fil: LocaleJalali - namespace fil {} - -- const fr: Locale -+ const fr: LocaleJalali - namespace fr {} - -- const frCA: Locale -+ const frCA: LocaleJalali - namespace frCA {} - -- const frCH: Locale -+ const frCH: LocaleJalali - namespace frCH {} - -- const gl: Locale -+ const gl: LocaleJalali - namespace gl {} - -- const gu: Locale -+ const gu: LocaleJalali - namespace gu {} - -- const he: Locale -+ const he: LocaleJalali - namespace he {} - -- const hi: Locale -+ const hi: LocaleJalali - namespace hi {} - -- const hr: Locale -+ const hr: LocaleJalali - namespace hr {} - -- const hu: Locale -+ const hu: LocaleJalali - namespace hu {} - -- const hy: Locale -+ const hy: LocaleJalali - namespace hy {} - -- const id: Locale -+ const id: LocaleJalali - namespace id {} - -- const is: Locale -+ const is: LocaleJalali - namespace is {} - -- const it: Locale -+ const it: LocaleJalali - namespace it {} - -- const ja: Locale -+ const ja: LocaleJalali - namespace ja {} - -- const ka: Locale -+ const ka: LocaleJalali - namespace ka {} - -- const kk: Locale -+ const kk: LocaleJalali - namespace kk {} - -- const kn: Locale -+ const kn: LocaleJalali - namespace kn {} - -- const ko: Locale -+ const ko: LocaleJalali - namespace ko {} - -- const lt: Locale -+ const lt: LocaleJalali - namespace lt {} - -- const lv: Locale -+ const lv: LocaleJalali - namespace lv {} - -- const mk: Locale -+ const mk: LocaleJalali - namespace mk {} - -- const ms: Locale -+ const ms: LocaleJalali - namespace ms {} - -- const mt: Locale -+ const mt: LocaleJalali - namespace mt {} - -- const nb: Locale -+ const nb: LocaleJalali - namespace nb {} - -- const nl: Locale -+ const nl: LocaleJalali - namespace nl {} - -- const nlBE: Locale -+ const nlBE: LocaleJalali - namespace nlBE {} - -- const nn: Locale -+ const nn: LocaleJalali - namespace nn {} - -- const pl: Locale -+ const pl: LocaleJalali - namespace pl {} - -- const pt: Locale -+ const pt: LocaleJalali - namespace pt {} - -- const ptBR: Locale -+ const ptBR: LocaleJalali - namespace ptBR {} - -- const ro: Locale -+ const ro: LocaleJalali - namespace ro {} - -- const ru: Locale -+ const ru: LocaleJalali - namespace ru {} - -- const sk: Locale -+ const sk: LocaleJalali - namespace sk {} - -- const sl: Locale -+ const sl: LocaleJalali - namespace sl {} - -- const sr: Locale -+ const sr: LocaleJalali - namespace sr {} - -- const srLatn: Locale -+ const srLatn: LocaleJalali - namespace srLatn {} - -- const sv: Locale -+ const sv: LocaleJalali - namespace sv {} - -- const ta: Locale -+ const ta: LocaleJalali - namespace ta {} - -- const te: Locale -+ const te: LocaleJalali - namespace te {} - -- const th: Locale -+ const th: LocaleJalali - namespace th {} - -- const tr: Locale -+ const tr: LocaleJalali - namespace tr {} - -- const ug: Locale -+ const ug: LocaleJalali - namespace ug {} - -- const uk: Locale -+ const uk: LocaleJalali - namespace uk {} - -- const uz: Locale -+ const uz: LocaleJalali - namespace uz {} - -- const vi: Locale -+ const vi: LocaleJalali - namespace vi {} - -- const zhCN: Locale -+ const zhCN: LocaleJalali - namespace zhCN {} - -- const zhTW: Locale -+ const zhTW: LocaleJalali - namespace zhTW {} - } - -@@ -17978,7 +17978,7 @@ declare module 'date-fns-jalali/esm/locale/zh-TW/index.js' { - // dateFns Global Interface - - interface dateFns { -- add(date: Date | number, duration: Duration): Date -+ add(date: Date | number, duration: DurationJalali): Date - - addBusinessDays(date: Date | number, amount: number): Date - -@@ -18003,8 +18003,8 @@ interface dateFns { - addYears(date: Date | number, amount: number): Date - - areIntervalsOverlapping( -- intervalLeft: Interval, -- intervalRight: Interval, -+ intervalLeft: IntervalJalali, -+ intervalRight: IntervalJalali, - options?: { - inclusive?: boolean - } -@@ -18055,7 +18055,7 @@ interface dateFns { - dateLeft: Date | number, - dateRight: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): number -@@ -18095,29 +18095,29 @@ interface dateFns { - differenceInYears(dateLeft: Date | number, dateRight: Date | number): number - - eachDayOfInterval( -- interval: Interval, -+ interval: IntervalJalali, - options?: { - step?: number - } - ): Date[] - -- eachMonthOfInterval(interval: Interval): Date[] -+ eachMonthOfInterval(interval: IntervalJalali): Date[] - -- eachWeekendOfInterval(interval: Interval): Date[] -+ eachWeekendOfInterval(interval: IntervalJalali): Date[] - - eachWeekendOfMonth(date: Date | number): Date[] - - eachWeekendOfYear(date: Date | number): Date[] - - eachWeekOfInterval( -- interval: Interval, -+ interval: IntervalJalali, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date[] - -- eachYearOfInterval(interval: Interval): Date[] -+ eachYearOfInterval(interval: IntervalJalali): Date[] - - endOfDay(date: Date | number): Date - -@@ -18149,7 +18149,7 @@ interface dateFns { - endOfWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -18162,7 +18162,7 @@ interface dateFns { - date: Date | number, - format: string, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: number - useAdditionalWeekYearTokens?: boolean -@@ -18176,7 +18176,7 @@ interface dateFns { - options?: { - includeSeconds?: boolean - addSuffix?: boolean -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - -@@ -18187,7 +18187,7 @@ interface dateFns { - addSuffix?: boolean - unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' - roundingMethod?: 'floor' | 'ceil' | 'round' -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - -@@ -18196,7 +18196,7 @@ interface dateFns { - options?: { - includeSeconds?: boolean - addSuffix?: boolean -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - -@@ -18206,7 +18206,7 @@ interface dateFns { - addSuffix?: boolean - unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' - roundingMethod?: 'floor' | 'ceil' | 'round' -- locale?: Locale -+ locale?: LocaleJalali - } - ): string - -@@ -18226,13 +18226,13 @@ interface dateFns { - } - ): string - -- formatISODuration(duration: Duration): string -+ formatISODuration(duration: DurationJalali): string - - formatRelative( - date: Date | number, - baseDate: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): string -@@ -18277,8 +18277,8 @@ interface dateFns { - getMonth(date: Date | number): number - - getOverlappingDaysInIntervals( -- intervalLeft: Interval, -- intervalRight: Interval -+ intervalLeft: IntervalJalali, -+ intervalRight: IntervalJalali - ): number - - getQuarter(date: Date | number): number -@@ -18292,7 +18292,7 @@ interface dateFns { - getWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -18301,7 +18301,7 @@ interface dateFns { - getWeekOfMonth( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): number -@@ -18309,7 +18309,7 @@ interface dateFns { - getWeeksInMonth( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): number -@@ -18317,7 +18317,7 @@ interface dateFns { - getWeekYear( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -18325,7 +18325,7 @@ interface dateFns { - - getYear(date: Date | number): number - -- intervalToDuration(interval: Interval): Duration -+ intervalToDuration(interval: IntervalJalali): DurationJalali - - isAfter(date: Date | number, dateToCompare: Date | number): boolean - -@@ -18371,7 +18371,7 @@ interface dateFns { - dateLeft: Date | number, - dateRight: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): boolean -@@ -18397,7 +18397,7 @@ interface dateFns { - isThisWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): boolean -@@ -18418,7 +18418,7 @@ interface dateFns { - - isWeekend(date: Date | number): boolean - -- isWithinInterval(date: Date | number, interval: Interval): boolean -+ isWithinInterval(date: Date | number, interval: IntervalJalali): boolean - - isYesterday(date: Date | number): boolean - -@@ -18440,7 +18440,7 @@ interface dateFns { - lastDayOfWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -18458,7 +18458,7 @@ interface dateFns { - formatString: string, - referenceDate: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - useAdditionalWeekYearTokens?: boolean -@@ -18501,7 +18501,7 @@ interface dateFns { - date: Date | number, - day: number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -18530,7 +18530,7 @@ interface dateFns { - date: Date | number, - week: number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -18540,7 +18540,7 @@ interface dateFns { - date: Date | number, - weekYear: number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -18573,7 +18573,7 @@ interface dateFns { - startOfWeek( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - } - ): Date -@@ -18581,7 +18581,7 @@ interface dateFns { - startOfWeekYear( - date: Date | number, - options?: { -- locale?: Locale -+ locale?: LocaleJalali - weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 - firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 - } -@@ -18591,7 +18591,7 @@ interface dateFns { - - startOfYesterday(): Date - -- sub(date: Date | number, duration: Duration): Date -+ sub(date: Date | number, duration: DurationJalali): Date - - subBusinessDays(date: Date | number, amount: number): Date - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9a68402a405..2c6e7c275583 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,11 +10,8 @@ overrides: patchedDependencies: babel-plugin-replace-imports@1.0.2: - hash: h4cab4lqksemkw6ln3l3h4s77e + hash: 7wlacyoi44skuhtzjdjwgtjyxe path: patches/babel-plugin-replace-imports@1.0.2.patch - date-fns-jalali@2.13.0-0: - hash: knk56uiq6xxn77bv6lgrgre7si - path: patches/date-fns-jalali@2.13.0-0.patch karma-mocha@2.0.1: hash: r6idlcdpax26bbzwxyjicxb5ra path: patches/karma-mocha@2.0.1.patch @@ -187,7 +184,7 @@ importers: version: 0.3.0 babel-plugin-replace-imports: specifier: ^1.0.2 - version: 1.0.2(patch_hash=h4cab4lqksemkw6ln3l3h4s77e) + version: 1.0.2(patch_hash=7wlacyoi44skuhtzjdjwgtjyxe) babel-plugin-search-and-replace: specifier: ^1.1.1 version: 1.1.1 @@ -215,6 +212,9 @@ importers: danger: specifier: ^11.3.1 version: 11.3.1 + date-fns-jalali-v3: + specifier: npm:date-fns-jalali@3.6.0-0 + version: /date-fns-jalali@3.6.0-0 date-fns-v3: specifier: npm:date-fns@3.6.0 version: /date-fns@3.6.0 @@ -510,8 +510,8 @@ importers: specifier: ^2.30.0 version: 2.30.0 date-fns-jalali: - specifier: ^2.21.3-1 - version: 2.21.3-1 + specifier: ^2.30.0-0 + version: 2.30.0-0 dayjs: specifier: ^1.11.11 version: 1.11.11 @@ -1046,8 +1046,8 @@ importers: specifier: ^2.30.0 version: 2.30.0 date-fns-jalali: - specifier: ^2.13.0-0 - version: 2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si) + specifier: ^2.30.0-0 + version: 2.30.0-0 dayjs: specifier: ^1.11.11 version: 1.11.11 @@ -1103,9 +1103,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - date-fns-jalali: - specifier: ^2.13.0-0 - version: 2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si) moment-hijri: specifier: ^2.1.2 version: 2.1.2 @@ -1134,6 +1131,9 @@ importers: date-fns: specifier: ^2.30.0 version: 2.30.0 + date-fns-jalali: + specifier: ^2.30.0-0 + version: 2.30.0-0 dayjs: specifier: ^1.11.11 version: 1.11.11 @@ -6594,7 +6594,7 @@ packages: /babel-plugin-react-remove-properties@0.3.0: resolution: {integrity: sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng==} - /babel-plugin-replace-imports@1.0.2(patch_hash=h4cab4lqksemkw6ln3l3h4s77e): + /babel-plugin-replace-imports@1.0.2(patch_hash=7wlacyoi44skuhtzjdjwgtjyxe): resolution: {integrity: sha512-v+9S4FBg9wYit3c+bDxhRHv/pnhBhhneZOPvqT1c293SSjUuUy1MPK76TsJ9038fp/SD2/TNcqG5PUBoG9/ByQ==} dependencies: lodash.isempty: 4.4.0 @@ -8186,14 +8186,15 @@ packages: is-data-view: 1.0.1 dev: true - /date-fns-jalali@2.13.0-0(patch_hash=knk56uiq6xxn77bv6lgrgre7si): - resolution: {integrity: sha512-yjlI9O18Z6ryGNagryrLO8OQ+3rishM3+A0UOX2UX10cWMn2NTlQcQ+ywTEJvF5IJz0FwX/slt2nCcpyQ/c8gw==} - patched: true - - /date-fns-jalali@2.21.3-1: - resolution: {integrity: sha512-Sgw1IdgCgyWDKCpq6uwAu24vPMOtvmcXXXuETr1jQO/aVj4h23XAltcP7hLbo+osqoiJnPmiydbI/q1W7TYAjA==} + /date-fns-jalali@2.30.0-0: + resolution: {integrity: sha512-2wz5AOzd3oQ+PnL3E/iKvJZ14i6oTp15sW047ZFCOgM9OSP8ggbb9jm/4SKI8ejdUGH96Krb5dfEQe8zbkVyZw==} engines: {node: '>=0.11'} - dev: false + dependencies: + '@babel/runtime': 7.24.4 + + /date-fns-jalali@3.6.0-0: + resolution: {integrity: sha512-rcOocwhBFgEN4i+vXPoEp/irCxAmX8yloK/l/oeMOVCLpaFQfkq7jVn0vCWK91P2H9I/doSAPEN4WSWQeqwsug==} + dev: true /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} From f13c0f9f94924f2d8976e94dfba32f8bd72c20c4 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 9 May 2024 15:44:06 +0300 Subject: [PATCH 247/912] [fields] Fix regression preventing form submit on "Enter" click (#13065) --- .../src/internals/hooks/useField/useField.ts | 5 ---- .../hooks/useField/useFieldV7TextField.ts | 6 ++++ .../DatePicker/DesktopDatePickerForm.tsx | 26 +++++++++++++++++ .../DatePicker/DesktopDatePickerFormV7.tsx | 27 +++++++++++++++++ test/e2e/index.test.ts | 29 +++++++++++++++++++ 5 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 test/e2e/fixtures/DatePicker/DesktopDatePickerForm.tsx create mode 100644 test/e2e/fixtures/DatePicker/DesktopDatePickerFormV7.tsx diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useField.ts b/packages/x-date-pickers/src/internals/hooks/useField/useField.ts index 405cdf2f9885..cad6083d523d 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useField.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useField.ts @@ -133,11 +133,6 @@ export const useField = < break; } - case event.key === 'Enter': { - event.preventDefault(); - break; - } - // Move selection to next section case event.key === 'ArrowRight': { event.preventDefault(); diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV7TextField.ts b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV7TextField.ts index ec2457a8d76b..741323d69b4c 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useFieldV7TextField.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useFieldV7TextField.ts @@ -370,6 +370,12 @@ export const useFieldV7TextField: UseFieldTextField = (params) => { return; } + const inputType = (event.nativeEvent as InputEvent).inputType; + if (inputType === 'insertParagraph' || inputType === 'insertLineBreak') { + revertDOMSectionChange(sectionIndex); + return; + } + resetCharacterQuery(); clearActiveSection(); return; diff --git a/test/e2e/fixtures/DatePicker/DesktopDatePickerForm.tsx b/test/e2e/fixtures/DatePicker/DesktopDatePickerForm.tsx new file mode 100644 index 000000000000..e9ff9435433e --- /dev/null +++ b/test/e2e/fixtures/DatePicker/DesktopDatePickerForm.tsx @@ -0,0 +1,26 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; + +export default function DesktopDatePickerForm() { + const [submittedDate, setSubmittedDate] = React.useState(null); + const submitHandler: React.FormEventHandler = (event) => { + event.preventDefault(); + setSubmittedDate(new FormData(event.target as HTMLFormElement).values().next().value); + }; + return ( +
    + + + + {submittedDate && } + +
    + ); +} diff --git a/test/e2e/fixtures/DatePicker/DesktopDatePickerFormV7.tsx b/test/e2e/fixtures/DatePicker/DesktopDatePickerFormV7.tsx new file mode 100644 index 000000000000..6cc1c44fd5a9 --- /dev/null +++ b/test/e2e/fixtures/DatePicker/DesktopDatePickerFormV7.tsx @@ -0,0 +1,27 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; + +export default function DesktopDatePickerFormV7() { + const [submittedDate, setSubmittedDate] = React.useState(null); + const submitHandler: React.FormEventHandler = (event) => { + event.preventDefault(); + setSubmittedDate(new FormData(event.target as HTMLFormElement).values().next().value); + }; + return ( +
    + + + + {submittedDate && } + +
    + ); +} diff --git a/test/e2e/index.test.ts b/test/e2e/index.test.ts index 23a9d8147401..866ae9c5c89d 100644 --- a/test/e2e/index.test.ts +++ b/test/e2e/index.test.ts @@ -737,6 +737,35 @@ async function initializeEnvironment( expect(await page.evaluate(() => document.getSelection()?.toString())).to.equal('MM'); } }); + + it('should submit a form when clicking "Enter" key', async () => { + await renderFixture('DatePicker/DesktopDatePickerForm'); + + const textbox = page.getByRole('textbox'); + await textbox.focus(); + await textbox.press('Enter'); + + expect(await page.getByRole('textbox').inputValue()).to.equal('04/17/2022'); + const status = page.getByRole('status'); + expect(await status.isVisible()).to.equal(true); + expect(await status.textContent()).to.equal('Submitted: 04/17/2022'); + }); + + // TODO: enable when v7 fields form submitting is fixed + // it('should submit a form when clicking "Enter" key with v7 field', async () => { + // await renderFixture('DatePicker/DesktopDatePickerFormV7'); + + // const monthSpinbutton = page.getByRole(`spinbutton`, { name: 'Month' }); + // await monthSpinbutton.focus(); + // await monthSpinbutton.press('Enter'); + + // expect(await page.getByRole('textbox', { includeHidden: true }).inputValue()).to.equal( + // '04/17/2022', + // ); + // const status = page.getByRole('status'); + // expect(await status.isVisible()).to.equal(true); + // expect(await status.textContent()).to.equal('Submitted: 04/17/2022'); + // }); }); describe('', () => { From 4ef748c7630d0e28876dc8421a3501363d79664b Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Thu, 9 May 2024 19:10:16 +0200 Subject: [PATCH 248/912] [docs] Fix Charts styling typos (#13061) --- docs/data/charts/styling/styling.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/charts/styling/styling.md b/docs/data/charts/styling/styling.md index 3ab1003b62f9..9f795806ee5d 100644 --- a/docs/data/charts/styling/styling.md +++ b/docs/data/charts/styling/styling.md @@ -74,7 +74,7 @@ The `color` property can either be an array of two colors to interpolate, or an The [d3-scale-chromatic](https://d3js.org/d3-scale-chromatic) offers a lot of those functions. Values lower than the `min` get the color of the `min` value; similarly, values higher than the `max` get the color of the `max` value. -By default the `min`/`max` range is set to 0 / 100. +By default, the `min`/`max` range is set to 0 / 100. ```ts { @@ -104,7 +104,7 @@ This configuration can be used in Bar Charts to set colors according to string c ## Overlay -Charts have a _loading_ and _noData_ overlays that appears if +Charts have a _loading_ and _noData_ overlays that appear if: - `loading` prop is set to `true`. - There is no data to display. @@ -113,13 +113,13 @@ Charts have a _loading_ and _noData_ overlays that appears if ### Axis display -You can provide the axes data in order to display them while loading the data. +You can provide the axes data to display them while loading the data. {{"demo": "OverlayWithAxis.js"}} ### Custom overlay -To modify the overly message, you can use the `message` props as follow. +To modify the overlay message, you can use the `message` props as follows: ```jsx Date: Thu, 9 May 2024 21:06:28 +0200 Subject: [PATCH 249/912] [docs] Update interface name in pinned columns docs (#13070) --- docs/data/data-grid/column-pinning/column-pinning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/data-grid/column-pinning/column-pinning.md b/docs/data/data-grid/column-pinning/column-pinning.md index 40451599150e..959a847d3466 100644 --- a/docs/data/data-grid/column-pinning/column-pinning.md +++ b/docs/data/data-grid/column-pinning/column-pinning.md @@ -21,7 +21,7 @@ To pin a column, there are a few ways: To set pinned columns via `initialState`, pass an object with the following shape to this prop: ```ts -interface GridPinnedColumns { +interface GridPinnedColumnFields { left?: string[]; // Optional field names to pin to the left right?: string[]; // Optional field names to pin to the right } From e3e8a5f2d2c8c398066373bdafbf0e42420c3fff Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 10 May 2024 11:43:48 +0300 Subject: [PATCH 250/912] [docs-infra] Fix custom API page headings (#13074) --- docs/src/modules/components/InterfaceApiPage.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/src/modules/components/InterfaceApiPage.js b/docs/src/modules/components/InterfaceApiPage.js index 5dc94acc9d88..91c90e9e0ae7 100644 --- a/docs/src/modules/components/InterfaceApiPage.js +++ b/docs/src/modules/components/InterfaceApiPage.js @@ -37,11 +37,13 @@ function Heading(props) { return ( - {getTranslatedHeader(t, hash)} - - - - + + {getTranslatedHeader(t, hash)} + + + + + ); From ac189d75b5ee607e6f0e76e49b79c4f6472ec526 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 10 May 2024 15:28:07 +0300 Subject: [PATCH 251/912] [core] Refactor tests license setting (#13076) --- pnpm-lock.yaml | 3 +++ test/package.json | 1 + test/regressions/index.js | 9 +++------ test/utils/mochaHooks.js | 16 +++++++++------- test/utils/testLicense.js | 18 ++++++++++++++++++ 5 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 test/utils/testLicense.js diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c6e7c275583..5ab7762170c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1293,6 +1293,9 @@ importers: '@mui/x-date-pickers-pro': specifier: workspace:* version: link:../packages/x-date-pickers-pro/build + '@mui/x-license': + specifier: workspace:* + version: link:../packages/x-license/build '@playwright/test': specifier: ^1.43.1 version: 1.43.1 diff --git a/test/package.json b/test/package.json index d704642af68c..166827da5120 100644 --- a/test/package.json +++ b/test/package.json @@ -14,6 +14,7 @@ "@mui/x-data-grid-pro": "workspace:*", "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", + "@mui/x-license": "workspace:*", "@react-spring/web": "^9.7.3", "@playwright/test": "^1.43.1", "@types/chai": "^4.3.16", diff --git a/test/regressions/index.js b/test/regressions/index.js index 50ae921bf03e..c444cbddd747 100644 --- a/test/regressions/index.js +++ b/test/regressions/index.js @@ -1,15 +1,12 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom/client'; import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'; -import { LicenseInfo } from '@mui/x-license'; import TestViewer from 'test/regressions/TestViewer'; import { useFakeTimers } from 'sinon'; import { Globals } from '@react-spring/web'; -// This license key is only valid for use with Material UI SAS's projects -// See the terms: https://mui.com/r/x-license-eula -LicenseInfo.setLicenseKey( - 'e43ff101678711136a9b81c18047cb69Tz1NVUktRG9jLEU9MTc0Njc4NzYxODIwMSxTPXByZW1pdW0sTE09c3Vic2NyaXB0aW9uLEtWPTI=', -); +import { setupTestLicenseKey } from '../utils/testLicense'; + +setupTestLicenseKey(); Globals.assign({ skipAnimation: true, diff --git a/test/utils/mochaHooks.js b/test/utils/mochaHooks.js index 766da79d50a2..b5f113969c06 100644 --- a/test/utils/mochaHooks.js +++ b/test/utils/mochaHooks.js @@ -1,9 +1,9 @@ import sinon from 'sinon'; -import { LicenseInfo } from '@mui/x-license'; import { unstable_resetCleanupTracking as unstable_resetCleanupTrackingDataGrid } from '@mui/x-data-grid'; import { unstable_resetCleanupTracking as unstable_resetCleanupTrackingDataGridPro } from '@mui/x-data-grid-pro'; import { unstable_resetCleanupTracking as unstable_resetCleanupTrackingTreeView } from '@mui/x-tree-view'; import { clearWarningsCache } from '@mui/x-data-grid/internals'; +import { generateTestLicenseKey, setupTestLicenseKey } from './testLicense'; export function createXMochaHooks(coreMochaHooks = {}) { const mochaHooks = { @@ -13,12 +13,14 @@ export function createXMochaHooks(coreMochaHooks = {}) { afterEach: [...(coreMochaHooks.afterEach ?? [])], }; - mochaHooks.beforeEach.push(function setLicenseKey() { - // This license key is only valid for use with Material UI SAS's projects - // See the terms: https://mui.com/r/x-license-eula - LicenseInfo.setLicenseKey( - 'e43ff101678711136a9b81c18047cb69Tz1NVUktRG9jLEU9MTc0Njc4NzYxODIwMSxTPXByZW1pdW0sTE09c3Vic2NyaXB0aW9uLEtWPTI=', - ); + let licenseKey; + + mochaHooks.beforeAll.push(function func() { + licenseKey = generateTestLicenseKey(); + }); + + mochaHooks.beforeEach.push(function setupLicenseKey() { + setupTestLicenseKey(licenseKey); }); mochaHooks.afterEach.push(function resetCleanupTracking() { diff --git a/test/utils/testLicense.js b/test/utils/testLicense.js new file mode 100644 index 000000000000..8a48c66f8b06 --- /dev/null +++ b/test/utils/testLicense.js @@ -0,0 +1,18 @@ +import { LicenseInfo, generateLicense } from '@mui/x-license'; + +export function generateTestLicenseKey() { + const expiryDate = new Date(); + // Set the expiry date to 1 hour from now just to be on the safe side. + // Tests usually take up to 15 minutes to run on CI. + expiryDate.setHours(expiryDate.getHours() + 1); + return generateLicense({ + licensingModel: 'subscription', + scope: 'premium', + orderNumber: 'MUI X tests', + expiryDate, + }); +} + +export function setupTestLicenseKey(licenseKey = generateTestLicenseKey()) { + LicenseInfo.setLicenseKey(licenseKey); +} From b7e97f4afe1ae7beefc1901b008ee01fb00b91a5 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 10 May 2024 14:47:13 -0400 Subject: [PATCH 252/912] v7.4.0 (#13058) Signed-off-by: Rom Grk Co-authored-by: Lukas Co-authored-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Andrew Cherniavskii Co-authored-by: Flavien DELANGLE --- CHANGELOG.md | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d3e6e7f4ee..3edf9204b54c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,73 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.4.0 + +_May 10, 2024_ + +We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨: + +- ✨ Add optional `id` attribute on shortcut items of the Date and Time Pickers +- 🎁 Add support for `date-fns-jalali` v3 in the Date and Time Pickers +- 🚀 Support rounded corners on `BarChart` +- 🌍 Add accessibility page to TreeView docs +- 🐞 Bugfixes +- 📚 Documentation improvements + +### Data Grid + +#### `@mui/x-data-grid@7.4.0` + +- [DataGrid] Fix error when focus moves from column header to `svg` element (#13028) @oukunan +- [DataGrid] Fix error on column groups change (#12965) @romgrk + +#### `@mui/x-data-grid-pro@7.4.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.4.0`. + +#### `@mui/x-data-grid-premium@7.4.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.4.0`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.4.0` + +- [fields] Fix regression preventing form submit on "Enter" click (#13065) @LukasTy +- [pickers] Add `AdapterDateFnsJalaliV3` adapter (#12891) @smmoosavi +- [pickers] Add optional `id` attribute on shortcut items (#12976) @noraleonte + +#### `@mui/x-date-pickers-pro@7.4.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.4.0`. + +### Charts + +#### `@mui/x-charts@7.4.0` + +- [charts] Add `ChartsGrid` to `themeAugmentation` (#13026) @noraleonte +- [charts] Support rounded corners on `BarChart` (#12834) @JCQuintas + +### Tree View + +#### `@mui/x-tree-view@7.4.0` + +- [TreeView] Fix props propagation and theme entry in `TreeItem2` (#12889) @flaviendelangle + +### Docs + +- [docs] Add accessibility page to TreeView docs (#12845) @noraleonte +- [docs] Fix Charts styling typos (#13061) @oliviertassinari +- [docs] Fix legal link to EULA free trial (#13013) @oliviertassinari +- [docs] Update interface name in pinned columns docs (#13070) @cherniavskii + +### Core + +- [core] Improve release process docs (#12977) @JCQuintas +- [core] Prepare React 19 (#12991) @oliviertassinari +- [docs-infra] Fix Netlify PR preview path (#12993) @oliviertassinari +- [infra] Automation: Add release PR reviewers (#12982) @michelengelen + ## 7.3.2 _May 2, 2024_ @@ -17,8 +84,6 @@ We'd like to offer a big thanks to the 11 contributors who made this release pos - 🐞 Bugfixes - 📚 Documentation improvements - - ### Data Grid #### `@mui/x-data-grid@7.3.2` From 50bca293574defc1e8568ba348b8a76f4fe96c90 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 10 May 2024 15:10:48 -0400 Subject: [PATCH 253/912] v7.4.0 fix (#13080) --- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 2dcf359fd064..ed2e9417604c 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.3.2", + "version": "7.4.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 5622ff3ef106..19fe8ef0363e 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.3.2", + "version": "7.4.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index f659d50116d9..197803481811 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.3.2", + "version": "7.4.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 01f945b2ff41..330b7d11fa2a 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.3.2", + "version": "7.4.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 25d477cea0b6..29325fc37202 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.3.2", + "version": "7.4.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index e160f1e2e5a5..320ea577c572 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.3.2", + "version": "7.4.0", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 17372d3f15f9..e84037ae7520 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.3.2", + "version": "7.4.0", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index b9813dc5442f..9b71aac28a84 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.3.1", + "version": "7.4.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From 80a8b66eaa182eef16bac995f52799ac73c899ac Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 10 May 2024 15:19:07 -0400 Subject: [PATCH 254/912] v7.4.0 fix 2 (#13081) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b027bdde2aba..1a4fcd884fa8 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.3.2", + "version": "7.4.0", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", From b66c1e53aa9528797ad2b776154c7b38e82d40d0 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 10 May 2024 22:13:30 +0200 Subject: [PATCH 255/912] [DataGrid] Reduce bundle size with error messages (#12992) --- .../src/DataGridPremium/DataGridPremium.tsx | 13 ++++--- .../src/DataGridPro/DataGridPro.tsx | 4 +- .../x-data-grid/src/DataGrid/DataGrid.tsx | 37 +++++++++++-------- .../src/internals/utils/propValidation.ts | 15 +++----- 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 2528ab754e58..33c17ae307f2 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -28,10 +28,11 @@ export type { GridPremiumSlotsComponent as GridSlots } from '../models'; const releaseInfo = getReleaseInfo(); -const dataGridPremiumPropValidators: PropValidator[] = [ - ...propValidatorsDataGrid, - ...propValidatorsDataGridPro, -]; +let dataGridPremiumPropValidators: PropValidator[]; + +if (process.env.NODE_ENV !== 'production') { + dataGridPremiumPropValidators = [...propValidatorsDataGrid, ...propValidatorsDataGridPro]; +} const DataGridPremiumRaw = React.forwardRef(function DataGridPremium( inProps: DataGridPremiumProps, @@ -42,7 +43,9 @@ const DataGridPremiumRaw = React.forwardRef(function DataGridPremium [] = [ - ...propValidatorsDataGrid, - // Only validate in MIT version - (props) => - (props.columns && - props.columns.some((column) => column.resizable) && - [ - `MUI X: \`column.resizable = true\` is not a valid prop.`, - 'Column resizing is not available in the MIT version.', - '', - 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.', - ].join('\n')) || - undefined, -]; +let propValidators: PropValidator[]; + +if (process.env.NODE_ENV !== 'production') { + propValidators = [ + ...propValidatorsDataGrid, + // Only validate in MIT version + (props) => + (props.columns && + props.columns.some((column) => column.resizable) && + [ + `MUI X: \`column.resizable = true\` is not a valid prop.`, + 'Column resizing is not available in the MIT version.', + '', + 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.', + ].join('\n')) || + undefined, + ]; +} const DataGridRaw = React.forwardRef(function DataGrid( inProps: DataGridProps, @@ -37,8 +41,9 @@ const DataGridRaw = React.forwardRef(function DataGrid [] = [ ]; const warnedOnceCache = new Set(); -const warnOnce = (message: string) => { +function warnOnce(message: string) { if (!warnedOnceCache.has(message)) { console.error(message); warnedOnceCache.add(message); } -}; +} -export const validateProps = (props: TProps, validators: PropValidator[]) => { - if (process.env.NODE_ENV === 'production') { - return; - } +export function validateProps(props: TProps, validators: PropValidator[]) { validators.forEach((validator) => { const warning = validator(props); if (warning) { warnOnce(warning); } }); -}; +} -export const clearWarningsCache = () => { +export function clearWarningsCache() { warnedOnceCache.clear(); -}; +} From eb2654717136245e5db0983bd49343d4e58c8443 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 10 May 2024 23:01:20 +0200 Subject: [PATCH 256/912] [core] Simplify Danger's config (#13062) --- .circleci/config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index db7b6d12f160..24551bd24f34 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -276,12 +276,11 @@ jobs: steps: - checkout - install_js: + # TODO remove, no needed browsers: true - run: name: Run danger on PRs command: pnpm danger ci --fail-on-errors - environment: - DANGER_DISABLE_TRANSPILATION: 'true' workflows: version: 2 pipeline: From 1bdda70b7c4fe02079f2a20631c505e6c19d80b3 Mon Sep 17 00:00:00 2001 From: Jan Potoms <2109932+Janpot@users.noreply.github.com> Date: Mon, 13 May 2024 10:18:32 +0200 Subject: [PATCH 257/912] Shift aliasing from babel to webpack (#13051) --- docs/babel.config.js | 31 +------------- docs/next.config.mjs | 69 +++++++++++++++++++++++--------- docs/package.json | 1 + docs/scripts/formattedTSDemos.js | 5 ++- pnpm-lock.yaml | 30 ++++++++++++++ 5 files changed, 85 insertions(+), 51 deletions(-) diff --git a/docs/babel.config.js b/docs/babel.config.js index 939795a4f573..b7c85c75e8f3 100644 --- a/docs/babel.config.js +++ b/docs/babel.config.js @@ -1,25 +1,6 @@ const fse = require('fs-extra'); const getBaseConfig = require('../babel.config'); -const alias = { - '@mui/x-data-grid': '../packages/x-data-grid/src', - '@mui/x-data-grid-generator': '../packages/x-data-grid-generator/src', - '@mui/x-data-grid-pro': '../packages/x-data-grid-pro/src', - '@mui/x-data-grid-premium': '../packages/x-data-grid-premium/src', - '@mui/x-date-pickers': '../packages/x-date-pickers/src', - '@mui/x-date-pickers-pro': '../packages/x-date-pickers-pro/src', - '@mui/x-charts': '../packages/x-charts/src', - '@mui/x-tree-view': '../packages/x-tree-view/src', - '@mui/x-tree-view-pro': '../packages/x-tree-view-pro/src', - '@mui/x-license': '../packages/x-license/src', - '@mui/docs': '../node_modules/@mui/monorepo/packages/mui-docs/src', - '@mui/monorepo': '../node_modules/@mui/monorepo', - '@mui/material-nextjs': '../node_modules/@mui/monorepo/packages/mui-material-nextjs/src', - '@mui-internal/api-docs-builder': '../node_modules/@mui/monorepo/packages/api-docs-builder', - docs: '../node_modules/@mui/monorepo/docs', - docsx: './', -}; - const { version: transformRuntimeVersion } = fse.readJSONSync( require.resolve('@babel/runtime-corejs2/package.json'), ); @@ -33,17 +14,7 @@ module.exports = function getBabelConfig(api) { // backport of https://github.com/zeit/next.js/pull/9511 ['next/babel', { 'transform-runtime': { corejs: 2, version: transformRuntimeVersion } }], ], - plugins: [ - ...baseConfig.plugins, - 'babel-plugin-preval', - [ - 'babel-plugin-module-resolver', - { - alias, - transformFunctions: ['require', 'require.context'], - }, - ], - ], + plugins: [...baseConfig.plugins, 'babel-plugin-preval'], ignore: [...baseConfig.ignore, /@mui[\\|/]docs[\\|/]markdown/], }; }; diff --git a/docs/next.config.mjs b/docs/next.config.mjs index 4b157e63382f..f72e1399a49f 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -19,14 +19,34 @@ import constants from './constants.js'; const currentDirectory = url.fileURLToPath(new URL('.', import.meta.url)); const require = createRequire(import.meta.url); -const workspaceRoot = path.join(currentDirectory, '../'); +const WORKSPACE_ROOT = path.resolve(currentDirectory, '../'); +const MONOREPO_PATH = path.resolve(WORKSPACE_ROOT, './node_modules/@mui/monorepo'); +const MONOREPO_ALIASES = { + '@mui/docs': path.resolve(MONOREPO_PATH, './packages/mui-docs/src'), +}; + +const WORKSPACE_ALIASES = { + '@mui/x-data-grid': path.resolve(WORKSPACE_ROOT, './packages/x-data-grid/src'), + '@mui/x-data-grid-generator': path.resolve( + WORKSPACE_ROOT, + './packages/x-data-grid-generator/src', + ), + '@mui/x-data-grid-pro': path.resolve(WORKSPACE_ROOT, './packages/x-data-grid-pro/src'), + '@mui/x-data-grid-premium': path.resolve(WORKSPACE_ROOT, './packages/x-data-grid-premium/src'), + '@mui/x-date-pickers': path.resolve(WORKSPACE_ROOT, './packages/x-date-pickers/src'), + '@mui/x-date-pickers-pro': path.resolve(WORKSPACE_ROOT, './packages/x-date-pickers-pro/src'), + '@mui/x-charts': path.resolve(WORKSPACE_ROOT, './packages/x-charts/src'), + '@mui/x-tree-view': path.resolve(WORKSPACE_ROOT, './packages/x-tree-view/src'), + '@mui/x-tree-view-pro': path.resolve(WORKSPACE_ROOT, './packages/x-tree-view-pro/src'), + '@mui/x-license': path.resolve(WORKSPACE_ROOT, './packages/x-license/src'), +}; /** * @param {string} pkgPath * @returns {{version: string}} */ function loadPkg(pkgPath) { - const pkgContent = fs.readFileSync(path.resolve(workspaceRoot, pkgPath, 'package.json'), 'utf8'); + const pkgContent = fs.readFileSync(path.resolve(WORKSPACE_ROOT, pkgPath, 'package.json'), 'utf8'); return JSON.parse(pkgContent); } @@ -38,10 +58,18 @@ const treeViewPkg = loadPkg('./packages/x-tree-view'); let localSettings = {}; try { + // eslint-disable-next-line import/no-unresolved localSettings = require('./next.config.local.js'); -} catch (_) {} +} catch (_) { + // Ignore +} export default withDocsInfra({ + transpilePackages: [ + // TODO, those shouldn't be needed in the first place + '@mui/monorepo', // Migrate everything to @mui/docs until the @mui/monorepo dependency becomes obsolete + '@mui/docs', + ], // Avoid conflicts with the other Next.js apps hosted under https://mui.com/ assetPrefix: process.env.DEPLOY_ENV === 'development' ? undefined : '/x', env: { @@ -73,20 +101,29 @@ export default withDocsInfra({ ); } - const includesMonorepo = [/(@mui[\\/]monorepo)$/, /(@mui[\\/]monorepo)[\\/](?!.*node_modules)/]; - return { ...config, plugins, + // TODO, this shouldn't be needed in the first place + // Migrate everything from @mui/monorepo to @mui/docs and embed @mui/internal-markdown in @mui/docs + resolveLoader: { + ...config.resolveLoader, + alias: { + ...config.resolveLoader.alias, + '@mui/internal-markdown/loader': path.resolve( + MONOREPO_PATH, + './packages/markdown/loader', + ), + }, + }, resolve: { ...config.resolve, alias: { ...config.resolve.alias, - '@mui/docs': path.resolve( - currentDirectory, - '../node_modules/@mui/monorepo/packages/mui-docs/src', - ), - docs: path.resolve(currentDirectory, '../node_modules/@mui/monorepo/docs'), + ...MONOREPO_ALIASES, + ...WORKSPACE_ALIASES, + // TODO: get rid of this, replace with @mui/docs + docs: path.resolve(MONOREPO_PATH, './docs'), docsx: path.resolve(currentDirectory, '../docs'), }, }, @@ -102,9 +139,9 @@ export default withDocsInfra({ use: [ options.defaultLoaders.babel, { - loader: require.resolve('@mui/internal-markdown/loader'), + loader: '@mui/internal-markdown/loader', options: { - workspaceRoot, + workspaceRoot: WORKSPACE_ROOT, ignoreLanguagePages: LANGUAGES_IGNORE_PAGES, languagesInProgress: LANGUAGES_IN_PROGRESS, env: { @@ -119,13 +156,7 @@ export default withDocsInfra({ }, { test: /\.+(js|jsx|mjs|ts|tsx)$/, - include: includesMonorepo, - use: options.defaultLoaders.babel, - }, - { - test: /\.(js|mjs|ts|tsx)$/, - include: [workspaceRoot], - exclude: /node_modules/, + include: [/(@mui[\\/]monorepo)$/, /(@mui[\\/]monorepo)[\\/](?!.*node_modules)/], use: options.defaultLoaders.babel, }, { diff --git a/docs/package.json b/docs/package.json index 88735bebc31d..98aa0f26f34e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -32,6 +32,7 @@ "@mui/joy": "^5.0.0-beta.32", "@mui/lab": "^5.0.0-alpha.169", "@mui/material": "^5.15.14", + "@mui/material-nextjs": "^5.15.11", "@mui/styles": "^5.15.14", "@mui/system": "^5.15.14", "@mui/utils": "^5.15.14", diff --git a/docs/scripts/formattedTSDemos.js b/docs/scripts/formattedTSDemos.js index 586c5f9e8565..10ca79e00b42 100644 --- a/docs/scripts/formattedTSDemos.js +++ b/docs/scripts/formattedTSDemos.js @@ -20,7 +20,8 @@ const yargs = require('yargs'); const ts = require('typescript'); const { fixBabelGeneratorIssues, fixLineEndings } = require('./helpers'); -const tsConfigPath = path.resolve(__dirname, '../tsconfig.json'); +const DOCS_ROOT = path.resolve(__dirname, '..'); +const tsConfigPath = path.resolve(DOCS_ROOT, './tsconfig.json'); const tsConfigFile = ts.readConfigFile(tsConfigPath, (filePath) => fs.readFileSync(filePath).toString(), ); @@ -95,7 +96,7 @@ async function transpileFile(tsxPath, program, ignoreCache = false) { if (enableJSXPreview) { transformOptions.plugins = transformOptions.plugins.concat([ [ - require.resolve('docsx/src/modules/utils/babel-plugin-jsx-preview'), + path.resolve(DOCS_ROOT, './src/modules/utils/babel-plugin-jsx-preview'), { maxLines: 16, outputFilename: `${tsxPath}.preview` }, ], ]); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ab7762170c9..cbc91420bc57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -431,6 +431,9 @@ importers: '@mui/material': specifier: ^5.15.14 version: 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@mui/material-nextjs': + specifier: ^5.15.11 + version: 5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.15)(@types/react@18.2.60)(next@14.2.3)(react@18.2.0) '@mui/styles': specifier: ^5.15.14 version: 5.15.15(@types/react@18.2.60)(react@18.2.0) @@ -3673,6 +3676,33 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@mui/material-nextjs@5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.15)(@types/react@18.2.60)(next@14.2.3)(react@18.2.0): + resolution: {integrity: sha512-cp5RWYbBngyi7NKP91R9QITllfxumCVPFjqe4AKzNROVuCot0VpgkafxXqfbv0uFsyUU0ROs0O2M3r17q604Aw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/cache': ^11.11.0 + '@emotion/server': ^11.11.0 + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + next: ^13.0.0 || ^14.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/cache': + optional: true + '@emotion/server': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@emotion/cache': 11.11.0 + '@emotion/server': 11.11.0 + '@mui/material': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.60 + next: 14.2.3(@babel/core@7.24.4)(@playwright/test@1.43.1)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + dev: false + /@mui/material@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.60)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==} engines: {node: '>=12.0.0'} From 9317717ad92b3dd153c0d688f0adc42f3ae68ad7 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 13 May 2024 10:44:59 +0200 Subject: [PATCH 258/912] [TreeView] Add support for checkbox selection (#11452) --- .../customization/CustomContentTreeView.js | 3 + .../customization/CustomContentTreeView.tsx | 3 + .../customization/FileExplorer.js | 4 +- .../customization/FileExplorer.tsx | 4 +- .../selection/CheckboxMultiSelection.js | 41 +++ .../selection/CheckboxMultiSelection.tsx | 41 +++ .../CheckboxMultiSelection.tsx.preview | 1 + .../selection/CheckboxSelection.js | 41 +++ .../selection/CheckboxSelection.tsx | 41 +++ .../selection/CheckboxSelection.tsx.preview | 1 + .../rich-tree-view/selection/selection.md | 10 + .../customization/CustomContentTreeView.js | 3 + .../customization/CustomContentTreeView.tsx | 3 + .../selection/CheckboxMultiSelection.js | 28 ++ .../selection/CheckboxMultiSelection.tsx | 28 ++ .../selection/CheckboxSelection.js | 28 ++ .../selection/CheckboxSelection.tsx | 28 ++ .../simple-tree-view/selection/selection.md | 10 + .../pages/x/api/tree-view/rich-tree-view.json | 1 + .../x/api/tree-view/simple-tree-view.json | 1 + docs/pages/x/api/tree-view/tree-item-2.json | 6 + docs/pages/x/api/tree-view/tree-item.json | 6 + docs/pages/x/api/tree-view/tree-view.json | 1 + .../rich-tree-view/rich-tree-view.json | 5 +- .../simple-tree-view/simple-tree-view.json | 5 +- .../tree-view/tree-item-2/tree-item-2.json | 1 + .../tree-view/tree-item/tree-item.json | 4 + .../tree-view/tree-view/tree-view.json | 5 +- .../src/RichTreeView/RichTreeView.tsx | 7 +- .../src/SimpleTreeView/SimpleTreeView.tsx | 7 +- .../src/TreeItem/TreeItem.test.tsx | 2 + .../x-tree-view/src/TreeItem/TreeItem.tsx | 5 + .../src/TreeItem/TreeItemContent.tsx | 27 +- .../src/TreeItem/treeItemClasses.ts | 3 + .../src/TreeItem/useTreeItemState.ts | 22 +- .../x-tree-view/src/TreeItem2/TreeItem2.tsx | 33 ++ .../src/TreeItem2/TreeItem2.types.ts | 6 + packages/x-tree-view/src/TreeItem2/index.ts | 1 + .../x-tree-view/src/TreeView/TreeView.tsx | 7 +- .../useTreeItem2Utils/useTreeItem2Utils.tsx | 18 +- .../useTreeViewKeyboardNavigation.ts | 9 +- .../useTreeViewSelection.test.tsx | 320 +++++++++++++++++- .../useTreeViewSelection.ts | 32 +- .../useTreeViewSelection.types.ts | 24 +- .../src/useTreeItem2/useTreeItem2.ts | 44 ++- .../src/useTreeItem2/useTreeItem2.types.ts | 20 ++ scripts/x-tree-view.exports.json | 1 + .../describeTreeView/describeTreeView.tsx | 8 + .../describeTreeView.types.ts | 12 + 49 files changed, 930 insertions(+), 31 deletions(-) create mode 100644 docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.js create mode 100644 docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx create mode 100644 docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.js create mode 100644 docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx create mode 100644 docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx.preview create mode 100644 docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.js create mode 100644 docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.tsx create mode 100644 docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.js create mode 100644 docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.tsx diff --git a/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.js b/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.js index d024ef094cc1..24ddeb962f48 100644 --- a/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.js +++ b/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.js @@ -11,6 +11,7 @@ import { TreeItem2GroupTransition, TreeItem2Label, TreeItem2Root, + TreeItem2Checkbox, } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; @@ -46,6 +47,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -69,6 +71,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { > {label[0]} + diff --git a/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.tsx b/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.tsx index 7651bb7ed31e..0caea393d697 100644 --- a/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/CustomContentTreeView.tsx @@ -14,6 +14,7 @@ import { TreeItem2GroupTransition, TreeItem2Label, TreeItem2Root, + TreeItem2Checkbox, } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; @@ -56,6 +57,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -79,6 +81,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( > {(label as string)[0]} + diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js index 2ac57640beea..78192d2b26c2 100644 --- a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js @@ -17,6 +17,7 @@ import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import { treeItemClasses } from '@mui/x-tree-view/TreeItem'; import { unstable_useTreeItem2 as useTreeItem2 } from '@mui/x-tree-view/useTreeItem2'; import { + TreeItem2Checkbox, TreeItem2Content, TreeItem2IconContainer, TreeItem2Label, @@ -211,6 +212,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -242,7 +244,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { - + diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx index d12cf981003a..ef5e8e5384ab 100644 --- a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx @@ -20,6 +20,7 @@ import { UseTreeItem2Parameters, } from '@mui/x-tree-view/useTreeItem2'; import { + TreeItem2Checkbox, TreeItem2Content, TreeItem2IconContainer, TreeItem2Label, @@ -247,6 +248,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -278,7 +280,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( - + diff --git a/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.js b/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.js new file mode 100644 index 000000000000..2ee4cd92bb21 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.js @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function CheckboxMultiSelection() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx b/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx new file mode 100644 index 000000000000..c8803fc153b3 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView, TreeViewBaseItem } from '@mui/x-tree-view'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function CheckboxMultiSelection() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx.preview b/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx.preview new file mode 100644 index 000000000000..7d1afb61bd4c --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/CheckboxMultiSelection.tsx.preview @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.js b/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.js new file mode 100644 index 000000000000..17a520a2a775 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.js @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function CheckboxSelection() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx b/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx new file mode 100644 index 000000000000..28bda421ad18 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx @@ -0,0 +1,41 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView, TreeViewBaseItem } from '@mui/x-tree-view'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function CheckboxSelection() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx.preview b/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx.preview new file mode 100644 index 000000000000..5498dc544239 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/selection/CheckboxSelection.tsx.preview @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/selection/selection.md b/docs/data/tree-view/rich-tree-view/selection/selection.md index 90e60c40dcc4..929d048d5377 100644 --- a/docs/data/tree-view/rich-tree-view/selection/selection.md +++ b/docs/data/tree-view/rich-tree-view/selection/selection.md @@ -23,6 +23,16 @@ Use the `disableSelection` prop if you don't want your items to be selectable: {{"demo": "DisableSelection.js"}} +## Checkbox selection + +To activate checkbox selection set `checkboxSelection={true}`: + +{{"demo": "CheckboxSelection.js"}} + +This is also compatible with multi selection: + +{{"demo": "CheckboxMultiSelection.js"}} + ## Controlled selection Use the `selectedItems` prop to control the selected items. diff --git a/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.js b/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.js index 2076a1e87f93..c16dc8ac924a 100644 --- a/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.js +++ b/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.js @@ -10,6 +10,7 @@ import { TreeItem2GroupTransition, TreeItem2Label, TreeItem2Root, + TreeItem2Checkbox, } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; @@ -25,6 +26,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -37,6 +39,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + ({ diff --git a/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.tsx b/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.tsx index a7e41eb533c3..c4d333d40f08 100644 --- a/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.tsx +++ b/docs/data/tree-view/simple-tree-view/customization/CustomContentTreeView.tsx @@ -13,6 +13,7 @@ import { TreeItem2GroupTransition, TreeItem2Label, TreeItem2Root, + TreeItem2Checkbox, } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; @@ -35,6 +36,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -47,6 +49,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( + ({ diff --git a/docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.js b/docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.js new file mode 100644 index 000000000000..4c5cc2874d52 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.js @@ -0,0 +1,28 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function CheckboxMultiSelection() { + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.tsx b/docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.tsx new file mode 100644 index 000000000000..4c5cc2874d52 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/selection/CheckboxMultiSelection.tsx @@ -0,0 +1,28 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function CheckboxMultiSelection() { + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.js b/docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.js new file mode 100644 index 000000000000..1b1d057131b7 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.js @@ -0,0 +1,28 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function CheckboxSelection() { + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.tsx b/docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.tsx new file mode 100644 index 000000000000..1b1d057131b7 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/selection/CheckboxSelection.tsx @@ -0,0 +1,28 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function CheckboxSelection() { + return ( + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/selection/selection.md b/docs/data/tree-view/simple-tree-view/selection/selection.md index da1aabecfa40..18337196bec7 100644 --- a/docs/data/tree-view/simple-tree-view/selection/selection.md +++ b/docs/data/tree-view/simple-tree-view/selection/selection.md @@ -23,6 +23,16 @@ Use the `disableSelection` prop if you don't want your items to be selectable: {{"demo": "DisableSelection.js"}} +## Checkbox selection + +To activate checkbox selection set `checkboxSelection={true}`: + +{{"demo": "CheckboxSelection.js"}} + +This is also compatible with multi selection: + +{{"demo": "CheckboxMultiSelection.js"}} + ## Controlled selection Use the `selectedItems` prop to control selected Tree View items. diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index fe0bf95c7f4c..c80f7ce68570 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -6,6 +6,7 @@ "description": "{ current?: { focusItem: func, getItem: func, setItemExpansion: func } }" } }, + "checkboxSelection": { "type": { "name": "bool" }, "default": "false" }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "defaultExpandedItems": { "type": { "name": "arrayOf", "description": "Array<string>" }, diff --git a/docs/pages/x/api/tree-view/simple-tree-view.json b/docs/pages/x/api/tree-view/simple-tree-view.json index 8bdc52ded8fa..f346fcd7a700 100644 --- a/docs/pages/x/api/tree-view/simple-tree-view.json +++ b/docs/pages/x/api/tree-view/simple-tree-view.json @@ -6,6 +6,7 @@ "description": "{ current?: { focusItem: func, getItem: func, setItemExpansion: func } }" } }, + "checkboxSelection": { "type": { "name": "bool" }, "default": "false" }, "children": { "type": { "name": "node" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "defaultExpandedItems": { diff --git a/docs/pages/x/api/tree-view/tree-item-2.json b/docs/pages/x/api/tree-view/tree-item-2.json index e15c84a4b0ef..6b9f00accb0b 100644 --- a/docs/pages/x/api/tree-view/tree-item-2.json +++ b/docs/pages/x/api/tree-view/tree-item-2.json @@ -44,6 +44,12 @@ "default": "TreeItem2IconContainer", "class": "MuiTreeItem2-iconContainer" }, + { + "name": "checkbox", + "description": "The component that renders the item checkbox for selection.", + "default": "TreeItem2Checkbox", + "class": "MuiTreeItem2-checkbox" + }, { "name": "label", "description": "The component that renders the item label.", diff --git a/docs/pages/x/api/tree-view/tree-item.json b/docs/pages/x/api/tree-view/tree-item.json index 58a3c04e4ff8..b25b49c3e651 100644 --- a/docs/pages/x/api/tree-view/tree-item.json +++ b/docs/pages/x/api/tree-view/tree-item.json @@ -47,6 +47,12 @@ } ], "classes": [ + { + "key": "checkbox", + "className": "MuiTreeItem-checkbox", + "description": "Styles applied to the checkbox element.", + "isGlobal": false + }, { "key": "content", "className": "MuiTreeItem-content", diff --git a/docs/pages/x/api/tree-view/tree-view.json b/docs/pages/x/api/tree-view/tree-view.json index 40a19d4f2817..4fd0587a6b11 100644 --- a/docs/pages/x/api/tree-view/tree-view.json +++ b/docs/pages/x/api/tree-view/tree-view.json @@ -6,6 +6,7 @@ "description": "{ current?: { focusItem: func, getItem: func, setItemExpansion: func } }" } }, + "checkboxSelection": { "type": { "name": "bool" }, "default": "false" }, "children": { "type": { "name": "node" } }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "defaultExpandedItems": { diff --git a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json index 8e73109f8685..1dc23fbbce09 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json @@ -4,6 +4,9 @@ "apiRef": { "description": "The ref object that allows Tree View manipulation. Can be instantiated with useTreeViewApiRef()." }, + "checkboxSelection": { + "description": "If true, the tree view renders a checkbox at the left of its label that allows selecting it." + }, "classes": { "description": "Override or extend the styles applied to the component." }, "defaultExpandedItems": { "description": "Expanded item ids. Used when the item's expansion is not controlled." @@ -37,7 +40,7 @@ } }, "multiSelect": { - "description": "If true ctrl and shift will trigger multiselect." + "description": "If true, ctrl and shift will trigger multiselect." }, "onExpandedItemsChange": { "description": "Callback fired when tree items are expanded/collapsed.", diff --git a/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json b/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json index 4a7aca190f6e..637ca728dab0 100644 --- a/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json +++ b/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json @@ -4,6 +4,9 @@ "apiRef": { "description": "The ref object that allows Tree View manipulation. Can be instantiated with useTreeViewApiRef()." }, + "checkboxSelection": { + "description": "If true, the tree view renders a checkbox at the left of its label that allows selecting it." + }, "children": { "description": "The content of the component." }, "classes": { "description": "Override or extend the styles applied to the component." }, "defaultExpandedItems": { @@ -23,7 +26,7 @@ "description": "This prop is used to help implement the accessibility logic. If you don't provide this prop. It falls back to a randomly generated id." }, "multiSelect": { - "description": "If true ctrl and shift will trigger multiselect." + "description": "If true, ctrl and shift will trigger multiselect." }, "onExpandedItemsChange": { "description": "Callback fired when tree items are expanded/collapsed.", diff --git a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json index 43ff882ed936..47b99c2cf4d8 100644 --- a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json +++ b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json @@ -36,6 +36,7 @@ } }, "slotDescriptions": { + "checkbox": "The component that renders the item checkbox for selection.", "collapseIcon": "The icon used to collapse the item.", "content": "The component that renders the content of the item. (e.g.: everything related to this item, not to its children).", "endIcon": "The icon displayed next to an end item.", diff --git a/docs/translations/api-docs/tree-view/tree-item/tree-item.json b/docs/translations/api-docs/tree-view/tree-item/tree-item.json index edf4ebca118f..88c3575d3fb9 100644 --- a/docs/translations/api-docs/tree-view/tree-item/tree-item.json +++ b/docs/translations/api-docs/tree-view/tree-item/tree-item.json @@ -21,6 +21,10 @@ } }, "classDescriptions": { + "checkbox": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the checkbox element" + }, "content": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the content element" diff --git a/docs/translations/api-docs/tree-view/tree-view/tree-view.json b/docs/translations/api-docs/tree-view/tree-view/tree-view.json index d96dc4b910ff..907ed9df8c7c 100644 --- a/docs/translations/api-docs/tree-view/tree-view/tree-view.json +++ b/docs/translations/api-docs/tree-view/tree-view/tree-view.json @@ -4,6 +4,9 @@ "apiRef": { "description": "The ref object that allows Tree View manipulation. Can be instantiated with useTreeViewApiRef()." }, + "checkboxSelection": { + "description": "If true, the tree view renders a checkbox at the left of its label that allows selecting it." + }, "children": { "description": "The content of the component." }, "classes": { "description": "Override or extend the styles applied to the component." }, "defaultExpandedItems": { @@ -23,7 +26,7 @@ "description": "This prop is used to help implement the accessibility logic. If you don't provide this prop. It falls back to a randomly generated id." }, "multiSelect": { - "description": "If true ctrl and shift will trigger multiselect." + "description": "If true, ctrl and shift will trigger multiselect." }, "onExpandedItemsChange": { "description": "Callback fired when tree items are expanded/collapsed.", diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index 20320b2a765c..3e46711dd63e 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -157,6 +157,11 @@ RichTreeView.propTypes = { setItemExpansion: PropTypes.func.isRequired, }), }), + /** + * If `true`, the tree view renders a checkbox at the left of its label that allows selecting it. + * @default false + */ + checkboxSelection: PropTypes.bool, /** * Override or extend the styles applied to the component. */ @@ -221,7 +226,7 @@ RichTreeView.propTypes = { isItemDisabled: PropTypes.func, items: PropTypes.array.isRequired, /** - * If true `ctrl` and `shift` will trigger multiselect. + * If `true`, `ctrl` and `shift` will trigger multiselect. * @default false */ multiSelect: PropTypes.bool, diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx index 2d8a9ea47c93..f25515f22472 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx @@ -120,6 +120,11 @@ SimpleTreeView.propTypes = { setItemExpansion: PropTypes.func.isRequired, }), }), + /** + * If `true`, the tree view renders a checkbox at the left of its label that allows selecting it. + * @default false + */ + checkboxSelection: PropTypes.bool, /** * The content of the component. */ @@ -162,7 +167,7 @@ SimpleTreeView.propTypes = { */ id: PropTypes.string, /** - * If true `ctrl` and `shift` will trigger multiselect. + * If `true`, `ctrl` and `shift` will trigger multiselect. * @default false */ multiSelect: PropTypes.bool, diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index 857b8866ae14..6f28000d2092 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -45,6 +45,8 @@ const TEST_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue }, selection: { multiSelect: false, + checkboxSelection: false, + disableSelection: false, }, rootRef: { current: null, diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index 20781e11f033..162661e9440e 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -28,6 +28,7 @@ const useUtilityClasses = (ownerState: TreeItemOwnerState) => { focused: ['focused'], disabled: ['disabled'], iconContainer: ['iconContainer'], + checkbox: ['checkbox'], label: ['label'], groupTransition: ['groupTransition'], }; @@ -128,6 +129,9 @@ const StyledTreeItemContent = styled(TreeItemContent, { position: 'relative', ...theme.typography.body1, }, + [`& .${treeItemClasses.checkbox}`]: { + padding: 0, + }, })); const TreeItemGroup = styled(Collapse, { @@ -336,6 +340,7 @@ export const TreeItem = React.forwardRef(function TreeItem( disabled: classes.disabled, iconContainer: classes.iconContainer, label: classes.label, + checkbox: classes.checkbox, }} label={label} itemId={itemId} diff --git a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx index 467418e30e72..161d3d3afef6 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; +import Checkbox from '@mui/material/Checkbox'; import { useTreeItemState } from './useTreeItemState'; export interface TreeItemContentProps extends React.HTMLAttributes { @@ -23,6 +24,8 @@ export interface TreeItemContentProps extends React.HTMLAttributes iconContainer: string; /** Styles applied to the label element. */ label: string; + /** Styles applied to the checkbox element. */ + checkbox: string; }; /** * The tree item label. @@ -73,12 +76,16 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( expanded, selected, focused, + disableSelection, + checkboxSelection, handleExpansion, handleSelection, + handleCheckboxSelection, preventSelection, } = useTreeItemState(itemId); const icon = iconProp || expansionIcon || displayIcon; + const checkboxRef = React.useRef(null); const handleMouseDown = (event: React.MouseEvent) => { preventSelection(event); @@ -89,8 +96,15 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( }; const handleClick = (event: React.MouseEvent) => { + if (checkboxRef.current?.contains(event.target as HTMLElement)) { + return; + } + handleExpansion(event); - handleSelection(event); + + if (!checkboxSelection) { + handleSelection(event); + } if (onClick) { onClick(event); @@ -112,6 +126,17 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( ref={ref} >
    {icon}
    + {checkboxSelection && ( + + )} +
    {label}
    ); diff --git a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts index b5cab9b9719d..ceff7c2a2ca6 100644 --- a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts +++ b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts @@ -20,6 +20,8 @@ export interface TreeItemClasses { iconContainer: string; /** Styles applied to the label element. */ label: string; + /** Styles applied to the checkbox element. */ + checkbox: string; } export type TreeItemClassKey = keyof TreeItemClasses; @@ -38,4 +40,5 @@ export const treeItemClasses: TreeItemClasses = generateUtilityClasses('MuiTreeI 'disabled', 'iconContainer', 'label', + 'checkbox', ]); diff --git a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts index d43fcd4f2c4a..f429ac981d20 100644 --- a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts +++ b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts @@ -5,7 +5,7 @@ import { DefaultTreeViewPlugins } from '../internals/plugins'; export function useTreeItemState(itemId: string) { const { instance, - selection: { multiSelect }, + selection: { multiSelect, checkboxSelection, disableSelection }, } = useTreeViewContext(); const expandable = instance.isItemExpandable(itemId); @@ -29,7 +29,7 @@ export function useTreeItemState(itemId: string) { } }; - const handleSelection = (event: React.MouseEvent) => { + const handleSelection = (event: React.MouseEvent) => { if (!disabled) { if (!focused) { instance.focusItem(event, itemId); @@ -44,11 +44,24 @@ export function useTreeItemState(itemId: string) { instance.selectItem(event, itemId, true); } } else { - instance.selectItem(event, itemId); + instance.selectItem(event, itemId, false); } } }; + const handleCheckboxSelection = (event: React.ChangeEvent) => { + if (disableSelection || disabled) { + return; + } + + const hasShift = (event.nativeEvent as PointerEvent).shiftKey; + if (multiSelect && hasShift) { + instance.expandSelectionRange(event, itemId); + } else { + instance.selectItem(event, itemId, multiSelect, event.target.checked); + } + }; + const preventSelection = (event: React.MouseEvent) => { if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) { // Prevent text selection @@ -61,8 +74,11 @@ export function useTreeItemState(itemId: string) { expanded, selected, focused, + disableSelection, + checkboxSelection, handleExpansion, handleSelection, + handleCheckboxSelection, preventSelection, }; } diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx index 57450189b31c..a2b6c825e060 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx @@ -4,6 +4,7 @@ import clsx from 'clsx'; import unsupportedProp from '@mui/utils/unsupportedProp'; import { alpha, styled, useThemeProps } from '@mui/material/styles'; import Collapse from '@mui/material/Collapse'; +import MuiCheckbox, { CheckboxProps } from '@mui/material/Checkbox'; import { useSlotProps } from '@mui/base/utils'; import { shouldForwardProp } from '@mui/system'; import composeClasses from '@mui/utils/composeClasses'; @@ -139,6 +140,26 @@ export const TreeItem2GroupTransition = styled(Collapse, { paddingLeft: 12, }); +export const TreeItem2Checkbox = styled( + React.forwardRef( + (props: CheckboxProps & { visible: boolean }, ref: React.Ref) => { + const { visible, ...other } = props; + if (!visible) { + return null; + } + + return ; + }, + ), + { + name: 'MuiTreeItem2', + slot: 'Checkbox', + overridesResolver: (props, styles) => styles.checkbox, + }, +)({ + padding: 0, +}); + const useUtilityClasses = (ownerState: TreeItem2OwnerState) => { const { classes } = ownerState; @@ -150,6 +171,7 @@ const useUtilityClasses = (ownerState: TreeItem2OwnerState) => { focused: ['focused'], disabled: ['disabled'], iconContainer: ['iconContainer'], + checkbox: ['checkbox'], label: ['label'], groupTransition: ['groupTransition'], }; @@ -183,6 +205,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( getRootProps, getContentProps, getIconContainerProps, + getCheckboxProps, getLabelProps, getGroupTransitionProps, status, @@ -246,6 +269,15 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( className: classes.label, }); + const Checkbox: React.ElementType = slots.checkbox ?? TreeItem2Checkbox; + const checkboxProps = useSlotProps({ + elementType: Checkbox, + getSlotProps: getCheckboxProps, + externalSlotProps: slotProps.checkbox, + ownerState: {}, + className: classes.checkbox, + }); + const GroupTransition: React.ElementType | undefined = slots.groupTransition ?? undefined; const groupTransitionProps = useSlotProps({ elementType: GroupTransition, @@ -262,6 +294,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( +
    , ); + writeText = spy(navigator.clipboard, 'writeText'); + const cell = getCell(0, 0); cell.focus(); userEvent.mousePress(cell); @@ -848,17 +845,14 @@ describe(' - Clipboard', () => { clipboardData = data; return Promise.resolve(); }; - const originalClipboard = navigator.clipboard; + let writeTextStub: SinonStub; - beforeEach(function beforeEachHook() { - Object.defineProperty(navigator, 'clipboard', { - value: { writeText }, - writable: true, - }); - }); + const stubClipboard = () => { + writeTextStub = stub(navigator.clipboard, 'writeText').callsFake(writeText); + }; afterEach(function afterEachHook() { - Object.defineProperty(navigator, 'clipboard', { value: originalClipboard }); + writeTextStub.restore(); clipboardData = ''; }); @@ -892,6 +886,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); @@ -914,6 +910,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); @@ -936,6 +934,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); @@ -967,6 +967,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); @@ -989,6 +991,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); @@ -1016,6 +1020,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); @@ -1055,6 +1061,8 @@ describe(' - Clipboard', () => { ]; render(); + // Call after render to override the `@testing-library/user-event` stub + stubClipboard(); const sourceCell = getCell(0, 1); const targetCell = getCell(1, 1); diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 62ecbbc7d040..48c4188033b6 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -60,7 +60,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.9" }, diff --git a/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx index 3ce23f839bf3..6287545d7c5b 100644 --- a/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/clipboard.DataGridPro.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { GridApi, useGridApiRef, DataGridPro, DataGridProProps } from '@mui/x-data-grid-pro'; import { createRenderer, fireEvent, act, userEvent } from '@mui/internal-test-utils'; import { expect } from 'chai'; -import { stub, SinonStub } from 'sinon'; +import { SinonSpy, spy } from 'sinon'; import { getCell } from 'test/utils/helperFn'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -39,25 +39,18 @@ describe(' - Clipboard', () => { } describe('copy to clipboard', () => { - let writeText: SinonStub; - const originalClipboard = navigator.clipboard; - - beforeEach(function beforeEachHook() { - writeText = stub().resolves(); - - Object.defineProperty(navigator, 'clipboard', { - value: { writeText }, - writable: true, - }); - }); + let writeText: SinonSpy | undefined; afterEach(function afterEachHook() { - Object.defineProperty(navigator, 'clipboard', { value: originalClipboard }); + writeText?.restore(); }); ['ctrlKey', 'metaKey'].forEach((key) => { it(`should copy the selected rows to the clipboard when ${key} + C is pressed`, () => { render(); + + writeText = spy(navigator.clipboard, 'writeText'); + act(() => apiRef.current.selectRows([0, 1])); const cell = getCell(0, 0); userEvent.mousePress(cell); @@ -75,6 +68,8 @@ describe(' - Clipboard', () => { />, ); + writeText = spy(navigator.clipboard, 'writeText'); + const cell = getCell(0, 0); cell.focus(); userEvent.mousePress(cell); @@ -95,6 +90,8 @@ describe(' - Clipboard', () => { />, ); + writeText = spy(navigator.clipboard, 'writeText'); + act(() => apiRef.current.selectRows([0, 1])); const cell = getCell(0, 0); userEvent.mousePress(cell); diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 4881ccf8fcfe..410fcbf284bc 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -61,7 +61,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "@mui/joy": "^5.0.0-beta.48", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 468024ec2000..72297e8cc398 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -96,7 +96,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 1ae2eb93a20c..8d7a8aedbe20 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -98,7 +98,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 6a4c98222f67..7d26a38ad51c 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -48,7 +48,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "rimraf": "^5.0.9" }, "engines": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 318b34709c33..713c8aff86ce 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -41,7 +41,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "rimraf": "^5.0.9" }, "engines": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 40c27ffff812..ba1ebba6f939 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -63,7 +63,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "rimraf": "^5.0.9" }, "engines": { diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index a0dd30a4fba7..e44805211737 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -61,7 +61,7 @@ "react-dom": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.4", + "@mui/internal-test-utils": "^1.0.5", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.9" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8dd28fd44e47..36cb2e7e4e7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,11 +87,11 @@ importers: specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': - specifier: ^1.0.7 + specifier: ^1.0.8 version: 1.0.8 '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -640,11 +640,11 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.24.9) '@mui/internal-docs-utils': - specifier: ^1.0.7 - version: 1.0.7 + specifier: ^1.0.8 + version: 1.0.8 '@mui/internal-scripts': - specifier: ^1.0.12 - version: 1.0.12 + specifier: ^1.0.13 + version: 1.0.13 '@types/chance': specifier: ^1.1.6 version: 1.1.6 @@ -758,8 +758,8 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': specifier: ^9.7.3 version: 9.7.3(react@18.3.1) @@ -953,8 +953,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1056,8 +1056,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1112,8 +1112,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1165,8 +1165,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1260,8 +1260,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1301,8 +1301,8 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 version: 5.0.9 @@ -1321,8 +1321,8 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 version: 5.0.9 @@ -1374,8 +1374,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1436,8 +1436,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.4 - version: 1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.5 + version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 version: 5.0.9 @@ -2815,17 +2815,17 @@ packages: '@types/react': optional: true - '@mui/internal-docs-utils@1.0.7': - resolution: {integrity: sha512-vHplixLKu17U7Wa3RDbGv9C3FmXniJKywyZEIeJaTG4ikvl+iWI+BuZPCNniJwj0HSxu3thbyPIrBXijh7j+Xg==} + '@mui/internal-docs-utils@1.0.8': + resolution: {integrity: sha512-krfqmki6Fjlv3+RAAdcf8wB0sg6KF7s4RdT1X3iXuouCYDiQw/t7TiCUAiF7augBCRfPTiWh/FI8MTH4TRlGiQ==} '@mui/internal-markdown@1.0.8': resolution: {integrity: sha512-OU/ieH8HhRbciy3fR5i8vSU/Z4wlfE+iwEFvrqP578jBeqg7X0gvev/uvv9d+FSgRnvgmWJzCYXEPlzlI3MmFA==} - '@mui/internal-scripts@1.0.12': - resolution: {integrity: sha512-7W2OBXKwtDjxFPxQZK796lDDsRtDA/9xWmpmHJMXSJY+gG+8sH6kwsU7pNdf2uB/uC0uCY9kxfWpr+9+0JI5EA==} + '@mui/internal-scripts@1.0.13': + resolution: {integrity: sha512-3g8kl1UEFK6WxoHfstWMDZCW8DimVgfRDh/j2D0CNaKbupfmfdC5e6Of9KDKXV45ATs5LaYfozAKbxMQK7xyhA==} - '@mui/internal-test-utils@1.0.4': - resolution: {integrity: sha512-7scv+UvpqEcFE0vTI6GYXqIQDMbbZKkB0G96gPy5QhMC+zbMHkY5PaOlp+/M1Quu8TW10nmV9gxwiX37o/jg0A==} + '@mui/internal-test-utils@1.0.5': + resolution: {integrity: sha512-5reErcYMSi+PbcuHigno150UDii4pC9TYfL9sY1YcQUtDhQMdNkByvblQZw3X0K2h5puiBYs/cnj670J1JKztA==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -3555,6 +3555,12 @@ packages: '@types/react-dom': optional: true + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -11041,7 +11047,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/internal-docs-utils@1.0.7': + '@mui/internal-docs-utils@1.0.8': dependencies: rimraf: 5.0.9 typescript: 5.5.3 @@ -11053,14 +11059,14 @@ snapshots: marked: 13.0.2 prismjs: 1.29.0 - '@mui/internal-scripts@1.0.12': + '@mui/internal-scripts@1.0.13': dependencies: '@babel/core': 7.24.9 '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) '@babel/types': 7.24.9 - '@mui/internal-docs-utils': 1.0.7 + '@mui/internal-docs-utils': 1.0.8 doctrine: 3.0.0 lodash: 4.17.21 typescript: 5.5.3 @@ -11068,7 +11074,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.4(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) @@ -11078,6 +11084,7 @@ snapshots: '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) '@testing-library/dom': 10.3.1 '@testing-library/react': 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) chai: 4.4.1 chai-dom: 1.12.0(chai@4.4.1) dom-accessibility-api: 0.6.3 @@ -12000,6 +12007,10 @@ snapshots: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + '@testing-library/user-event@14.5.2(@testing-library/dom@10.3.1)': + dependencies: + '@testing-library/dom': 10.3.1 + '@tootallnate/once@2.0.0': {} '@tufjs/canonical-json@2.0.0': {} From fa113d5d9615ff77d872718cfd575d30720c15f9 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Thu, 25 Jul 2024 18:43:20 -0400 Subject: [PATCH 672/912] [docs] Update on `renderCell` & autogenerated rows (#13879) Co-authored-by: Andrew Cherniavskyi --- .../column-definition/AutogeneratedRows.js | 56 ++++++++++++++++++ .../column-definition/AutogeneratedRows.tsx | 57 +++++++++++++++++++ .../AutogeneratedRows.tsx.preview | 12 ++++ .../column-definition/column-definition.md | 35 ++++++++++++ .../StylingAllCellsButAggregation.js | 8 ++- .../StylingAllCellsButAggregation.tsx | 3 +- .../src/components/cell/GridBooleanCell.tsx | 4 +- .../hooks/features/editing/useGridEditing.ts | 4 +- .../src/hooks/features/rows/gridRowsUtils.ts | 6 +- .../src/hooks/features/rows/index.ts | 2 +- .../src/hooks/features/rows/useGridRows.ts | 6 +- .../features/sorting/gridSortingSelector.ts | 4 +- scripts/x-data-grid-premium.exports.json | 1 + scripts/x-data-grid-pro.exports.json | 1 + scripts/x-data-grid.exports.json | 1 + 15 files changed, 185 insertions(+), 15 deletions(-) create mode 100644 docs/data/data-grid/column-definition/AutogeneratedRows.js create mode 100644 docs/data/data-grid/column-definition/AutogeneratedRows.tsx create mode 100644 docs/data/data-grid/column-definition/AutogeneratedRows.tsx.preview diff --git a/docs/data/data-grid/column-definition/AutogeneratedRows.js b/docs/data/data-grid/column-definition/AutogeneratedRows.js new file mode 100644 index 000000000000..d5689bc6ecbd --- /dev/null +++ b/docs/data/data-grid/column-definition/AutogeneratedRows.js @@ -0,0 +1,56 @@ +import * as React from 'react'; +import { + DataGridPremium, + isAutogeneratedRow, + useGridApiRef, + useKeepGroupedColumnsHidden, +} from '@mui/x-data-grid-premium'; +import { useMovieData } from '@mui/x-data-grid-generator'; + +const columns = [ + { field: '__row_group_by_columns_group__', width: 200 }, + { field: 'company', width: 200 }, + { + field: 'title', + minWidth: 250, + cellClassName: 'highlighted', + valueGetter: (value, row) => { + if (isAutogeneratedRow(row)) { + return '[this is an autogenerated row]'; + } + return `title: ${value}`; + }, + }, + { field: 'year' }, +]; + +export default function AutogeneratedRows() { + const { rows } = useMovieData(); + const apiRef = useGridApiRef(); + + const initialState = useKeepGroupedColumnsHidden({ + apiRef, + initialState: { + rowGrouping: { + model: ['company'], + }, + }, + }); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/column-definition/AutogeneratedRows.tsx b/docs/data/data-grid/column-definition/AutogeneratedRows.tsx new file mode 100644 index 000000000000..c58c4bf79e2d --- /dev/null +++ b/docs/data/data-grid/column-definition/AutogeneratedRows.tsx @@ -0,0 +1,57 @@ +import * as React from 'react'; +import { + DataGridPremium, + GridColDef, + isAutogeneratedRow, + useGridApiRef, + useKeepGroupedColumnsHidden, +} from '@mui/x-data-grid-premium'; +import { useMovieData } from '@mui/x-data-grid-generator'; + +const columns: GridColDef[] = [ + { field: '__row_group_by_columns_group__', width: 200 }, + { field: 'company', width: 200 }, + { + field: 'title', + minWidth: 250, + cellClassName: 'highlighted', + valueGetter: (value, row) => { + if (isAutogeneratedRow(row)) { + return '[this is an autogenerated row]'; + } + return `title: ${value}`; + }, + }, + { field: 'year' }, +]; + +export default function AutogeneratedRows() { + const { rows } = useMovieData(); + const apiRef = useGridApiRef(); + + const initialState = useKeepGroupedColumnsHidden({ + apiRef, + initialState: { + rowGrouping: { + model: ['company'], + }, + }, + }); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/column-definition/AutogeneratedRows.tsx.preview b/docs/data/data-grid/column-definition/AutogeneratedRows.tsx.preview new file mode 100644 index 000000000000..36548f489011 --- /dev/null +++ b/docs/data/data-grid/column-definition/AutogeneratedRows.tsx.preview @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/docs/data/data-grid/column-definition/column-definition.md b/docs/data/data-grid/column-definition/column-definition.md index d86945322506..436ab68089fb 100644 --- a/docs/data/data-grid/column-definition/column-definition.md +++ b/docs/data/data-grid/column-definition/column-definition.md @@ -90,6 +90,11 @@ The value returned by `valueGetter` is used for: {{"demo": "ValueGetterGrid.js", "bg": "inline", "defaultCodeOpen": false}} +:::warning +`valueGetter` can be called for autogenerated rows, which are created when features like [row grouping](/x/react-data-grid/row-grouping/) or [aggregation](/x/react-data-grid/aggregation/) are used. +Read more in the [handling autogenerated rows](/x/react-data-grid/column-definition/#autogenerated-rows) section. +::: + ### Value formatter The value formatter allows you to convert the value before displaying it. @@ -103,6 +108,11 @@ and `valueFormatter` is used to display it as a percentage (for example `20%`). {{"demo": "ValueFormatterGrid.js", "bg": "inline"}} +:::warning +`valueFormatter` can be called for autogenerated rows, which are created when features like [row grouping](/x/react-data-grid/row-grouping/) or [aggregation](/x/react-data-grid/aggregation/) are used. +Read more in the [handling autogenerated rows](/x/react-data-grid/column-definition/#autogenerated-rows) section. +::: + ## Rendering cells By default, the Data Grid renders the value as a string in the cell. @@ -148,6 +158,11 @@ When using `renderCell`, if the type of the value returned by `valueGetter` does ::: +:::warning +`renderCell` can be called for autogenerated rows, which are created when features like [row grouping](/x/react-data-grid/row-grouping/) or [aggregation](/x/react-data-grid/aggregation/) are used. +Read more in the [handling autogenerated rows](/x/react-data-grid/column-definition/#autogenerated-rows) section. +::: + ### Styling cells You can check the [styling cells](/x/react-data-grid/style/#styling-cells) section for more information. @@ -317,6 +332,26 @@ In the following example, the "Delete" action opens a confirmation dialog and th Please refer to the [custom columns](/x/react-data-grid/custom-columns/) page for documentation and integration examples. +## Autogenerated rows + +Some features like [row grouping](/x/react-data-grid/row-grouping/) or [aggregation](/x/react-data-grid/aggregation/) create autogenerated rows. +These rows also call functions like `valueGetter`, `valueFormatter` and `renderCell`, and that can cause issues if you're not expecting it because the `row` parameter will be an empty object and the `value` parameter will be `undefined`. +If we take for example the movie dataset, you can detect autogenerated rows using `isAutogeneratedRow`: + +```tsx +{ + field: 'title', + valueGetter: (value, row) => { + if (isAutogeneratedRow(row)) { + return '[this is an autogenerated row]'; + } + return `title: ${value}`; + }, +} +``` + +{{"demo": "AutogeneratedRows.js", "bg": "inline", "defaultCodeOpen": false}} + ## Selectors ### Visible columns diff --git a/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.js b/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.js index da7be8770849..5bb197ada478 100644 --- a/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.js +++ b/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.js @@ -1,6 +1,10 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import { DataGridPremium, gridClasses } from '@mui/x-data-grid-premium'; +import { + DataGridPremium, + gridClasses, + isAutogeneratedRow, +} from '@mui/x-data-grid-premium'; // eliminate rounding errors in aggregation row const valueFormatter = (value) => `${Math.floor(value * 1000) / 1000} °C`; @@ -54,7 +58,7 @@ export default function StylingAllCellsButAggregation() { if ( params.field === 'city' || params.value == null || - params.id.toString().startsWith('auto-generated') + isAutogeneratedRow(params.row) ) { return ''; } diff --git a/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.tsx b/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.tsx index f26c378f9e60..8b725034db90 100644 --- a/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.tsx +++ b/docs/data/data-grid/style-recipes/StylingAllCellsButAggregation.tsx @@ -5,6 +5,7 @@ import { DataGridPremium, GridCellParams, gridClasses, + isAutogeneratedRow, } from '@mui/x-data-grid-premium'; // eliminate rounding errors in aggregation row @@ -60,7 +61,7 @@ export default function StylingAllCellsButAggregation() { if ( params.field === 'city' || params.value == null || - params.id.toString().startsWith('auto-generated') + isAutogeneratedRow(params.row) ) { return ''; } diff --git a/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx b/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx index 3a6ba22174f2..4d41d9e0f967 100644 --- a/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx @@ -8,7 +8,7 @@ import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { GridColDef } from '../../models/colDef/gridColDef'; -import { isAutoGeneratedRow } from '../../hooks/features/rows/gridRowsUtils'; +import { isAutogeneratedRowNode } from '../../hooks/features/rows/gridRowsUtils'; type OwnerState = { classes: DataGridProcessedProps['classes'] }; @@ -142,7 +142,7 @@ const GridBooleanCell = React.memo(GridBooleanCellRaw); export { GridBooleanCell }; export const renderBooleanCell: GridColDef['renderCell'] = (params: GridBooleanCellProps) => { - if (params.field !== '__row_group_by_columns_group__' && isAutoGeneratedRow(params.rowNode)) { + if (params.field !== '__row_group_by_columns_group__' && isAutogeneratedRowNode(params.rowNode)) { return ''; } diff --git a/packages/x-data-grid/src/hooks/features/editing/useGridEditing.ts b/packages/x-data-grid/src/hooks/features/editing/useGridEditing.ts index 56e3ba6096de..1f5351ab67d4 100644 --- a/packages/x-data-grid/src/hooks/features/editing/useGridEditing.ts +++ b/packages/x-data-grid/src/hooks/features/editing/useGridEditing.ts @@ -14,7 +14,7 @@ import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel'; import { useGridRowEditing } from './useGridRowEditing'; import { GridStateInitializer } from '../../utils/useGridInitializeState'; import { gridEditRowsStateSelector } from './gridEditingSelectors'; -import { isAutoGeneratedRow } from '../rows/gridRowsUtils'; +import { isAutogeneratedRowNode } from '../rows/gridRowsUtils'; export const editingStateInitializer: GridStateInitializer = (state) => ({ ...state, @@ -36,7 +36,7 @@ export const useGridEditing = ( const isCellEditable = React.useCallback( (params) => { - if (isAutoGeneratedRow(params.rowNode)) { + if (isAutogeneratedRowNode(params.rowNode)) { return false; } if (!params.colDef.editable) { diff --git a/packages/x-data-grid/src/hooks/features/rows/gridRowsUtils.ts b/packages/x-data-grid/src/hooks/features/rows/gridRowsUtils.ts index 83b643c84dd4..b088a3fb6565 100644 --- a/packages/x-data-grid/src/hooks/features/rows/gridRowsUtils.ts +++ b/packages/x-data-grid/src/hooks/features/rows/gridRowsUtils.ts @@ -192,7 +192,9 @@ export const getRowsStateFromCache = ({ }; }; -export const isAutoGeneratedRow = ( +export const isAutogeneratedRow = (row: GridRowModel): boolean => GRID_ID_AUTOGENERATED in row; + +export const isAutogeneratedRowNode = ( rowNode: GridTreeNode, ): rowNode is | GridFooterNode @@ -217,7 +219,7 @@ export const getTreeNodeDescendants = ( const validDescendants: GridRowId[] = []; for (let i = 0; i < node.children.length; i += 1) { const child = node.children[i]; - if (!skipAutoGeneratedRows || !isAutoGeneratedRow(tree[child])) { + if (!skipAutoGeneratedRows || !isAutogeneratedRowNode(tree[child])) { validDescendants.push(child); } const childDescendants = getTreeNodeDescendants(tree, child, skipAutoGeneratedRows); diff --git a/packages/x-data-grid/src/hooks/features/rows/index.ts b/packages/x-data-grid/src/hooks/features/rows/index.ts index 0ebbb415a226..c946d462137c 100644 --- a/packages/x-data-grid/src/hooks/features/rows/index.ts +++ b/packages/x-data-grid/src/hooks/features/rows/index.ts @@ -13,4 +13,4 @@ export { gridDataRowIdsSelector, } from './gridRowsSelector'; export type { GridRowsState, GridRowIdToModelLookup } from './gridRowsInterfaces'; -export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid } from './gridRowsUtils'; +export { GRID_ROOT_GROUP_ID, checkGridRowIdIsValid, isAutogeneratedRow } from './gridRowsUtils'; diff --git a/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts b/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts index 2737b07ce94c..775962e697bc 100644 --- a/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts +++ b/packages/x-data-grid/src/hooks/features/rows/useGridRows.ts @@ -28,7 +28,7 @@ import { getTreeNodeDescendants, createRowsInternalCache, getRowsStateFromCache, - isAutoGeneratedRow, + isAutogeneratedRowNode, GRID_ROOT_GROUP_ID, GRID_ID_AUTOGENERATED, updateCacheWithNewRows, @@ -100,7 +100,7 @@ export const useGridRows = ( } const node = apiRef.current.getRowNode(id); - if (node && isAutoGeneratedRow(node)) { + if (node && isAutogeneratedRowNode(node)) { return { [GRID_ID_AUTOGENERATED]: id }; } @@ -320,7 +320,7 @@ export const useGridRows = ( index += 1 ) { const id = sortedRowIds[index]; - if (!skipAutoGeneratedRows || !isAutoGeneratedRow(tree[id])) { + if (!skipAutoGeneratedRows || !isAutogeneratedRowNode(tree[id])) { children.push(id); } } diff --git a/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts b/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts index 90c85a1ad65f..70c9993cac46 100644 --- a/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts +++ b/packages/x-data-grid/src/hooks/features/sorting/gridSortingSelector.ts @@ -1,7 +1,7 @@ import { createSelector, createSelectorMemoized } from '../../../utils/createSelector'; import { GridSortDirection, GridSortModel } from '../../../models/gridSortModel'; import { gridRowTreeSelector, gridRowsLookupSelector } from '../rows/gridRowsSelector'; -import { GRID_ID_AUTOGENERATED, isAutoGeneratedRow } from '../rows/gridRowsUtils'; +import { GRID_ID_AUTOGENERATED, isAutogeneratedRowNode } from '../rows/gridRowsUtils'; import type { GridStateCommunity } from '../../../models/gridStateCommunity'; import type { GridValidRowModel, GridRowEntry } from '../../../models/gridRows'; @@ -35,7 +35,7 @@ export const gridSortedRowEntriesSelector = createSelectorMemoized( acc.push({ id, model }); } const rowNode = rowTree[id]; - if (rowNode && isAutoGeneratedRow(rowNode)) { + if (rowNode && isAutogeneratedRowNode(rowNode)) { acc.push({ id, model: { [GRID_ID_AUTOGENERATED]: id } }); } return acc; diff --git a/scripts/x-data-grid-premium.exports.json b/scripts/x-data-grid-premium.exports.json index 97afc72b4262..ac6c300397a0 100644 --- a/scripts/x-data-grid-premium.exports.json +++ b/scripts/x-data-grid-premium.exports.json @@ -628,6 +628,7 @@ { "name": "gridVisiblePinnedColumnDefinitionsSelector", "kind": "Variable" }, { "name": "gridVisibleRowsLookupSelector", "kind": "Variable" }, { "name": "GridWorkspacesIcon", "kind": "Variable" }, + { "name": "isAutogeneratedRow", "kind": "Variable" }, { "name": "isGroupingColumn", "kind": "Variable" }, { "name": "isLeaf", "kind": "Function" }, { "name": "LicenseInfo", "kind": "Class" }, diff --git a/scripts/x-data-grid-pro.exports.json b/scripts/x-data-grid-pro.exports.json index 4ba16d506778..e9620df666a0 100644 --- a/scripts/x-data-grid-pro.exports.json +++ b/scripts/x-data-grid-pro.exports.json @@ -581,6 +581,7 @@ { "name": "gridVisibleColumnFieldsSelector", "kind": "Variable" }, { "name": "gridVisiblePinnedColumnDefinitionsSelector", "kind": "Variable" }, { "name": "gridVisibleRowsLookupSelector", "kind": "Variable" }, + { "name": "isAutogeneratedRow", "kind": "Variable" }, { "name": "isLeaf", "kind": "Function" }, { "name": "LicenseInfo", "kind": "Class" }, { "name": "LoadingOverlayPropsOverrides", "kind": "Interface" }, diff --git a/scripts/x-data-grid.exports.json b/scripts/x-data-grid.exports.json index ada1c4cbd351..ac66be0724d0 100644 --- a/scripts/x-data-grid.exports.json +++ b/scripts/x-data-grid.exports.json @@ -531,6 +531,7 @@ { "name": "gridVisibleColumnFieldsSelector", "kind": "Variable" }, { "name": "gridVisiblePinnedColumnDefinitionsSelector", "kind": "Variable" }, { "name": "gridVisibleRowsLookupSelector", "kind": "Variable" }, + { "name": "isAutogeneratedRow", "kind": "Variable" }, { "name": "isLeaf", "kind": "Function" }, { "name": "LoadingOverlayPropsOverrides", "kind": "Interface" }, { "name": "Logger", "kind": "Interface" }, From 6e7db261a02700f40318b3702f7b9d5f07d9f098 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 26 Jul 2024 08:18:52 +0200 Subject: [PATCH 673/912] [test] Fix adapters code coverage (#13969) Co-authored-by: Lukas --- codecov.yml | 4 +-- .../AdapterDateFns/AdapterDateFns.test.tsx | 8 +++++ .../src/AdapterDateFns/AdapterDateFns.ts | 17 +++++----- .../AdapterDateFnsBase/AdapterDateFnsBase.ts | 23 +++++++------- .../AdapterDateFnsJalali.test.tsx | 6 ++++ .../AdapterDateFnsJalali.ts | 21 ++++++------- .../AdapterDateFnsJalaliV3.ts | 31 +++++++++---------- .../src/AdapterDateFnsV3/AdapterDateFnsV3.ts | 27 +++++++++------- .../src/AdapterDayjs/AdapterDayjs.test.tsx | 11 +++++++ .../src/AdapterDayjs/AdapterDayjs.ts | 3 +- .../src/AdapterLuxon/AdapterLuxon.ts | 1 + .../AdapterMomentJalaali.ts | 4 +++ .../testCalculations.ts | 6 +++- .../describeHijriAdapter/testCalculations.ts | 2 +- .../describeJalaliAdapter/testCalculations.ts | 23 +++++++++++++- 15 files changed, 123 insertions(+), 64 deletions(-) diff --git a/codecov.yml b/codecov.yml index 426667acdf10..1a350cc7a0e5 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,4 +1,6 @@ coverage: + ignore: + - '**/*.test.tsx' status: project: default: @@ -16,8 +18,6 @@ coverage: - 'packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts' - 'packages/x-date-pickers/src/AdapterMomentHijri/AdapterMomentHijri.ts' - 'packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.ts' - ignore: - - '**/*.test.tsx' patch: off comment: false diff --git a/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx b/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx index 130c14f28821..6f8301a14602 100644 --- a/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx +++ b/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx @@ -19,6 +19,14 @@ describe('', () => { }); describe('Adapter localization', () => { + describe('Default locale', () => { + const adapter = new AdapterDateFns(); + + it('getCurrentLocaleCode: should return locale code', () => { + expect(adapter.getCurrentLocaleCode()).to.equal('en-US'); + }); + }); + describe('English', () => { const adapter = new AdapterDateFns({ locale: enUS }); const date = adapter.date(TEST_DATE_ISO_STRING)!; diff --git a/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.ts b/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.ts index 9bc30bf3dddf..414637955b35 100644 --- a/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.ts +++ b/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.ts @@ -85,13 +85,16 @@ export class AdapterDateFns implements MuiPickersAdapter { constructor({ locale, formats }: AdapterOptions = {}) { - if (typeof addDays !== 'function') { - throw new Error( - [ - 'MUI: The `date-fns` package v3.x is not compatible with this adapter.', - 'Please, install v2.x of the package or use the `AdapterDateFnsV3` instead.', - ].join('\n'), - ); + /* istanbul ignore next */ + if (process.env.NODE_ENV !== 'production') { + if (typeof addDays !== 'function') { + throw new Error( + [ + 'MUI: The `date-fns` package v3.x is not compatible with this adapter.', + 'Please, install v2.x of the package or use the `AdapterDateFnsV3` instead.', + ].join('\n'), + ); + } } super({ locale: locale ?? defaultLocale, formats, longFormatters }); } diff --git a/packages/x-date-pickers/src/AdapterDateFnsBase/AdapterDateFnsBase.ts b/packages/x-date-pickers/src/AdapterDateFnsBase/AdapterDateFnsBase.ts index 5cd1018dd540..32f9f873d0aa 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsBase/AdapterDateFnsBase.ts +++ b/packages/x-date-pickers/src/AdapterDateFnsBase/AdapterDateFnsBase.ts @@ -10,9 +10,9 @@ import { MakeRequired } from '../internals/models/helpers'; type DateFnsLocaleBase = { formatLong?: { - date?: any; - time?: any; - dateTime?: any; + date: (...args: Array) => any; + time: (...args: Array) => any; + dateTime: (...args: Array) => any; }; code?: string; }; @@ -115,7 +115,10 @@ type DateFnsAdapterBaseOptions = MakeRe AdapterOptions, 'locale' > & { - longFormatters: Record<'p' | 'P', (token: string, formatLong: any) => string>; + longFormatters: Record< + 'p' | 'P', + (token: string, formatLong: DateFnsLocaleBase['formatLong']) => string + >; lib?: string; }; @@ -212,19 +215,15 @@ export class AdapterDateFnsBase return value; }; - public getCurrentLocaleCode = () => { - return this.locale?.code || 'en-US'; + public getCurrentLocaleCode = (): string => { + // `code` is undefined only in `date-fns` types, but all locales have it + return this.locale.code!; }; // Note: date-fns input types are more lenient than this adapter, so we need to expose our more // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage. public is12HourCycleInCurrentLocale = () => { - if (this.locale) { - return /a/.test(this.locale.formatLong!.time({ width: 'short' })); - } - - // By default, date-fns is using en-US locale with am/pm enabled - return true; + return /a/.test(this.locale.formatLong!.time({ width: 'short' })); }; public expandFormat = (format: string) => { diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx index 916be6d43e29..b88d9390fced 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx +++ b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx @@ -16,6 +16,12 @@ describe('', () => { describeJalaliAdapter(AdapterDateFnsJalali, {}); describe('Adapter localization', () => { + it('getCurrentLocaleCode: should return locale code', () => { + const adapter = new AdapterDateFnsJalali({ locale: enUS }); + + expect(adapter.getCurrentLocaleCode()).to.equal('en-US'); + }); + it('Formatting', () => { const adapter = new AdapterDateFnsJalali(); diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts index 99bd27d11cf1..6fc2d35761f9 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts +++ b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.ts @@ -126,13 +126,16 @@ export class AdapterDateFnsJalali implements MuiPickersAdapter { constructor({ locale, formats }: AdapterOptions = {}) { - if (typeof addDays !== 'function') { - throw new Error( - [ - 'MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', - 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.', - ].join('\n'), - ); + /* istanbul ignore next */ + if (process.env.NODE_ENV !== 'production') { + if (typeof addDays !== 'function') { + throw new Error( + [ + 'MUI: The `date-fns-jalali` package v3.x is not compatible with this adapter.', + 'Please, install v2.x of the package or use the `AdapterDateFnsJalaliV3` instead.', + ].join('\n'), + ); + } } super({ locale: locale ?? defaultLocale, @@ -152,10 +155,6 @@ export class AdapterDateFnsJalali return dateFnsParse(value, format, new Date(), { locale: this.locale }); }; - public getCurrentLocaleCode = (): string => { - return this.locale?.code || 'fa-IR'; - }; - public isValid = (value: Date | null): boolean => { if (value == null) { return false; diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts index 2a74aa3c39bf..1dc566b74605 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts +++ b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.ts @@ -127,18 +127,21 @@ export class AdapterDateFnsJalali implements MuiPickersAdapter { constructor({ locale, formats }: AdapterOptions = {}) { - if (typeof addDays !== 'function') { - throw new Error( - [ - `MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, - 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.', - ].join('\n'), - ); - } - if (!longFormatters) { - throw new Error( - 'MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.', - ); + /* istanbul ignore next */ + if (process.env.NODE_ENV !== 'production') { + if (typeof addDays !== 'function') { + throw new Error( + [ + `MUI: The \`date-fns-jalali\` package v2.x is not compatible with this adapter.`, + 'Please, install v3.x of the package or use the `AdapterDateFnsJalali` instead.', + ].join('\n'), + ); + } + if (!longFormatters) { + throw new Error( + 'MUI: The minimum supported `date-fns-jalali` package version compatible with this adapter is `3.2.x`.', + ); + } } super({ locale: locale ?? defaultLocale, @@ -159,10 +162,6 @@ export class AdapterDateFnsJalali return dateFnsParse(value, format, new Date(), { locale: this.locale }); }; - public getCurrentLocaleCode = (): string => { - return this.locale?.code || 'fa-IR'; - }; - public isValid = (value: Date | null): boolean => { if (value == null) { return false; diff --git a/packages/x-date-pickers/src/AdapterDateFnsV3/AdapterDateFnsV3.ts b/packages/x-date-pickers/src/AdapterDateFnsV3/AdapterDateFnsV3.ts index a47b56c227d4..9c5332b9e1fe 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsV3/AdapterDateFnsV3.ts +++ b/packages/x-date-pickers/src/AdapterDateFnsV3/AdapterDateFnsV3.ts @@ -87,18 +87,21 @@ export class AdapterDateFns implements MuiPickersAdapter { constructor({ locale, formats }: AdapterOptions = {}) { - if (typeof addDays !== 'function') { - throw new Error( - [ - `MUI: The \`date-fns\` package v2.x is not compatible with this adapter.`, - 'Please, install v3.x of the package or use the `AdapterDateFns` instead.', - ].join('\n'), - ); - } - if (!longFormatters) { - throw new Error( - 'MUI: The minimum supported `date-fns` package version compatible with this adapter is `3.2.x`.', - ); + /* istanbul ignore next */ + if (process.env.NODE_ENV !== 'production') { + if (typeof addDays !== 'function') { + throw new Error( + [ + `MUI: The \`date-fns\` package v2.x is not compatible with this adapter.`, + 'Please, install v3.x of the package or use the `AdapterDateFns` instead.', + ].join('\n'), + ); + } + if (!longFormatters) { + throw new Error( + 'MUI: The minimum supported `date-fns` package version compatible with this adapter is `3.2.x`.', + ); + } } super({ locale: locale ?? enUS, formats, longFormatters }); } diff --git a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx index 6c9db0b98d11..dda1f5c56ab9 100644 --- a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx +++ b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx @@ -39,6 +39,17 @@ describe('', () => { }, }); + describe('Adapter timezone', () => { + it('setTimezone: should throw warning if no plugin is available', () => { + const modifiedAdapter = new AdapterDayjs(); + // @ts-ignore + modifiedAdapter.hasTimezonePlugin = () => false; + + const date = modifiedAdapter.date(TEST_DATE_ISO_STRING)!; + expect(() => modifiedAdapter.setTimezone(date, 'Europe/London')).to.throw(); + }); + }); + describe('Adapter localization', () => { describe('English', () => { const adapter = new AdapterDayjs({ locale: 'en' }); diff --git a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts index 0f76d85ad304..1245f256ea80 100644 --- a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts +++ b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts @@ -248,6 +248,7 @@ export class AdapterDayjs implements MuiPickersAdapter { let localeObject = locales[locale]; if (localeObject === undefined) { + /* istanbul ignore next */ if (process.env.NODE_ENV !== 'production') { warnOnce([ 'MUI X: Your locale has not been found.', @@ -277,7 +278,7 @@ export class AdapterDayjs implements MuiPickersAdapter { if (timezone !== 'UTC') { const fixedValue = value.tz(this.cleanTimezone(timezone), true); // @ts-ignore - if ((fixedValue.$offset ?? 0) === (value.$offset ?? 0)) { + if (fixedValue.$offset === (value.$offset ?? 0)) { return value; } // Change only what is needed to avoid creating a new object with unwanted data diff --git a/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts b/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts index 066a0ab572b6..3fd21f704315 100644 --- a/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts +++ b/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts @@ -485,6 +485,7 @@ export class AdapterLuxon implements MuiPickersAdapter { }; public getWeekNumber = (value: DateTime) => { + /* istanbul ignore next */ return value.localWeekNumber ?? value.weekNumber; }; diff --git a/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.ts b/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.ts index 497cd0044f1c..435022269f28 100644 --- a/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.ts +++ b/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.ts @@ -228,6 +228,10 @@ export class AdapterMomentJalaali return value.jDate(); }; + public getDaysInMonth = (value: Moment) => { + return this.moment.jDaysInMonth(value.jYear(), value.jMonth()); + }; + public setYear = (value: Moment, year: number) => { return value.clone().jYear(year); }; diff --git a/test/utils/pickers/describeGregorianAdapter/testCalculations.ts b/test/utils/pickers/describeGregorianAdapter/testCalculations.ts index 90b8f60581e9..10ef8845ec08 100644 --- a/test/utils/pickers/describeGregorianAdapter/testCalculations.ts +++ b/test/utils/pickers/describeGregorianAdapter/testCalculations.ts @@ -814,6 +814,10 @@ export const testCalculations: DescribeGregorianAdapterTestSuite = ({ expect(adapter.getDaysInMonth(adapter.addMonths(testDateIso, 1))).to.equal(30); }); + it('Method: getDayOfWeek', () => { + expect(adapter.getDayOfWeek(testDateIso)).to.equal(adapter.lib === 'luxon' ? 2 : 3); + }); + describe('Method: getWeekArray', () => { it('should work without timezones', () => { const weekArray = adapter.getWeekArray(testDateIso); @@ -866,7 +870,7 @@ export const testCalculations: DescribeGregorianAdapterTestSuite = ({ }); it('Method: getWeekNumber', () => { - expect(adapter.getWeekNumber!(testDateIso)).to.equal(44); + expect(adapter.getWeekNumber(testDateIso)).to.equal(44); }); it('Method: getYearRange', () => { diff --git a/test/utils/pickers/describeHijriAdapter/testCalculations.ts b/test/utils/pickers/describeHijriAdapter/testCalculations.ts index f6346f26adbf..5a797868ff06 100644 --- a/test/utils/pickers/describeHijriAdapter/testCalculations.ts +++ b/test/utils/pickers/describeHijriAdapter/testCalculations.ts @@ -161,7 +161,7 @@ export const testCalculations: DescribeHijriAdapterTestSuite = ({ adapter }) => }); it('Method: getWeekNumber', () => { - expect(adapter.getWeekNumber!(testDateIso)).to.equal(8); + expect(adapter.getWeekNumber(testDateIso)).to.equal(8); }); describe('Method: getYearRange', () => { diff --git a/test/utils/pickers/describeJalaliAdapter/testCalculations.ts b/test/utils/pickers/describeJalaliAdapter/testCalculations.ts index 6fb225977846..c1c2d7e9f4ea 100644 --- a/test/utils/pickers/describeJalaliAdapter/testCalculations.ts +++ b/test/utils/pickers/describeJalaliAdapter/testCalculations.ts @@ -19,6 +19,19 @@ export const testCalculations: DescribeJalaliAdapterTestSuite = ({ adapter }) => expect(adapter.isEqual(testDateIso, anotherDate)).to.equal(true); expect(adapter.isEqual(null, null)).to.equal(true); + expect(adapter.isEqual(testDateIso, null)).to.equal(false); + }); + + it('Method: isValid', () => { + expect(adapter.isValid(testDateIso)).to.equal(true); + expect(adapter.isValid(null)).to.equal(false); + if (adapter.lib !== 'moment-jalaali') { + expect(adapter.isValid(adapter.date('invalid'))).to.equal(false); + } else { + expect(() => adapter.isValid(adapter.date('invalid'))).toWarnDev( + 'Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not rel', + ); + } }); it('Method: isSameYear', () => { @@ -202,6 +215,10 @@ export const testCalculations: DescribeJalaliAdapterTestSuite = ({ adapter }) => expect(adapter.getDate(testDateIso)).to.equal(8); }); + it('Method: getHours', () => { + expect(adapter.getHours(testDateIso)).to.equal(11); + }); + it('Method: getMinutes', () => { expect(adapter.getMinutes(testDateIso)).to.equal(44); }); @@ -242,6 +259,10 @@ export const testCalculations: DescribeJalaliAdapterTestSuite = ({ adapter }) => expect(adapter.setMilliseconds(testDateIso, 11)).toEqualDateTime('2018-10-30T11:44:00.011Z'); }); + it('Method: getDaysInMonth', () => { + expect(adapter.getDaysInMonth(testDateIso)).to.equal(30); + }); + it('Method: getWeekArray', () => { const weekArray = adapter.getWeekArray(testDateIso); const expectedDate = new Date('2018-10-20T00:00:00.000Z'); @@ -255,7 +276,7 @@ export const testCalculations: DescribeJalaliAdapterTestSuite = ({ adapter }) => }); it('Method: getWeekNumber', () => { - expect(adapter.getWeekNumber!(testDateIso)).to.equal(33); + expect(adapter.getWeekNumber(testDateIso)).to.equal(33); }); it('Method: getYearRange', () => { From 9553e860542e7e58524bce42de9f3d7c872b9b9f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 12:12:21 +0300 Subject: [PATCH 674/912] Bump prettier to ^3.3.3 (#13921) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- .circleci/config.yml | 12 ++++++++-- .eslintignore | 1 + package.json | 3 ++- .../ChartsXReferenceLine.tsx | 4 ++-- .../ChartsYReferenceLine.tsx | 4 ++-- .../HighlightedProvider.tsx | 2 +- .../aggregation/wrapColumnWithAggregation.tsx | 2 +- .../export/serializer/excelSerializer.ts | 2 +- .../headerFiltering/GridHeaderFilterCell.tsx | 2 +- .../src/components/cell/GridSkeletonCell.tsx | 2 +- .../components/containers/GridRootStyles.ts | 2 +- .../rowSelection/useGridRowSelection.ts | 4 +++- .../hooks/utils/useGridNativeEventListener.ts | 2 +- .../x-data-grid/src/utils/createSelector.ts | 2 +- .../src/AdapterMoment/AdapterMoment.ts | 2 +- .../internals/components/PickersPopper.tsx | 2 +- pnpm-lock.yaml | 22 +++++++++---------- 17 files changed, 41 insertions(+), 29 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 47451d54470b..4ca30e558c1d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -125,7 +125,8 @@ jobs: - run: name: '`pnpm dedupe` was run?' command: | - if [[ $(git diff --name-status next | grep pnpm-lock) == "" ]]; + # #default-branch-switch + if [[ $(git diff --name-status master | grep pnpm-lock) == "" ]]; then echo "No changes to dependencies detected. Skipping..." else @@ -176,7 +177,14 @@ jobs: - install_js - run: name: '`pnpm prettier` changes committed?' - command: pnpm prettier --check + command: | + # #default-branch-switch + if [[ $(git diff --name-status master | grep pnpm-lock) == "" ]]; + then + pnpm prettier --check + else + pnpm prettier:check + fi - run: name: Generate PropTypes command: pnpm proptypes diff --git a/.eslintignore b/.eslintignore index e4429ac6dfba..45e0b0a316e0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,6 +7,7 @@ netlify/functions /lerna.json /packages/x-codemod/src/**/*.spec.js build +/coverage CHANGELOG.md dist node_modules diff --git a/package.json b/package.json index 569a308966f4..b1ff26d1e8c3 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "markdownlint": "markdownlint-cli2 \"**/*.md\"", "prettier": "pretty-quick --branch master --ignore-path .eslintignore", "prettier:all": "prettier --write . --ignore-path .eslintignore", + "prettier:check": "prettier --check . --ignore-path .eslintignore", "proptypes": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./docs/scripts/generateProptypes.ts", "size:snapshot": "node --max-old-space-size=2048 ./scripts/sizeSnapshot/create", "size:why": "pnpm size:snapshot --analyze --accurateBundles", @@ -172,7 +173,7 @@ "moment": "^2.30.1", "moment-timezone": "^0.5.45", "nyc": "^17.0.0", - "prettier": "^3.3.2", + "prettier": "^3.3.3", "pretty-quick": "^4.0.0", "process": "^0.11.10", "react": "^18.3.1", diff --git a/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx b/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx index 12f8a2798a70..5f7bb3a9ce18 100644 --- a/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx +++ b/packages/x-charts/src/ChartsReferenceLine/ChartsXReferenceLine.tsx @@ -103,8 +103,8 @@ function ChartsXReferenceLine(props: ChartsXReferenceLineProps) { const classes = getXReferenceLineClasses(inClasses); - const spacingX = typeof spacing === 'object' ? spacing.x ?? 0 : spacing; - const spacingY = typeof spacing === 'object' ? spacing.y ?? 0 : spacing; + const spacingX = typeof spacing === 'object' ? (spacing.x ?? 0) : spacing; + const spacingY = typeof spacing === 'object' ? (spacing.y ?? 0) : spacing; const textParams = { x: xPosition + spacingX, diff --git a/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx b/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx index affaeb867e71..5a18d38bd34f 100644 --- a/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx +++ b/packages/x-charts/src/ChartsReferenceLine/ChartsYReferenceLine.tsx @@ -104,8 +104,8 @@ function ChartsYReferenceLine(props: ChartsYReferenceLineProps) { const classes = getYReferenceLineClasses(inClasses); - const spacingX = typeof spacing === 'object' ? spacing.x ?? 0 : spacing; - const spacingY = typeof spacing === 'object' ? spacing.y ?? 0 : spacing; + const spacingX = typeof spacing === 'object' ? (spacing.x ?? 0) : spacing; + const spacingY = typeof spacing === 'object' ? (spacing.y ?? 0) : spacing; const textParams = { y: yPosition - spacingY, diff --git a/packages/x-charts/src/context/HighlightedProvider/HighlightedProvider.tsx b/packages/x-charts/src/context/HighlightedProvider/HighlightedProvider.tsx index 93cd613e2727..2481fc157586 100644 --- a/packages/x-charts/src/context/HighlightedProvider/HighlightedProvider.tsx +++ b/packages/x-charts/src/context/HighlightedProvider/HighlightedProvider.tsx @@ -65,7 +65,7 @@ function HighlightedProvider({ const highlightScope = highlightedItem && highlightedItem.seriesId - ? seriesById.get(highlightedItem.seriesId) ?? undefined + ? (seriesById.get(highlightedItem.seriesId) ?? undefined) : undefined; const providerValue = React.useMemo>(() => { diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx b/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx index 3b40db435437..f0fba4cf79dc 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/wrapColumnWithAggregation.tsx @@ -209,7 +209,7 @@ export const wrapColumnWithAggregationValue = ({ } // TODO: Add custom root id - const groupId = cellAggregationPosition === 'inline' ? id : rowNode.parent ?? ''; + const groupId = cellAggregationPosition === 'inline' ? id : (rowNode.parent ?? ''); const aggregationResult = gridAggregationLookupSelector(apiRef)?.[groupId]?.[field]; if (!aggregationResult || aggregationResult.position !== cellAggregationPosition) { diff --git a/packages/x-data-grid-premium/src/hooks/features/export/serializer/excelSerializer.ts b/packages/x-data-grid-premium/src/hooks/features/export/serializer/excelSerializer.ts index 3ab0b46dedb3..6ae00a3a3aeb 100644 --- a/packages/x-data-grid-premium/src/hooks/features/export/serializer/excelSerializer.ts +++ b/packages/x-data-grid-premium/src/hooks/features/export/serializer/excelSerializer.ts @@ -264,7 +264,7 @@ const addColumnGroupingHeaders = ( }); const newRow = worksheet.addRow( - row.map((group) => (group.groupId === null ? null : group?.headerName ?? group.groupId)), + row.map((group) => (group.groupId === null ? null : (group?.headerName ?? group.groupId))), ); // use `rowCount`, since worksheet can have additional rows added in `exceljsPreProcess` diff --git a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx index 23ca4abaeed3..8a73ef0aab68 100644 --- a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx +++ b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx @@ -319,7 +319,7 @@ const GridHeaderFilterCell = React.forwardRef diff --git a/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx b/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx index 28a25539b706..2441f413d65c 100644 --- a/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx @@ -82,7 +82,7 @@ function GridSkeletonCell(props: GridSkeletonCellProps) { // The width of the skeleton is a random number between the min and max values // The min and max values are determined by the type of the column const [min, max] = type - ? CONTENT_WIDTH_RANGE_BY_TYPE[type] ?? DEFAULT_CONTENT_WIDTH_RANGE + ? (CONTENT_WIDTH_RANGE_BY_TYPE[type] ?? DEFAULT_CONTENT_WIDTH_RANGE) : DEFAULT_CONTENT_WIDTH_RANGE; return { diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index bdfd79712cd3..ca63952cbb00 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -130,7 +130,7 @@ export const GridRootStyles = styled('div', { const containerBackground = t.vars ? t.vars.palette.background.default - : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default; + : (t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default); const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground; diff --git a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts index 7362b7a848be..2888ec5929a1 100644 --- a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts +++ b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts @@ -56,7 +56,9 @@ export const rowSelectionStateInitializer: GridStateInitializer< Pick > = (state, props) => ({ ...state, - rowSelection: props.rowSelection ? getSelectionModelPropValue(props.rowSelectionModel) ?? [] : [], + rowSelection: props.rowSelection + ? (getSelectionModelPropValue(props.rowSelectionModel) ?? []) + : [], }); /** diff --git a/packages/x-data-grid/src/hooks/utils/useGridNativeEventListener.ts b/packages/x-data-grid/src/hooks/utils/useGridNativeEventListener.ts index f351de22c8a3..84cddedd45ef 100644 --- a/packages/x-data-grid/src/hooks/utils/useGridNativeEventListener.ts +++ b/packages/x-data-grid/src/hooks/utils/useGridNativeEventListener.ts @@ -17,7 +17,7 @@ export const useGridNativeEventListener = < const [added, setAdded] = React.useState(false); const handlerRef = React.useRef(handler); - const targetElement = isFunction(ref) ? ref() : ref?.current ?? null; + const targetElement = isFunction(ref) ? ref() : (ref?.current ?? null); const wrapHandler = React.useCallback((event: HTMLElementEventMap[K]) => { return handlerRef.current && handlerRef.current(event); diff --git a/packages/x-data-grid/src/utils/createSelector.ts b/packages/x-data-grid/src/utils/createSelector.ts index 121c17fd11b3..647ed4283853 100644 --- a/packages/x-data-grid/src/utils/createSelector.ts +++ b/packages/x-data-grid/src/utils/createSelector.ts @@ -130,7 +130,7 @@ export const createSelectorMemoized: CreateSelectorFunction = (...args: any) => const isAPIRef = checkIsAPIRef(stateOrApiRef); const cacheKey = isAPIRef ? stateOrApiRef.current.instanceId - : instanceId ?? DEFAULT_INSTANCE_ID; + : (instanceId ?? DEFAULT_INSTANCE_ID); const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; if (process.env.NODE_ENV !== 'production') { diff --git a/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts b/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts index 6550ba949aa7..57ba9986e51f 100644 --- a/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts +++ b/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts @@ -247,7 +247,7 @@ export class AdapterMoment implements MuiPickersAdapter { const cleanZone = timezone === 'default' ? // @ts-ignore - this.moment.defaultZone?.name ?? 'system' + (this.moment.defaultZone?.name ?? 'system') : timezone; if (cleanZone === 'system') { diff --git a/packages/x-date-pickers/src/internals/components/PickersPopper.tsx b/packages/x-date-pickers/src/internals/components/PickersPopper.tsx index 6ad3bdedcdfb..58a9f9e0e50b 100644 --- a/packages/x-date-pickers/src/internals/components/PickersPopper.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersPopper.tsx @@ -402,7 +402,7 @@ export function PickersPopper(inProps: PickerPopperProps) { } }; - const Transition = slots?.desktopTransition ?? reduceAnimations ? Fade : Grow; + const Transition = (slots?.desktopTransition ?? reduceAnimations) ? Fade : Grow; const FocusTrap = slots?.desktopTrapFocus ?? BaseFocusTrap; const Paper = slots?.desktopPaper ?? PickersPopperPaper; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36cb2e7e4e7d..4b45e2a4c295 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: version: 10.4.3(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.2) + version: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) eslint-plugin-react: specifier: ^7.34.4 version: 7.34.4(eslint@8.57.0) @@ -336,11 +336,11 @@ importers: specifier: ^17.0.0 version: 17.0.0 prettier: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^3.3.3 + version: 3.3.3 pretty-quick: specifier: ^4.0.0 - version: 4.0.0(prettier@3.3.2) + version: 4.0.0(prettier@3.3.3) process: specifier: ^0.11.10 version: 0.11.10 @@ -7883,8 +7883,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true @@ -14260,10 +14260,10 @@ snapshots: globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-prettier@5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.2): + eslint-plugin-prettier@5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): dependencies: eslint: 8.57.0 - prettier: 3.3.2 + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: @@ -17197,7 +17197,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.3.2: {} + prettier@3.3.3: {} pretty-error@4.0.0: dependencies: @@ -17220,7 +17220,7 @@ snapshots: dependencies: parse-ms: 4.0.0 - pretty-quick@4.0.0(prettier@3.3.2): + pretty-quick@4.0.0(prettier@3.3.3): dependencies: execa: 5.1.1 find-up: 5.0.0 @@ -17228,7 +17228,7 @@ snapshots: mri: 1.2.0 picocolors: 1.0.1 picomatch: 3.0.1 - prettier: 3.3.2 + prettier: 3.3.3 tslib: 2.6.2 prettyjson@1.2.5: From 5979100d6e90af16186723688de00d7c6aea4d08 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:17:02 +0200 Subject: [PATCH 675/912] [infra] Fix regex match in order id validation (#13987) --- scripts/orderIdValidation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/orderIdValidation.js b/scripts/orderIdValidation.js index faf68cfe6e65..334e413aa7af 100644 --- a/scripts/orderIdValidation.js +++ b/scripts/orderIdValidation.js @@ -21,11 +21,11 @@ module.exports = async ({ core, context, github }) => { // add to this regex the possibility that the ORDER ID is wrapped in ** or __ const orderIdRegex = /(?:\*|_){0,2}?Order ID(?:\*|_){0,2}?: (\d+)/; - const orderIdMatch = issue.data.body.match(orderIdRegex)[1]; + const orderIdMatch = issue.data.body.match(orderIdRegex); const orderId = orderIdMatch ? orderIdMatch[1] : null; if (!orderId) { - core.setFailed('No Order ID found in issue body'); + core.info('No Order ID found in issue body'); } else { const order = await fetch(`${orderApi}${orderId}`, { headers: { From 7660e162ccfb0227215d4bedc2be2880df4d622a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 12:46:08 +0300 Subject: [PATCH 676/912] Bump Emotion (#13927) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 6 +- package.json | 6 +- pnpm-lock.yaml | 309 ++++++++++++++++++++++++---------------------- test/package.json | 4 +- 4 files changed, 171 insertions(+), 154 deletions(-) diff --git a/docs/package.json b/docs/package.json index 5d30ca6e1497..589adb8942d6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -23,10 +23,10 @@ "@babel/runtime": "^7.24.8", "@babel/runtime-corejs2": "^7.24.8", "@docsearch/react": "^3.6.1", - "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.11.4", + "@emotion/cache": "^11.13.1", + "@emotion/react": "^11.13.0", "@emotion/server": "^11.11.0", - "@emotion/styled": "^11.11.5", + "@emotion/styled": "^11.13.0", "@mui/base": "^5.0.0-beta.40", "@mui/docs": "6.0.0-beta.2", "@mui/icons-material": "^5.16.5", diff --git a/package.json b/package.json index b1ff26d1e8c3..29798ea51263 100644 --- a/package.json +++ b/package.json @@ -86,9 +86,9 @@ "@babel/register": "^7.24.6", "@babel/traverse": "^7.24.8", "@babel/types": "^7.24.9", - "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.11.4", - "@emotion/styled": "^11.11.5", + "@emotion/cache": "^11.13.1", + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", "@mui/icons-material": "^5.16.5", "@mui/internal-markdown": "^1.0.8", "@mui/internal-test-utils": "^1.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b45e2a4c295..213ef118822d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,17 +75,17 @@ importers: specifier: ^7.24.9 version: 7.24.9 '@emotion/cache': - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.13.1 + version: 11.13.1 '@emotion/react': - specifier: ^11.11.4 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': - specifier: ^11.11.5 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.0 + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/icons-material': specifier: ^5.16.5 - version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': specifier: ^1.0.8 version: 1.0.8 @@ -94,7 +94,7 @@ importers: version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': specifier: github:mui/material-ui#288863bd2f8681a82c4bfbaf13215b41043bc551 version: https://codeload.github.com/mui/material-ui/tar.gz/288863bd2f8681a82c4bfbaf13215b41043bc551(encoding@0.1.13) @@ -411,44 +411,44 @@ importers: specifier: ^3.6.1 version: 3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) '@emotion/cache': - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.13.1 + version: 11.13.1 '@emotion/react': - specifier: ^11.11.4 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/server': specifier: ^11.11.0 version: 11.11.0 '@emotion/styled': - specifier: ^11.11.5 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.0 + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(6nwqs7rr7jy47rc2b7txcjo3ei) + version: 6.0.0-beta.2(3ea4brgn3rccsf7hpkxdzioc4a) '@mui/icons-material': specifier: ^5.16.5 - version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 - version: 5.0.0-beta.48(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/lab': specifier: ^5.0.0-alpha.173 - version: 5.0.0-alpha.173(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.4 - version: 5.16.4(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -707,19 +707,19 @@ importers: version: 7.24.8 '@emotion/react': specifier: ^11.9.0 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -799,19 +799,19 @@ importers: version: 7.24.8 '@emotion/react': specifier: ^11.9.0 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -926,10 +926,10 @@ importers: version: 7.24.8 '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -957,7 +957,7 @@ importers: version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 - version: 5.0.0-beta.48(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': specifier: ^7.2.15 version: 7.2.15(@types/react@18.3.3) @@ -979,10 +979,10 @@ importers: version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': specifier: ^5.4.1 - version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-premium': specifier: workspace:* version: link:../x-data-grid-premium/build @@ -1014,10 +1014,10 @@ importers: version: 7.24.8 '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1076,10 +1076,10 @@ importers: version: 7.24.8 '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1129,19 +1129,19 @@ importers: version: 7.24.8 '@emotion/react': specifier: ^11.9.0 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1215,19 +1215,19 @@ importers: version: 7.24.8 '@emotion/react': specifier: ^11.9.0 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1335,19 +1335,19 @@ importers: version: 7.24.8 '@emotion/react': specifier: ^11.9.0 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1391,19 +1391,19 @@ importers: version: 7.24.8 '@emotion/react': specifier: ^11.9.0 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1448,14 +1448,14 @@ importers: specifier: ^7.24.8 version: 7.24.8 '@emotion/cache': - specifier: ^11.11.0 - version: 11.11.0 + specifier: ^11.13.1 + version: 11.13.1 '@emotion/react': - specifier: ^11.11.4 - version: 11.11.4(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid': specifier: workspace:* version: link:../packages/x-data-grid/build @@ -2337,23 +2337,29 @@ packages: '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - '@emotion/babel-plugin@11.11.0': - resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + '@emotion/babel-plugin@11.12.0': + resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} - '@emotion/cache@11.11.0': - resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + '@emotion/cache@11.13.1': + resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==} - '@emotion/hash@0.9.1': - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} '@emotion/is-prop-valid@1.2.2': resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + '@emotion/is-prop-valid@1.3.0': + resolution: {integrity: sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==} + '@emotion/memoize@0.8.1': resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - '@emotion/react@11.11.4': - resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.13.0': + resolution: {integrity: sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -2361,8 +2367,8 @@ packages: '@types/react': optional: true - '@emotion/serialize@1.1.4': - resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==} + '@emotion/serialize@1.3.0': + resolution: {integrity: sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==} '@emotion/server@11.11.0': resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} @@ -2372,11 +2378,11 @@ packages: '@emotion/css': optional: true - '@emotion/sheet@1.2.2': - resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - '@emotion/styled@11.11.5': - resolution: {integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==} + '@emotion/styled@11.13.0': + resolution: {integrity: sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' @@ -2388,16 +2394,19 @@ packages: '@emotion/unitless@0.8.1': resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1': - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + '@emotion/unitless@0.9.0': + resolution: {integrity: sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==} + + '@emotion/use-insertion-effect-with-fallbacks@1.1.0': + resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} peerDependencies: react: '>=16.8.0' - '@emotion/utils@1.2.1': - resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + '@emotion/utils@1.4.0': + resolution: {integrity: sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==} - '@emotion/weak-memoize@0.3.1': - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} '@es-joy/jsdoccomment@0.46.0': resolution: {integrity: sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==} @@ -10538,13 +10547,13 @@ snapshots: tslib: 2.6.2 optional: true - '@emotion/babel-plugin@11.11.0': + '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 '@babel/runtime': 7.24.8 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.4 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.0 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 @@ -10554,31 +10563,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/cache@11.11.0': + '@emotion/cache@11.13.1': dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.0 + '@emotion/weak-memoize': 0.4.0 stylis: 4.2.0 - '@emotion/hash@0.9.1': {} + '@emotion/hash@0.9.2': {} '@emotion/is-prop-valid@1.2.2': dependencies: '@emotion/memoize': 0.8.1 + '@emotion/is-prop-valid@1.3.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/memoize@0.8.1': {} - '@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1)': + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.4 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 + '@emotion/babel-plugin': 11.12.0 + '@emotion/cache': 11.13.1 + '@emotion/serialize': 1.3.0 + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) + '@emotion/utils': 1.4.0 + '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: @@ -10586,32 +10601,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/serialize@1.1.4': + '@emotion/serialize@1.3.0': dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.9.0 + '@emotion/utils': 1.4.0 csstype: 3.1.3 '@emotion/server@11.11.0': dependencies: - '@emotion/utils': 1.2.1 + '@emotion/utils': 1.4.0 html-tokenize: 2.0.1 multipipe: 1.0.2 through: 2.3.8 - '@emotion/sheet@1.2.2': {} + '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.2 - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) - '@emotion/serialize': 1.1.4 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) - '@emotion/utils': 1.2.1 + '@emotion/babel-plugin': 11.12.0 + '@emotion/is-prop-valid': 1.3.0 + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/serialize': 1.3.0 + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) + '@emotion/utils': 1.4.0 react: 18.3.1 optionalDependencies: '@types/react': 18.3.3 @@ -10620,13 +10635,15 @@ snapshots: '@emotion/unitless@0.8.1': {} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1)': + '@emotion/unitless@0.9.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)': dependencies: react: 18.3.1 - '@emotion/utils@1.2.1': {} + '@emotion/utils@1.4.0': {} - '@emotion/weak-memoize@0.3.1': {} + '@emotion/weak-memoize@0.4.0': {} '@es-joy/jsdoccomment@0.46.0': dependencies: @@ -11021,14 +11038,14 @@ snapshots: '@mui/core-downloads-tracker@5.16.5': {} - '@mui/docs@6.0.0-beta.2(6nwqs7rr7jy47rc2b7txcjo3ei)': + '@mui/docs@6.0.0-beta.2(3ea4brgn3rccsf7hpkxdzioc4a)': dependencies: '@babel/runtime': 7.24.8 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/icons-material': 5.16.5(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/icons-material': 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': 1.0.8 - '@mui/material': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) chai: 4.4.1 clipboard-copy: 4.0.1 clsx: 2.1.1 @@ -11039,10 +11056,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/icons-material@5.16.5(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/icons-material@5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@mui/material': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.3.3 @@ -11080,8 +11097,8 @@ snapshots: '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) '@babel/register': 7.24.6(@babel/core@7.24.9) '@babel/runtime': 7.24.8 - '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) + '@emotion/cache': 11.13.1 + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) '@testing-library/dom': 10.3.1 '@testing-library/react': 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) @@ -11107,12 +11124,12 @@ snapshots: - supports-color - utf-8-validate - '@mui/joy@5.0.0-beta.48(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/core-downloads-tracker': 5.16.5 - '@mui/system': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 @@ -11120,16 +11137,16 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/lab@5.0.0-alpha.173(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/material': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 @@ -11137,26 +11154,26 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/material-nextjs@5.16.4(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@mui/material': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: - '@emotion/cache': 11.11.0 + '@emotion/cache': 11.13.1 '@emotion/server': 11.11.0 '@types/react': 18.3.3 - '@mui/material@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 '@mui/core-downloads-tracker': 5.16.5 - '@mui/system': 5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) '@popperjs/core': 2.11.8 @@ -11169,8 +11186,8 @@ snapshots: react-is: 18.3.1 react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/288863bd2f8681a82c4bfbaf13215b41043bc551(encoding@0.1.13)': @@ -11196,21 +11213,21 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/styled-engine@5.16.4(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@5.16.4(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@emotion/cache': 11.11.0 + '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/styles@5.16.5(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 - '@emotion/hash': 0.9.1 + '@emotion/hash': 0.9.2 '@mui/private-theming': 5.16.5(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -11230,11 +11247,11 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/system@5.16.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/system@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.24.8 '@mui/private-theming': 5.16.5(@types/react@18.3.3)(react@18.3.1) - '@mui/styled-engine': 5.16.4(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@mui/styled-engine': 5.16.4(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 @@ -11242,8 +11259,8 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 '@mui/types@7.2.15(@types/react@18.3.3)': diff --git a/test/package.json b/test/package.json index 6477ceff0517..4529dc22e245 100644 --- a/test/package.json +++ b/test/package.json @@ -7,8 +7,8 @@ }, "devDependencies": { "@babel/runtime": "^7.24.8", - "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.11.4", + "@emotion/cache": "^11.13.1", + "@emotion/react": "^11.13.0", "@mui/material": "^5.16.5", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-pro": "workspace:*", From ad605ffc99fda53c8e2f6f429824dec5e428767f Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Fri, 26 Jul 2024 13:54:33 +0200 Subject: [PATCH 677/912] [TreeView] Add new utility function `isEventTargetInDescendants` (#13982) --- packages/x-tree-view/src/internals/utils/tree.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/x-tree-view/src/internals/utils/tree.ts b/packages/x-tree-view/src/internals/utils/tree.ts index 54c935a19f55..deacfe7bbb71 100644 --- a/packages/x-tree-view/src/internals/utils/tree.ts +++ b/packages/x-tree-view/src/internals/utils/tree.ts @@ -259,3 +259,14 @@ export const getAllNavigableItems = ( return navigableItems; }; + +/** + * Checks if the target is in a descendant of this item. + * This can prevent from firing some logic on the ancestors on the interacted item when the event handler is on the root. + * @param {HTMLElement} target The target to check + * @param {HTMLElement | null} itemRoot The root of the item to check if the event target is in its descendants + * @returns {boolean} Whether the target is in a descendant of this item + */ +export const isTargetInDescendants = (target: HTMLElement, itemRoot: HTMLElement | null) => { + return itemRoot !== target.closest('*[role="treeitem"]'); +}; From 3aa3069053520dc95bdd3d5c597d22cd9dbadd24 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Sun, 28 Jul 2024 10:02:10 +0200 Subject: [PATCH 678/912] [infra] Fixes permissions on order id job (#13997) --- .github/workflows/issue-cleanup.yml | 1 + .github/workflows/order-id-validator.yml | 11 +++++++++-- scripts/orderIdValidation.js | 13 +++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.github/workflows/issue-cleanup.yml b/.github/workflows/issue-cleanup.yml index 1db6e63df3ef..071f9450cdd6 100644 --- a/.github/workflows/issue-cleanup.yml +++ b/.github/workflows/issue-cleanup.yml @@ -1,4 +1,5 @@ name: Cleanup issue comment +run-name: Issue cleanup on: issues: diff --git a/.github/workflows/order-id-validator.yml b/.github/workflows/order-id-validator.yml index a8d44d155caa..c0357ed704a5 100644 --- a/.github/workflows/order-id-validator.yml +++ b/.github/workflows/order-id-validator.yml @@ -1,13 +1,20 @@ name: Order ID validation on: - issues: - types: [opened] + workflow_run: + workflows: [Issue cleanup] + types: + - completed + +permissions: {} jobs: validate-order-id: runs-on: ubuntu-latest name: Label issue based on order ID + permissions: + contents: read + issues: write steps: - uses: actions/checkout@v3 - name: Label issue diff --git a/scripts/orderIdValidation.js b/scripts/orderIdValidation.js index 334e413aa7af..d37928ebc47e 100644 --- a/scripts/orderIdValidation.js +++ b/scripts/orderIdValidation.js @@ -19,11 +19,15 @@ module.exports = async ({ core, context, github }) => { issue_number: issueNumber, }); + core.debug(`>>> Issue Body: ${issue.data.body}`); + // add to this regex the possibility that the ORDER ID is wrapped in ** or __ const orderIdRegex = /(?:\*|_){0,2}?Order ID(?:\*|_){0,2}?: (\d+)/; const orderIdMatch = issue.data.body.match(orderIdRegex); const orderId = orderIdMatch ? orderIdMatch[1] : null; + core.debug(`>>> Order ID: ${orderId}`); + if (!orderId) { core.info('No Order ID found in issue body'); } else { @@ -33,7 +37,11 @@ module.exports = async ({ core, context, github }) => { 'User-Agent': 'MUI-Tools-Private/X-Orders-Inspector v1', }, }); + const orderDetails = await order.json(); + + core.debug(`>>> Order Items: ${orderDetails.line_items?.join(',')}`); + const plan = orderDetails.line_items?.filter((item) => /\b(pro|premium)\b/i.test(item.name))[0].name || ''; @@ -46,12 +54,17 @@ module.exports = async ({ core, context, github }) => { const planName = plan.match(/\b(pro|premium)\b/i)[0].toLowerCase(); const labelName = `support: ${planName}`; + core.debug(`>>> planName: ${planName}`); + core.debug(`>>> labelName: ${labelName}`); + const label = await github.rest.issues.getLabel({ owner, repo, name: labelName, }); + core.debug(`>>> new label: ${label.name}`); + await github.rest.issues.addLabels({ owner, repo, From a91c961bb109851b1857eafa3077b03fa0e0a3cd Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:50:12 +0200 Subject: [PATCH 679/912] [infra] Fix label name for order ID validation (#14019) --- scripts/orderIdValidation.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/orderIdValidation.js b/scripts/orderIdValidation.js index d37928ebc47e..75818017e586 100644 --- a/scripts/orderIdValidation.js +++ b/scripts/orderIdValidation.js @@ -52,7 +52,14 @@ module.exports = async ({ core, context, github }) => { } const planName = plan.match(/\b(pro|premium)\b/i)[0].toLowerCase(); - const labelName = `support: ${planName}`; + + if (planName !== 'pro' && planName !== 'premium') { + core.debug(`>>> planName: ${planName}`); + core.info('planName could not be extracted'); + return; + } + + const labelName = `support: ${planName} standard`; core.debug(`>>> planName: ${planName}`); core.debug(`>>> labelName: ${labelName}`); From 1a152ed57edebac007151339af6ae5b204d90880 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 12:10:58 +0300 Subject: [PATCH 680/912] Pin dependencies (#13998) Signed-off-by: Lukas Tyla Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas Tyla --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/order-id-validator.yml | 4 ++-- .github/workflows/scorecards.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5dc4ea324a4e..38ce7892b350 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: languages: typescript # If you wish to specify custom queries, you can do so here or in a config file. @@ -29,4 +29,4 @@ jobs: # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 diff --git a/.github/workflows/order-id-validator.yml b/.github/workflows/order-id-validator.yml index c0357ed704a5..336eb089379b 100644 --- a/.github/workflows/order-id-validator.yml +++ b/.github/workflows/order-id-validator.yml @@ -16,9 +16,9 @@ jobs: contents: read issues: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Label issue - uses: actions/github-script@v7 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('./scripts/orderIdValidation.js') diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 586d0bf05b44..e04f536c60ad 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: Run analysis - uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 + uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 with: results_file: results.sarif results_format: sarif @@ -44,6 +44,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: sarif_file: results.sarif From b7774aa0f9e192b31f183777adcd854752a686bd Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 29 Jul 2024 11:58:51 +0200 Subject: [PATCH 681/912] [infra] Fixes the workflow_run parameter on the order id workflow (#14021) --- .github/workflows/issue-cleanup.yml | 1 - .github/workflows/order-id-validator.yml | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/issue-cleanup.yml b/.github/workflows/issue-cleanup.yml index 071f9450cdd6..1db6e63df3ef 100644 --- a/.github/workflows/issue-cleanup.yml +++ b/.github/workflows/issue-cleanup.yml @@ -1,5 +1,4 @@ name: Cleanup issue comment -run-name: Issue cleanup on: issues: diff --git a/.github/workflows/order-id-validator.yml b/.github/workflows/order-id-validator.yml index 336eb089379b..212d6c5f8eed 100644 --- a/.github/workflows/order-id-validator.yml +++ b/.github/workflows/order-id-validator.yml @@ -2,7 +2,8 @@ name: Order ID validation on: workflow_run: - workflows: [Issue cleanup] + workflows: + - Cleanup issue comment types: - completed @@ -13,6 +14,7 @@ jobs: runs-on: ubuntu-latest name: Label issue based on order ID permissions: + actions: read contents: read issues: write steps: From c8845a254adff01c2799a3cc991345c7ea04cfe7 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 29 Jul 2024 14:38:11 +0200 Subject: [PATCH 682/912] [core] Fix event naming convention --- docs/data/data-grid/components/RowContextMenu.js | 4 ++-- docs/data/data-grid/components/RowContextMenu.tsx | 4 ++-- packages/x-charts/src/hooks/useReducedMotion.ts | 4 ++-- .../src/components/GridColumnMenuAggregationItem.tsx | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/data-grid/components/RowContextMenu.js b/docs/data/data-grid/components/RowContextMenu.js index 52f5ca7a5e64..30bb93043b2a 100644 --- a/docs/data/data-grid/components/RowContextMenu.js +++ b/docs/data/data-grid/components/RowContextMenu.js @@ -107,8 +107,8 @@ export default function RowContextMenu() { } slotProps={{ root: { - onContextMenu: (e) => { - e.preventDefault(); + onContextMenu: (event) => { + event.preventDefault(); handleClose(); }, }, diff --git a/docs/data/data-grid/components/RowContextMenu.tsx b/docs/data/data-grid/components/RowContextMenu.tsx index ec850af7851b..ef8dc42a3e18 100644 --- a/docs/data/data-grid/components/RowContextMenu.tsx +++ b/docs/data/data-grid/components/RowContextMenu.tsx @@ -110,8 +110,8 @@ export default function RowContextMenu() { } slotProps={{ root: { - onContextMenu: (e) => { - e.preventDefault(); + onContextMenu: (event) => { + event.preventDefault(); handleClose(); }, }, diff --git a/packages/x-charts/src/hooks/useReducedMotion.ts b/packages/x-charts/src/hooks/useReducedMotion.ts index 74e30fb792c2..b95f28d4a9da 100644 --- a/packages/x-charts/src/hooks/useReducedMotion.ts +++ b/packages/x-charts/src/hooks/useReducedMotion.ts @@ -20,10 +20,10 @@ export const useReducedMotion = () => { } const mql = window.matchMedia('(prefers-reduced-motion)'); - const handleMediaChange = (e: MediaQueryListEvent | MediaQueryList) => { + const handleMediaChange = (event: MediaQueryListEvent | MediaQueryList) => { Globals.assign({ // Modification such the react-spring implementation such that this hook can remove animation but never activate animation. - skipAnimation: e.matches || undefined, + skipAnimation: event.matches || undefined, }); }; diff --git a/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx b/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx index 01bba6af146b..f2976b011913 100644 --- a/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx +++ b/packages/x-data-grid-premium/src/components/GridColumnMenuAggregationItem.tsx @@ -83,7 +83,7 @@ function GridColumnMenuAggregationItem(props: GridColumnMenuItemProps) { label={label} color="primary" onChange={handleAggregationItemChange} - onBlur={(e) => e.stopPropagation()} + onBlur={(event) => event.stopPropagation()} fullWidth > ... From ff77f58a537f9ae9feb1219f4277dc7f382c7305 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:51:32 +0200 Subject: [PATCH 683/912] [docs] Fix 404 (#13989) --- docs/data/charts/tooltip/tooltip.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/charts/tooltip/tooltip.md b/docs/data/charts/tooltip/tooltip.md index ee43c997e6ce..4c1ddb98678f 100644 --- a/docs/data/charts/tooltip/tooltip.md +++ b/docs/data/charts/tooltip/tooltip.md @@ -1,7 +1,7 @@ --- title: Charts - Tooltip productId: x-charts -components: ChartsAxisTooltipContent, ChartsItemTooltipContent, ChartsTooltip, DefaultChartsAxisTooltipContent, DefaultChartsItemTooltipContent, ChartsAxisHighlight +components: ChartsTooltip, DefaultChartsAxisTooltipContent, DefaultChartsItemTooltipContent, ChartsAxisHighlight --- # Charts - Tooltip From 9f04cb83bf93cfd766e079a8610463688c055275 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Mon, 29 Jul 2024 16:30:26 +0200 Subject: [PATCH 684/912] [charts] Fix incorrect `axisId` prop being allowed in xAxis/yAxis config. Use `id` instead. (#13986) --- docs/pages/x/api/charts/bar-chart.json | 4 ++-- docs/pages/x/api/charts/chart-container-pro.json | 4 ++-- docs/pages/x/api/charts/chart-container.json | 4 ++-- docs/pages/x/api/charts/heatmap.json | 4 ++-- docs/pages/x/api/charts/line-chart.json | 4 ++-- docs/pages/x/api/charts/pie-chart.json | 4 ++-- docs/pages/x/api/charts/responsive-chart-container-pro.json | 4 ++-- docs/pages/x/api/charts/responsive-chart-container.json | 4 ++-- docs/pages/x/api/charts/scatter-chart-pro.json | 4 ++-- docs/pages/x/api/charts/scatter-chart.json | 4 ++-- docs/pages/x/api/charts/spark-line-chart.json | 4 ++-- .../x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx | 2 -- packages/x-charts-pro/src/Heatmap/Heatmap.tsx | 2 -- .../ResponsiveChartContainerPro.tsx | 2 -- packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx | 2 -- packages/x-charts/src/BarChart/BarChart.tsx | 2 -- packages/x-charts/src/ChartContainer/ChartContainer.tsx | 2 -- packages/x-charts/src/LineChart/LineChart.tsx | 2 -- packages/x-charts/src/PieChart/PieChart.tsx | 2 -- .../src/ResponsiveChartContainer/ResponsiveChartContainer.tsx | 2 -- packages/x-charts/src/ScatterChart/ScatterChart.tsx | 2 -- packages/x-charts/src/SparkLineChart/SparkLineChart.tsx | 2 -- packages/x-charts/src/models/axis.ts | 2 +- 23 files changed, 23 insertions(+), 45 deletions(-) diff --git a/docs/pages/x/api/charts/bar-chart.json b/docs/pages/x/api/charts/bar-chart.json index d578934f13e0..2e7d219fdfdc 100644 --- a/docs/pages/x/api/charts/bar-chart.json +++ b/docs/pages/x/api/charts/bar-chart.json @@ -99,13 +99,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/chart-container-pro.json b/docs/pages/x/api/charts/chart-container-pro.json index a26642badf56..5ac5c1b78337 100644 --- a/docs/pages/x/api/charts/chart-container-pro.json +++ b/docs/pages/x/api/charts/chart-container-pro.json @@ -43,13 +43,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "zAxis": { diff --git a/docs/pages/x/api/charts/chart-container.json b/docs/pages/x/api/charts/chart-container.json index 3777445516b8..3a78a1ef89b5 100644 --- a/docs/pages/x/api/charts/chart-container.json +++ b/docs/pages/x/api/charts/chart-container.json @@ -36,13 +36,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "zAxis": { diff --git a/docs/pages/x/api/charts/heatmap.json b/docs/pages/x/api/charts/heatmap.json index 486a4d6e7f7f..fb2e2656976a 100644 --- a/docs/pages/x/api/charts/heatmap.json +++ b/docs/pages/x/api/charts/heatmap.json @@ -7,14 +7,14 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, barGapRatio?: number, categoryGapRatio?: number, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ barGapRatio?: number, categoryGapRatio?: number, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" }, "required": true }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, barGapRatio?: number, categoryGapRatio?: number, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ barGapRatio?: number, categoryGapRatio?: number, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" }, "required": true }, diff --git a/docs/pages/x/api/charts/line-chart.json b/docs/pages/x/api/charts/line-chart.json index 85bd33e1b061..f146dd6804d5 100644 --- a/docs/pages/x/api/charts/line-chart.json +++ b/docs/pages/x/api/charts/line-chart.json @@ -92,13 +92,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/pie-chart.json b/docs/pages/x/api/charts/pie-chart.json index 06f71fd3330b..42ad6eed68d5 100644 --- a/docs/pages/x/api/charts/pie-chart.json +++ b/docs/pages/x/api/charts/pie-chart.json @@ -88,13 +88,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } } }, diff --git a/docs/pages/x/api/charts/responsive-chart-container-pro.json b/docs/pages/x/api/charts/responsive-chart-container-pro.json index 8e58fe0bbfd6..c38d3cf3be32 100644 --- a/docs/pages/x/api/charts/responsive-chart-container-pro.json +++ b/docs/pages/x/api/charts/responsive-chart-container-pro.json @@ -43,13 +43,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "zAxis": { diff --git a/docs/pages/x/api/charts/responsive-chart-container.json b/docs/pages/x/api/charts/responsive-chart-container.json index 50f9fdcd769b..38b6f6e9bf8f 100644 --- a/docs/pages/x/api/charts/responsive-chart-container.json +++ b/docs/pages/x/api/charts/responsive-chart-container.json @@ -36,13 +36,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "zAxis": { diff --git a/docs/pages/x/api/charts/scatter-chart-pro.json b/docs/pages/x/api/charts/scatter-chart-pro.json index 570d57a2c3d7..17da9ca377a6 100644 --- a/docs/pages/x/api/charts/scatter-chart-pro.json +++ b/docs/pages/x/api/charts/scatter-chart-pro.json @@ -96,13 +96,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "zAxis": { diff --git a/docs/pages/x/api/charts/scatter-chart.json b/docs/pages/x/api/charts/scatter-chart.json index 30c0942ca778..f3aa2e2e027f 100644 --- a/docs/pages/x/api/charts/scatter-chart.json +++ b/docs/pages/x/api/charts/scatter-chart.json @@ -89,13 +89,13 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }>" } }, "zAxis": { diff --git a/docs/pages/x/api/charts/spark-line-chart.json b/docs/pages/x/api/charts/spark-line-chart.json index 54fb323ea2da..ffdba7744836 100644 --- a/docs/pages/x/api/charts/spark-line-chart.json +++ b/docs/pages/x/api/charts/spark-line-chart.json @@ -57,13 +57,13 @@ "xAxis": { "type": { "name": "shape", - "description": "{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }" + "description": "{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }" } }, "yAxis": { "type": { "name": "shape", - "description": "{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }" + "description": "{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func }" } } }, diff --git a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx index eac5d772c89d..5944c37faf9f 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx +++ b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx @@ -154,7 +154,6 @@ ChartContainerPro.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -236,7 +235,6 @@ ChartContainerPro.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts-pro/src/Heatmap/Heatmap.tsx b/packages/x-charts-pro/src/Heatmap/Heatmap.tsx index 42f67ece5b60..fec0de27a6a4 100644 --- a/packages/x-charts-pro/src/Heatmap/Heatmap.tsx +++ b/packages/x-charts-pro/src/Heatmap/Heatmap.tsx @@ -345,7 +345,6 @@ Heatmap.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), barGapRatio: PropTypes.number, categoryGapRatio: PropTypes.number, classes: PropTypes.object, @@ -429,7 +428,6 @@ Heatmap.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), barGapRatio: PropTypes.number, categoryGapRatio: PropTypes.number, classes: PropTypes.object, diff --git a/packages/x-charts-pro/src/ResponsiveChartContainerPro/ResponsiveChartContainerPro.tsx b/packages/x-charts-pro/src/ResponsiveChartContainerPro/ResponsiveChartContainerPro.tsx index 13251cc66229..2a3fafbe3124 100644 --- a/packages/x-charts-pro/src/ResponsiveChartContainerPro/ResponsiveChartContainerPro.tsx +++ b/packages/x-charts-pro/src/ResponsiveChartContainerPro/ResponsiveChartContainerPro.tsx @@ -121,7 +121,6 @@ ResponsiveChartContainerPro.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -203,7 +202,6 @@ ResponsiveChartContainerPro.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx index 57e5168a5247..0a6b54bfe058 100644 --- a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx +++ b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx @@ -255,7 +255,6 @@ ScatterChartPro.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -337,7 +336,6 @@ ScatterChartPro.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 7fa7ecba0990..b106c2251715 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -340,7 +340,6 @@ BarChart.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -411,7 +410,6 @@ BarChart.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index c63093455f31..eff1fda343d9 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -174,7 +174,6 @@ ChartContainer.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -245,7 +244,6 @@ ChartContainer.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index ec1645b701b9..d73abe04bf37 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -368,7 +368,6 @@ LineChart.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -439,7 +438,6 @@ LineChart.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 2078d2831036..75e954f5ab06 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -378,7 +378,6 @@ PieChart.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -449,7 +448,6 @@ PieChart.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx index 3797aaf7b864..f5afa5bdf271 100644 --- a/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx +++ b/packages/x-charts/src/ResponsiveChartContainer/ResponsiveChartContainer.tsx @@ -116,7 +116,6 @@ ResponsiveChartContainer.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -187,7 +186,6 @@ ResponsiveChartContainer.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index 5db75e52ab59..ee2cd79132f9 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -330,7 +330,6 @@ ScatterChart.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -401,7 +400,6 @@ ScatterChart.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx b/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx index 0fc5335484f3..01b76065fcd9 100644 --- a/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx +++ b/packages/x-charts/src/SparkLineChart/SparkLineChart.tsx @@ -377,7 +377,6 @@ SparkLineChart.propTypes = { * Notice it is a single [[AxisConfig]] object, not an array of configuration. */ xAxis: PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -439,7 +438,6 @@ SparkLineChart.propTypes = { * Notice it is a single [[AxisConfig]] object, not an array of configuration. */ yAxis: PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/packages/x-charts/src/models/axis.ts b/packages/x-charts/src/models/axis.ts index fb602f83f5d6..53e6175f58f5 100644 --- a/packages/x-charts/src/models/axis.ts +++ b/packages/x-charts/src/models/axis.ts @@ -304,7 +304,7 @@ export type AxisConfig< * If `true`, Reverse the axis scaleBand. */ reverse?: boolean; -} & Partial & +} & Omit, 'axisId'> & Partial> & TickParams & AxisConfigExtension; From af9b360140c55ce53bd6af1683f7fafbdc2989b0 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Mon, 29 Jul 2024 18:12:38 +0300 Subject: [PATCH 685/912] [docs] Add Pickers `minDate` and `maxDate` `default` description (#14024) --- docs/data/date-pickers/validation/validation.md | 8 ++++++++ docs/pages/x/api/date-pickers/date-calendar.json | 4 ++-- docs/pages/x/api/date-pickers/date-field.json | 4 ++-- docs/pages/x/api/date-pickers/date-picker.json | 4 ++-- docs/pages/x/api/date-pickers/date-range-calendar.json | 4 ++-- docs/pages/x/api/date-pickers/date-range-picker.json | 4 ++-- docs/pages/x/api/date-pickers/date-time-field.json | 4 ++-- docs/pages/x/api/date-pickers/date-time-picker.json | 4 ++-- docs/pages/x/api/date-pickers/date-time-range-picker.json | 4 ++-- docs/pages/x/api/date-pickers/desktop-date-picker.json | 4 ++-- .../x/api/date-pickers/desktop-date-range-picker.json | 4 ++-- .../x/api/date-pickers/desktop-date-time-picker.json | 4 ++-- .../api/date-pickers/desktop-date-time-range-picker.json | 4 ++-- docs/pages/x/api/date-pickers/mobile-date-picker.json | 4 ++-- .../x/api/date-pickers/mobile-date-range-picker.json | 4 ++-- .../pages/x/api/date-pickers/mobile-date-time-picker.json | 4 ++-- .../x/api/date-pickers/mobile-date-time-range-picker.json | 4 ++-- docs/pages/x/api/date-pickers/month-calendar.json | 4 ++-- .../x/api/date-pickers/multi-input-date-range-field.json | 4 ++-- .../date-pickers/multi-input-date-time-range-field.json | 4 ++-- .../x/api/date-pickers/single-input-date-range-field.json | 4 ++-- .../date-pickers/single-input-date-time-range-field.json | 4 ++-- docs/pages/x/api/date-pickers/static-date-picker.json | 4 ++-- .../x/api/date-pickers/static-date-range-picker.json | 4 ++-- .../pages/x/api/date-pickers/static-date-time-picker.json | 4 ++-- docs/pages/x/api/date-pickers/year-calendar.json | 4 ++-- .../src/DateRangeCalendar/DateRangeCalendar.tsx | 2 ++ .../src/DateRangePicker/DateRangePicker.tsx | 2 ++ .../src/DateTimeRangePicker/DateTimeRangePicker.tsx | 2 ++ .../src/DesktopDateRangePicker/DesktopDateRangePicker.tsx | 2 ++ .../DesktopDateTimeRangePicker.tsx | 2 ++ .../src/MobileDateRangePicker/MobileDateRangePicker.tsx | 2 ++ .../MobileDateTimeRangePicker.tsx | 2 ++ .../MultiInputDateRangeField/MultiInputDateRangeField.tsx | 2 ++ .../MultiInputDateTimeRangeField.tsx | 2 ++ .../SingleInputDateRangeField.tsx | 2 ++ .../SingleInputDateTimeRangeField.tsx | 2 ++ .../src/StaticDateRangePicker/StaticDateRangePicker.tsx | 2 ++ packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx | 2 ++ packages/x-date-pickers/src/DateField/DateField.tsx | 2 ++ packages/x-date-pickers/src/DatePicker/DatePicker.tsx | 2 ++ .../x-date-pickers/src/DateTimeField/DateTimeField.tsx | 2 ++ .../x-date-pickers/src/DateTimePicker/DateTimePicker.tsx | 2 ++ .../src/DesktopDatePicker/DesktopDatePicker.tsx | 2 ++ .../src/DesktopDateTimePicker/DesktopDateTimePicker.tsx | 2 ++ .../src/LocalizationProvider/LocalizationProvider.tsx | 4 ++-- .../src/MobileDatePicker/MobileDatePicker.tsx | 2 ++ .../src/MobileDateTimePicker/MobileDateTimePicker.tsx | 2 ++ .../x-date-pickers/src/MonthCalendar/MonthCalendar.tsx | 2 ++ .../src/StaticDatePicker/StaticDatePicker.tsx | 2 ++ .../src/StaticDateTimePicker/StaticDateTimePicker.tsx | 2 ++ packages/x-date-pickers/src/YearCalendar/YearCalendar.tsx | 2 ++ .../src/internals/hooks/useField/useField.utils.ts | 4 ++-- .../x-date-pickers/src/internals/models/validation.ts | 2 ++ packages/x-date-pickers/src/internals/utils/date-utils.ts | 2 +- 55 files changed, 115 insertions(+), 55 deletions(-) diff --git a/docs/data/date-pickers/validation/validation.md b/docs/data/date-pickers/validation/validation.md index 1a1d0aee49f1..2f9bb23631e6 100644 --- a/docs/data/date-pickers/validation/validation.md +++ b/docs/data/date-pickers/validation/validation.md @@ -87,6 +87,10 @@ The `minDate` prop prevents the selection of all values before `props.minDate`. {{"demo": "DateValidationMinDate.js", "defaultCodeOpen": false}} +:::info +The default value of `minDate` is `1900-01-01`. +::: + The `maxDate` prop prevents the selection of all values after `props.maxDate`. - On the `day` view—all the days after the `maxDate` won't be selectable. @@ -94,6 +98,10 @@ The `maxDate` prop prevents the selection of all values after `props.maxDate`. {{"demo": "DateValidationMaxDate.js", "defaultCodeOpen": false}} +:::info +The default value of `maxDate` is `2099-12-31`. +::: + ### Disable specific dates The `shouldDisableDate` prop prevents the selection of all dates for which it returns `true`. diff --git a/docs/pages/x/api/date-pickers/date-calendar.json b/docs/pages/x/api/date-pickers/date-calendar.json index 8e87fd1c8c02..6b4dd0199c54 100644 --- a/docs/pages/x/api/date-pickers/date-calendar.json +++ b/docs/pages/x/api/date-pickers/date-calendar.json @@ -25,8 +25,8 @@ } }, "loading": { "type": { "name": "bool" }, "default": "false" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "monthsPerRow": { "type": { "name": "enum", "description": "3
    | 4" }, "default": "3" diff --git a/docs/pages/x/api/date-pickers/date-field.json b/docs/pages/x/api/date-pickers/date-field.json index 92c14caf83d9..6aa1c3a910ad 100644 --- a/docs/pages/x/api/date-pickers/date-field.json +++ b/docs/pages/x/api/date-pickers/date-field.json @@ -36,8 +36,8 @@ }, "default": "'none'" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "name": { "type": { "name": "string" } }, "onChange": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/date-pickers/date-picker.json b/docs/pages/x/api/date-pickers/date-picker.json index 565af5531312..261027e0dffb 100644 --- a/docs/pages/x/api/date-pickers/date-picker.json +++ b/docs/pages/x/api/date-pickers/date-picker.json @@ -35,8 +35,8 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "monthsPerRow": { "type": { "name": "enum", "description": "3
    | 4" }, "default": "3" diff --git a/docs/pages/x/api/date-pickers/date-range-calendar.json b/docs/pages/x/api/date-pickers/date-range-calendar.json index ab3d28ca3241..de5a31671d26 100644 --- a/docs/pages/x/api/date-pickers/date-range-calendar.json +++ b/docs/pages/x/api/date-pickers/date-range-calendar.json @@ -38,8 +38,8 @@ "fixedWeekNumber": { "type": { "name": "number" } }, "focusedView": { "type": { "name": "enum", "description": "'day'" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "onChange": { "type": { "name": "func" }, "signature": { diff --git a/docs/pages/x/api/date-pickers/date-range-picker.json b/docs/pages/x/api/date-pickers/date-range-picker.json index aee31355d359..0d6fa4e9126e 100644 --- a/docs/pages/x/api/date-pickers/date-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-range-picker.json @@ -49,8 +49,8 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "name": { "type": { "name": "string" } }, "onAccept": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/date-pickers/date-time-field.json b/docs/pages/x/api/date-pickers/date-time-field.json index db1735ef6db8..28e462156626 100644 --- a/docs/pages/x/api/date-pickers/date-time-field.json +++ b/docs/pages/x/api/date-pickers/date-time-field.json @@ -38,10 +38,10 @@ }, "default": "'none'" }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/date-time-picker.json b/docs/pages/x/api/date-pickers/date-time-picker.json index a7487d7b5259..3f3ea5eb8b7d 100644 --- a/docs/pages/x/api/date-pickers/date-time-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-picker.json @@ -38,10 +38,10 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/date-time-range-picker.json b/docs/pages/x/api/date-pickers/date-time-range-picker.json index b39cb3202622..58bdbd2ba412 100644 --- a/docs/pages/x/api/date-pickers/date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-range-picker.json @@ -51,10 +51,10 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/desktop-date-picker.json b/docs/pages/x/api/date-pickers/desktop-date-picker.json index 681a292e96b4..42f3fd8ddf20 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-picker.json @@ -31,8 +31,8 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "monthsPerRow": { "type": { "name": "enum", "description": "3
    | 4" }, "default": "3" diff --git a/docs/pages/x/api/date-pickers/desktop-date-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-range-picker.json index 7332df722a1c..46d50fe54632 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-range-picker.json @@ -45,8 +45,8 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "name": { "type": { "name": "string" } }, "onAccept": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json index 0c740b7970ab..79ef2f9f293b 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json @@ -34,10 +34,10 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json index 1ad8d15b25b0..ce32a3e27e22 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json @@ -47,10 +47,10 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/mobile-date-picker.json b/docs/pages/x/api/date-pickers/mobile-date-picker.json index 3503311d4c00..f61852ff2104 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-picker.json @@ -31,8 +31,8 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "monthsPerRow": { "type": { "name": "enum", "description": "3
    | 4" }, "default": "3" diff --git a/docs/pages/x/api/date-pickers/mobile-date-range-picker.json b/docs/pages/x/api/date-pickers/mobile-date-range-picker.json index 99680c68462a..72322d7e8bcb 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-range-picker.json @@ -41,8 +41,8 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "name": { "type": { "name": "string" } }, "onAccept": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-picker.json index 738365a596e7..c81d0e8a2d47 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-picker.json @@ -34,10 +34,10 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json index 619eef330c85..ceb7fd706de5 100644 --- a/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/mobile-date-time-range-picker.json @@ -43,10 +43,10 @@ "label": { "type": { "name": "node" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/month-calendar.json b/docs/pages/x/api/date-pickers/month-calendar.json index cbacc2ea9b59..81afa3e045d4 100644 --- a/docs/pages/x/api/date-pickers/month-calendar.json +++ b/docs/pages/x/api/date-pickers/month-calendar.json @@ -6,8 +6,8 @@ "disableFuture": { "type": { "name": "bool" }, "default": "false" }, "disableHighlightToday": { "type": { "name": "bool" }, "default": "false" }, "disablePast": { "type": { "name": "bool" }, "default": "false" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "monthsPerRow": { "type": { "name": "enum", "description": "3
    | 4" }, "default": "3" diff --git a/docs/pages/x/api/date-pickers/multi-input-date-range-field.json b/docs/pages/x/api/date-pickers/multi-input-date-range-field.json index 0479a019cc93..244b3c3ff67f 100644 --- a/docs/pages/x/api/date-pickers/multi-input-date-range-field.json +++ b/docs/pages/x/api/date-pickers/multi-input-date-range-field.json @@ -20,8 +20,8 @@ "type": { "name": "enum", "description": "'dense'
    | 'spacious'" }, "default": "\"dense\"" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "onChange": { "type": { "name": "func" }, "signature": { diff --git a/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json b/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json index 2c867c57f146..eccae7c10c52 100644 --- a/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json +++ b/docs/pages/x/api/date-pickers/multi-input-date-time-range-field.json @@ -22,10 +22,10 @@ "type": { "name": "enum", "description": "'dense'
    | 'spacious'" }, "default": "\"dense\"" }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/single-input-date-range-field.json b/docs/pages/x/api/date-pickers/single-input-date-range-field.json index b54bb9238ae2..d029a9c08222 100644 --- a/docs/pages/x/api/date-pickers/single-input-date-range-field.json +++ b/docs/pages/x/api/date-pickers/single-input-date-range-field.json @@ -37,8 +37,8 @@ }, "default": "'none'" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "name": { "type": { "name": "string" } }, "onChange": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json b/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json index 14b3d3ad9f0d..dfc1fa601465 100644 --- a/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json +++ b/docs/pages/x/api/date-pickers/single-input-date-time-range-field.json @@ -39,10 +39,10 @@ }, "default": "'none'" }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/static-date-picker.json b/docs/pages/x/api/date-pickers/static-date-picker.json index a4ef9a9c4184..93d2fbdb0c88 100644 --- a/docs/pages/x/api/date-pickers/static-date-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-picker.json @@ -23,8 +23,8 @@ "fixedWeekNumber": { "type": { "name": "number" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "monthsPerRow": { "type": { "name": "enum", "description": "3
    | 4" }, "default": "3" diff --git a/docs/pages/x/api/date-pickers/static-date-range-picker.json b/docs/pages/x/api/date-pickers/static-date-range-picker.json index 2ba7821b8221..91ceaa5d0405 100644 --- a/docs/pages/x/api/date-pickers/static-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-range-picker.json @@ -37,8 +37,8 @@ "fixedWeekNumber": { "type": { "name": "number" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "onAccept": { "type": { "name": "func" }, "signature": { diff --git a/docs/pages/x/api/date-pickers/static-date-time-picker.json b/docs/pages/x/api/date-pickers/static-date-time-picker.json index 3648e1b66269..440519f2a10d 100644 --- a/docs/pages/x/api/date-pickers/static-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/static-date-time-picker.json @@ -26,10 +26,10 @@ "fixedWeekNumber": { "type": { "name": "number" } }, "loading": { "type": { "name": "bool" }, "default": "false" }, "localeText": { "type": { "name": "object" } }, - "maxDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, "maxDateTime": { "type": { "name": "object" } }, "maxTime": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "minDateTime": { "type": { "name": "object" } }, "minTime": { "type": { "name": "object" } }, "minutesStep": { "type": { "name": "number" }, "default": "1" }, diff --git a/docs/pages/x/api/date-pickers/year-calendar.json b/docs/pages/x/api/date-pickers/year-calendar.json index 14f14f863907..ca1c7a0685f6 100644 --- a/docs/pages/x/api/date-pickers/year-calendar.json +++ b/docs/pages/x/api/date-pickers/year-calendar.json @@ -6,8 +6,8 @@ "disableFuture": { "type": { "name": "bool" }, "default": "false" }, "disableHighlightToday": { "type": { "name": "bool" }, "default": "false" }, "disablePast": { "type": { "name": "bool" }, "default": "false" }, - "maxDate": { "type": { "name": "object" } }, - "minDate": { "type": { "name": "object" } }, + "maxDate": { "type": { "name": "object" }, "default": "2099-12-31" }, + "minDate": { "type": { "name": "object" }, "default": "1900-01-01" }, "onChange": { "type": { "name": "func" }, "signature": { "type": "function(value: TDate) => void", "describedArgs": ["value"] } diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx index 4a4974496318..42091d172fe4 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx @@ -694,10 +694,12 @@ DateRangeCalendar.propTypes = { loading: PropTypes.bool, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx index 237b8dc110df..7fa21dbb2ee8 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.tsx @@ -181,10 +181,12 @@ DateRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx index 573a2317e277..4d94546246f8 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePicker.tsx @@ -191,6 +191,7 @@ DateTimeRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -204,6 +205,7 @@ DateTimeRangePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx index f783f0caa865..ffe1495a0c61 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx @@ -216,10 +216,12 @@ DesktopDateRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index d90ff4da876f..1f5222ac1dd9 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -359,6 +359,7 @@ DesktopDateTimeRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -372,6 +373,7 @@ DesktopDateTimeRangePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx index 0621f3a26f77..3341e4ab5eb6 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx @@ -212,10 +212,12 @@ MobileDateRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index 8586aa9e32cf..96105234fa08 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -349,6 +349,7 @@ MobileDateTimeRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -362,6 +363,7 @@ MobileDateTimeRangePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx b/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx index 018b78837697..4ba7a091e61a 100644 --- a/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx +++ b/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx @@ -252,10 +252,12 @@ MultiInputDateRangeField.propTypes = { formatDensity: PropTypes.oneOf(['dense', 'spacious']), /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx b/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx index bdeca2c378b7..99dcaf800e27 100644 --- a/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx +++ b/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx @@ -261,6 +261,7 @@ MultiInputDateTimeRangeField.propTypes = { formatDensity: PropTypes.oneOf(['dense', 'spacious']), /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -274,6 +275,7 @@ MultiInputDateTimeRangeField.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx index 19713bd25d41..a8b4c44765a3 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx @@ -203,10 +203,12 @@ SingleInputDateRangeField.propTypes = { margin: PropTypes.oneOf(['dense', 'none', 'normal']), /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx b/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx index 1c87d69a63a2..26986f70a89b 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx @@ -213,6 +213,7 @@ SingleInputDateTimeRangeField.propTypes = { margin: PropTypes.oneOf(['dense', 'none', 'normal']), /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -226,6 +227,7 @@ SingleInputDateTimeRangeField.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx b/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx index 5a68a35efe9a..74ff932d922d 100644 --- a/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/StaticDateRangePicker/StaticDateRangePicker.tsx @@ -165,10 +165,12 @@ StaticDateRangePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx b/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx index b64273eeeeb4..fa540c59f542 100644 --- a/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx +++ b/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx @@ -472,10 +472,12 @@ DateCalendar.propTypes = { loading: PropTypes.bool, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DateField/DateField.tsx b/packages/x-date-pickers/src/DateField/DateField.tsx index 5e242f80b992..4419c8342ea7 100644 --- a/packages/x-date-pickers/src/DateField/DateField.tsx +++ b/packages/x-date-pickers/src/DateField/DateField.tsx @@ -195,10 +195,12 @@ DateField.propTypes = { margin: PropTypes.oneOf(['dense', 'none', 'normal']), /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DatePicker/DatePicker.tsx b/packages/x-date-pickers/src/DatePicker/DatePicker.tsx index f65788a14bc0..e93c88833ba4 100644 --- a/packages/x-date-pickers/src/DatePicker/DatePicker.tsx +++ b/packages/x-date-pickers/src/DatePicker/DatePicker.tsx @@ -154,10 +154,12 @@ DatePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx b/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx index e0e3bb78b356..ca4213f73168 100644 --- a/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx +++ b/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx @@ -205,6 +205,7 @@ DateTimeField.propTypes = { margin: PropTypes.oneOf(['dense', 'none', 'normal']), /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -218,6 +219,7 @@ DateTimeField.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx index f931e2606cd4..a8126e9c5474 100644 --- a/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx +++ b/packages/x-date-pickers/src/DateTimePicker/DateTimePicker.tsx @@ -169,6 +169,7 @@ DateTimePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -182,6 +183,7 @@ DateTimePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx index ef7bc618e178..666e76637c28 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx @@ -199,10 +199,12 @@ DesktopDatePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx index 42695c7bb8e0..cf9a5d3d1a9d 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx @@ -350,6 +350,7 @@ DesktopDateTimePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -363,6 +364,7 @@ DesktopDateTimePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/LocalizationProvider/LocalizationProvider.tsx b/packages/x-date-pickers/src/LocalizationProvider/LocalizationProvider.tsx index 230d00084b76..9e177e149985 100644 --- a/packages/x-date-pickers/src/LocalizationProvider/LocalizationProvider.tsx +++ b/packages/x-date-pickers/src/LocalizationProvider/LocalizationProvider.tsx @@ -133,8 +133,8 @@ export const LocalizationProvider = function LocalizationProvider< } return { - minDate: utils.date('1900-01-01T00:00:00.000')!, - maxDate: utils.date('2099-12-31T00:00:00.000')!, + minDate: utils.date('1900-01-01T00:00:00.000'), + maxDate: utils.date('2099-12-31T00:00:00.000'), }; }, [utils]); diff --git a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx index 870bee0911cf..128442c94dd3 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx @@ -196,10 +196,12 @@ MobileDatePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx index 8c4aa9ac36e2..5a52c5ed4df4 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx @@ -226,6 +226,7 @@ MobileDateTimePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -239,6 +240,7 @@ MobileDateTimePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/MonthCalendar/MonthCalendar.tsx b/packages/x-date-pickers/src/MonthCalendar/MonthCalendar.tsx index 0668c0f57a60..8dd82e718275 100644 --- a/packages/x-date-pickers/src/MonthCalendar/MonthCalendar.tsx +++ b/packages/x-date-pickers/src/MonthCalendar/MonthCalendar.tsx @@ -343,10 +343,12 @@ MonthCalendar.propTypes = { hasFocus: PropTypes.bool, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx b/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx index 7fcb43423bc9..7482205b4b95 100644 --- a/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx +++ b/packages/x-date-pickers/src/StaticDatePicker/StaticDatePicker.tsx @@ -138,10 +138,12 @@ StaticDatePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx index a8e81bcbd303..01dd868201d1 100644 --- a/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx +++ b/packages/x-date-pickers/src/StaticDateTimePicker/StaticDateTimePicker.tsx @@ -167,6 +167,7 @@ StaticDateTimePicker.propTypes = { localeText: PropTypes.object, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** @@ -180,6 +181,7 @@ StaticDateTimePicker.propTypes = { maxTime: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/YearCalendar/YearCalendar.tsx b/packages/x-date-pickers/src/YearCalendar/YearCalendar.tsx index 08a40cfb1146..5cf5d7ec126e 100644 --- a/packages/x-date-pickers/src/YearCalendar/YearCalendar.tsx +++ b/packages/x-date-pickers/src/YearCalendar/YearCalendar.tsx @@ -362,10 +362,12 @@ YearCalendar.propTypes = { hasFocus: PropTypes.bool, /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate: PropTypes.object, /** * Minimal selectable date. + * @default 1900-01-01 */ minDate: PropTypes.object, /** diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts b/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts index 1d5719f585e8..0827ff4acbcf 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts @@ -833,7 +833,7 @@ export const getSectionValueText = ( switch (section.type) { case 'month': { if (section.contentType === 'digit') { - return utils.format(utils.setMonth(utils.date()!, Number(section.value) - 1), 'month'); + return utils.format(utils.setMonth(utils.date(), Number(section.value) - 1), 'month'); } const parsedDate = utils.parse(section.value, section.format); return parsedDate ? utils.format(parsedDate, 'month') : undefined; @@ -841,7 +841,7 @@ export const getSectionValueText = ( case 'day': return section.contentType === 'digit' ? utils.format( - utils.setDate(utils.startOfYear(utils.date()!), Number(section.value)), + utils.setDate(utils.startOfYear(utils.date()), Number(section.value)), 'dayOfMonthFull', ) : section.value; diff --git a/packages/x-date-pickers/src/internals/models/validation.ts b/packages/x-date-pickers/src/internals/models/validation.ts index 2488416d7848..1d2e7f46d8ec 100644 --- a/packages/x-date-pickers/src/internals/models/validation.ts +++ b/packages/x-date-pickers/src/internals/models/validation.ts @@ -61,10 +61,12 @@ export interface BaseDateValidationProps extends FutureAndPastValidationProps { /** * Maximal selectable date. + * @default 2099-12-31 */ maxDate?: TDate; /** * Minimal selectable date. + * @default 1900-01-01 */ minDate?: TDate; } diff --git a/packages/x-date-pickers/src/internals/utils/date-utils.ts b/packages/x-date-pickers/src/internals/utils/date-utils.ts index 80e086cfc3cf..5f04069743a4 100644 --- a/packages/x-date-pickers/src/internals/utils/date-utils.ts +++ b/packages/x-date-pickers/src/internals/utils/date-utils.ts @@ -149,7 +149,7 @@ export const formatMeridiem = ( utils: MuiPickersAdapter, meridiem: 'am' | 'pm', ) => { - const date = utils.setHours(utils.date()!, meridiem === 'am' ? 2 : 14); + const date = utils.setHours(utils.date(), meridiem === 'am' ? 2 : 14); return utils.format(date, 'meridiem'); }; From 743779f2d2a57afb8661f2b50805460b7f754463 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 29 Jul 2024 17:22:35 +0200 Subject: [PATCH 686/912] [charts] Use vendor to have CJS working out of the box (#13608) Signed-off-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Lukas Tyla --- .circleci/config.yml | 15 +- .codesandbox/ci.json | 2 + .eslintignore | 1 + .github/workflows/vale-action.yml | 5 +- babel.config.js | 1 + codecov.yml | 1 + .../charts/getting-started/getting-started.md | 11 +- docs/next.config.mjs | 2 + docs/package.json | 1 + package.json | 1 - packages/x-charts-pro/package.json | 11 +- packages/x-charts-pro/src/Heatmap/Heatmap.tsx | 2 +- packages/x-charts-vendor/.babelrc.js | 62 + packages/x-charts-vendor/.npmignore | 14 + packages/x-charts-vendor/README.md | 76 + packages/x-charts-vendor/d3-color.d.ts | 5 + packages/x-charts-vendor/d3-color.js | 7 + packages/x-charts-vendor/d3-delaunay.d.ts | 5 + packages/x-charts-vendor/d3-delaunay.js | 7 + packages/x-charts-vendor/d3-interpolate.d.ts | 5 + packages/x-charts-vendor/d3-interpolate.js | 7 + packages/x-charts-vendor/d3-scale.d.ts | 5 + packages/x-charts-vendor/d3-scale.js | 7 + packages/x-charts-vendor/d3-shape.d.ts | 5 + packages/x-charts-vendor/d3-shape.js | 7 + packages/x-charts-vendor/d3-time.d.ts | 5 + packages/x-charts-vendor/d3-time.js | 7 + packages/x-charts-vendor/delaunator.d.ts | 5 + packages/x-charts-vendor/delaunator.js | 7 + packages/x-charts-vendor/es/d3-array.js | 6 + packages/x-charts-vendor/es/d3-color.js | 6 + packages/x-charts-vendor/es/d3-delaunay.js | 6 + packages/x-charts-vendor/es/d3-format.js | 6 + packages/x-charts-vendor/es/d3-interpolate.js | 6 + packages/x-charts-vendor/es/d3-path.js | 6 + packages/x-charts-vendor/es/d3-scale.js | 6 + packages/x-charts-vendor/es/d3-shape.js | 6 + packages/x-charts-vendor/es/d3-time-format.js | 6 + packages/x-charts-vendor/es/d3-time.js | 6 + packages/x-charts-vendor/es/delaunator.js | 6 + packages/x-charts-vendor/es/internmap.js | 6 + .../x-charts-vendor/es/robust-predicates.js | 6 + .../lib-vendor/d3-array/LICENSE | 13 + .../lib-vendor/d3-array/src/array.js | 9 + .../lib-vendor/d3-array/src/ascending.js | 9 + .../lib-vendor/d3-array/src/bin.js | 126 + .../lib-vendor/d3-array/src/bisect.js | 15 + .../lib-vendor/d3-array/src/bisector.js | 59 + .../lib-vendor/d3-array/src/blur.js | 122 + .../lib-vendor/d3-array/src/constant.js | 9 + .../lib-vendor/d3-array/src/count.js | 24 + .../lib-vendor/d3-array/src/cross.js | 35 + .../lib-vendor/d3-array/src/cumsum.js | 11 + .../lib-vendor/d3-array/src/descending.js | 9 + .../lib-vendor/d3-array/src/deviation.js | 12 + .../lib-vendor/d3-array/src/difference.js | 16 + .../lib-vendor/d3-array/src/disjoint.js | 24 + .../lib-vendor/d3-array/src/every.js | 16 + .../lib-vendor/d3-array/src/extent.js | 35 + .../lib-vendor/d3-array/src/filter.js | 17 + .../lib-vendor/d3-array/src/fsum.js | 77 + .../lib-vendor/d3-array/src/greatest.js | 31 + .../lib-vendor/d3-array/src/greatestIndex.js | 23 + .../lib-vendor/d3-array/src/group.js | 67 + .../lib-vendor/d3-array/src/groupSort.js | 15 + .../lib-vendor/d3-array/src/identity.js | 9 + .../lib-vendor/d3-array/src/index.js | 539 +++++ .../lib-vendor/d3-array/src/intersection.js | 23 + .../lib-vendor/d3-array/src/least.js | 31 + .../lib-vendor/d3-array/src/leastIndex.js | 23 + .../lib-vendor/d3-array/src/map.js | 11 + .../lib-vendor/d3-array/src/max.js | 24 + .../lib-vendor/d3-array/src/maxIndex.js | 26 + .../lib-vendor/d3-array/src/mean.js | 25 + .../lib-vendor/d3-array/src/median.js | 16 + .../lib-vendor/d3-array/src/merge.js | 14 + .../lib-vendor/d3-array/src/min.js | 24 + .../lib-vendor/d3-array/src/minIndex.js | 26 + .../lib-vendor/d3-array/src/mode.js | 33 + .../lib-vendor/d3-array/src/nice.js | 23 + .../lib-vendor/d3-array/src/number.js | 26 + .../lib-vendor/d3-array/src/pairs.js | 21 + .../lib-vendor/d3-array/src/permute.js | 9 + .../lib-vendor/d3-array/src/quantile.js | 55 + .../lib-vendor/d3-array/src/quickselect.js | 47 + .../lib-vendor/d3-array/src/range.js | 16 + .../lib-vendor/d3-array/src/rank.js | 30 + .../lib-vendor/d3-array/src/reduce.js | 28 + .../lib-vendor/d3-array/src/reverse.js | 10 + .../lib-vendor/d3-array/src/scan.js | 12 + .../lib-vendor/d3-array/src/shuffle.js | 20 + .../lib-vendor/d3-array/src/some.js | 16 + .../lib-vendor/d3-array/src/sort.js | 45 + .../lib-vendor/d3-array/src/subset.js | 11 + .../lib-vendor/d3-array/src/sum.js | 24 + .../lib-vendor/d3-array/src/superset.js | 28 + .../src/threshold/freedmanDiaconis.js | 14 + .../d3-array/src/threshold/scott.js | 14 + .../d3-array/src/threshold/sturges.js | 11 + .../lib-vendor/d3-array/src/ticks.js | 60 + .../lib-vendor/d3-array/src/transpose.js | 20 + .../lib-vendor/d3-array/src/union.js | 16 + .../lib-vendor/d3-array/src/variance.js | 31 + .../lib-vendor/d3-array/src/zip.js | 11 + .../lib-vendor/d3-color/LICENSE | 13 + .../lib-vendor/d3-color/src/color.js | 366 +++ .../lib-vendor/d3-color/src/cubehelix.js | 61 + .../lib-vendor/d3-color/src/define.js | 16 + .../lib-vendor/d3-color/src/index.js | 59 + .../lib-vendor/d3-color/src/lab.js | 117 + .../lib-vendor/d3-color/src/math.js | 8 + .../lib-vendor/d3-delaunay/LICENSE | 14 + .../lib-vendor/d3-delaunay/src/delaunay.js | 282 +++ .../lib-vendor/d3-delaunay/src/index.js | 20 + .../lib-vendor/d3-delaunay/src/path.js | 43 + .../lib-vendor/d3-delaunay/src/polygon.js | 24 + .../lib-vendor/d3-delaunay/src/voronoi.js | 390 ++++ .../lib-vendor/d3-format/LICENSE | 13 + .../lib-vendor/d3-format/src/defaultLocale.js | 23 + .../lib-vendor/d3-format/src/exponent.js | 10 + .../lib-vendor/d3-format/src/formatDecimal.js | 23 + .../lib-vendor/d3-format/src/formatGroup.js | 22 + .../d3-format/src/formatNumerals.js | 13 + .../d3-format/src/formatPrefixAuto.js | 18 + .../lib-vendor/d3-format/src/formatRounded.js | 14 + .../d3-format/src/formatSpecifier.js | 42 + .../lib-vendor/d3-format/src/formatTrim.js | 25 + .../lib-vendor/d3-format/src/formatTypes.js | 25 + .../lib-vendor/d3-format/src/identity.js | 9 + .../lib-vendor/d3-format/src/index.js | 68 + .../lib-vendor/d3-format/src/locale.js | 152 ++ .../d3-format/src/precisionFixed.js | 11 + .../d3-format/src/precisionPrefix.js | 11 + .../d3-format/src/precisionRound.js | 12 + .../lib-vendor/d3-interpolate/LICENSE | 13 + .../lib-vendor/d3-interpolate/src/array.js | 28 + .../lib-vendor/d3-interpolate/src/basis.js | 23 + .../d3-interpolate/src/basisClosed.js | 18 + .../lib-vendor/d3-interpolate/src/color.js | 33 + .../lib-vendor/d3-interpolate/src/constant.js | 8 + .../d3-interpolate/src/cubehelix.js | 32 + .../lib-vendor/d3-interpolate/src/date.js | 12 + .../lib-vendor/d3-interpolate/src/discrete.js | 12 + .../lib-vendor/d3-interpolate/src/hcl.js | 27 + .../lib-vendor/d3-interpolate/src/hsl.js | 27 + .../lib-vendor/d3-interpolate/src/hue.js | 14 + .../lib-vendor/d3-interpolate/src/index.js | 191 ++ .../lib-vendor/d3-interpolate/src/lab.js | 22 + .../lib-vendor/d3-interpolate/src/number.js | 11 + .../d3-interpolate/src/numberArray.js | 20 + .../lib-vendor/d3-interpolate/src/object.js | 26 + .../d3-interpolate/src/piecewise.js | 20 + .../lib-vendor/d3-interpolate/src/quantize.js | 11 + .../lib-vendor/d3-interpolate/src/rgb.js | 59 + .../lib-vendor/d3-interpolate/src/round.js | 11 + .../lib-vendor/d3-interpolate/src/string.js | 75 + .../d3-interpolate/src/transform/decompose.js | 31 + .../d3-interpolate/src/transform/index.js | 83 + .../d3-interpolate/src/transform/parse.js | 25 + .../lib-vendor/d3-interpolate/src/value.js | 23 + .../lib-vendor/d3-interpolate/src/zoom.js | 66 + .../lib-vendor/d3-path/LICENSE | 13 + .../lib-vendor/d3-path/src/index.js | 24 + .../lib-vendor/d3-path/src/path.js | 158 ++ .../lib-vendor/d3-scale/LICENSE | 13 + .../lib-vendor/d3-scale/src/band.js | 87 + .../lib-vendor/d3-scale/src/colors.js | 11 + .../lib-vendor/d3-scale/src/constant.js | 11 + .../lib-vendor/d3-scale/src/continuous.js | 116 + .../lib-vendor/d3-scale/src/diverging.js | 91 + .../lib-vendor/d3-scale/src/identity.js | 27 + .../lib-vendor/d3-scale/src/index.js | 193 ++ .../lib-vendor/d3-scale/src/init.js | 38 + .../lib-vendor/d3-scale/src/linear.js | 67 + .../lib-vendor/d3-scale/src/log.js | 123 + .../lib-vendor/d3-scale/src/nice.js | 21 + .../lib-vendor/d3-scale/src/number.js | 9 + .../lib-vendor/d3-scale/src/ordinal.js | 44 + .../lib-vendor/d3-scale/src/pow.js | 44 + .../lib-vendor/d3-scale/src/quantile.js | 48 + .../lib-vendor/d3-scale/src/quantize.js | 46 + .../lib-vendor/d3-scale/src/radial.js | 53 + .../lib-vendor/d3-scale/src/sequential.js | 90 + .../d3-scale/src/sequentialQuantile.js | 38 + .../lib-vendor/d3-scale/src/symlog.js | 35 + .../lib-vendor/d3-scale/src/threshold.js | 34 + .../lib-vendor/d3-scale/src/tickFormat.js | 37 + .../lib-vendor/d3-scale/src/time.js | 62 + .../lib-vendor/d3-scale/src/utcTime.js | 13 + .../lib-vendor/d3-shape/LICENSE | 13 + .../lib-vendor/d3-shape/src/arc.js | 250 ++ .../lib-vendor/d3-shape/src/area.js | 98 + .../lib-vendor/d3-shape/src/areaRadial.js | 42 + .../lib-vendor/d3-shape/src/array.js | 12 + .../lib-vendor/d3-shape/src/constant.js | 11 + .../lib-vendor/d3-shape/src/curve/basis.js | 62 + .../d3-shape/src/curve/basisClosed.js | 70 + .../d3-shape/src/curve/basisOpen.js | 54 + .../lib-vendor/d3-shape/src/curve/bump.js | 81 + .../lib-vendor/d3-shape/src/curve/bundle.js | 50 + .../lib-vendor/d3-shape/src/curve/cardinal.js | 69 + .../d3-shape/src/curve/cardinalClosed.js | 76 + .../d3-shape/src/curve/cardinalOpen.js | 60 + .../d3-shape/src/curve/catmullRom.js | 92 + .../d3-shape/src/curve/catmullRomClosed.js | 83 + .../d3-shape/src/curve/catmullRomOpen.js | 67 + .../lib-vendor/d3-shape/src/curve/linear.js | 42 + .../d3-shape/src/curve/linearClosed.js | 28 + .../lib-vendor/d3-shape/src/curve/monotone.js | 121 + .../lib-vendor/d3-shape/src/curve/natural.js | 67 + .../lib-vendor/d3-shape/src/curve/radial.js | 37 + .../lib-vendor/d3-shape/src/curve/step.js | 63 + .../lib-vendor/d3-shape/src/descending.js | 9 + .../lib-vendor/d3-shape/src/identity.js | 9 + .../lib-vendor/d3-shape/src/index.js | 436 ++++ .../lib-vendor/d3-shape/src/line.js | 52 + .../lib-vendor/d3-shape/src/lineRadial.js | 24 + .../lib-vendor/d3-shape/src/link.js | 70 + .../lib-vendor/d3-shape/src/math.js | 26 + .../lib-vendor/d3-shape/src/noop.js | 7 + .../d3-shape/src/offset/diverging.js | 20 + .../lib-vendor/d3-shape/src/offset/expand.js | 16 + .../lib-vendor/d3-shape/src/offset/none.js | 15 + .../d3-shape/src/offset/silhouette.js | 16 + .../lib-vendor/d3-shape/src/offset/wiggle.js | 30 + .../d3-shape/src/order/appearance.js | 23 + .../d3-shape/src/order/ascending.js | 23 + .../d3-shape/src/order/descending.js | 11 + .../d3-shape/src/order/insideOut.js | 31 + .../lib-vendor/d3-shape/src/order/none.js | 12 + .../lib-vendor/d3-shape/src/order/reverse.js | 11 + .../lib-vendor/d3-shape/src/path.js | 22 + .../lib-vendor/d3-shape/src/pie.js | 79 + .../lib-vendor/d3-shape/src/point.js | 13 + .../lib-vendor/d3-shape/src/pointRadial.js | 9 + .../lib-vendor/d3-shape/src/stack.js | 55 + .../lib-vendor/d3-shape/src/symbol.js | 50 + .../d3-shape/src/symbol/asterisk.js | 21 + .../lib-vendor/d3-shape/src/symbol/circle.js | 14 + .../lib-vendor/d3-shape/src/symbol/cross.js | 25 + .../lib-vendor/d3-shape/src/symbol/diamond.js | 20 + .../d3-shape/src/symbol/diamond2.js | 17 + .../lib-vendor/d3-shape/src/symbol/plus.js | 16 + .../lib-vendor/d3-shape/src/symbol/square.js | 14 + .../lib-vendor/d3-shape/src/symbol/square2.js | 17 + .../lib-vendor/d3-shape/src/symbol/star.js | 28 + .../lib-vendor/d3-shape/src/symbol/times.js | 16 + .../d3-shape/src/symbol/triangle.js | 17 + .../d3-shape/src/symbol/triangle2.js | 19 + .../lib-vendor/d3-shape/src/symbol/wye.js | 32 + .../lib-vendor/d3-time-format/LICENSE | 13 + .../d3-time-format/src/defaultLocale.js | 32 + .../lib-vendor/d3-time-format/src/index.js | 60 + .../d3-time-format/src/isoFormat.js | 13 + .../lib-vendor/d3-time-format/src/isoParse.js | 14 + .../lib-vendor/d3-time-format/src/locale.js | 606 +++++ .../lib-vendor/d3-time/LICENSE | 13 + .../lib-vendor/d3-time/src/day.js | 30 + .../lib-vendor/d3-time/src/duration.js | 13 + .../lib-vendor/d3-time/src/hour.js | 28 + .../lib-vendor/d3-time/src/index.js | 417 ++++ .../lib-vendor/d3-time/src/interval.js | 61 + .../lib-vendor/d3-time/src/millisecond.js | 29 + .../lib-vendor/d3-time/src/minute.js | 28 + .../lib-vendor/d3-time/src/month.js | 29 + .../lib-vendor/d3-time/src/second.js | 18 + .../lib-vendor/d3-time/src/ticks.js | 41 + .../lib-vendor/d3-time/src/week.js | 56 + .../lib-vendor/d3-time/src/year.js | 51 + .../lib-vendor/delaunator/LICENSE | 15 + .../lib-vendor/delaunator/delaunator.js | 688 ++++++ .../lib-vendor/delaunator/delaunator.min.js | 316 +++ .../lib-vendor/delaunator/index.js | 440 ++++ .../lib-vendor/internmap/LICENSE | 13 + .../lib-vendor/internmap/src/index.js | 87 + .../lib-vendor/robust-predicates/LICENSE | 24 + .../robust-predicates/esm/incircle.js | 667 ++++++ .../robust-predicates/esm/insphere.js | 693 ++++++ .../robust-predicates/esm/orient2d.js | 174 ++ .../robust-predicates/esm/orient3d.js | 422 ++++ .../lib-vendor/robust-predicates/esm/util.js | 147 ++ .../lib-vendor/robust-predicates/index.js | 57 + .../robust-predicates/umd/incircle.js | 798 +++++++ .../robust-predicates/umd/incircle.min.js | 170 ++ .../robust-predicates/umd/insphere.js | 828 +++++++ .../robust-predicates/umd/insphere.min.js | 223 ++ .../robust-predicates/umd/orient2d.js | 260 +++ .../robust-predicates/umd/orient2d.min.js | 69 + .../robust-predicates/umd/orient3d.js | 550 +++++ .../robust-predicates/umd/orient3d.min.js | 133 ++ .../robust-predicates/umd/predicates.js | 2073 +++++++++++++++++ .../robust-predicates/umd/predicates.min.js | 468 ++++ packages/x-charts-vendor/lib/d3-array.js | 6 + packages/x-charts-vendor/lib/d3-color.js | 6 + packages/x-charts-vendor/lib/d3-delaunay.js | 6 + packages/x-charts-vendor/lib/d3-format.js | 6 + .../x-charts-vendor/lib/d3-interpolate.js | 6 + packages/x-charts-vendor/lib/d3-path.js | 6 + packages/x-charts-vendor/lib/d3-scale.js | 6 + packages/x-charts-vendor/lib/d3-shape.js | 6 + .../x-charts-vendor/lib/d3-time-format.js | 6 + packages/x-charts-vendor/lib/d3-time.js | 6 + packages/x-charts-vendor/lib/delaunator.js | 6 + packages/x-charts-vendor/lib/internmap.js | 6 + .../x-charts-vendor/lib/robust-predicates.js | 6 + packages/x-charts-vendor/package.json | 63 + .../x-charts-vendor/robust-predicates.d.ts | 5 + packages/x-charts-vendor/robust-predicates.js | 7 + packages/x-charts-vendor/scripts/build.js | 148 ++ .../tests/d3-interpolate.test.ts | 19 + .../x-charts-vendor/tests/d3-scale.test.ts | 65 + packages/x-charts-vendor/tsconfig.json | 7 + packages/x-charts/.mocharc.js | 34 - packages/x-charts/package.json | 25 +- packages/x-charts/src/BarChart/BarElement.tsx | 2 +- packages/x-charts/src/BarChart/formatter.ts | 2 +- .../ChartsLegend/ContinuousColorLegend.tsx | 2 +- .../ChartsVoronoiHandler.tsx | 2 +- .../x-charts/src/Gauge/GaugeReferenceArc.tsx | 2 +- packages/x-charts/src/Gauge/GaugeValueArc.tsx | 2 +- .../x-charts/src/LineChart/AnimatedArea.tsx | 2 +- .../x-charts/src/LineChart/AnimatedLine.tsx | 2 +- packages/x-charts/src/LineChart/AreaPlot.tsx | 2 +- packages/x-charts/src/LineChart/LinePlot.tsx | 2 +- .../x-charts/src/LineChart/MarkElement.tsx | 2 +- packages/x-charts/src/LineChart/formatter.ts | 2 +- packages/x-charts/src/PieChart/PieArc.tsx | 2 +- .../x-charts/src/PieChart/PieArcLabel.tsx | 2 +- packages/x-charts/src/PieChart/formatter.ts | 2 +- .../context/CartesianProvider/computeValue.ts | 2 +- packages/x-charts/src/internals/colorScale.ts | 7 +- .../ChartsContinuousGradient.tsx | 2 +- packages/x-charts/src/internals/getCurve.ts | 2 +- packages/x-charts/src/internals/getScale.ts | 9 +- .../x-charts/src/internals/isBandScale.ts | 2 +- .../x-charts/src/internals/stackSeries.ts | 2 +- .../x-charts/src/internals/useAnimatedPath.ts | 2 +- packages/x-charts/src/models/axis.ts | 2 +- .../x-charts/src/models/seriesType/pie.ts | 2 +- packages/x-charts/src/models/z-axis.ts | 2 +- pnpm-lock.yaml | 164 +- test/package.json | 3 + tsconfig.json | 2 + webpackBaseConfig.js | 1 + 344 files changed, 21199 insertions(+), 160 deletions(-) create mode 100644 packages/x-charts-vendor/.babelrc.js create mode 100644 packages/x-charts-vendor/.npmignore create mode 100644 packages/x-charts-vendor/README.md create mode 100644 packages/x-charts-vendor/d3-color.d.ts create mode 100644 packages/x-charts-vendor/d3-color.js create mode 100644 packages/x-charts-vendor/d3-delaunay.d.ts create mode 100644 packages/x-charts-vendor/d3-delaunay.js create mode 100644 packages/x-charts-vendor/d3-interpolate.d.ts create mode 100644 packages/x-charts-vendor/d3-interpolate.js create mode 100644 packages/x-charts-vendor/d3-scale.d.ts create mode 100644 packages/x-charts-vendor/d3-scale.js create mode 100644 packages/x-charts-vendor/d3-shape.d.ts create mode 100644 packages/x-charts-vendor/d3-shape.js create mode 100644 packages/x-charts-vendor/d3-time.d.ts create mode 100644 packages/x-charts-vendor/d3-time.js create mode 100644 packages/x-charts-vendor/delaunator.d.ts create mode 100644 packages/x-charts-vendor/delaunator.js create mode 100644 packages/x-charts-vendor/es/d3-array.js create mode 100644 packages/x-charts-vendor/es/d3-color.js create mode 100644 packages/x-charts-vendor/es/d3-delaunay.js create mode 100644 packages/x-charts-vendor/es/d3-format.js create mode 100644 packages/x-charts-vendor/es/d3-interpolate.js create mode 100644 packages/x-charts-vendor/es/d3-path.js create mode 100644 packages/x-charts-vendor/es/d3-scale.js create mode 100644 packages/x-charts-vendor/es/d3-shape.js create mode 100644 packages/x-charts-vendor/es/d3-time-format.js create mode 100644 packages/x-charts-vendor/es/d3-time.js create mode 100644 packages/x-charts-vendor/es/delaunator.js create mode 100644 packages/x-charts-vendor/es/internmap.js create mode 100644 packages/x-charts-vendor/es/robust-predicates.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/array.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/ascending.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/bin.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/bisect.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/bisector.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/blur.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/constant.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/count.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/cross.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/cumsum.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/descending.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/deviation.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/difference.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/every.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/extent.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/filter.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/fsum.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/greatest.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/greatestIndex.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/group.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/groupSort.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/identity.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/intersection.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/least.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/leastIndex.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/map.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/max.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/maxIndex.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/mean.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/median.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/merge.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/min.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/minIndex.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/mode.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/nice.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/number.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/pairs.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/permute.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/quantile.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/quickselect.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/range.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/rank.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/reverse.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/scan.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/shuffle.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/some.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/sort.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/subset.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/sum.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/freedmanDiaconis.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/scott.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/sturges.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/ticks.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/transpose.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/union.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/variance.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-array/src/zip.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/src/color.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/src/cubehelix.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/src/define.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/src/lab.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-color/src/math.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-delaunay/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-delaunay/src/delaunay.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-delaunay/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-delaunay/src/path.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-delaunay/src/polygon.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-delaunay/src/voronoi.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/defaultLocale.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/exponent.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatDecimal.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatGroup.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatNumerals.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatPrefixAuto.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatRounded.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatSpecifier.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatTrim.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/formatTypes.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/identity.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/locale.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/precisionFixed.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/precisionPrefix.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-format/src/precisionRound.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/array.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basis.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basisClosed.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/color.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/constant.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/cubehelix.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/date.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/discrete.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hcl.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hsl.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hue.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/lab.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/number.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/numberArray.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/object.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/piecewise.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/quantize.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/rgb.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/round.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/string.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/decompose.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/parse.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/value.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-interpolate/src/zoom.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-path/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-path/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-path/src/path.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/band.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/colors.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/constant.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/continuous.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/diverging.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/identity.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/init.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/linear.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/log.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/nice.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/number.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/ordinal.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/pow.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/quantile.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/quantize.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/radial.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/sequential.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/sequentialQuantile.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/symlog.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/threshold.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/tickFormat.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/time.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-scale/src/utcTime.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/arc.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/area.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/areaRadial.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/array.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/constant.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basis.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisClosed.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisOpen.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bump.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bundle.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinal.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalClosed.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalOpen.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRom.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomClosed.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomOpen.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linear.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linearClosed.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/monotone.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/natural.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/radial.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/step.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/descending.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/identity.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/line.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/lineRadial.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/link.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/math.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/noop.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/diverging.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/expand.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/none.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/silhouette.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/wiggle.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/order/appearance.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/order/ascending.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/order/descending.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/order/insideOut.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/order/none.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/order/reverse.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/path.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/pie.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/point.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/pointRadial.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/stack.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/asterisk.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/circle.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/cross.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond2.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/plus.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square2.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/star.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/times.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle2.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/wye.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time-format/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time-format/src/defaultLocale.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time-format/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoFormat.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoParse.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time-format/src/locale.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/day.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/duration.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/hour.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/interval.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/millisecond.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/minute.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/month.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/second.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/ticks.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/week.js create mode 100644 packages/x-charts-vendor/lib-vendor/d3-time/src/year.js create mode 100644 packages/x-charts-vendor/lib-vendor/delaunator/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/delaunator/delaunator.js create mode 100644 packages/x-charts-vendor/lib-vendor/delaunator/delaunator.min.js create mode 100644 packages/x-charts-vendor/lib-vendor/delaunator/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/internmap/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/internmap/src/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/LICENSE create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/esm/incircle.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/esm/insphere.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient2d.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient3d.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/esm/util.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/index.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.min.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.min.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.min.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.min.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.js create mode 100644 packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.min.js create mode 100644 packages/x-charts-vendor/lib/d3-array.js create mode 100644 packages/x-charts-vendor/lib/d3-color.js create mode 100644 packages/x-charts-vendor/lib/d3-delaunay.js create mode 100644 packages/x-charts-vendor/lib/d3-format.js create mode 100644 packages/x-charts-vendor/lib/d3-interpolate.js create mode 100644 packages/x-charts-vendor/lib/d3-path.js create mode 100644 packages/x-charts-vendor/lib/d3-scale.js create mode 100644 packages/x-charts-vendor/lib/d3-shape.js create mode 100644 packages/x-charts-vendor/lib/d3-time-format.js create mode 100644 packages/x-charts-vendor/lib/d3-time.js create mode 100644 packages/x-charts-vendor/lib/delaunator.js create mode 100644 packages/x-charts-vendor/lib/internmap.js create mode 100644 packages/x-charts-vendor/lib/robust-predicates.js create mode 100644 packages/x-charts-vendor/package.json create mode 100644 packages/x-charts-vendor/robust-predicates.d.ts create mode 100644 packages/x-charts-vendor/robust-predicates.js create mode 100644 packages/x-charts-vendor/scripts/build.js create mode 100644 packages/x-charts-vendor/tests/d3-interpolate.test.ts create mode 100644 packages/x-charts-vendor/tests/d3-scale.test.ts create mode 100644 packages/x-charts-vendor/tsconfig.json delete mode 100644 packages/x-charts/.mocharc.js diff --git a/.circleci/config.yml b/.circleci/config.yml index 4ca30e558c1d..532a93a8a44f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -137,9 +137,6 @@ jobs: steps: - checkout - install_js - - run: - name: Tests charts - command: pnpm test:charts:unit # Run special test for charts due to ESM compatibility issue - run: name: Tests fake browser command: pnpm test:coverage @@ -212,6 +209,18 @@ jobs: command: | pnpm docs:link-check git add -A && git diff --exit-code --staged + - run: + name: '`pnpm @mui/x-charts-vendor build` was run?' + command: | + # #default-branch-switch + if [[ $(git diff --name-status master | grep pnpm-lock) == "" ]]; + then + echo "No changes to dependencies detected. Skipping..." + else + pnpm --filter @mui/x-charts-vendor build + git add -A && git diff --exit-code --staged + fi + test_browser: <<: *default-job docker: diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json index 2bcfb7926690..f709cfa8489c 100644 --- a/.codesandbox/ci.json +++ b/.codesandbox/ci.json @@ -11,6 +11,7 @@ "packages/x-date-pickers", "packages/x-date-pickers-pro", "packages/x-charts", + "packages/x-charts-vendor", "packages/x-tree-view", "packages/x-internals" ], @@ -23,6 +24,7 @@ "@mui/x-date-pickers": "packages/x-date-pickers/build", "@mui/x-date-pickers-pro": "packages/x-date-pickers-pro/build", "@mui/x-charts": "packages/x-charts/build", + "@mui/x-charts-vendor": "packages/x-charts-vendor", "@mui/x-charts-pro": "packages/x-charts-pro/build", "@mui/x-tree-view": "packages/x-tree-view/build", "@mui/x-tree-view-pro": "packages/x-tree-view-pro/build", diff --git a/.eslintignore b/.eslintignore index 45e0b0a316e0..cfe3e6dc2580 100644 --- a/.eslintignore +++ b/.eslintignore @@ -6,6 +6,7 @@ netlify/functions /docs/pages/playground/ /lerna.json /packages/x-codemod/src/**/*.spec.js +/packages/x-charts-vendor build /coverage CHANGELOG.md diff --git a/.github/workflows/vale-action.yml b/.github/workflows/vale-action.yml index 53ce0e90216f..e323ba33dc72 100644 --- a/.github/workflows/vale-action.yml +++ b/.github/workflows/vale-action.yml @@ -1,6 +1,9 @@ name: Vale action -on: [pull_request] +on: + pull_request: + paths: + - 'docs/data/**.md' permissions: {} diff --git a/babel.config.js b/babel.config.js index 9e2bc852d0ed..4d49a519eca6 100644 --- a/babel.config.js +++ b/babel.config.js @@ -16,6 +16,7 @@ const defaultAlias = { '@mui/x-date-pickers-pro': resolveAliasPath('./packages/x-date-pickers-pro/src'), '@mui/x-charts': resolveAliasPath('./packages/x-charts/src'), '@mui/x-charts-pro': resolveAliasPath('./packages/x-charts-pro/src'), + '@mui/x-charts-vendor': resolveAliasPath('./packages/x-charts-vendor'), '@mui/x-tree-view': resolveAliasPath('./packages/x-tree-view/src'), '@mui/x-tree-view-pro': resolveAliasPath('./packages/x-tree-view-pro/src'), '@mui/x-internals': resolveAliasPath('./packages/x-internals/src'), diff --git a/codecov.yml b/codecov.yml index 1a350cc7a0e5..4a05503c5b9e 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,5 +1,6 @@ coverage: ignore: + - 'packages/x-charts-vendor' - '**/*.test.tsx' status: project: diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index 417c1fc8a2a8..3404ac1465d7 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -80,16 +80,11 @@ yarn add @mui/styled-engine-sc styled-components Take a look at the [Styled engine guide](/material-ui/integrations/styled-components/) for more information about how to configure `styled-components` as the style engine. -### Usage with Next.js +### Usage with D3 -If you're using MUI X Charts with Next.js, you might face the following error: +To help folks using CommonJS, the `@mui/x-charts` package uses a vendored package named `@mui/x-charts-vendor` to access D3 libraries. -```bash -[ESM][charts] Doesn't build due to require() of ES Module (ERR_REQUIRE_ESM) -``` - -To solve it, transpile the package by adding `transpilePackages: ['@mui/x-charts']` to your `next.config.js` file. -Visit [this GitHub issue and comment](https://github.com/mui/mui-x/issues/9826#issuecomment-1658333978) for details. +If you need some D3 functions, you can import them with `@mui/x-charts-vendor/d3-color`. ## Displaying Charts diff --git a/docs/next.config.mjs b/docs/next.config.mjs index de1ede2b32f4..53ca7e886098 100644 --- a/docs/next.config.mjs +++ b/docs/next.config.mjs @@ -36,6 +36,8 @@ const WORKSPACE_ALIASES = { '@mui/x-date-pickers': path.resolve(WORKSPACE_ROOT, './packages/x-date-pickers/src'), '@mui/x-date-pickers-pro': path.resolve(WORKSPACE_ROOT, './packages/x-date-pickers-pro/src'), '@mui/x-charts': path.resolve(WORKSPACE_ROOT, './packages/x-charts/src'), + '@mui/x-charts-pro': path.resolve(WORKSPACE_ROOT, './packages/x-charts-pro/src'), + '@mui/x-charts-vendor': path.resolve(WORKSPACE_ROOT, './packages/x-charts-vendor'), '@mui/x-tree-view': path.resolve(WORKSPACE_ROOT, './packages/x-tree-view/src'), '@mui/x-tree-view-pro': path.resolve(WORKSPACE_ROOT, './packages/x-tree-view-pro/src'), '@mui/x-license': path.resolve(WORKSPACE_ROOT, './packages/x-license/src'), diff --git a/docs/package.json b/docs/package.json index 589adb8942d6..24bee9f72af5 100644 --- a/docs/package.json +++ b/docs/package.json @@ -38,6 +38,7 @@ "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-charts": "workspace:*", + "@mui/x-charts-vendor": "workspace:*", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-generator": "workspace:*", "@mui/x-data-grid-premium": "workspace:*", diff --git a/package.json b/package.json index 29798ea51263..f434c17a2215 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "test:karma": "cross-env NODE_ENV=test TZ=UTC karma start test/karma.conf.js", "test:karma:parallel": "cross-env NODE_ENV=test TZ=UTC PARALLEL=true karma start test/karma.conf.js", "test:unit": "cross-env NODE_ENV=test TZ=UTC mocha -n expose_gc", - "test:charts:unit": "cross-env NODE_ENV=test TZ=UTC mocha -n expose_gc --config packages/x-charts/.mocharc.js", "test:e2e": "cross-env NODE_ENV=production pnpm test:e2e:build && concurrently --success first --kill-others \"pnpm test:e2e:run\" \"pnpm test:e2e:server\"", "test:e2e:build": "webpack --config test/e2e/webpack.config.js", "test:e2e:dev": "concurrently \"pnpm test:e2e:build --watch\" \"pnpm test:e2e:server\"", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 47c0c7ed59f2..fece5fb5bbe3 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -46,14 +46,10 @@ "@mui/utils": "^5.16.5", "@mui/x-charts": "workspace:*", "@mui/x-license": "workspace:*", + "@mui/x-charts-vendor": "workspace:*", "@react-spring/rafz": "^9.7.3", "@react-spring/web": "^9.7.3", "clsx": "^2.1.1", - "d3-color": "^3.1.0", - "d3-delaunay": "^6.0.4", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -74,11 +70,6 @@ "devDependencies": { "@react-spring/core": "^9.7.3", "@react-spring/shared": "^9.7.3", - "@types/d3-color": "^3.1.3", - "@types/d3-delaunay": "^6.0.4", - "@types/d3-interpolate": "^3.0.4", - "@types/d3-scale": "^4.0.8", - "@types/d3-shape": "^3.1.6", "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", "rimraf": "^5.0.9" diff --git a/packages/x-charts-pro/src/Heatmap/Heatmap.tsx b/packages/x-charts-pro/src/Heatmap/Heatmap.tsx index fec0de27a6a4..5c72d19e8ea6 100644 --- a/packages/x-charts-pro/src/Heatmap/Heatmap.tsx +++ b/packages/x-charts-pro/src/Heatmap/Heatmap.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { interpolateRgbBasis } from 'd3-interpolate'; +import { interpolateRgbBasis } from '@mui/x-charts-vendor/d3-interpolate'; import useId from '@mui/utils/useId'; import { ChartsAxis, ChartsAxisProps } from '@mui/x-charts/ChartsAxis'; import { diff --git a/packages/x-charts-vendor/.babelrc.js b/packages/x-charts-vendor/.babelrc.js new file mode 100644 index 000000000000..21146f4cbc44 --- /dev/null +++ b/packages/x-charts-vendor/.babelrc.js @@ -0,0 +1,62 @@ +/** + * Transform d3 ESM libraries to vendored CommonJS libraries + * + * This produces `lib-vendor/d3-/src` files that have + * internally consistent references to other d3 packages. It is only meant + * to be used for the CommonJS import path. + */ +const path = require('path'); + +module.exports = { + only: [/node_modules\/(d3-.*|internmap|delaunator|robust-predicates)\/.*\.js/], + plugins: [ + [ + '@babel/transform-modules-commonjs', + { + strict: false, + allowTopLevelThis: true, + }, + ], + [ + 'module-resolver', + { + // Convert all imports for _other_ d3 dependencies to the relative + // path in our vendor package. + resolvePath(sourcePath, currentFile) { + const d3pattern = + /^(?(d3-[^\/]+|internmap|delaunator|robust-predicates))(?.*)/; + const match = d3pattern.exec(sourcePath); + if (match) { + // We're assuming a common shape of d3 packages: + // - Only top level imports "d3-" + // - With no path components (like "d3-/path/to.js") + if (match.groups.path) { + throw new Error(`Unable to process ${sourcePath} import in ${currentFile}`); + } + + // Get Vendor package path. + const vendorPkg = ['delaunator', 'robust-predicates'].includes(match.groups.pkg) + ? path.resolve(__dirname, `./lib-vendor/${match.groups.pkg}/index.js`) + : path.resolve(__dirname, `./lib-vendor/${match.groups.pkg}/src/index.js`); + + // Derive relative path to vendor lib to have a file like move from: + // - 'node_modules/d3-interpolate/src/rgb.js' + // - 'lib-vendor/d3-interpolate/src/rgb.js' + // and have an import transform like: + // - `d3-color` + // - `../../d3-color` + const currentFileVendor = currentFile.replace(/^node_modules/, 'lib-vendor'); + const relPathToPkg = path + .relative(path.dirname(currentFileVendor), vendorPkg) + .replace(/\\/g, '/'); + + return relPathToPkg; + } + + return sourcePath; + }, + }, + ], + '@babel/plugin-transform-runtime', + ], +}; diff --git a/packages/x-charts-vendor/.npmignore b/packages/x-charts-vendor/.npmignore new file mode 100644 index 000000000000..86e1a1cbaa58 --- /dev/null +++ b/packages/x-charts-vendor/.npmignore @@ -0,0 +1,14 @@ +/* +!/dist +!/es +!/lib +!/lib-vendor +!/src +!/d3-* +!/internmap.js +!LICENSE.txt +!CHANGELOG.md +!README.md +!package.json +*.map +**/*.test.* \ No newline at end of file diff --git a/packages/x-charts-vendor/README.md b/packages/x-charts-vendor/README.md new file mode 100644 index 000000000000..4084fe508626 --- /dev/null +++ b/packages/x-charts-vendor/README.md @@ -0,0 +1,76 @@ +# Charts Vendor + +Vendored dependencies for @mui/x-charts. + +An adaptation of the victory-vendor + +## Background + +D3 has released most of its libraries as ESM-only. This means that consumers in Node.js applications can no longer just `require()` anything with a d3 transitive dependency, including much of @mui/x-charts. + +To help provide an easy path to folks still using CommonJS in their Node.js applications that consume @mui/x-charts, we now provide this package to vendor in various d3-related packages. + +## Main difference with victory-vendor + +Victory is using the `d3-voronoid` which is an archived project. +Our chart library relies on the `d3-delaunay` which is also ESM only and reuse `robust-predicates` which is also ESM only + +## Packages + +We presently provide the following top-level libraries: + +- d3-color +- d3-delaunay +- d3-interpolate +- d3-scale +- d3-shape +- d3-time +- delaunator +- robust-predicate + +This is the total list of top and transitive libraries we vendor: + +- d3-array +- d3-color +- d3-delaunay +- d3-format +- d3-interpolate +- d3-path +- d3-scale +- d3-shape +- d3-time +- d3-time-format +- delaunator +- internmap +- robust-predicates + +## How it works + +We provide two alternate paths and behaviors -- for ESM and CommonJS + +### ESM + +If you do a Node.js import like: + +```js +import { interpolate } from '@mui/x-charts-vendor/d3-interpolate'; +``` + +under the hood it's going to just re-export and pass you through to `node_modules/d3-interpolate`, the **real** ESM library from D3. + +### CommonJS + +If you do a Node.js import like: + +```js +const { interpolate } = require('@mui/x-charts-vendor/d3-interpolate'); +``` + +under the hood, it will go to an alternate path that contains the transpiled version of the underlying d3 library found at `x-charts-vendor/lib-vendor/d3-interpolate/**/*.js`. +This further has internally consistent import references to other `x-charts-vendor/lib-vendor/` paths. + +Note that for some tooling (like Jest) that doesn't play well with `package.json:exports` routing to this CommonJS path, we **also** output a root file in the form of `x-charts-vendor/d3-interpolate.js`. + +## Licenses + +This project is released under the MIT license, but the vendored in libraries include other licenses (e.g. ISC) that we enumerate in our `package.json:license` field. diff --git a/packages/x-charts-vendor/d3-color.d.ts b/packages/x-charts-vendor/d3-color.d.ts new file mode 100644 index 000000000000..292a6c9c27f4 --- /dev/null +++ b/packages/x-charts-vendor/d3-color.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/d3-color` (TypeScript) +// +// Export the type definitions for this package: +export * from "d3-color"; diff --git a/packages/x-charts-vendor/d3-color.js b/packages/x-charts-vendor/d3-color.js new file mode 100644 index 000000000000..5efda0590bda --- /dev/null +++ b/packages/x-charts-vendor/d3-color.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/d3-color` (CommonJS) +// See upstream license: https://github.com/d3/d3-color/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/d3-color"); diff --git a/packages/x-charts-vendor/d3-delaunay.d.ts b/packages/x-charts-vendor/d3-delaunay.d.ts new file mode 100644 index 000000000000..802419f8f372 --- /dev/null +++ b/packages/x-charts-vendor/d3-delaunay.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/d3-delaunay` (TypeScript) +// +// Export the type definitions for this package: +export * from "d3-delaunay"; diff --git a/packages/x-charts-vendor/d3-delaunay.js b/packages/x-charts-vendor/d3-delaunay.js new file mode 100644 index 000000000000..6d6883cfce88 --- /dev/null +++ b/packages/x-charts-vendor/d3-delaunay.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/d3-delaunay` (CommonJS) +// See upstream license: https://github.com/d3/d3-delaunay/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/d3-delaunay"); diff --git a/packages/x-charts-vendor/d3-interpolate.d.ts b/packages/x-charts-vendor/d3-interpolate.d.ts new file mode 100644 index 000000000000..5b2fff9c555d --- /dev/null +++ b/packages/x-charts-vendor/d3-interpolate.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/d3-interpolate` (TypeScript) +// +// Export the type definitions for this package: +export * from "d3-interpolate"; diff --git a/packages/x-charts-vendor/d3-interpolate.js b/packages/x-charts-vendor/d3-interpolate.js new file mode 100644 index 000000000000..654f2ce9e885 --- /dev/null +++ b/packages/x-charts-vendor/d3-interpolate.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/d3-interpolate` (CommonJS) +// See upstream license: https://github.com/d3/d3-interpolate/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/d3-interpolate"); diff --git a/packages/x-charts-vendor/d3-scale.d.ts b/packages/x-charts-vendor/d3-scale.d.ts new file mode 100644 index 000000000000..f4b971dc2ec7 --- /dev/null +++ b/packages/x-charts-vendor/d3-scale.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/d3-scale` (TypeScript) +// +// Export the type definitions for this package: +export * from "d3-scale"; diff --git a/packages/x-charts-vendor/d3-scale.js b/packages/x-charts-vendor/d3-scale.js new file mode 100644 index 000000000000..dcb70ec3a215 --- /dev/null +++ b/packages/x-charts-vendor/d3-scale.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/d3-scale` (CommonJS) +// See upstream license: https://github.com/d3/d3-scale/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/d3-scale"); diff --git a/packages/x-charts-vendor/d3-shape.d.ts b/packages/x-charts-vendor/d3-shape.d.ts new file mode 100644 index 000000000000..fb79528677fa --- /dev/null +++ b/packages/x-charts-vendor/d3-shape.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/d3-shape` (TypeScript) +// +// Export the type definitions for this package: +export * from "d3-shape"; diff --git a/packages/x-charts-vendor/d3-shape.js b/packages/x-charts-vendor/d3-shape.js new file mode 100644 index 000000000000..8d86b7713a92 --- /dev/null +++ b/packages/x-charts-vendor/d3-shape.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/d3-shape` (CommonJS) +// See upstream license: https://github.com/d3/d3-shape/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/d3-shape"); diff --git a/packages/x-charts-vendor/d3-time.d.ts b/packages/x-charts-vendor/d3-time.d.ts new file mode 100644 index 000000000000..cbdf8bb2eef7 --- /dev/null +++ b/packages/x-charts-vendor/d3-time.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/d3-time` (TypeScript) +// +// Export the type definitions for this package: +export * from "d3-time"; diff --git a/packages/x-charts-vendor/d3-time.js b/packages/x-charts-vendor/d3-time.js new file mode 100644 index 000000000000..0a99b4885af0 --- /dev/null +++ b/packages/x-charts-vendor/d3-time.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/d3-time` (CommonJS) +// See upstream license: https://github.com/d3/d3-time/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/d3-time"); diff --git a/packages/x-charts-vendor/delaunator.d.ts b/packages/x-charts-vendor/delaunator.d.ts new file mode 100644 index 000000000000..7b745e0841f0 --- /dev/null +++ b/packages/x-charts-vendor/delaunator.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/delaunator` (TypeScript) +// +// Export the type definitions for this package: +export * from "delaunator"; diff --git a/packages/x-charts-vendor/delaunator.js b/packages/x-charts-vendor/delaunator.js new file mode 100644 index 000000000000..6bd5b9889661 --- /dev/null +++ b/packages/x-charts-vendor/delaunator.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/delaunator` (CommonJS) +// See upstream license: https://github.com/mapbox/delaunator/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/delaunator"); diff --git a/packages/x-charts-vendor/es/d3-array.js b/packages/x-charts-vendor/es/d3-array.js new file mode 100644 index 000000000000..d2ea11f4c569 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-array.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-array` (ESM) +// See upstream license: https://github.com/d3/d3-array/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-array` +export * from "d3-array"; diff --git a/packages/x-charts-vendor/es/d3-color.js b/packages/x-charts-vendor/es/d3-color.js new file mode 100644 index 000000000000..738ea776efa1 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-color.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-color` (ESM) +// See upstream license: https://github.com/d3/d3-color/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-color` +export * from "d3-color"; diff --git a/packages/x-charts-vendor/es/d3-delaunay.js b/packages/x-charts-vendor/es/d3-delaunay.js new file mode 100644 index 000000000000..c923313d628d --- /dev/null +++ b/packages/x-charts-vendor/es/d3-delaunay.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-delaunay` (ESM) +// See upstream license: https://github.com/d3/d3-delaunay/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-delaunay` +export * from "d3-delaunay"; diff --git a/packages/x-charts-vendor/es/d3-format.js b/packages/x-charts-vendor/es/d3-format.js new file mode 100644 index 000000000000..ae4d63d49f38 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-format.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-format` (ESM) +// See upstream license: https://github.com/d3/d3-format/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-format` +export * from "d3-format"; diff --git a/packages/x-charts-vendor/es/d3-interpolate.js b/packages/x-charts-vendor/es/d3-interpolate.js new file mode 100644 index 000000000000..943fcf72aab0 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-interpolate.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-interpolate` (ESM) +// See upstream license: https://github.com/d3/d3-interpolate/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-interpolate` +export * from "d3-interpolate"; diff --git a/packages/x-charts-vendor/es/d3-path.js b/packages/x-charts-vendor/es/d3-path.js new file mode 100644 index 000000000000..08415047f013 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-path.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-path` (ESM) +// See upstream license: https://github.com/d3/d3-path/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-path` +export * from "d3-path"; diff --git a/packages/x-charts-vendor/es/d3-scale.js b/packages/x-charts-vendor/es/d3-scale.js new file mode 100644 index 000000000000..ff3458b65c14 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-scale.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-scale` (ESM) +// See upstream license: https://github.com/d3/d3-scale/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-scale` +export * from "d3-scale"; diff --git a/packages/x-charts-vendor/es/d3-shape.js b/packages/x-charts-vendor/es/d3-shape.js new file mode 100644 index 000000000000..0e4ad9fa5c78 --- /dev/null +++ b/packages/x-charts-vendor/es/d3-shape.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-shape` (ESM) +// See upstream license: https://github.com/d3/d3-shape/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-shape` +export * from "d3-shape"; diff --git a/packages/x-charts-vendor/es/d3-time-format.js b/packages/x-charts-vendor/es/d3-time-format.js new file mode 100644 index 000000000000..7271b4dabdfa --- /dev/null +++ b/packages/x-charts-vendor/es/d3-time-format.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-time-format` (ESM) +// See upstream license: https://github.com/d3/d3-time-format/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-time-format` +export * from "d3-time-format"; diff --git a/packages/x-charts-vendor/es/d3-time.js b/packages/x-charts-vendor/es/d3-time.js new file mode 100644 index 000000000000..f23c5a38309d --- /dev/null +++ b/packages/x-charts-vendor/es/d3-time.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-time` (ESM) +// See upstream license: https://github.com/d3/d3-time/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/d3-time` +export * from "d3-time"; diff --git a/packages/x-charts-vendor/es/delaunator.js b/packages/x-charts-vendor/es/delaunator.js new file mode 100644 index 000000000000..02e446552949 --- /dev/null +++ b/packages/x-charts-vendor/es/delaunator.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/delaunator` (ESM) +// See upstream license: https://github.com/mapbox/delaunator/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/delaunator` +export * from "delaunator"; diff --git a/packages/x-charts-vendor/es/internmap.js b/packages/x-charts-vendor/es/internmap.js new file mode 100644 index 000000000000..221109d8ff69 --- /dev/null +++ b/packages/x-charts-vendor/es/internmap.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/internmap` (ESM) +// See upstream license: https://github.com/mbostock/internmap/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/internmap` +export * from "internmap"; diff --git a/packages/x-charts-vendor/es/robust-predicates.js b/packages/x-charts-vendor/es/robust-predicates.js new file mode 100644 index 000000000000..6b52e786ecb3 --- /dev/null +++ b/packages/x-charts-vendor/es/robust-predicates.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/robust-predicates` (ESM) +// See upstream license: https://github.com/mourner/robust-predicates/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of `node_modules/robust-predicates` +export * from "robust-predicates"; diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-array/LICENSE new file mode 100644 index 000000000000..3594fffaf63c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2023 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/array.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/array.js new file mode 100644 index 000000000000..3639cfa1ce04 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/array.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.slice = exports.map = void 0; +var array = Array.prototype; +var slice = exports.slice = array.slice; +var map = exports.map = array.map; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/ascending.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/ascending.js new file mode 100644 index 000000000000..8ffcc8c4750a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/ascending.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ascending; +function ascending(a, b) { + return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/bin.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/bin.js new file mode 100644 index 000000000000..bfc4c11dc36d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/bin.js @@ -0,0 +1,126 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = bin; +var _array = require("./array.js"); +var _bisect = _interopRequireDefault(require("./bisect.js")); +var _constant = _interopRequireDefault(require("./constant.js")); +var _extent = _interopRequireDefault(require("./extent.js")); +var _identity = _interopRequireDefault(require("./identity.js")); +var _nice = _interopRequireDefault(require("./nice.js")); +var _ticks = _interopRequireWildcard(require("./ticks.js")); +var _sturges = _interopRequireDefault(require("./threshold/sturges.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function bin() { + var value = _identity.default, + domain = _extent.default, + threshold = _sturges.default; + function histogram(data) { + if (!Array.isArray(data)) data = Array.from(data); + var i, + n = data.length, + x, + step, + values = new Array(n); + for (i = 0; i < n; ++i) { + values[i] = value(data[i], i, data); + } + var xz = domain(values), + x0 = xz[0], + x1 = xz[1], + tz = threshold(values, x0, x1); + + // Convert number of thresholds into uniform thresholds, and nice the + // default domain accordingly. + if (!Array.isArray(tz)) { + const max = x1, + tn = +tz; + if (domain === _extent.default) [x0, x1] = (0, _nice.default)(x0, x1, tn); + tz = (0, _ticks.default)(x0, x1, tn); + + // If the domain is aligned with the first tick (which it will by + // default), then we can use quantization rather than bisection to bin + // values, which is substantially faster. + if (tz[0] <= x0) step = (0, _ticks.tickIncrement)(x0, x1, tn); + + // If the last threshold is coincident with the domain’s upper bound, the + // last bin will be zero-width. If the default domain is used, and this + // last threshold is coincident with the maximum input value, we can + // extend the niced upper bound by one tick to ensure uniform bin widths; + // otherwise, we simply remove the last threshold. Note that we don’t + // coerce values or the domain to numbers, and thus must be careful to + // compare order (>=) rather than strict equality (===)! + if (tz[tz.length - 1] >= x1) { + if (max >= x1 && domain === _extent.default) { + const step = (0, _ticks.tickIncrement)(x0, x1, tn); + if (isFinite(step)) { + if (step > 0) { + x1 = (Math.floor(x1 / step) + 1) * step; + } else if (step < 0) { + x1 = (Math.ceil(x1 * -step) + 1) / -step; + } + } + } else { + tz.pop(); + } + } + } + + // Remove any thresholds outside the domain. + // Be careful not to mutate an array owned by the user! + var m = tz.length, + a = 0, + b = m; + while (tz[a] <= x0) ++a; + while (tz[b - 1] > x1) --b; + if (a || b < m) tz = tz.slice(a, b), m = b - a; + var bins = new Array(m + 1), + bin; + + // Initialize bins. + for (i = 0; i <= m; ++i) { + bin = bins[i] = []; + bin.x0 = i > 0 ? tz[i - 1] : x0; + bin.x1 = i < m ? tz[i] : x1; + } + + // Assign data to bins by value, ignoring any outside the domain. + if (isFinite(step)) { + if (step > 0) { + for (i = 0; i < n; ++i) { + if ((x = values[i]) != null && x0 <= x && x <= x1) { + bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]); + } + } + } else if (step < 0) { + for (i = 0; i < n; ++i) { + if ((x = values[i]) != null && x0 <= x && x <= x1) { + const j = Math.floor((x0 - x) * step); + bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding + } + } + } + } else { + for (i = 0; i < n; ++i) { + if ((x = values[i]) != null && x0 <= x && x <= x1) { + bins[(0, _bisect.default)(tz, x, 0, m)].push(data[i]); + } + } + } + return bins; + } + histogram.value = function (_) { + return arguments.length ? (value = typeof _ === "function" ? _ : (0, _constant.default)(_), histogram) : value; + }; + histogram.domain = function (_) { + return arguments.length ? (domain = typeof _ === "function" ? _ : (0, _constant.default)([_[0], _[1]]), histogram) : domain; + }; + histogram.thresholds = function (_) { + return arguments.length ? (threshold = typeof _ === "function" ? _ : (0, _constant.default)(Array.isArray(_) ? _array.slice.call(_) : _), histogram) : threshold; + }; + return histogram; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/bisect.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/bisect.js new file mode 100644 index 000000000000..9c97e4056cfd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/bisect.js @@ -0,0 +1,15 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.bisectRight = exports.bisectLeft = exports.bisectCenter = void 0; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _bisector = _interopRequireDefault(require("./bisector.js")); +var _number = _interopRequireDefault(require("./number.js")); +const ascendingBisect = (0, _bisector.default)(_ascending.default); +const bisectRight = exports.bisectRight = ascendingBisect.right; +const bisectLeft = exports.bisectLeft = ascendingBisect.left; +const bisectCenter = exports.bisectCenter = (0, _bisector.default)(_number.default).center; +var _default = exports.default = bisectRight; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/bisector.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/bisector.js new file mode 100644 index 000000000000..2183e0c640a1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/bisector.js @@ -0,0 +1,59 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = bisector; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _descending = _interopRequireDefault(require("./descending.js")); +function bisector(f) { + let compare1, compare2, delta; + + // If an accessor is specified, promote it to a comparator. In this case we + // can test whether the search value is (self-) comparable. We can’t do this + // for a comparator (except for specific, known comparators) because we can’t + // tell if the comparator is symmetric, and an asymmetric comparator can’t be + // used to test whether a single value is comparable. + if (f.length !== 2) { + compare1 = _ascending.default; + compare2 = (d, x) => (0, _ascending.default)(f(d), x); + delta = (d, x) => f(d) - x; + } else { + compare1 = f === _ascending.default || f === _descending.default ? f : zero; + compare2 = f; + delta = f; + } + function left(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) < 0) lo = mid + 1;else hi = mid; + } while (lo < hi); + } + return lo; + } + function right(a, x, lo = 0, hi = a.length) { + if (lo < hi) { + if (compare1(x, x) !== 0) return hi; + do { + const mid = lo + hi >>> 1; + if (compare2(a[mid], x) <= 0) lo = mid + 1;else hi = mid; + } while (lo < hi); + } + return lo; + } + function center(a, x, lo = 0, hi = a.length) { + const i = left(a, x, lo, hi - 1); + return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i; + } + return { + left, + center, + right + }; +} +function zero() { + return 0; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/blur.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/blur.js new file mode 100644 index 000000000000..4c69838b67d8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/blur.js @@ -0,0 +1,122 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.blur = blur; +exports.blurImage = exports.blur2 = void 0; +function blur(values, r) { + if (!((r = +r) >= 0)) throw new RangeError("invalid r"); + let length = values.length; + if (!((length = Math.floor(length)) >= 0)) throw new RangeError("invalid length"); + if (!length || !r) return values; + const blur = blurf(r); + const temp = values.slice(); + blur(values, temp, 0, length, 1); + blur(temp, values, 0, length, 1); + blur(values, temp, 0, length, 1); + return values; +} +const blur2 = exports.blur2 = Blur2(blurf); +const blurImage = exports.blurImage = Blur2(blurfImage); +function Blur2(blur) { + return function (data, rx, ry = rx) { + if (!((rx = +rx) >= 0)) throw new RangeError("invalid rx"); + if (!((ry = +ry) >= 0)) throw new RangeError("invalid ry"); + let { + data: values, + width, + height + } = data; + if (!((width = Math.floor(width)) >= 0)) throw new RangeError("invalid width"); + if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError("invalid height"); + if (!width || !height || !rx && !ry) return data; + const blurx = rx && blur(rx); + const blury = ry && blur(ry); + const temp = values.slice(); + if (blurx && blury) { + blurh(blurx, temp, values, width, height); + blurh(blurx, values, temp, width, height); + blurh(blurx, temp, values, width, height); + blurv(blury, values, temp, width, height); + blurv(blury, temp, values, width, height); + blurv(blury, values, temp, width, height); + } else if (blurx) { + blurh(blurx, values, temp, width, height); + blurh(blurx, temp, values, width, height); + blurh(blurx, values, temp, width, height); + } else if (blury) { + blurv(blury, values, temp, width, height); + blurv(blury, temp, values, width, height); + blurv(blury, values, temp, width, height); + } + return data; + }; +} +function blurh(blur, T, S, w, h) { + for (let y = 0, n = w * h; y < n;) { + blur(T, S, y, y += w, 1); + } +} +function blurv(blur, T, S, w, h) { + for (let x = 0, n = w * h; x < w; ++x) { + blur(T, S, x, x + n, w); + } +} +function blurfImage(radius) { + const blur = blurf(radius); + return (T, S, start, stop, step) => { + start <<= 2, stop <<= 2, step <<= 2; + blur(T, S, start + 0, stop + 0, step); + blur(T, S, start + 1, stop + 1, step); + blur(T, S, start + 2, stop + 2, step); + blur(T, S, start + 3, stop + 3, step); + }; +} + +// Given a target array T, a source array S, sets each value T[i] to the average +// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop, +// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between +// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an +// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted +// according to r - ⌊radius⌋. +function blurf(radius) { + const radius0 = Math.floor(radius); + if (radius0 === radius) return bluri(radius); + const t = radius - radius0; + const w = 2 * radius + 1; + return (T, S, start, stop, step) => { + // stop must be aligned! + if (!((stop -= step) >= start)) return; // inclusive stop + let sum = radius0 * S[start]; + const s0 = step * radius0; + const s1 = s0 + step; + for (let i = start, j = start + s0; i < j; i += step) { + sum += S[Math.min(stop, i)]; + } + for (let i = start, j = stop; i <= j; i += step) { + sum += S[Math.min(stop, i + s0)]; + T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w; + sum -= S[Math.max(start, i - s0)]; + } + }; +} + +// Like blurf, but optimized for integer radius. +function bluri(radius) { + const w = 2 * radius + 1; + return (T, S, start, stop, step) => { + // stop must be aligned! + if (!((stop -= step) >= start)) return; // inclusive stop + let sum = radius * S[start]; + const s = step * radius; + for (let i = start, j = start + s; i < j; i += step) { + sum += S[Math.min(stop, i)]; + } + for (let i = start, j = stop; i <= j; i += step) { + sum += S[Math.min(stop, i + s)]; + T[i] = sum / w; + sum -= S[Math.max(start, i - s)]; + } + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/constant.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/constant.js new file mode 100644 index 000000000000..616bd0612628 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/constant.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = constant; +function constant(x) { + return () => x; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/count.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/count.js new file mode 100644 index 000000000000..ea548171aa95 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/count.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = count; +function count(values, valueof) { + let count = 0; + if (valueof === undefined) { + for (let value of values) { + if (value != null && (value = +value) >= value) { + ++count; + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { + ++count; + } + } + } + return count; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/cross.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/cross.js new file mode 100644 index 000000000000..c530a523ba65 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/cross.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cross; +function length(array) { + return array.length | 0; +} +function empty(length) { + return !(length > 0); +} +function arrayify(values) { + return typeof values !== "object" || "length" in values ? values : Array.from(values); +} +function reducer(reduce) { + return values => reduce(...values); +} +function cross(...values) { + const reduce = typeof values[values.length - 1] === "function" && reducer(values.pop()); + values = values.map(arrayify); + const lengths = values.map(length); + const j = values.length - 1; + const index = new Array(j + 1).fill(0); + const product = []; + if (j < 0 || lengths.some(empty)) return product; + while (true) { + product.push(index.map((j, i) => values[i][j])); + let i = j; + while (++index[i] === lengths[i]) { + if (i === 0) return reduce ? product.map(reduce) : product; + index[i--] = 0; + } + } +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/cumsum.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/cumsum.js new file mode 100644 index 000000000000..88617614eb26 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/cumsum.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cumsum; +function cumsum(values, valueof) { + var sum = 0, + index = 0; + return Float64Array.from(values, valueof === undefined ? v => sum += +v || 0 : v => sum += +valueof(v, index++, values) || 0); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/descending.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/descending.js new file mode 100644 index 000000000000..539986716665 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/descending.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = descending; +function descending(a, b) { + return a == null || b == null ? NaN : b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/deviation.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/deviation.js new file mode 100644 index 000000000000..bbfc08171706 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/deviation.js @@ -0,0 +1,12 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = deviation; +var _variance = _interopRequireDefault(require("./variance.js")); +function deviation(values, valueof) { + const v = (0, _variance.default)(values, valueof); + return v ? Math.sqrt(v) : v; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/difference.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/difference.js new file mode 100644 index 000000000000..b287251899ec --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/difference.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = difference; +var _index = require("../../../lib-vendor/internmap/src/index.js"); +function difference(values, ...others) { + values = new _index.InternSet(values); + for (const other of others) { + for (const value of other) { + values.delete(value); + } + } + return values; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js new file mode 100644 index 000000000000..7cac5ed41b85 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = disjoint; +var _index = require("../../../lib-vendor/internmap/src/index.js"); +function disjoint(values, other) { + const iterator = other[Symbol.iterator](), + set = new _index.InternSet(); + for (const v of values) { + if (set.has(v)) return false; + let value, done; + while (({ + value, + done + } = iterator.next())) { + if (done) break; + if (Object.is(v, value)) return false; + set.add(value); + } + } + return true; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/every.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/every.js new file mode 100644 index 000000000000..58f8d416400f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/every.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = every; +function every(values, test) { + if (typeof test !== "function") throw new TypeError("test is not a function"); + let index = -1; + for (const value of values) { + if (!test(value, ++index, values)) { + return false; + } + } + return true; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/extent.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/extent.js new file mode 100644 index 000000000000..7ded95fb36f3 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/extent.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = extent; +function extent(values, valueof) { + let min; + let max; + if (valueof === undefined) { + for (const value of values) { + if (value != null) { + if (min === undefined) { + if (value >= value) min = max = value; + } else { + if (min > value) min = value; + if (max < value) max = value; + } + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null) { + if (min === undefined) { + if (value >= value) min = max = value; + } else { + if (min > value) min = value; + if (max < value) max = value; + } + } + } + } + return [min, max]; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/filter.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/filter.js new file mode 100644 index 000000000000..475c79f31f50 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/filter.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = filter; +function filter(values, test) { + if (typeof test !== "function") throw new TypeError("test is not a function"); + const array = []; + let index = -1; + for (const value of values) { + if (test(value, ++index, values)) { + array.push(value); + } + } + return array; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/fsum.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/fsum.js new file mode 100644 index 000000000000..5458f3578752 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/fsum.js @@ -0,0 +1,77 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Adder = void 0; +exports.fcumsum = fcumsum; +exports.fsum = fsum; +// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423 +class Adder { + constructor() { + this._partials = new Float64Array(32); + this._n = 0; + } + add(x) { + const p = this._partials; + let i = 0; + for (let j = 0; j < this._n && j < 32; j++) { + const y = p[j], + hi = x + y, + lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x); + if (lo) p[i++] = lo; + x = hi; + } + p[i] = x; + this._n = i + 1; + return this; + } + valueOf() { + const p = this._partials; + let n = this._n, + x, + y, + lo, + hi = 0; + if (n > 0) { + hi = p[--n]; + while (n > 0) { + x = hi; + y = p[--n]; + hi = x + y; + lo = y - (hi - x); + if (lo) break; + } + if (n > 0 && (lo < 0 && p[n - 1] < 0 || lo > 0 && p[n - 1] > 0)) { + y = lo * 2; + x = hi + y; + if (y == x - hi) hi = x; + } + } + return hi; + } +} +exports.Adder = Adder; +function fsum(values, valueof) { + const adder = new Adder(); + if (valueof === undefined) { + for (let value of values) { + if (value = +value) { + adder.add(value); + } + } + } else { + let index = -1; + for (let value of values) { + if (value = +valueof(value, ++index, values)) { + adder.add(value); + } + } + } + return +adder; +} +function fcumsum(values, valueof) { + const adder = new Adder(); + let index = -1; + return Float64Array.from(values, valueof === undefined ? v => adder.add(+v || 0) : v => adder.add(+valueof(v, ++index, values) || 0)); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/greatest.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/greatest.js new file mode 100644 index 000000000000..52cb3db6242c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/greatest.js @@ -0,0 +1,31 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = greatest; +var _ascending = _interopRequireDefault(require("./ascending.js")); +function greatest(values, compare = _ascending.default) { + let max; + let defined = false; + if (compare.length === 1) { + let maxValue; + for (const element of values) { + const value = compare(element); + if (defined ? (0, _ascending.default)(value, maxValue) > 0 : (0, _ascending.default)(value, value) === 0) { + max = element; + maxValue = value; + defined = true; + } + } + } else { + for (const value of values) { + if (defined ? compare(value, max) > 0 : compare(value, value) === 0) { + max = value; + defined = true; + } + } + } + return max; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/greatestIndex.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/greatestIndex.js new file mode 100644 index 000000000000..a61530f0c04b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/greatestIndex.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = greatestIndex; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _maxIndex = _interopRequireDefault(require("./maxIndex.js")); +function greatestIndex(values, compare = _ascending.default) { + if (compare.length === 1) return (0, _maxIndex.default)(values, compare); + let maxValue; + let max = -1; + let index = -1; + for (const value of values) { + ++index; + if (max < 0 ? compare(value, value) === 0 : compare(value, maxValue) > 0) { + maxValue = value; + max = index; + } + } + return max; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/group.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/group.js new file mode 100644 index 000000000000..d6ea16bcdad1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/group.js @@ -0,0 +1,67 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = group; +exports.flatGroup = flatGroup; +exports.flatRollup = flatRollup; +exports.groups = groups; +exports.index = index; +exports.indexes = indexes; +exports.rollup = rollup; +exports.rollups = rollups; +var _index = require("../../../lib-vendor/internmap/src/index.js"); +var _identity = _interopRequireDefault(require("./identity.js")); +function group(values, ...keys) { + return nest(values, _identity.default, _identity.default, keys); +} +function groups(values, ...keys) { + return nest(values, Array.from, _identity.default, keys); +} +function flatten(groups, keys) { + for (let i = 1, n = keys.length; i < n; ++i) { + groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value])); + } + return groups; +} +function flatGroup(values, ...keys) { + return flatten(groups(values, ...keys), keys); +} +function flatRollup(values, reduce, ...keys) { + return flatten(rollups(values, reduce, ...keys), keys); +} +function rollup(values, reduce, ...keys) { + return nest(values, _identity.default, reduce, keys); +} +function rollups(values, reduce, ...keys) { + return nest(values, Array.from, reduce, keys); +} +function index(values, ...keys) { + return nest(values, _identity.default, unique, keys); +} +function indexes(values, ...keys) { + return nest(values, Array.from, unique, keys); +} +function unique(values) { + if (values.length !== 1) throw new Error("duplicate key"); + return values[0]; +} +function nest(values, map, reduce, keys) { + return function regroup(values, i) { + if (i >= keys.length) return reduce(values); + const groups = new _index.InternMap(); + const keyof = keys[i++]; + let index = -1; + for (const value of values) { + const key = keyof(value, ++index, values); + const group = groups.get(key); + if (group) group.push(value);else groups.set(key, [value]); + } + for (const [key, values] of groups) { + groups.set(key, regroup(values, i)); + } + return map(groups); + }(values, 0); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/groupSort.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/groupSort.js new file mode 100644 index 000000000000..d60afc53da4c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/groupSort.js @@ -0,0 +1,15 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = groupSort; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _group = _interopRequireWildcard(require("./group.js")); +var _sort = _interopRequireDefault(require("./sort.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function groupSort(values, reduce, key) { + return (reduce.length !== 2 ? (0, _sort.default)((0, _group.rollup)(values, reduce, key), ([ak, av], [bk, bv]) => (0, _ascending.default)(av, bv) || (0, _ascending.default)(ak, bk)) : (0, _sort.default)((0, _group.default)(values, key), ([ak, av], [bk, bv]) => reduce(av, bv) || (0, _ascending.default)(ak, bk))).map(([key]) => key); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/identity.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/identity.js new file mode 100644 index 000000000000..b2b2e6261051 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/identity.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = identity; +function identity(x) { + return x; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/index.js new file mode 100644 index 000000000000..1231cadc8874 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/index.js @@ -0,0 +1,539 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Adder", { + enumerable: true, + get: function () { + return _fsum.Adder; + } +}); +Object.defineProperty(exports, "InternMap", { + enumerable: true, + get: function () { + return _index.InternMap; + } +}); +Object.defineProperty(exports, "InternSet", { + enumerable: true, + get: function () { + return _index.InternSet; + } +}); +Object.defineProperty(exports, "ascending", { + enumerable: true, + get: function () { + return _ascending.default; + } +}); +Object.defineProperty(exports, "bin", { + enumerable: true, + get: function () { + return _bin.default; + } +}); +Object.defineProperty(exports, "bisect", { + enumerable: true, + get: function () { + return _bisect.default; + } +}); +Object.defineProperty(exports, "bisectCenter", { + enumerable: true, + get: function () { + return _bisect.bisectCenter; + } +}); +Object.defineProperty(exports, "bisectLeft", { + enumerable: true, + get: function () { + return _bisect.bisectLeft; + } +}); +Object.defineProperty(exports, "bisectRight", { + enumerable: true, + get: function () { + return _bisect.bisectRight; + } +}); +Object.defineProperty(exports, "bisector", { + enumerable: true, + get: function () { + return _bisector.default; + } +}); +Object.defineProperty(exports, "blur", { + enumerable: true, + get: function () { + return _blur.blur; + } +}); +Object.defineProperty(exports, "blur2", { + enumerable: true, + get: function () { + return _blur.blur2; + } +}); +Object.defineProperty(exports, "blurImage", { + enumerable: true, + get: function () { + return _blur.blurImage; + } +}); +Object.defineProperty(exports, "count", { + enumerable: true, + get: function () { + return _count.default; + } +}); +Object.defineProperty(exports, "cross", { + enumerable: true, + get: function () { + return _cross.default; + } +}); +Object.defineProperty(exports, "cumsum", { + enumerable: true, + get: function () { + return _cumsum.default; + } +}); +Object.defineProperty(exports, "descending", { + enumerable: true, + get: function () { + return _descending.default; + } +}); +Object.defineProperty(exports, "deviation", { + enumerable: true, + get: function () { + return _deviation.default; + } +}); +Object.defineProperty(exports, "difference", { + enumerable: true, + get: function () { + return _difference.default; + } +}); +Object.defineProperty(exports, "disjoint", { + enumerable: true, + get: function () { + return _disjoint.default; + } +}); +Object.defineProperty(exports, "every", { + enumerable: true, + get: function () { + return _every.default; + } +}); +Object.defineProperty(exports, "extent", { + enumerable: true, + get: function () { + return _extent.default; + } +}); +Object.defineProperty(exports, "fcumsum", { + enumerable: true, + get: function () { + return _fsum.fcumsum; + } +}); +Object.defineProperty(exports, "filter", { + enumerable: true, + get: function () { + return _filter.default; + } +}); +Object.defineProperty(exports, "flatGroup", { + enumerable: true, + get: function () { + return _group.flatGroup; + } +}); +Object.defineProperty(exports, "flatRollup", { + enumerable: true, + get: function () { + return _group.flatRollup; + } +}); +Object.defineProperty(exports, "fsum", { + enumerable: true, + get: function () { + return _fsum.fsum; + } +}); +Object.defineProperty(exports, "greatest", { + enumerable: true, + get: function () { + return _greatest.default; + } +}); +Object.defineProperty(exports, "greatestIndex", { + enumerable: true, + get: function () { + return _greatestIndex.default; + } +}); +Object.defineProperty(exports, "group", { + enumerable: true, + get: function () { + return _group.default; + } +}); +Object.defineProperty(exports, "groupSort", { + enumerable: true, + get: function () { + return _groupSort.default; + } +}); +Object.defineProperty(exports, "groups", { + enumerable: true, + get: function () { + return _group.groups; + } +}); +Object.defineProperty(exports, "histogram", { + enumerable: true, + get: function () { + return _bin.default; + } +}); +Object.defineProperty(exports, "index", { + enumerable: true, + get: function () { + return _group.index; + } +}); +Object.defineProperty(exports, "indexes", { + enumerable: true, + get: function () { + return _group.indexes; + } +}); +Object.defineProperty(exports, "intersection", { + enumerable: true, + get: function () { + return _intersection.default; + } +}); +Object.defineProperty(exports, "least", { + enumerable: true, + get: function () { + return _least.default; + } +}); +Object.defineProperty(exports, "leastIndex", { + enumerable: true, + get: function () { + return _leastIndex.default; + } +}); +Object.defineProperty(exports, "map", { + enumerable: true, + get: function () { + return _map.default; + } +}); +Object.defineProperty(exports, "max", { + enumerable: true, + get: function () { + return _max.default; + } +}); +Object.defineProperty(exports, "maxIndex", { + enumerable: true, + get: function () { + return _maxIndex.default; + } +}); +Object.defineProperty(exports, "mean", { + enumerable: true, + get: function () { + return _mean.default; + } +}); +Object.defineProperty(exports, "median", { + enumerable: true, + get: function () { + return _median.default; + } +}); +Object.defineProperty(exports, "medianIndex", { + enumerable: true, + get: function () { + return _median.medianIndex; + } +}); +Object.defineProperty(exports, "merge", { + enumerable: true, + get: function () { + return _merge.default; + } +}); +Object.defineProperty(exports, "min", { + enumerable: true, + get: function () { + return _min.default; + } +}); +Object.defineProperty(exports, "minIndex", { + enumerable: true, + get: function () { + return _minIndex.default; + } +}); +Object.defineProperty(exports, "mode", { + enumerable: true, + get: function () { + return _mode.default; + } +}); +Object.defineProperty(exports, "nice", { + enumerable: true, + get: function () { + return _nice.default; + } +}); +Object.defineProperty(exports, "pairs", { + enumerable: true, + get: function () { + return _pairs.default; + } +}); +Object.defineProperty(exports, "permute", { + enumerable: true, + get: function () { + return _permute.default; + } +}); +Object.defineProperty(exports, "quantile", { + enumerable: true, + get: function () { + return _quantile.default; + } +}); +Object.defineProperty(exports, "quantileIndex", { + enumerable: true, + get: function () { + return _quantile.quantileIndex; + } +}); +Object.defineProperty(exports, "quantileSorted", { + enumerable: true, + get: function () { + return _quantile.quantileSorted; + } +}); +Object.defineProperty(exports, "quickselect", { + enumerable: true, + get: function () { + return _quickselect.default; + } +}); +Object.defineProperty(exports, "range", { + enumerable: true, + get: function () { + return _range.default; + } +}); +Object.defineProperty(exports, "rank", { + enumerable: true, + get: function () { + return _rank.default; + } +}); +Object.defineProperty(exports, "reduce", { + enumerable: true, + get: function () { + return _reduce.default; + } +}); +Object.defineProperty(exports, "reverse", { + enumerable: true, + get: function () { + return _reverse.default; + } +}); +Object.defineProperty(exports, "rollup", { + enumerable: true, + get: function () { + return _group.rollup; + } +}); +Object.defineProperty(exports, "rollups", { + enumerable: true, + get: function () { + return _group.rollups; + } +}); +Object.defineProperty(exports, "scan", { + enumerable: true, + get: function () { + return _scan.default; + } +}); +Object.defineProperty(exports, "shuffle", { + enumerable: true, + get: function () { + return _shuffle.default; + } +}); +Object.defineProperty(exports, "shuffler", { + enumerable: true, + get: function () { + return _shuffle.shuffler; + } +}); +Object.defineProperty(exports, "some", { + enumerable: true, + get: function () { + return _some.default; + } +}); +Object.defineProperty(exports, "sort", { + enumerable: true, + get: function () { + return _sort.default; + } +}); +Object.defineProperty(exports, "subset", { + enumerable: true, + get: function () { + return _subset.default; + } +}); +Object.defineProperty(exports, "sum", { + enumerable: true, + get: function () { + return _sum.default; + } +}); +Object.defineProperty(exports, "superset", { + enumerable: true, + get: function () { + return _superset.default; + } +}); +Object.defineProperty(exports, "thresholdFreedmanDiaconis", { + enumerable: true, + get: function () { + return _freedmanDiaconis.default; + } +}); +Object.defineProperty(exports, "thresholdScott", { + enumerable: true, + get: function () { + return _scott.default; + } +}); +Object.defineProperty(exports, "thresholdSturges", { + enumerable: true, + get: function () { + return _sturges.default; + } +}); +Object.defineProperty(exports, "tickIncrement", { + enumerable: true, + get: function () { + return _ticks.tickIncrement; + } +}); +Object.defineProperty(exports, "tickStep", { + enumerable: true, + get: function () { + return _ticks.tickStep; + } +}); +Object.defineProperty(exports, "ticks", { + enumerable: true, + get: function () { + return _ticks.default; + } +}); +Object.defineProperty(exports, "transpose", { + enumerable: true, + get: function () { + return _transpose.default; + } +}); +Object.defineProperty(exports, "union", { + enumerable: true, + get: function () { + return _union.default; + } +}); +Object.defineProperty(exports, "variance", { + enumerable: true, + get: function () { + return _variance.default; + } +}); +Object.defineProperty(exports, "zip", { + enumerable: true, + get: function () { + return _zip.default; + } +}); +var _bisect = _interopRequireWildcard(require("./bisect.js")); +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _bisector = _interopRequireDefault(require("./bisector.js")); +var _blur = require("./blur.js"); +var _count = _interopRequireDefault(require("./count.js")); +var _cross = _interopRequireDefault(require("./cross.js")); +var _cumsum = _interopRequireDefault(require("./cumsum.js")); +var _descending = _interopRequireDefault(require("./descending.js")); +var _deviation = _interopRequireDefault(require("./deviation.js")); +var _extent = _interopRequireDefault(require("./extent.js")); +var _fsum = require("./fsum.js"); +var _group = _interopRequireWildcard(require("./group.js")); +var _groupSort = _interopRequireDefault(require("./groupSort.js")); +var _bin = _interopRequireDefault(require("./bin.js")); +var _freedmanDiaconis = _interopRequireDefault(require("./threshold/freedmanDiaconis.js")); +var _scott = _interopRequireDefault(require("./threshold/scott.js")); +var _sturges = _interopRequireDefault(require("./threshold/sturges.js")); +var _max = _interopRequireDefault(require("./max.js")); +var _maxIndex = _interopRequireDefault(require("./maxIndex.js")); +var _mean = _interopRequireDefault(require("./mean.js")); +var _median = _interopRequireWildcard(require("./median.js")); +var _merge = _interopRequireDefault(require("./merge.js")); +var _min = _interopRequireDefault(require("./min.js")); +var _minIndex = _interopRequireDefault(require("./minIndex.js")); +var _mode = _interopRequireDefault(require("./mode.js")); +var _nice = _interopRequireDefault(require("./nice.js")); +var _pairs = _interopRequireDefault(require("./pairs.js")); +var _permute = _interopRequireDefault(require("./permute.js")); +var _quantile = _interopRequireWildcard(require("./quantile.js")); +var _quickselect = _interopRequireDefault(require("./quickselect.js")); +var _range = _interopRequireDefault(require("./range.js")); +var _rank = _interopRequireDefault(require("./rank.js")); +var _least = _interopRequireDefault(require("./least.js")); +var _leastIndex = _interopRequireDefault(require("./leastIndex.js")); +var _greatest = _interopRequireDefault(require("./greatest.js")); +var _greatestIndex = _interopRequireDefault(require("./greatestIndex.js")); +var _scan = _interopRequireDefault(require("./scan.js")); +var _shuffle = _interopRequireWildcard(require("./shuffle.js")); +var _sum = _interopRequireDefault(require("./sum.js")); +var _ticks = _interopRequireWildcard(require("./ticks.js")); +var _transpose = _interopRequireDefault(require("./transpose.js")); +var _variance = _interopRequireDefault(require("./variance.js")); +var _zip = _interopRequireDefault(require("./zip.js")); +var _every = _interopRequireDefault(require("./every.js")); +var _some = _interopRequireDefault(require("./some.js")); +var _filter = _interopRequireDefault(require("./filter.js")); +var _map = _interopRequireDefault(require("./map.js")); +var _reduce = _interopRequireDefault(require("./reduce.js")); +var _reverse = _interopRequireDefault(require("./reverse.js")); +var _sort = _interopRequireDefault(require("./sort.js")); +var _difference = _interopRequireDefault(require("./difference.js")); +var _disjoint = _interopRequireDefault(require("./disjoint.js")); +var _intersection = _interopRequireDefault(require("./intersection.js")); +var _subset = _interopRequireDefault(require("./subset.js")); +var _superset = _interopRequireDefault(require("./superset.js")); +var _union = _interopRequireDefault(require("./union.js")); +var _index = require("../../../lib-vendor/internmap/src/index.js"); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/intersection.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/intersection.js new file mode 100644 index 000000000000..439de53e7e1e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/intersection.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = intersection; +var _index = require("../../../lib-vendor/internmap/src/index.js"); +function intersection(values, ...others) { + values = new _index.InternSet(values); + others = others.map(set); + out: for (const value of values) { + for (const other of others) { + if (!other.has(value)) { + values.delete(value); + continue out; + } + } + } + return values; +} +function set(values) { + return values instanceof _index.InternSet ? values : new _index.InternSet(values); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/least.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/least.js new file mode 100644 index 000000000000..9cdbae7442b7 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/least.js @@ -0,0 +1,31 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = least; +var _ascending = _interopRequireDefault(require("./ascending.js")); +function least(values, compare = _ascending.default) { + let min; + let defined = false; + if (compare.length === 1) { + let minValue; + for (const element of values) { + const value = compare(element); + if (defined ? (0, _ascending.default)(value, minValue) < 0 : (0, _ascending.default)(value, value) === 0) { + min = element; + minValue = value; + defined = true; + } + } + } else { + for (const value of values) { + if (defined ? compare(value, min) < 0 : compare(value, value) === 0) { + min = value; + defined = true; + } + } + } + return min; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/leastIndex.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/leastIndex.js new file mode 100644 index 000000000000..bf6930b2df0a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/leastIndex.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = leastIndex; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _minIndex = _interopRequireDefault(require("./minIndex.js")); +function leastIndex(values, compare = _ascending.default) { + if (compare.length === 1) return (0, _minIndex.default)(values, compare); + let minValue; + let min = -1; + let index = -1; + for (const value of values) { + ++index; + if (min < 0 ? compare(value, value) === 0 : compare(value, minValue) < 0) { + minValue = value; + min = index; + } + } + return min; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/map.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/map.js new file mode 100644 index 000000000000..0c149eae7519 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/map.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = map; +function map(values, mapper) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + if (typeof mapper !== "function") throw new TypeError("mapper is not a function"); + return Array.from(values, (value, index) => mapper(value, index, values)); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/max.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/max.js new file mode 100644 index 000000000000..f07115afe533 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/max.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = max; +function max(values, valueof) { + let max; + if (valueof === undefined) { + for (const value of values) { + if (value != null && (max < value || max === undefined && value >= value)) { + max = value; + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (max < value || max === undefined && value >= value)) { + max = value; + } + } + } + return max; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/maxIndex.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/maxIndex.js new file mode 100644 index 000000000000..a98f9b7cf732 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/maxIndex.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = maxIndex; +function maxIndex(values, valueof) { + let max; + let maxIndex = -1; + let index = -1; + if (valueof === undefined) { + for (const value of values) { + ++index; + if (value != null && (max < value || max === undefined && value >= value)) { + max = value, maxIndex = index; + } + } + } else { + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (max < value || max === undefined && value >= value)) { + max = value, maxIndex = index; + } + } + } + return maxIndex; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/mean.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/mean.js new file mode 100644 index 000000000000..441701c0500b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/mean.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = mean; +function mean(values, valueof) { + let count = 0; + let sum = 0; + if (valueof === undefined) { + for (let value of values) { + if (value != null && (value = +value) >= value) { + ++count, sum += value; + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { + ++count, sum += value; + } + } + } + if (count) return sum / count; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/median.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/median.js new file mode 100644 index 000000000000..f45fc449fa93 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/median.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = median; +exports.medianIndex = medianIndex; +var _quantile = _interopRequireWildcard(require("./quantile.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function median(values, valueof) { + return (0, _quantile.default)(values, 0.5, valueof); +} +function medianIndex(values, valueof) { + return (0, _quantile.quantileIndex)(values, 0.5, valueof); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/merge.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/merge.js new file mode 100644 index 000000000000..6372fdaed2cb --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/merge.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = merge; +function* flatten(arrays) { + for (const array of arrays) { + yield* array; + } +} +function merge(arrays) { + return Array.from(flatten(arrays)); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/min.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/min.js new file mode 100644 index 000000000000..a9c335aeb46a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/min.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = min; +function min(values, valueof) { + let min; + if (valueof === undefined) { + for (const value of values) { + if (value != null && (min > value || min === undefined && value >= value)) { + min = value; + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (min > value || min === undefined && value >= value)) { + min = value; + } + } + } + return min; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/minIndex.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/minIndex.js new file mode 100644 index 000000000000..7825bf0d6e98 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/minIndex.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = minIndex; +function minIndex(values, valueof) { + let min; + let minIndex = -1; + let index = -1; + if (valueof === undefined) { + for (const value of values) { + ++index; + if (value != null && (min > value || min === undefined && value >= value)) { + min = value, minIndex = index; + } + } + } else { + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (min > value || min === undefined && value >= value)) { + min = value, minIndex = index; + } + } + } + return minIndex; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/mode.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/mode.js new file mode 100644 index 000000000000..6e23adede941 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/mode.js @@ -0,0 +1,33 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = mode; +var _index = require("../../../lib-vendor/internmap/src/index.js"); +function mode(values, valueof) { + const counts = new _index.InternMap(); + if (valueof === undefined) { + for (let value of values) { + if (value != null && value >= value) { + counts.set(value, (counts.get(value) || 0) + 1); + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && value >= value) { + counts.set(value, (counts.get(value) || 0) + 1); + } + } + } + let modeValue; + let modeCount = 0; + for (const [value, count] of counts) { + if (count > modeCount) { + modeCount = count; + modeValue = value; + } + } + return modeValue; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/nice.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/nice.js new file mode 100644 index 000000000000..a1502b82084c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/nice.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = nice; +var _ticks = require("./ticks.js"); +function nice(start, stop, count) { + let prestep; + while (true) { + const step = (0, _ticks.tickIncrement)(start, stop, count); + if (step === prestep || step === 0 || !isFinite(step)) { + return [start, stop]; + } else if (step > 0) { + start = Math.floor(start / step) * step; + stop = Math.ceil(stop / step) * step; + } else if (step < 0) { + start = Math.ceil(start * step) / step; + stop = Math.floor(stop * step) / step; + } + prestep = step; + } +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/number.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/number.js new file mode 100644 index 000000000000..7ba23d8a3d39 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/number.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = number; +exports.numbers = numbers; +function number(x) { + return x === null ? NaN : +x; +} +function* numbers(values, valueof) { + if (valueof === undefined) { + for (let value of values) { + if (value != null && (value = +value) >= value) { + yield value; + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { + yield value; + } + } + } +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/pairs.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/pairs.js new file mode 100644 index 000000000000..b9b88f82ae11 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/pairs.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = pairs; +exports.pair = pair; +function pairs(values, pairof = pair) { + const pairs = []; + let previous; + let first = false; + for (const value of values) { + if (first) pairs.push(pairof(previous, value)); + previous = value; + first = true; + } + return pairs; +} +function pair(a, b) { + return [a, b]; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/permute.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/permute.js new file mode 100644 index 000000000000..7d81cecc0a8d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/permute.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = permute; +function permute(source, keys) { + return Array.from(keys, key => source[key]); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/quantile.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/quantile.js new file mode 100644 index 000000000000..48bcb76ebc9f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/quantile.js @@ -0,0 +1,55 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = quantile; +exports.quantileIndex = quantileIndex; +exports.quantileSorted = quantileSorted; +var _max = _interopRequireDefault(require("./max.js")); +var _maxIndex = _interopRequireDefault(require("./maxIndex.js")); +var _min = _interopRequireDefault(require("./min.js")); +var _minIndex = _interopRequireDefault(require("./minIndex.js")); +var _quickselect = _interopRequireDefault(require("./quickselect.js")); +var _number = _interopRequireWildcard(require("./number.js")); +var _sort = require("./sort.js"); +var _greatest = _interopRequireDefault(require("./greatest.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function quantile(values, p, valueof) { + values = Float64Array.from((0, _number.numbers)(values, valueof)); + if (!(n = values.length) || isNaN(p = +p)) return; + if (p <= 0 || n < 2) return (0, _min.default)(values); + if (p >= 1) return (0, _max.default)(values); + var n, + i = (n - 1) * p, + i0 = Math.floor(i), + value0 = (0, _max.default)((0, _quickselect.default)(values, i0).subarray(0, i0 + 1)), + value1 = (0, _min.default)(values.subarray(i0 + 1)); + return value0 + (value1 - value0) * (i - i0); +} +function quantileSorted(values, p, valueof = _number.default) { + if (!(n = values.length) || isNaN(p = +p)) return; + if (p <= 0 || n < 2) return +valueof(values[0], 0, values); + if (p >= 1) return +valueof(values[n - 1], n - 1, values); + var n, + i = (n - 1) * p, + i0 = Math.floor(i), + value0 = +valueof(values[i0], i0, values), + value1 = +valueof(values[i0 + 1], i0 + 1, values); + return value0 + (value1 - value0) * (i - i0); +} +function quantileIndex(values, p, valueof = _number.default) { + if (isNaN(p = +p)) return; + numbers = Float64Array.from(values, (_, i) => (0, _number.default)(valueof(values[i], i, values))); + if (p <= 0) return (0, _minIndex.default)(numbers); + if (p >= 1) return (0, _maxIndex.default)(numbers); + var numbers, + index = Uint32Array.from(values, (_, i) => i), + j = numbers.length - 1, + i = Math.floor(j * p); + (0, _quickselect.default)(index, i, 0, j, (i, j) => (0, _sort.ascendingDefined)(numbers[i], numbers[j])); + i = (0, _greatest.default)(index.subarray(0, i + 1), i => numbers[i]); + return i >= 0 ? i : -1; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/quickselect.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/quickselect.js new file mode 100644 index 000000000000..0be93ed832e0 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/quickselect.js @@ -0,0 +1,47 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = quickselect; +var _sort = require("./sort.js"); +// Based on https://github.com/mourner/quickselect +// ISC license, Copyright 2018 Vladimir Agafonkin. +function quickselect(array, k, left = 0, right = Infinity, compare) { + k = Math.floor(k); + left = Math.floor(Math.max(0, left)); + right = Math.floor(Math.min(array.length - 1, right)); + if (!(left <= k && k <= right)) return array; + compare = compare === undefined ? _sort.ascendingDefined : (0, _sort.compareDefined)(compare); + while (right > left) { + if (right - left > 600) { + const n = right - left + 1; + const m = k - left + 1; + const z = Math.log(n); + const s = 0.5 * Math.exp(2 * z / 3); + const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); + const newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); + const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); + quickselect(array, k, newLeft, newRight, compare); + } + const t = array[k]; + let i = left; + let j = right; + swap(array, left, k); + if (compare(array[right], t) > 0) swap(array, left, right); + while (i < j) { + swap(array, i, j), ++i, --j; + while (compare(array[i], t) < 0) ++i; + while (compare(array[j], t) > 0) --j; + } + if (compare(array[left], t) === 0) swap(array, left, j);else ++j, swap(array, j, right); + if (j <= k) left = j + 1; + if (k <= j) right = j - 1; + } + return array; +} +function swap(array, i, j) { + const t = array[i]; + array[i] = array[j]; + array[j] = t; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/range.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/range.js new file mode 100644 index 000000000000..8b5c450fc6d0 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/range.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = range; +function range(start, stop, step) { + start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; + var i = -1, + n = Math.max(0, Math.ceil((stop - start) / step)) | 0, + range = new Array(n); + while (++i < n) { + range[i] = start + i * step; + } + return range; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/rank.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/rank.js new file mode 100644 index 000000000000..5f4563bafa82 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/rank.js @@ -0,0 +1,30 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = rank; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _sort = require("./sort.js"); +function rank(values, valueof = _ascending.default) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + let V = Array.from(values); + const R = new Float64Array(V.length); + if (valueof.length !== 2) V = V.map(valueof), valueof = _ascending.default; + const compareIndex = (i, j) => valueof(V[i], V[j]); + let k, r; + values = Uint32Array.from(V, (_, i) => i); + // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123 + values.sort(valueof === _ascending.default ? (i, j) => (0, _sort.ascendingDefined)(V[i], V[j]) : (0, _sort.compareDefined)(compareIndex)); + values.forEach((j, i) => { + const c = compareIndex(j, k === undefined ? j : k); + if (c >= 0) { + if (k === undefined || c > 0) k = j, r = i; + R[j] = r; + } else { + R[j] = NaN; + } + }); + return R; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js new file mode 100644 index 000000000000..caddffcdcccc --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reduce; +function reduce(values, reducer, value) { + if (typeof reducer !== "function") throw new TypeError("reducer is not a function"); + const iterator = values[Symbol.iterator](); + let done, + next, + index = -1; + if (arguments.length < 3) { + ({ + done, + value + } = iterator.next()); + if (done) return; + ++index; + } + while (({ + done, + value: next + } = iterator.next()), !done) { + value = reducer(value, next, ++index, values); + } + return value; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/reverse.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/reverse.js new file mode 100644 index 000000000000..499b0d76cd0a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/reverse.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reverse; +function reverse(values) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + return Array.from(values).reverse(); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/scan.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/scan.js new file mode 100644 index 000000000000..848af02a741a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/scan.js @@ -0,0 +1,12 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = scan; +var _leastIndex = _interopRequireDefault(require("./leastIndex.js")); +function scan(values, compare) { + const index = (0, _leastIndex.default)(values, compare); + return index < 0 ? undefined : index; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/shuffle.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/shuffle.js new file mode 100644 index 000000000000..db8e5fdf1ec4 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/shuffle.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +exports.shuffler = shuffler; +var _default = exports.default = shuffler(Math.random); +function shuffler(random) { + return function shuffle(array, i0 = 0, i1 = array.length) { + let m = i1 - (i0 = +i0); + while (m) { + const i = random() * m-- | 0, + t = array[m + i0]; + array[m + i0] = array[i + i0]; + array[i + i0] = t; + } + return array; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/some.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/some.js new file mode 100644 index 000000000000..3f015780a7e6 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/some.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = some; +function some(values, test) { + if (typeof test !== "function") throw new TypeError("test is not a function"); + let index = -1; + for (const value of values) { + if (test(value, ++index, values)) { + return true; + } + } + return false; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/sort.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/sort.js new file mode 100644 index 000000000000..a1b0b4cedf76 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/sort.js @@ -0,0 +1,45 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ascendingDefined = ascendingDefined; +exports.compareDefined = compareDefined; +exports.default = sort; +var _ascending = _interopRequireDefault(require("./ascending.js")); +var _permute = _interopRequireDefault(require("./permute.js")); +function sort(values, ...F) { + if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); + values = Array.from(values); + let [f] = F; + if (f && f.length !== 2 || F.length > 1) { + const index = Uint32Array.from(values, (d, i) => i); + if (F.length > 1) { + F = F.map(f => values.map(f)); + index.sort((i, j) => { + for (const f of F) { + const c = ascendingDefined(f[i], f[j]); + if (c) return c; + } + }); + } else { + f = values.map(f); + index.sort((i, j) => ascendingDefined(f[i], f[j])); + } + return (0, _permute.default)(values, index); + } + return values.sort(compareDefined(f)); +} +function compareDefined(compare = _ascending.default) { + if (compare === _ascending.default) return ascendingDefined; + if (typeof compare !== "function") throw new TypeError("compare is not a function"); + return (a, b) => { + const x = compare(a, b); + if (x || x === 0) return x; + return (compare(b, b) === 0) - (compare(a, a) === 0); + }; +} +function ascendingDefined(a, b) { + return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/subset.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/subset.js new file mode 100644 index 000000000000..503474b93a83 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/subset.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = subset; +var _superset = _interopRequireDefault(require("./superset.js")); +function subset(values, other) { + return (0, _superset.default)(other, values); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/sum.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/sum.js new file mode 100644 index 000000000000..f2b63b5414fd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/sum.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = sum; +function sum(values, valueof) { + let sum = 0; + if (valueof === undefined) { + for (let value of values) { + if (value = +value) { + sum += value; + } + } + } else { + let index = -1; + for (let value of values) { + if (value = +valueof(value, ++index, values)) { + sum += value; + } + } + } + return sum; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js new file mode 100644 index 000000000000..04de9d7af7d0 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = superset; +function superset(values, other) { + const iterator = values[Symbol.iterator](), + set = new Set(); + for (const o of other) { + const io = intern(o); + if (set.has(io)) continue; + let value, done; + while (({ + value, + done + } = iterator.next())) { + if (done) return false; + const ivalue = intern(value); + set.add(ivalue); + if (Object.is(io, ivalue)) break; + } + } + return true; +} +function intern(value) { + return value !== null && typeof value === "object" ? value.valueOf() : value; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/freedmanDiaconis.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/freedmanDiaconis.js new file mode 100644 index 000000000000..602c8b029151 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/freedmanDiaconis.js @@ -0,0 +1,14 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = thresholdFreedmanDiaconis; +var _count = _interopRequireDefault(require("../count.js")); +var _quantile = _interopRequireDefault(require("../quantile.js")); +function thresholdFreedmanDiaconis(values, min, max) { + const c = (0, _count.default)(values), + d = (0, _quantile.default)(values, 0.75) - (0, _quantile.default)(values, 0.25); + return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/scott.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/scott.js new file mode 100644 index 000000000000..e3ba1ec697f6 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/scott.js @@ -0,0 +1,14 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = thresholdScott; +var _count = _interopRequireDefault(require("../count.js")); +var _deviation = _interopRequireDefault(require("../deviation.js")); +function thresholdScott(values, min, max) { + const c = (0, _count.default)(values), + d = (0, _deviation.default)(values); + return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/sturges.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/sturges.js new file mode 100644 index 000000000000..089dd4017eb4 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/threshold/sturges.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = thresholdSturges; +var _count = _interopRequireDefault(require("../count.js")); +function thresholdSturges(values) { + return Math.max(1, Math.ceil(Math.log((0, _count.default)(values)) / Math.LN2) + 1); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/ticks.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/ticks.js new file mode 100644 index 000000000000..6be2a99df6dd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/ticks.js @@ -0,0 +1,60 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ticks; +exports.tickIncrement = tickIncrement; +exports.tickStep = tickStep; +const e10 = Math.sqrt(50), + e5 = Math.sqrt(10), + e2 = Math.sqrt(2); +function tickSpec(start, stop, count) { + const step = (stop - start) / Math.max(0, count), + power = Math.floor(Math.log10(step)), + error = step / Math.pow(10, power), + factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1; + let i1, i2, inc; + if (power < 0) { + inc = Math.pow(10, -power) / factor; + i1 = Math.round(start * inc); + i2 = Math.round(stop * inc); + if (i1 / inc < start) ++i1; + if (i2 / inc > stop) --i2; + inc = -inc; + } else { + inc = Math.pow(10, power) * factor; + i1 = Math.round(start / inc); + i2 = Math.round(stop / inc); + if (i1 * inc < start) ++i1; + if (i2 * inc > stop) --i2; + } + if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2); + return [i1, i2, inc]; +} +function ticks(start, stop, count) { + stop = +stop, start = +start, count = +count; + if (!(count > 0)) return []; + if (start === stop) return [start]; + const reverse = stop < start, + [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count); + if (!(i2 >= i1)) return []; + const n = i2 - i1 + 1, + ticks = new Array(n); + if (reverse) { + if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc; + } else { + if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc; + } + return ticks; +} +function tickIncrement(start, stop, count) { + stop = +stop, start = +start, count = +count; + return tickSpec(start, stop, count)[2]; +} +function tickStep(start, stop, count) { + stop = +stop, start = +start, count = +count; + const reverse = stop < start, + inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count); + return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/transpose.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/transpose.js new file mode 100644 index 000000000000..894224a67071 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/transpose.js @@ -0,0 +1,20 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = transpose; +var _min = _interopRequireDefault(require("./min.js")); +function transpose(matrix) { + if (!(n = matrix.length)) return []; + for (var i = -1, m = (0, _min.default)(matrix, length), transpose = new Array(m); ++i < m;) { + for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { + row[j] = matrix[j][i]; + } + } + return transpose; +} +function length(d) { + return d.length; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/union.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/union.js new file mode 100644 index 000000000000..3cdb7f396685 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/union.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = union; +var _index = require("../../../lib-vendor/internmap/src/index.js"); +function union(...others) { + const set = new _index.InternSet(); + for (const other of others) { + for (const o of other) { + set.add(o); + } + } + return set; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/variance.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/variance.js new file mode 100644 index 000000000000..4b96c190783c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/variance.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = variance; +function variance(values, valueof) { + let count = 0; + let delta; + let mean = 0; + let sum = 0; + if (valueof === undefined) { + for (let value of values) { + if (value != null && (value = +value) >= value) { + delta = value - mean; + mean += delta / ++count; + sum += delta * (value - mean); + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) { + delta = value - mean; + mean += delta / ++count; + sum += delta * (value - mean); + } + } + } + if (count > 1) return sum / (count - 1); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/zip.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/zip.js new file mode 100644 index 000000000000..f4cd574a273a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/zip.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = zip; +var _transpose = _interopRequireDefault(require("./transpose.js")); +function zip() { + return (0, _transpose.default)(arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-color/LICENSE new file mode 100644 index 000000000000..fbe44bdc9ad5 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2022 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/src/color.js b/packages/x-charts-vendor/lib-vendor/d3-color/src/color.js new file mode 100644 index 000000000000..4d6382da5c4a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/src/color.js @@ -0,0 +1,366 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Color = Color; +exports.Rgb = Rgb; +exports.darker = exports.brighter = void 0; +exports.default = color; +exports.hsl = hsl; +exports.hslConvert = hslConvert; +exports.rgb = rgb; +exports.rgbConvert = rgbConvert; +var _define = _interopRequireWildcard(require("./define.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function Color() {} +var darker = exports.darker = 0.7; +var brighter = exports.brighter = 1 / darker; +var reI = "\\s*([+-]?\\d+)\\s*", + reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", + reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", + reHex = /^#([0-9a-f]{3,8})$/, + reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), + reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), + reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), + reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), + reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), + reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); +var named = { + aliceblue: 0xf0f8ff, + antiquewhite: 0xfaebd7, + aqua: 0x00ffff, + aquamarine: 0x7fffd4, + azure: 0xf0ffff, + beige: 0xf5f5dc, + bisque: 0xffe4c4, + black: 0x000000, + blanchedalmond: 0xffebcd, + blue: 0x0000ff, + blueviolet: 0x8a2be2, + brown: 0xa52a2a, + burlywood: 0xdeb887, + cadetblue: 0x5f9ea0, + chartreuse: 0x7fff00, + chocolate: 0xd2691e, + coral: 0xff7f50, + cornflowerblue: 0x6495ed, + cornsilk: 0xfff8dc, + crimson: 0xdc143c, + cyan: 0x00ffff, + darkblue: 0x00008b, + darkcyan: 0x008b8b, + darkgoldenrod: 0xb8860b, + darkgray: 0xa9a9a9, + darkgreen: 0x006400, + darkgrey: 0xa9a9a9, + darkkhaki: 0xbdb76b, + darkmagenta: 0x8b008b, + darkolivegreen: 0x556b2f, + darkorange: 0xff8c00, + darkorchid: 0x9932cc, + darkred: 0x8b0000, + darksalmon: 0xe9967a, + darkseagreen: 0x8fbc8f, + darkslateblue: 0x483d8b, + darkslategray: 0x2f4f4f, + darkslategrey: 0x2f4f4f, + darkturquoise: 0x00ced1, + darkviolet: 0x9400d3, + deeppink: 0xff1493, + deepskyblue: 0x00bfff, + dimgray: 0x696969, + dimgrey: 0x696969, + dodgerblue: 0x1e90ff, + firebrick: 0xb22222, + floralwhite: 0xfffaf0, + forestgreen: 0x228b22, + fuchsia: 0xff00ff, + gainsboro: 0xdcdcdc, + ghostwhite: 0xf8f8ff, + gold: 0xffd700, + goldenrod: 0xdaa520, + gray: 0x808080, + green: 0x008000, + greenyellow: 0xadff2f, + grey: 0x808080, + honeydew: 0xf0fff0, + hotpink: 0xff69b4, + indianred: 0xcd5c5c, + indigo: 0x4b0082, + ivory: 0xfffff0, + khaki: 0xf0e68c, + lavender: 0xe6e6fa, + lavenderblush: 0xfff0f5, + lawngreen: 0x7cfc00, + lemonchiffon: 0xfffacd, + lightblue: 0xadd8e6, + lightcoral: 0xf08080, + lightcyan: 0xe0ffff, + lightgoldenrodyellow: 0xfafad2, + lightgray: 0xd3d3d3, + lightgreen: 0x90ee90, + lightgrey: 0xd3d3d3, + lightpink: 0xffb6c1, + lightsalmon: 0xffa07a, + lightseagreen: 0x20b2aa, + lightskyblue: 0x87cefa, + lightslategray: 0x778899, + lightslategrey: 0x778899, + lightsteelblue: 0xb0c4de, + lightyellow: 0xffffe0, + lime: 0x00ff00, + limegreen: 0x32cd32, + linen: 0xfaf0e6, + magenta: 0xff00ff, + maroon: 0x800000, + mediumaquamarine: 0x66cdaa, + mediumblue: 0x0000cd, + mediumorchid: 0xba55d3, + mediumpurple: 0x9370db, + mediumseagreen: 0x3cb371, + mediumslateblue: 0x7b68ee, + mediumspringgreen: 0x00fa9a, + mediumturquoise: 0x48d1cc, + mediumvioletred: 0xc71585, + midnightblue: 0x191970, + mintcream: 0xf5fffa, + mistyrose: 0xffe4e1, + moccasin: 0xffe4b5, + navajowhite: 0xffdead, + navy: 0x000080, + oldlace: 0xfdf5e6, + olive: 0x808000, + olivedrab: 0x6b8e23, + orange: 0xffa500, + orangered: 0xff4500, + orchid: 0xda70d6, + palegoldenrod: 0xeee8aa, + palegreen: 0x98fb98, + paleturquoise: 0xafeeee, + palevioletred: 0xdb7093, + papayawhip: 0xffefd5, + peachpuff: 0xffdab9, + peru: 0xcd853f, + pink: 0xffc0cb, + plum: 0xdda0dd, + powderblue: 0xb0e0e6, + purple: 0x800080, + rebeccapurple: 0x663399, + red: 0xff0000, + rosybrown: 0xbc8f8f, + royalblue: 0x4169e1, + saddlebrown: 0x8b4513, + salmon: 0xfa8072, + sandybrown: 0xf4a460, + seagreen: 0x2e8b57, + seashell: 0xfff5ee, + sienna: 0xa0522d, + silver: 0xc0c0c0, + skyblue: 0x87ceeb, + slateblue: 0x6a5acd, + slategray: 0x708090, + slategrey: 0x708090, + snow: 0xfffafa, + springgreen: 0x00ff7f, + steelblue: 0x4682b4, + tan: 0xd2b48c, + teal: 0x008080, + thistle: 0xd8bfd8, + tomato: 0xff6347, + turquoise: 0x40e0d0, + violet: 0xee82ee, + wheat: 0xf5deb3, + white: 0xffffff, + whitesmoke: 0xf5f5f5, + yellow: 0xffff00, + yellowgreen: 0x9acd32 +}; +(0, _define.default)(Color, color, { + copy(channels) { + return Object.assign(new this.constructor(), this, channels); + }, + displayable() { + return this.rgb().displayable(); + }, + hex: color_formatHex, + // Deprecated! Use color.formatHex. + formatHex: color_formatHex, + formatHex8: color_formatHex8, + formatHsl: color_formatHsl, + formatRgb: color_formatRgb, + toString: color_formatRgb +}); +function color_formatHex() { + return this.rgb().formatHex(); +} +function color_formatHex8() { + return this.rgb().formatHex8(); +} +function color_formatHsl() { + return hslConvert(this).formatHsl(); +} +function color_formatRgb() { + return this.rgb().formatRgb(); +} +function color(format) { + var m, l; + format = (format + "").trim().toLowerCase(); + return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 + : l === 3 ? new Rgb(m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, (m & 0xf) << 4 | m & 0xf, 1) // #f00 + : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 + : l === 4 ? rgba(m >> 12 & 0xf | m >> 8 & 0xf0, m >> 8 & 0xf | m >> 4 & 0xf0, m >> 4 & 0xf | m & 0xf0, ((m & 0xf) << 4 | m & 0xf) / 0xff) // #f000 + : null // invalid hex + ) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) + : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) + : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) + : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) + : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) + : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) + : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins + : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null; +} +function rgbn(n) { + return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); +} +function rgba(r, g, b, a) { + if (a <= 0) r = g = b = NaN; + return new Rgb(r, g, b, a); +} +function rgbConvert(o) { + if (!(o instanceof Color)) o = color(o); + if (!o) return new Rgb(); + o = o.rgb(); + return new Rgb(o.r, o.g, o.b, o.opacity); +} +function rgb(r, g, b, opacity) { + return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); +} +function Rgb(r, g, b, opacity) { + this.r = +r; + this.g = +g; + this.b = +b; + this.opacity = +opacity; +} +(0, _define.default)(Rgb, rgb, (0, _define.extend)(Color, { + brighter(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + darker(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + rgb() { + return this; + }, + clamp() { + return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); + }, + displayable() { + return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; + }, + hex: rgb_formatHex, + // Deprecated! Use color.formatHex. + formatHex: rgb_formatHex, + formatHex8: rgb_formatHex8, + formatRgb: rgb_formatRgb, + toString: rgb_formatRgb +})); +function rgb_formatHex() { + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; +} +function rgb_formatHex8() { + return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; +} +function rgb_formatRgb() { + const a = clampa(this.opacity); + return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; +} +function clampa(opacity) { + return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); +} +function clampi(value) { + return Math.max(0, Math.min(255, Math.round(value) || 0)); +} +function hex(value) { + value = clampi(value); + return (value < 16 ? "0" : "") + value.toString(16); +} +function hsla(h, s, l, a) { + if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN; + return new Hsl(h, s, l, a); +} +function hslConvert(o) { + if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Color)) o = color(o); + if (!o) return new Hsl(); + if (o instanceof Hsl) return o; + o = o.rgb(); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + h = NaN, + s = max - min, + l = (max + min) / 2; + if (s) { + if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4; + s /= l < 0.5 ? max + min : 2 - max - min; + h *= 60; + } else { + s = l > 0 && l < 1 ? 0 : h; + } + return new Hsl(h, s, l, o.opacity); +} +function hsl(h, s, l, opacity) { + return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); +} +function Hsl(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; +} +(0, _define.default)(Hsl, hsl, (0, _define.extend)(Color, { + brighter(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + darker(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + rgb() { + var h = this.h % 360 + (this.h < 0) * 360, + s = isNaN(h) || isNaN(this.s) ? 0 : this.s, + l = this.l, + m2 = l + (l < 0.5 ? l : 1 - l) * s, + m1 = 2 * l - m2; + return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity); + }, + clamp() { + return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); + }, + displayable() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; + }, + formatHsl() { + const a = clampa(this.opacity); + return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; + } +})); +function clamph(value) { + value = (value || 0) % 360; + return value < 0 ? value + 360 : value; +} +function clampt(value) { + return Math.max(0, Math.min(1, value || 0)); +} + +/* From FvD 13.37, CSS Color Module Level 3 */ +function hsl2rgb(h, m1, m2) { + return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/src/cubehelix.js b/packages/x-charts-vendor/lib-vendor/d3-color/src/cubehelix.js new file mode 100644 index 000000000000..9dfc1b572c87 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/src/cubehelix.js @@ -0,0 +1,61 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Cubehelix = Cubehelix; +exports.default = cubehelix; +var _define = _interopRequireWildcard(require("./define.js")); +var _color = require("./color.js"); +var _math = require("./math.js"); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +var A = -0.14861, + B = +1.78277, + C = -0.29227, + D = -0.90649, + E = +1.97294, + ED = E * D, + EB = E * B, + BC_DA = B * C - D * A; +function cubehelixConvert(o) { + if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); + if (!(o instanceof _color.Rgb)) o = (0, _color.rgbConvert)(o); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), + bl = b - l, + k = (E * (g - l) - C * bl) / D, + s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), + // NaN if l=0 or l=1 + h = s ? Math.atan2(k, bl) * _math.degrees - 120 : NaN; + return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); +} +function cubehelix(h, s, l, opacity) { + return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); +} +function Cubehelix(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; +} +(0, _define.default)(Cubehelix, cubehelix, (0, _define.extend)(_color.Color, { + brighter(k) { + k = k == null ? _color.brighter : Math.pow(_color.brighter, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + darker(k) { + k = k == null ? _color.darker : Math.pow(_color.darker, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + rgb() { + var h = isNaN(this.h) ? 0 : (this.h + 120) * _math.radians, + l = +this.l, + a = isNaN(this.s) ? 0 : this.s * l * (1 - l), + cosh = Math.cos(h), + sinh = Math.sin(h); + return new _color.Rgb(255 * (l + a * (A * cosh + B * sinh)), 255 * (l + a * (C * cosh + D * sinh)), 255 * (l + a * (E * cosh)), this.opacity); + } +})); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/src/define.js b/packages/x-charts-vendor/lib-vendor/d3-color/src/define.js new file mode 100644 index 000000000000..880e52e68a7f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/src/define.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.extend = extend; +function _default(constructor, factory, prototype) { + constructor.prototype = factory.prototype = prototype; + prototype.constructor = constructor; +} +function extend(parent, definition) { + var prototype = Object.create(parent.prototype); + for (var key in definition) prototype[key] = definition[key]; + return prototype; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-color/src/index.js new file mode 100644 index 000000000000..e148d8cdb4d7 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/src/index.js @@ -0,0 +1,59 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "color", { + enumerable: true, + get: function () { + return _color.default; + } +}); +Object.defineProperty(exports, "cubehelix", { + enumerable: true, + get: function () { + return _cubehelix.default; + } +}); +Object.defineProperty(exports, "gray", { + enumerable: true, + get: function () { + return _lab.gray; + } +}); +Object.defineProperty(exports, "hcl", { + enumerable: true, + get: function () { + return _lab.hcl; + } +}); +Object.defineProperty(exports, "hsl", { + enumerable: true, + get: function () { + return _color.hsl; + } +}); +Object.defineProperty(exports, "lab", { + enumerable: true, + get: function () { + return _lab.default; + } +}); +Object.defineProperty(exports, "lch", { + enumerable: true, + get: function () { + return _lab.lch; + } +}); +Object.defineProperty(exports, "rgb", { + enumerable: true, + get: function () { + return _color.rgb; + } +}); +var _color = _interopRequireWildcard(require("./color.js")); +var _lab = _interopRequireWildcard(require("./lab.js")); +var _cubehelix = _interopRequireDefault(require("./cubehelix.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/src/lab.js b/packages/x-charts-vendor/lib-vendor/d3-color/src/lab.js new file mode 100644 index 000000000000..7b50de62016a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/src/lab.js @@ -0,0 +1,117 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Hcl = Hcl; +exports.Lab = Lab; +exports.default = lab; +exports.gray = gray; +exports.hcl = hcl; +exports.lch = lch; +var _define = _interopRequireWildcard(require("./define.js")); +var _color = require("./color.js"); +var _math = require("./math.js"); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +// https://observablehq.com/@mbostock/lab-and-rgb +const K = 18, + Xn = 0.96422, + Yn = 1, + Zn = 0.82521, + t0 = 4 / 29, + t1 = 6 / 29, + t2 = 3 * t1 * t1, + t3 = t1 * t1 * t1; +function labConvert(o) { + if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); + if (o instanceof Hcl) return hcl2lab(o); + if (!(o instanceof _color.Rgb)) o = (0, _color.rgbConvert)(o); + var r = rgb2lrgb(o.r), + g = rgb2lrgb(o.g), + b = rgb2lrgb(o.b), + y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), + x, + z; + if (r === g && g === b) x = z = y;else { + x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); + z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); + } + return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); +} +function gray(l, opacity) { + return new Lab(l, 0, 0, opacity == null ? 1 : opacity); +} +function lab(l, a, b, opacity) { + return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); +} +function Lab(l, a, b, opacity) { + this.l = +l; + this.a = +a; + this.b = +b; + this.opacity = +opacity; +} +(0, _define.default)(Lab, lab, (0, _define.extend)(_color.Color, { + brighter(k) { + return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + darker(k) { + return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + rgb() { + var y = (this.l + 16) / 116, + x = isNaN(this.a) ? y : y + this.a / 500, + z = isNaN(this.b) ? y : y - this.b / 200; + x = Xn * lab2xyz(x); + y = Yn * lab2xyz(y); + z = Zn * lab2xyz(z); + return new _color.Rgb(lrgb2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), lrgb2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z), this.opacity); + } +})); +function xyz2lab(t) { + return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; +} +function lab2xyz(t) { + return t > t1 ? t * t * t : t2 * (t - t0); +} +function lrgb2rgb(x) { + return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); +} +function rgb2lrgb(x) { + return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); +} +function hclConvert(o) { + if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); + if (!(o instanceof Lab)) o = labConvert(o); + if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); + var h = Math.atan2(o.b, o.a) * _math.degrees; + return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); +} +function lch(l, c, h, opacity) { + return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); +} +function hcl(h, c, l, opacity) { + return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); +} +function Hcl(h, c, l, opacity) { + this.h = +h; + this.c = +c; + this.l = +l; + this.opacity = +opacity; +} +function hcl2lab(o) { + if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); + var h = o.h * _math.radians; + return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); +} +(0, _define.default)(Hcl, hcl, (0, _define.extend)(_color.Color, { + brighter(k) { + return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); + }, + darker(k) { + return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); + }, + rgb() { + return hcl2lab(this).rgb(); + } +})); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-color/src/math.js b/packages/x-charts-vendor/lib-vendor/d3-color/src/math.js new file mode 100644 index 000000000000..3a643dd29dc1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-color/src/math.js @@ -0,0 +1,8 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.radians = exports.degrees = void 0; +const radians = exports.radians = Math.PI / 180; +const degrees = exports.degrees = 180 / Math.PI; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-delaunay/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-delaunay/LICENSE new file mode 100644 index 000000000000..3a6ada6240b2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-delaunay/LICENSE @@ -0,0 +1,14 @@ +Copyright 2018-2021 Observable, Inc. +Copyright 2021 Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/delaunay.js b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/delaunay.js new file mode 100644 index 000000000000..466c82bbbd4b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/delaunay.js @@ -0,0 +1,282 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _index = _interopRequireDefault(require("../../../lib-vendor/delaunator/index.js")); +var _path = _interopRequireDefault(require("./path.js")); +var _polygon = _interopRequireDefault(require("./polygon.js")); +var _voronoi = _interopRequireDefault(require("./voronoi.js")); +const tau = 2 * Math.PI, + pow = Math.pow; +function pointX(p) { + return p[0]; +} +function pointY(p) { + return p[1]; +} + +// A triangulation is collinear if all its triangles have a non-null area +function collinear(d) { + const { + triangles, + coords + } = d; + for (let i = 0; i < triangles.length; i += 3) { + const a = 2 * triangles[i], + b = 2 * triangles[i + 1], + c = 2 * triangles[i + 2], + cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]); + if (cross > 1e-10) return false; + } + return true; +} +function jitter(x, y, r) { + return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r]; +} +class Delaunay { + static from(points, fx = pointX, fy = pointY, that) { + return new Delaunay("length" in points ? flatArray(points, fx, fy, that) : Float64Array.from(flatIterable(points, fx, fy, that))); + } + constructor(points) { + this._delaunator = new _index.default(points); + this.inedges = new Int32Array(points.length / 2); + this._hullIndex = new Int32Array(points.length / 2); + this.points = this._delaunator.coords; + this._init(); + } + update() { + this._delaunator.update(); + this._init(); + return this; + } + _init() { + const d = this._delaunator, + points = this.points; + + // check for collinear + if (d.hull && d.hull.length > 2 && collinear(d)) { + this.collinear = Int32Array.from({ + length: points.length / 2 + }, (_, i) => i).sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors + const e = this.collinear[0], + f = this.collinear[this.collinear.length - 1], + bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]], + r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]); + for (let i = 0, n = points.length / 2; i < n; ++i) { + const p = jitter(points[2 * i], points[2 * i + 1], r); + points[2 * i] = p[0]; + points[2 * i + 1] = p[1]; + } + this._delaunator = new _index.default(points); + } else { + delete this.collinear; + } + const halfedges = this.halfedges = this._delaunator.halfedges; + const hull = this.hull = this._delaunator.hull; + const triangles = this.triangles = this._delaunator.triangles; + const inedges = this.inedges.fill(-1); + const hullIndex = this._hullIndex.fill(-1); + + // Compute an index from each point to an (arbitrary) incoming halfedge + // Used to give the first neighbor of each point; for this reason, + // on the hull we give priority to exterior halfedges + for (let e = 0, n = halfedges.length; e < n; ++e) { + const p = triangles[e % 3 === 2 ? e - 2 : e + 1]; + if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e; + } + for (let i = 0, n = hull.length; i < n; ++i) { + hullIndex[hull[i]] = i; + } + + // degenerate case: 1 or 2 (distinct) points + if (hull.length <= 2 && hull.length > 0) { + this.triangles = new Int32Array(3).fill(-1); + this.halfedges = new Int32Array(3).fill(-1); + this.triangles[0] = hull[0]; + inedges[hull[0]] = 1; + if (hull.length === 2) { + inedges[hull[1]] = 0; + this.triangles[1] = hull[1]; + this.triangles[2] = hull[1]; + } + } + } + voronoi(bounds) { + return new _voronoi.default(this, bounds); + } + *neighbors(i) { + const { + inedges, + hull, + _hullIndex, + halfedges, + triangles, + collinear + } = this; + + // degenerate case with several collinear points + if (collinear) { + const l = collinear.indexOf(i); + if (l > 0) yield collinear[l - 1]; + if (l < collinear.length - 1) yield collinear[l + 1]; + return; + } + const e0 = inedges[i]; + if (e0 === -1) return; // coincident point + let e = e0, + p0 = -1; + do { + yield p0 = triangles[e]; + e = e % 3 === 2 ? e - 2 : e + 1; + if (triangles[e] !== i) return; // bad triangulation + e = halfedges[e]; + if (e === -1) { + const p = hull[(_hullIndex[i] + 1) % hull.length]; + if (p !== p0) yield p; + return; + } + } while (e !== e0); + } + find(x, y, i = 0) { + if ((x = +x, x !== x) || (y = +y, y !== y)) return -1; + const i0 = i; + let c; + while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c; + return c; + } + _step(i, x, y) { + const { + inedges, + hull, + _hullIndex, + halfedges, + triangles, + points + } = this; + if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1); + let c = i; + let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2); + const e0 = inedges[i]; + let e = e0; + do { + let t = triangles[e]; + const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2); + if (dt < dc) dc = dt, c = t; + e = e % 3 === 2 ? e - 2 : e + 1; + if (triangles[e] !== i) break; // bad triangulation + e = halfedges[e]; + if (e === -1) { + e = hull[(_hullIndex[i] + 1) % hull.length]; + if (e !== t) { + if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e; + } + break; + } + } while (e !== e0); + return c; + } + render(context) { + const buffer = context == null ? context = new _path.default() : undefined; + const { + points, + halfedges, + triangles + } = this; + for (let i = 0, n = halfedges.length; i < n; ++i) { + const j = halfedges[i]; + if (j < i) continue; + const ti = triangles[i] * 2; + const tj = triangles[j] * 2; + context.moveTo(points[ti], points[ti + 1]); + context.lineTo(points[tj], points[tj + 1]); + } + this.renderHull(context); + return buffer && buffer.value(); + } + renderPoints(context, r) { + if (r === undefined && (!context || typeof context.moveTo !== "function")) r = context, context = null; + r = r == undefined ? 2 : +r; + const buffer = context == null ? context = new _path.default() : undefined; + const { + points + } = this; + for (let i = 0, n = points.length; i < n; i += 2) { + const x = points[i], + y = points[i + 1]; + context.moveTo(x + r, y); + context.arc(x, y, r, 0, tau); + } + return buffer && buffer.value(); + } + renderHull(context) { + const buffer = context == null ? context = new _path.default() : undefined; + const { + hull, + points + } = this; + const h = hull[0] * 2, + n = hull.length; + context.moveTo(points[h], points[h + 1]); + for (let i = 1; i < n; ++i) { + const h = 2 * hull[i]; + context.lineTo(points[h], points[h + 1]); + } + context.closePath(); + return buffer && buffer.value(); + } + hullPolygon() { + const polygon = new _polygon.default(); + this.renderHull(polygon); + return polygon.value(); + } + renderTriangle(i, context) { + const buffer = context == null ? context = new _path.default() : undefined; + const { + points, + triangles + } = this; + const t0 = triangles[i *= 3] * 2; + const t1 = triangles[i + 1] * 2; + const t2 = triangles[i + 2] * 2; + context.moveTo(points[t0], points[t0 + 1]); + context.lineTo(points[t1], points[t1 + 1]); + context.lineTo(points[t2], points[t2 + 1]); + context.closePath(); + return buffer && buffer.value(); + } + *trianglePolygons() { + const { + triangles + } = this; + for (let i = 0, n = triangles.length / 3; i < n; ++i) { + yield this.trianglePolygon(i); + } + } + trianglePolygon(i) { + const polygon = new _polygon.default(); + this.renderTriangle(i, polygon); + return polygon.value(); + } +} +exports.default = Delaunay; +function flatArray(points, fx, fy, that) { + const n = points.length; + const array = new Float64Array(n * 2); + for (let i = 0; i < n; ++i) { + const p = points[i]; + array[i * 2] = fx.call(that, p, i, points); + array[i * 2 + 1] = fy.call(that, p, i, points); + } + return array; +} +function* flatIterable(points, fx, fy, that) { + let i = 0; + for (const p of points) { + yield fx.call(that, p, i, points); + yield fy.call(that, p, i, points); + ++i; + } +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/index.js new file mode 100644 index 000000000000..37fece5817b8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/index.js @@ -0,0 +1,20 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Delaunay", { + enumerable: true, + get: function () { + return _delaunay.default; + } +}); +Object.defineProperty(exports, "Voronoi", { + enumerable: true, + get: function () { + return _voronoi.default; + } +}); +var _delaunay = _interopRequireDefault(require("./delaunay.js")); +var _voronoi = _interopRequireDefault(require("./voronoi.js")); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/path.js b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/path.js new file mode 100644 index 000000000000..2c3e8689a7e8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/path.js @@ -0,0 +1,43 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +const epsilon = 1e-6; +class Path { + constructor() { + this._x0 = this._y0 = + // start of current subpath + this._x1 = this._y1 = null; // end of current subpath + this._ = ""; + } + moveTo(x, y) { + this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`; + } + closePath() { + if (this._x1 !== null) { + this._x1 = this._x0, this._y1 = this._y0; + this._ += "Z"; + } + } + lineTo(x, y) { + this._ += `L${this._x1 = +x},${this._y1 = +y}`; + } + arc(x, y, r) { + x = +x, y = +y, r = +r; + const x0 = x + r; + const y0 = y; + if (r < 0) throw new Error("negative radius"); + if (this._x1 === null) this._ += `M${x0},${y0}`;else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += "L" + x0 + "," + y0; + if (!r) return; + this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`; + } + rect(x, y, w, h) { + this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`; + } + value() { + return this._ || null; + } +} +exports.default = Path; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/polygon.js b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/polygon.js new file mode 100644 index 000000000000..7562a1a9908f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/polygon.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +class Polygon { + constructor() { + this._ = []; + } + moveTo(x, y) { + this._.push([x, y]); + } + closePath() { + this._.push(this._[0].slice()); + } + lineTo(x, y) { + this._.push([x, y]); + } + value() { + return this._.length ? this._ : null; + } +} +exports.default = Polygon; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/voronoi.js b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/voronoi.js new file mode 100644 index 000000000000..19d357b6a06d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-delaunay/src/voronoi.js @@ -0,0 +1,390 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _path = _interopRequireDefault(require("./path.js")); +var _polygon = _interopRequireDefault(require("./polygon.js")); +class Voronoi { + constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) { + if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error("invalid bounds"); + this.delaunay = delaunay; + this._circumcenters = new Float64Array(delaunay.points.length * 2); + this.vectors = new Float64Array(delaunay.points.length * 2); + this.xmax = xmax, this.xmin = xmin; + this.ymax = ymax, this.ymin = ymin; + this._init(); + } + update() { + this.delaunay.update(); + this._init(); + return this; + } + _init() { + const { + delaunay: { + points, + hull, + triangles + }, + vectors + } = this; + let bx, by; // lazily computed barycenter of the hull + + // Compute circumcenters. + const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2); + for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) { + const t1 = triangles[i] * 2; + const t2 = triangles[i + 1] * 2; + const t3 = triangles[i + 2] * 2; + const x1 = points[t1]; + const y1 = points[t1 + 1]; + const x2 = points[t2]; + const y2 = points[t2 + 1]; + const x3 = points[t3]; + const y3 = points[t3 + 1]; + const dx = x2 - x1; + const dy = y2 - y1; + const ex = x3 - x1; + const ey = y3 - y1; + const ab = (dx * ey - dy * ex) * 2; + if (Math.abs(ab) < 1e-9) { + // For a degenerate triangle, the circumcenter is at the infinity, in a + // direction orthogonal to the halfedge and away from the “center” of + // the diagram , defined as the hull’s barycenter. + if (bx === undefined) { + bx = by = 0; + for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1]; + bx /= hull.length, by /= hull.length; + } + const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex); + x = (x1 + x3) / 2 - a * ey; + y = (y1 + y3) / 2 + a * ex; + } else { + const d = 1 / ab; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; + x = x1 + (ey * bl - dy * cl) * d; + y = y1 + (dx * cl - ex * bl) * d; + } + circumcenters[j] = x; + circumcenters[j + 1] = y; + } + + // Compute exterior cell rays. + let h = hull[hull.length - 1]; + let p0, + p1 = h * 4; + let x0, + x1 = points[2 * h]; + let y0, + y1 = points[2 * h + 1]; + vectors.fill(0); + for (let i = 0; i < hull.length; ++i) { + h = hull[i]; + p0 = p1, x0 = x1, y0 = y1; + p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1]; + vectors[p0 + 2] = vectors[p1] = y0 - y1; + vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0; + } + } + render(context) { + const buffer = context == null ? context = new _path.default() : undefined; + const { + delaunay: { + halfedges, + inedges, + hull + }, + circumcenters, + vectors + } = this; + if (hull.length <= 1) return null; + for (let i = 0, n = halfedges.length; i < n; ++i) { + const j = halfedges[i]; + if (j < i) continue; + const ti = Math.floor(i / 3) * 2; + const tj = Math.floor(j / 3) * 2; + const xi = circumcenters[ti]; + const yi = circumcenters[ti + 1]; + const xj = circumcenters[tj]; + const yj = circumcenters[tj + 1]; + this._renderSegment(xi, yi, xj, yj, context); + } + let h0, + h1 = hull[hull.length - 1]; + for (let i = 0; i < hull.length; ++i) { + h0 = h1, h1 = hull[i]; + const t = Math.floor(inedges[h1] / 3) * 2; + const x = circumcenters[t]; + const y = circumcenters[t + 1]; + const v = h0 * 4; + const p = this._project(x, y, vectors[v + 2], vectors[v + 3]); + if (p) this._renderSegment(x, y, p[0], p[1], context); + } + return buffer && buffer.value(); + } + renderBounds(context) { + const buffer = context == null ? context = new _path.default() : undefined; + context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin); + return buffer && buffer.value(); + } + renderCell(i, context) { + const buffer = context == null ? context = new _path.default() : undefined; + const points = this._clip(i); + if (points === null || !points.length) return; + context.moveTo(points[0], points[1]); + let n = points.length; + while (points[0] === points[n - 2] && points[1] === points[n - 1] && n > 1) n -= 2; + for (let i = 2; i < n; i += 2) { + if (points[i] !== points[i - 2] || points[i + 1] !== points[i - 1]) context.lineTo(points[i], points[i + 1]); + } + context.closePath(); + return buffer && buffer.value(); + } + *cellPolygons() { + const { + delaunay: { + points + } + } = this; + for (let i = 0, n = points.length / 2; i < n; ++i) { + const cell = this.cellPolygon(i); + if (cell) cell.index = i, yield cell; + } + } + cellPolygon(i) { + const polygon = new _polygon.default(); + this.renderCell(i, polygon); + return polygon.value(); + } + _renderSegment(x0, y0, x1, y1, context) { + let S; + const c0 = this._regioncode(x0, y0); + const c1 = this._regioncode(x1, y1); + if (c0 === 0 && c1 === 0) { + context.moveTo(x0, y0); + context.lineTo(x1, y1); + } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) { + context.moveTo(S[0], S[1]); + context.lineTo(S[2], S[3]); + } + } + contains(i, x, y) { + if ((x = +x, x !== x) || (y = +y, y !== y)) return false; + return this.delaunay._step(i, x, y) === i; + } + *neighbors(i) { + const ci = this._clip(i); + if (ci) for (const j of this.delaunay.neighbors(i)) { + const cj = this._clip(j); + // find the common edge + if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) { + for (let aj = 0, lj = cj.length; aj < lj; aj += 2) { + if (ci[ai] === cj[aj] && ci[ai + 1] === cj[aj + 1] && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj] && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) { + yield j; + break loop; + } + } + } + } + } + _cell(i) { + const { + circumcenters, + delaunay: { + inedges, + halfedges, + triangles + } + } = this; + const e0 = inedges[i]; + if (e0 === -1) return null; // coincident point + const points = []; + let e = e0; + do { + const t = Math.floor(e / 3); + points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]); + e = e % 3 === 2 ? e - 2 : e + 1; + if (triangles[e] !== i) break; // bad triangulation + e = halfedges[e]; + } while (e !== e0 && e !== -1); + return points; + } + _clip(i) { + // degenerate case (1 valid point: return the box) + if (i === 0 && this.delaunay.hull.length === 1) { + return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin]; + } + const points = this._cell(i); + if (points === null) return null; + const { + vectors: V + } = this; + const v = i * 4; + return this._simplify(V[v] || V[v + 1] ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3]) : this._clipFinite(i, points)); + } + _clipFinite(i, points) { + const n = points.length; + let P = null; + let x0, + y0, + x1 = points[n - 2], + y1 = points[n - 1]; + let c0, + c1 = this._regioncode(x1, y1); + let e0, + e1 = 0; + for (let j = 0; j < n; j += 2) { + x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1]; + c0 = c1, c1 = this._regioncode(x1, y1); + if (c0 === 0 && c1 === 0) { + e0 = e1, e1 = 0; + if (P) P.push(x1, y1);else P = [x1, y1]; + } else { + let S, sx0, sy0, sx1, sy1; + if (c0 === 0) { + if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue; + [sx0, sy0, sx1, sy1] = S; + } else { + if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue; + [sx1, sy1, sx0, sy0] = S; + e0 = e1, e1 = this._edgecode(sx0, sy0); + if (e0 && e1) this._edge(i, e0, e1, P, P.length); + if (P) P.push(sx0, sy0);else P = [sx0, sy0]; + } + e0 = e1, e1 = this._edgecode(sx1, sy1); + if (e0 && e1) this._edge(i, e0, e1, P, P.length); + if (P) P.push(sx1, sy1);else P = [sx1, sy1]; + } + } + if (P) { + e0 = e1, e1 = this._edgecode(P[0], P[1]); + if (e0 && e1) this._edge(i, e0, e1, P, P.length); + } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) { + return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin]; + } + return P; + } + _clipSegment(x0, y0, x1, y1, c0, c1) { + // for more robustness, always consider the segment in the same order + const flip = c0 < c1; + if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0]; + while (true) { + if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1]; + if (c0 & c1) return null; + let x, + y, + c = c0 || c1; + if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin; + if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);else x1 = x, y1 = y, c1 = this._regioncode(x1, y1); + } + } + _clipInfinite(i, points, vx0, vy0, vxn, vyn) { + let P = Array.from(points), + p; + if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]); + if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]); + if (P = this._clipFinite(i, P)) { + for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) { + c0 = c1, c1 = this._edgecode(P[j], P[j + 1]); + if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length; + } + } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) { + P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax]; + } + return P; + } + _edge(i, e0, e1, P, j) { + while (e0 !== e1) { + let x, y; + switch (e0) { + case 0b0101: + e0 = 0b0100; + continue; + // top-left + case 0b0100: + e0 = 0b0110, x = this.xmax, y = this.ymin; + break; + // top + case 0b0110: + e0 = 0b0010; + continue; + // top-right + case 0b0010: + e0 = 0b1010, x = this.xmax, y = this.ymax; + break; + // right + case 0b1010: + e0 = 0b1000; + continue; + // bottom-right + case 0b1000: + e0 = 0b1001, x = this.xmin, y = this.ymax; + break; + // bottom + case 0b1001: + e0 = 0b0001; + continue; + // bottom-left + case 0b0001: + e0 = 0b0101, x = this.xmin, y = this.ymin; + break; + // left + } + // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are + // undefined, the conditional statement will be executed. + if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) { + P.splice(j, 0, x, y), j += 2; + } + } + return j; + } + _project(x0, y0, vx, vy) { + let t = Infinity, + c, + x, + y; + if (vy < 0) { + // top + if (y0 <= this.ymin) return null; + if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx; + } else if (vy > 0) { + // bottom + if (y0 >= this.ymax) return null; + if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx; + } + if (vx > 0) { + // right + if (x0 >= this.xmax) return null; + if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy; + } else if (vx < 0) { + // left + if (x0 <= this.xmin) return null; + if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy; + } + return [x, y]; + } + _edgecode(x, y) { + return (x === this.xmin ? 0b0001 : x === this.xmax ? 0b0010 : 0b0000) | (y === this.ymin ? 0b0100 : y === this.ymax ? 0b1000 : 0b0000); + } + _regioncode(x, y) { + return (x < this.xmin ? 0b0001 : x > this.xmax ? 0b0010 : 0b0000) | (y < this.ymin ? 0b0100 : y > this.ymax ? 0b1000 : 0b0000); + } + _simplify(P) { + if (P && P.length > 4) { + for (let i = 0; i < P.length; i += 2) { + const j = (i + 2) % P.length, + k = (i + 4) % P.length; + if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) { + P.splice(j, 2), i -= 2; + } + } + if (!P.length) P = null; + } + return P; + } +} +exports.default = Voronoi; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-format/LICENSE new file mode 100644 index 000000000000..b0145150fd35 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2021 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/defaultLocale.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/defaultLocale.js new file mode 100644 index 000000000000..8728c449a324 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/defaultLocale.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = defaultLocale; +exports.formatPrefix = exports.format = void 0; +var _locale = _interopRequireDefault(require("./locale.js")); +var locale; +var format; +var formatPrefix; +defaultLocale({ + thousands: ",", + grouping: [3], + currency: ["$", ""] +}); +function defaultLocale(definition) { + locale = (0, _locale.default)(definition); + exports.format = format = locale.format; + exports.formatPrefix = formatPrefix = locale.formatPrefix; + return locale; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/exponent.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/exponent.js new file mode 100644 index 000000000000..4fd129d25768 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/exponent.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _formatDecimal = require("./formatDecimal.js"); +function _default(x) { + return x = (0, _formatDecimal.formatDecimalParts)(Math.abs(x)), x ? x[1] : NaN; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatDecimal.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatDecimal.js new file mode 100644 index 000000000000..7319a84ad1c1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatDecimal.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.formatDecimalParts = formatDecimalParts; +function _default(x) { + return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString("en").replace(/,/g, "") : x.toString(10); +} + +// Computes the decimal coefficient and exponent of the specified number x with +// significant digits p, where x is positive and p is in [1, 21] or undefined. +// For example, formatDecimalParts(1.23) returns ["123", 0]. +function formatDecimalParts(x, p) { + if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity + var i, + coefficient = x.slice(0, i); + + // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ + // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). + return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +x.slice(i + 1)]; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatGroup.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatGroup.js new file mode 100644 index 000000000000..f07f4c69b555 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatGroup.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(grouping, thousands) { + return function (value, width) { + var i = value.length, + t = [], + j = 0, + g = grouping[0], + length = 0; + while (i > 0 && g > 0) { + if (length + g + 1 > width) g = Math.max(1, width - length); + t.push(value.substring(i -= g, i + g)); + if ((length += g + 1) > width) break; + g = grouping[j = (j + 1) % grouping.length]; + } + return t.reverse().join(thousands); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatNumerals.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatNumerals.js new file mode 100644 index 000000000000..93264fd21f33 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatNumerals.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(numerals) { + return function (value) { + return value.replace(/[0-9]/g, function (i) { + return numerals[+i]; + }); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatPrefixAuto.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatPrefixAuto.js new file mode 100644 index 000000000000..0bef74da95d6 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatPrefixAuto.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.prefixExponent = void 0; +var _formatDecimal = require("./formatDecimal.js"); +var prefixExponent; +function _default(x, p) { + var d = (0, _formatDecimal.formatDecimalParts)(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1], + i = exponent - (exports.prefixExponent = prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, + n = coefficient.length; + return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + (0, _formatDecimal.formatDecimalParts)(x, Math.max(0, p + i - 1))[0]; // less than 1y! +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatRounded.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatRounded.js new file mode 100644 index 000000000000..5e86ca9b1d68 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatRounded.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _formatDecimal = require("./formatDecimal.js"); +function _default(x, p) { + var d = (0, _formatDecimal.formatDecimalParts)(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1]; + return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join("0"); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatSpecifier.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatSpecifier.js new file mode 100644 index 000000000000..9211ca563b43 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatSpecifier.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FormatSpecifier = FormatSpecifier; +exports.default = formatSpecifier; +// [[fill]align][sign][symbol][0][width][,][.precision][~][type] +var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; +function formatSpecifier(specifier) { + if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); + var match; + return new FormatSpecifier({ + fill: match[1], + align: match[2], + sign: match[3], + symbol: match[4], + zero: match[5], + width: match[6], + comma: match[7], + precision: match[8] && match[8].slice(1), + trim: match[9], + type: match[10] + }); +} +formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof + +function FormatSpecifier(specifier) { + this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; + this.align = specifier.align === undefined ? ">" : specifier.align + ""; + this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; + this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; + this.zero = !!specifier.zero; + this.width = specifier.width === undefined ? undefined : +specifier.width; + this.comma = !!specifier.comma; + this.precision = specifier.precision === undefined ? undefined : +specifier.precision; + this.trim = !!specifier.trim; + this.type = specifier.type === undefined ? "" : specifier.type + ""; +} +FormatSpecifier.prototype.toString = function () { + return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === undefined ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type; +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatTrim.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatTrim.js new file mode 100644 index 000000000000..dde7edd38b03 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatTrim.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. +function _default(s) { + out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { + switch (s[i]) { + case ".": + i0 = i1 = i; + break; + case "0": + if (i0 === 0) i0 = i; + i1 = i; + break; + default: + if (!+s[i]) break out; + if (i0 > 0) i0 = 0; + break; + } + } + return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/formatTypes.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatTypes.js new file mode 100644 index 000000000000..a2bc125e3ef1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/formatTypes.js @@ -0,0 +1,25 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _formatDecimal = _interopRequireDefault(require("./formatDecimal.js")); +var _formatPrefixAuto = _interopRequireDefault(require("./formatPrefixAuto.js")); +var _formatRounded = _interopRequireDefault(require("./formatRounded.js")); +var _default = exports.default = { + "%": (x, p) => (x * 100).toFixed(p), + "b": x => Math.round(x).toString(2), + "c": x => x + "", + "d": _formatDecimal.default, + "e": (x, p) => x.toExponential(p), + "f": (x, p) => x.toFixed(p), + "g": (x, p) => x.toPrecision(p), + "o": x => Math.round(x).toString(8), + "p": (x, p) => (0, _formatRounded.default)(x * 100, p), + "r": _formatRounded.default, + "s": _formatPrefixAuto.default, + "X": x => Math.round(x).toString(16).toUpperCase(), + "x": x => Math.round(x).toString(16) +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/identity.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/identity.js new file mode 100644 index 000000000000..78375ad66cf0 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/identity.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(x) { + return x; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/index.js new file mode 100644 index 000000000000..eb7a8abe7b5f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/index.js @@ -0,0 +1,68 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "FormatSpecifier", { + enumerable: true, + get: function () { + return _formatSpecifier.FormatSpecifier; + } +}); +Object.defineProperty(exports, "format", { + enumerable: true, + get: function () { + return _defaultLocale.format; + } +}); +Object.defineProperty(exports, "formatDefaultLocale", { + enumerable: true, + get: function () { + return _defaultLocale.default; + } +}); +Object.defineProperty(exports, "formatLocale", { + enumerable: true, + get: function () { + return _locale.default; + } +}); +Object.defineProperty(exports, "formatPrefix", { + enumerable: true, + get: function () { + return _defaultLocale.formatPrefix; + } +}); +Object.defineProperty(exports, "formatSpecifier", { + enumerable: true, + get: function () { + return _formatSpecifier.default; + } +}); +Object.defineProperty(exports, "precisionFixed", { + enumerable: true, + get: function () { + return _precisionFixed.default; + } +}); +Object.defineProperty(exports, "precisionPrefix", { + enumerable: true, + get: function () { + return _precisionPrefix.default; + } +}); +Object.defineProperty(exports, "precisionRound", { + enumerable: true, + get: function () { + return _precisionRound.default; + } +}); +var _defaultLocale = _interopRequireWildcard(require("./defaultLocale.js")); +var _locale = _interopRequireDefault(require("./locale.js")); +var _formatSpecifier = _interopRequireWildcard(require("./formatSpecifier.js")); +var _precisionFixed = _interopRequireDefault(require("./precisionFixed.js")); +var _precisionPrefix = _interopRequireDefault(require("./precisionPrefix.js")); +var _precisionRound = _interopRequireDefault(require("./precisionRound.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/locale.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/locale.js new file mode 100644 index 000000000000..dd5554bd971a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/locale.js @@ -0,0 +1,152 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _exponent = _interopRequireDefault(require("./exponent.js")); +var _formatGroup = _interopRequireDefault(require("./formatGroup.js")); +var _formatNumerals = _interopRequireDefault(require("./formatNumerals.js")); +var _formatSpecifier = _interopRequireDefault(require("./formatSpecifier.js")); +var _formatTrim = _interopRequireDefault(require("./formatTrim.js")); +var _formatTypes = _interopRequireDefault(require("./formatTypes.js")); +var _formatPrefixAuto = require("./formatPrefixAuto.js"); +var _identity = _interopRequireDefault(require("./identity.js")); +var map = Array.prototype.map, + prefixes = ["y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"]; +function _default(locale) { + var group = locale.grouping === undefined || locale.thousands === undefined ? _identity.default : (0, _formatGroup.default)(map.call(locale.grouping, Number), locale.thousands + ""), + currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", + currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", + decimal = locale.decimal === undefined ? "." : locale.decimal + "", + numerals = locale.numerals === undefined ? _identity.default : (0, _formatNumerals.default)(map.call(locale.numerals, String)), + percent = locale.percent === undefined ? "%" : locale.percent + "", + minus = locale.minus === undefined ? "−" : locale.minus + "", + nan = locale.nan === undefined ? "NaN" : locale.nan + ""; + function newFormat(specifier) { + specifier = (0, _formatSpecifier.default)(specifier); + var fill = specifier.fill, + align = specifier.align, + sign = specifier.sign, + symbol = specifier.symbol, + zero = specifier.zero, + width = specifier.width, + comma = specifier.comma, + precision = specifier.precision, + trim = specifier.trim, + type = specifier.type; + + // The "n" type is an alias for ",g". + if (type === "n") comma = true, type = "g"; + + // The "" type, and any invalid type, is an alias for ".12~g". + else if (!_formatTypes.default[type]) precision === undefined && (precision = 12), trim = true, type = "g"; + + // If zero fill is specified, padding goes after sign and before digits. + if (zero || fill === "0" && align === "=") zero = true, fill = "0", align = "="; + + // Compute the prefix and suffix. + // For SI-prefix, the suffix is lazily computed. + var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", + suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; + + // What format function should we use? + // Is this an integer type? + // Can this type generate exponential notation? + var formatType = _formatTypes.default[type], + maybeSuffix = /[defgprs%]/.test(type); + + // Set the default precision if not specified, + // or clamp the specified precision to the supported range. + // For significant precision, it must be in [1, 21]. + // For fixed precision, it must be in [0, 20]. + precision = precision === undefined ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision)); + function format(value) { + var valuePrefix = prefix, + valueSuffix = suffix, + i, + n, + c; + if (type === "c") { + valueSuffix = formatType(value) + valueSuffix; + value = ""; + } else { + value = +value; + + // Determine the sign. -0 is not less than 0, but 1 / -0 is! + var valueNegative = value < 0 || 1 / value < 0; + + // Perform the initial formatting. + value = isNaN(value) ? nan : formatType(Math.abs(value), precision); + + // Trim insignificant zeros. + if (trim) value = (0, _formatTrim.default)(value); + + // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. + if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; + + // Compute the prefix and suffix. + valuePrefix = (valueNegative ? sign === "(" ? sign : minus : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; + valueSuffix = (type === "s" ? prefixes[8 + _formatPrefixAuto.prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); + + // Break the formatted value into the integer “value” part that can be + // grouped, and fractional or exponential “suffix” part that is not. + if (maybeSuffix) { + i = -1, n = value.length; + while (++i < n) { + if (c = value.charCodeAt(i), 48 > c || c > 57) { + valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; + value = value.slice(0, i); + break; + } + } + } + } + + // If the fill character is not "0", grouping is applied before padding. + if (comma && !zero) value = group(value, Infinity); + + // Compute the padding. + var length = valuePrefix.length + value.length + valueSuffix.length, + padding = length < width ? new Array(width - length + 1).join(fill) : ""; + + // If the fill character is "0", grouping is applied after padding. + if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; + + // Reconstruct the final output based on the desired alignment. + switch (align) { + case "<": + value = valuePrefix + value + valueSuffix + padding; + break; + case "=": + value = valuePrefix + padding + value + valueSuffix; + break; + case "^": + value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); + break; + default: + value = padding + valuePrefix + value + valueSuffix; + break; + } + return numerals(value); + } + format.toString = function () { + return specifier + ""; + }; + return format; + } + function formatPrefix(specifier, value) { + var f = newFormat((specifier = (0, _formatSpecifier.default)(specifier), specifier.type = "f", specifier)), + e = Math.max(-8, Math.min(8, Math.floor((0, _exponent.default)(value) / 3))) * 3, + k = Math.pow(10, -e), + prefix = prefixes[8 + e / 3]; + return function (value) { + return f(k * value) + prefix; + }; + } + return { + format: newFormat, + formatPrefix: formatPrefix + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionFixed.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionFixed.js new file mode 100644 index 000000000000..ec93443edcef --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionFixed.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _exponent = _interopRequireDefault(require("./exponent.js")); +function _default(step) { + return Math.max(0, -(0, _exponent.default)(Math.abs(step))); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionPrefix.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionPrefix.js new file mode 100644 index 000000000000..11f2f984eb59 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionPrefix.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _exponent = _interopRequireDefault(require("./exponent.js")); +function _default(step, value) { + return Math.max(0, Math.max(-8, Math.min(8, Math.floor((0, _exponent.default)(value) / 3))) * 3 - (0, _exponent.default)(Math.abs(step))); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionRound.js b/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionRound.js new file mode 100644 index 000000000000..20c0d92fddf4 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-format/src/precisionRound.js @@ -0,0 +1,12 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _exponent = _interopRequireDefault(require("./exponent.js")); +function _default(step, max) { + step = Math.abs(step), max = Math.abs(max) - step; + return Math.max(0, (0, _exponent.default)(max) - (0, _exponent.default)(step)) + 1; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-interpolate/LICENSE new file mode 100644 index 000000000000..b0145150fd35 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2021 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/array.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/array.js new file mode 100644 index 000000000000..e255e2d1e0c7 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/array.js @@ -0,0 +1,28 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.genericArray = genericArray; +var _value = _interopRequireDefault(require("./value.js")); +var _numberArray = _interopRequireWildcard(require("./numberArray.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function _default(a, b) { + return ((0, _numberArray.isNumberArray)(b) ? _numberArray.default : genericArray)(a, b); +} +function genericArray(a, b) { + var nb = b ? b.length : 0, + na = a ? Math.min(nb, a.length) : 0, + x = new Array(na), + c = new Array(nb), + i; + for (i = 0; i < na; ++i) x[i] = (0, _value.default)(a[i], b[i]); + for (; i < nb; ++i) c[i] = b[i]; + return function (t) { + for (i = 0; i < na; ++i) c[i] = x[i](t); + return c; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basis.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basis.js new file mode 100644 index 000000000000..fb7878eaf2fb --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basis.js @@ -0,0 +1,23 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.basis = basis; +exports.default = _default; +function basis(t1, v0, v1, v2, v3) { + var t2 = t1 * t1, + t3 = t2 * t1; + return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6; +} +function _default(values) { + var n = values.length - 1; + return function (t) { + var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), + v1 = values[i], + v2 = values[i + 1], + v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, + v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; + return basis((t - i / n) * n, v0, v1, v2, v3); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basisClosed.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basisClosed.js new file mode 100644 index 000000000000..9146e274d385 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/basisClosed.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _basis = require("./basis.js"); +function _default(values) { + var n = values.length; + return function (t) { + var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), + v0 = values[(i + n - 1) % n], + v1 = values[i % n], + v2 = values[(i + 1) % n], + v3 = values[(i + 2) % n]; + return (0, _basis.basis)((t - i / n) * n, v0, v1, v2, v3); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/color.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/color.js new file mode 100644 index 000000000000..9af8967b05af --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/color.js @@ -0,0 +1,33 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = nogamma; +exports.gamma = gamma; +exports.hue = hue; +var _constant = _interopRequireDefault(require("./constant.js")); +function linear(a, d) { + return function (t) { + return a + t * d; + }; +} +function exponential(a, b, y) { + return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) { + return Math.pow(a + t * b, y); + }; +} +function hue(a, b) { + var d = b - a; + return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : (0, _constant.default)(isNaN(a) ? b : a); +} +function gamma(y) { + return (y = +y) === 1 ? nogamma : function (a, b) { + return b - a ? exponential(a, b, y) : (0, _constant.default)(isNaN(a) ? b : a); + }; +} +function nogamma(a, b) { + var d = b - a; + return d ? linear(a, d) : (0, _constant.default)(isNaN(a) ? b : a); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/constant.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/constant.js new file mode 100644 index 000000000000..227999ec26cf --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/constant.js @@ -0,0 +1,8 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _default = x => () => x; +exports.default = _default; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/cubehelix.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/cubehelix.js new file mode 100644 index 000000000000..6acbc19daf04 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/cubehelix.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.cubehelixLong = void 0; +var _index = require("../../../lib-vendor/d3-color/src/index.js"); +var _color = _interopRequireWildcard(require("./color.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function cubehelix(hue) { + return function cubehelixGamma(y) { + y = +y; + function cubehelix(start, end) { + var h = hue((start = (0, _index.cubehelix)(start)).h, (end = (0, _index.cubehelix)(end)).h), + s = (0, _color.default)(start.s, end.s), + l = (0, _color.default)(start.l, end.l), + opacity = (0, _color.default)(start.opacity, end.opacity); + return function (t) { + start.h = h(t); + start.s = s(t); + start.l = l(Math.pow(t, y)); + start.opacity = opacity(t); + return start + ""; + }; + } + cubehelix.gamma = cubehelixGamma; + return cubehelix; + }(1); +} +var _default = exports.default = cubehelix(_color.hue); +var cubehelixLong = exports.cubehelixLong = cubehelix(_color.default); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/date.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/date.js new file mode 100644 index 000000000000..27fc56300f90 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/date.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(a, b) { + var d = new Date(); + return a = +a, b = +b, function (t) { + return d.setTime(a * (1 - t) + b * t), d; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/discrete.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/discrete.js new file mode 100644 index 000000000000..0e7a5a76f25d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/discrete.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(range) { + var n = range.length; + return function (t) { + return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hcl.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hcl.js new file mode 100644 index 000000000000..b1a3fdef70e1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hcl.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hclLong = exports.default = void 0; +var _index = require("../../../lib-vendor/d3-color/src/index.js"); +var _color = _interopRequireWildcard(require("./color.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function hcl(hue) { + return function (start, end) { + var h = hue((start = (0, _index.hcl)(start)).h, (end = (0, _index.hcl)(end)).h), + c = (0, _color.default)(start.c, end.c), + l = (0, _color.default)(start.l, end.l), + opacity = (0, _color.default)(start.opacity, end.opacity); + return function (t) { + start.h = h(t); + start.c = c(t); + start.l = l(t); + start.opacity = opacity(t); + return start + ""; + }; + }; +} +var _default = exports.default = hcl(_color.hue); +var hclLong = exports.hclLong = hcl(_color.default); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hsl.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hsl.js new file mode 100644 index 000000000000..c992c3c5ef7e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hsl.js @@ -0,0 +1,27 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hslLong = exports.default = void 0; +var _index = require("../../../lib-vendor/d3-color/src/index.js"); +var _color = _interopRequireWildcard(require("./color.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function hsl(hue) { + return function (start, end) { + var h = hue((start = (0, _index.hsl)(start)).h, (end = (0, _index.hsl)(end)).h), + s = (0, _color.default)(start.s, end.s), + l = (0, _color.default)(start.l, end.l), + opacity = (0, _color.default)(start.opacity, end.opacity); + return function (t) { + start.h = h(t); + start.s = s(t); + start.l = l(t); + start.opacity = opacity(t); + return start + ""; + }; + }; +} +var _default = exports.default = hsl(_color.hue); +var hslLong = exports.hslLong = hsl(_color.default); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hue.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hue.js new file mode 100644 index 000000000000..75846f319201 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/hue.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _color = require("./color.js"); +function _default(a, b) { + var i = (0, _color.hue)(+a, +b); + return function (t) { + var x = i(t); + return x - 360 * Math.floor(x / 360); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/index.js new file mode 100644 index 000000000000..322bc2240e7f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/index.js @@ -0,0 +1,191 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "interpolate", { + enumerable: true, + get: function () { + return _value.default; + } +}); +Object.defineProperty(exports, "interpolateArray", { + enumerable: true, + get: function () { + return _array.default; + } +}); +Object.defineProperty(exports, "interpolateBasis", { + enumerable: true, + get: function () { + return _basis.default; + } +}); +Object.defineProperty(exports, "interpolateBasisClosed", { + enumerable: true, + get: function () { + return _basisClosed.default; + } +}); +Object.defineProperty(exports, "interpolateCubehelix", { + enumerable: true, + get: function () { + return _cubehelix.default; + } +}); +Object.defineProperty(exports, "interpolateCubehelixLong", { + enumerable: true, + get: function () { + return _cubehelix.cubehelixLong; + } +}); +Object.defineProperty(exports, "interpolateDate", { + enumerable: true, + get: function () { + return _date.default; + } +}); +Object.defineProperty(exports, "interpolateDiscrete", { + enumerable: true, + get: function () { + return _discrete.default; + } +}); +Object.defineProperty(exports, "interpolateHcl", { + enumerable: true, + get: function () { + return _hcl.default; + } +}); +Object.defineProperty(exports, "interpolateHclLong", { + enumerable: true, + get: function () { + return _hcl.hclLong; + } +}); +Object.defineProperty(exports, "interpolateHsl", { + enumerable: true, + get: function () { + return _hsl.default; + } +}); +Object.defineProperty(exports, "interpolateHslLong", { + enumerable: true, + get: function () { + return _hsl.hslLong; + } +}); +Object.defineProperty(exports, "interpolateHue", { + enumerable: true, + get: function () { + return _hue.default; + } +}); +Object.defineProperty(exports, "interpolateLab", { + enumerable: true, + get: function () { + return _lab.default; + } +}); +Object.defineProperty(exports, "interpolateNumber", { + enumerable: true, + get: function () { + return _number.default; + } +}); +Object.defineProperty(exports, "interpolateNumberArray", { + enumerable: true, + get: function () { + return _numberArray.default; + } +}); +Object.defineProperty(exports, "interpolateObject", { + enumerable: true, + get: function () { + return _object.default; + } +}); +Object.defineProperty(exports, "interpolateRgb", { + enumerable: true, + get: function () { + return _rgb.default; + } +}); +Object.defineProperty(exports, "interpolateRgbBasis", { + enumerable: true, + get: function () { + return _rgb.rgbBasis; + } +}); +Object.defineProperty(exports, "interpolateRgbBasisClosed", { + enumerable: true, + get: function () { + return _rgb.rgbBasisClosed; + } +}); +Object.defineProperty(exports, "interpolateRound", { + enumerable: true, + get: function () { + return _round.default; + } +}); +Object.defineProperty(exports, "interpolateString", { + enumerable: true, + get: function () { + return _string.default; + } +}); +Object.defineProperty(exports, "interpolateTransformCss", { + enumerable: true, + get: function () { + return _index.interpolateTransformCss; + } +}); +Object.defineProperty(exports, "interpolateTransformSvg", { + enumerable: true, + get: function () { + return _index.interpolateTransformSvg; + } +}); +Object.defineProperty(exports, "interpolateZoom", { + enumerable: true, + get: function () { + return _zoom.default; + } +}); +Object.defineProperty(exports, "piecewise", { + enumerable: true, + get: function () { + return _piecewise.default; + } +}); +Object.defineProperty(exports, "quantize", { + enumerable: true, + get: function () { + return _quantize.default; + } +}); +var _value = _interopRequireDefault(require("./value.js")); +var _array = _interopRequireDefault(require("./array.js")); +var _basis = _interopRequireDefault(require("./basis.js")); +var _basisClosed = _interopRequireDefault(require("./basisClosed.js")); +var _date = _interopRequireDefault(require("./date.js")); +var _discrete = _interopRequireDefault(require("./discrete.js")); +var _hue = _interopRequireDefault(require("./hue.js")); +var _number = _interopRequireDefault(require("./number.js")); +var _numberArray = _interopRequireDefault(require("./numberArray.js")); +var _object = _interopRequireDefault(require("./object.js")); +var _round = _interopRequireDefault(require("./round.js")); +var _string = _interopRequireDefault(require("./string.js")); +var _index = require("./transform/index.js"); +var _zoom = _interopRequireDefault(require("./zoom.js")); +var _rgb = _interopRequireWildcard(require("./rgb.js")); +var _hsl = _interopRequireWildcard(require("./hsl.js")); +var _lab = _interopRequireDefault(require("./lab.js")); +var _hcl = _interopRequireWildcard(require("./hcl.js")); +var _cubehelix = _interopRequireWildcard(require("./cubehelix.js")); +var _piecewise = _interopRequireDefault(require("./piecewise.js")); +var _quantize = _interopRequireDefault(require("./quantize.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/lab.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/lab.js new file mode 100644 index 000000000000..fe8ed3ec87c2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/lab.js @@ -0,0 +1,22 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = lab; +var _index = require("../../../lib-vendor/d3-color/src/index.js"); +var _color = _interopRequireDefault(require("./color.js")); +function lab(start, end) { + var l = (0, _color.default)((start = (0, _index.lab)(start)).l, (end = (0, _index.lab)(end)).l), + a = (0, _color.default)(start.a, end.a), + b = (0, _color.default)(start.b, end.b), + opacity = (0, _color.default)(start.opacity, end.opacity); + return function (t) { + start.l = l(t); + start.a = a(t); + start.b = b(t); + start.opacity = opacity(t); + return start + ""; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/number.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/number.js new file mode 100644 index 000000000000..d88c1e11721f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/number.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(a, b) { + return a = +a, b = +b, function (t) { + return a * (1 - t) + b * t; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/numberArray.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/numberArray.js new file mode 100644 index 000000000000..838545995327 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/numberArray.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.isNumberArray = isNumberArray; +function _default(a, b) { + if (!b) b = []; + var n = a ? Math.min(b.length, a.length) : 0, + c = b.slice(), + i; + return function (t) { + for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; + return c; + }; +} +function isNumberArray(x) { + return ArrayBuffer.isView(x) && !(x instanceof DataView); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/object.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/object.js new file mode 100644 index 000000000000..7ca115ccb8f9 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/object.js @@ -0,0 +1,26 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _value = _interopRequireDefault(require("./value.js")); +function _default(a, b) { + var i = {}, + c = {}, + k; + if (a === null || typeof a !== "object") a = {}; + if (b === null || typeof b !== "object") b = {}; + for (k in b) { + if (k in a) { + i[k] = (0, _value.default)(a[k], b[k]); + } else { + c[k] = b[k]; + } + } + return function (t) { + for (k in i) c[k] = i[k](t); + return c; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/piecewise.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/piecewise.js new file mode 100644 index 000000000000..620b3ca2e0fd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/piecewise.js @@ -0,0 +1,20 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = piecewise; +var _value = _interopRequireDefault(require("./value.js")); +function piecewise(interpolate, values) { + if (values === undefined) values = interpolate, interpolate = _value.default; + var i = 0, + n = values.length - 1, + v = values[0], + I = new Array(n < 0 ? 0 : n); + while (i < n) I[i] = interpolate(v, v = values[++i]); + return function (t) { + var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); + return I[i](t - i); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/quantize.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/quantize.js new file mode 100644 index 000000000000..d356cc059cdd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/quantize.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(interpolator, n) { + var samples = new Array(n); + for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); + return samples; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/rgb.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/rgb.js new file mode 100644 index 000000000000..607ad89d5795 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/rgb.js @@ -0,0 +1,59 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.rgbBasisClosed = exports.rgbBasis = exports.default = void 0; +var _index = require("../../../lib-vendor/d3-color/src/index.js"); +var _basis = _interopRequireDefault(require("./basis.js")); +var _basisClosed = _interopRequireDefault(require("./basisClosed.js")); +var _color = _interopRequireWildcard(require("./color.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +var _default = exports.default = function rgbGamma(y) { + var color = (0, _color.gamma)(y); + function rgb(start, end) { + var r = color((start = (0, _index.rgb)(start)).r, (end = (0, _index.rgb)(end)).r), + g = color(start.g, end.g), + b = color(start.b, end.b), + opacity = (0, _color.default)(start.opacity, end.opacity); + return function (t) { + start.r = r(t); + start.g = g(t); + start.b = b(t); + start.opacity = opacity(t); + return start + ""; + }; + } + rgb.gamma = rgbGamma; + return rgb; +}(1); +function rgbSpline(spline) { + return function (colors) { + var n = colors.length, + r = new Array(n), + g = new Array(n), + b = new Array(n), + i, + color; + for (i = 0; i < n; ++i) { + color = (0, _index.rgb)(colors[i]); + r[i] = color.r || 0; + g[i] = color.g || 0; + b[i] = color.b || 0; + } + r = spline(r); + g = spline(g); + b = spline(b); + color.opacity = 1; + return function (t) { + color.r = r(t); + color.g = g(t); + color.b = b(t); + return color + ""; + }; + }; +} +var rgbBasis = exports.rgbBasis = rgbSpline(_basis.default); +var rgbBasisClosed = exports.rgbBasisClosed = rgbSpline(_basisClosed.default); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/round.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/round.js new file mode 100644 index 000000000000..9fddbc012043 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/round.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(a, b) { + return a = +a, b = +b, function (t) { + return Math.round(a * (1 - t) + b * t); + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/string.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/string.js new file mode 100644 index 000000000000..4b3963a18161 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/string.js @@ -0,0 +1,75 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _number = _interopRequireDefault(require("./number.js")); +var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, + reB = new RegExp(reA.source, "g"); +function zero(b) { + return function () { + return b; + }; +} +function one(b) { + return function (t) { + return b(t) + ""; + }; +} +function _default(a, b) { + var bi = reA.lastIndex = reB.lastIndex = 0, + // scan index for next number in b + am, + // current match in a + bm, + // current match in b + bs, + // string preceding current number in b, if any + i = -1, + // index in s + s = [], + // string constants and placeholders + q = []; // number interpolators + + // Coerce inputs to strings. + a = a + "", b = b + ""; + + // Interpolate pairs of numbers in a & b. + while ((am = reA.exec(a)) && (bm = reB.exec(b))) { + if ((bs = bm.index) > bi) { + // a string precedes the next number in b + bs = b.slice(bi, bs); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + if ((am = am[0]) === (bm = bm[0])) { + // numbers in a & b match + if (s[i]) s[i] += bm; // coalesce with previous string + else s[++i] = bm; + } else { + // interpolate non-matching numbers + s[++i] = null; + q.push({ + i: i, + x: (0, _number.default)(am, bm) + }); + } + bi = reB.lastIndex; + } + + // Add remains of b. + if (bi < b.length) { + bs = b.slice(bi); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + + // Special optimization for only a single match. + // Otherwise, interpolate each of the numbers and rejoin the string. + return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) { + for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/decompose.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/decompose.js new file mode 100644 index 000000000000..35a756efd4cc --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/decompose.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.identity = void 0; +var degrees = 180 / Math.PI; +var identity = exports.identity = { + translateX: 0, + translateY: 0, + rotate: 0, + skewX: 0, + scaleX: 1, + scaleY: 1 +}; +function _default(a, b, c, d, e, f) { + var scaleX, scaleY, skewX; + if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; + if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; + if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; + if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; + return { + translateX: e, + translateY: f, + rotate: Math.atan2(b, a) * degrees, + skewX: Math.atan(skewX) * degrees, + scaleX: scaleX, + scaleY: scaleY + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/index.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/index.js new file mode 100644 index 000000000000..a11a01445bfa --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/index.js @@ -0,0 +1,83 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.interpolateTransformSvg = exports.interpolateTransformCss = void 0; +var _number = _interopRequireDefault(require("../number.js")); +var _parse = require("./parse.js"); +function interpolateTransform(parse, pxComma, pxParen, degParen) { + function pop(s) { + return s.length ? s.pop() + " " : ""; + } + function translate(xa, ya, xb, yb, s, q) { + if (xa !== xb || ya !== yb) { + var i = s.push("translate(", null, pxComma, null, pxParen); + q.push({ + i: i - 4, + x: (0, _number.default)(xa, xb) + }, { + i: i - 2, + x: (0, _number.default)(ya, yb) + }); + } else if (xb || yb) { + s.push("translate(" + xb + pxComma + yb + pxParen); + } + } + function rotate(a, b, s, q) { + if (a !== b) { + if (a - b > 180) b += 360;else if (b - a > 180) a += 360; // shortest path + q.push({ + i: s.push(pop(s) + "rotate(", null, degParen) - 2, + x: (0, _number.default)(a, b) + }); + } else if (b) { + s.push(pop(s) + "rotate(" + b + degParen); + } + } + function skewX(a, b, s, q) { + if (a !== b) { + q.push({ + i: s.push(pop(s) + "skewX(", null, degParen) - 2, + x: (0, _number.default)(a, b) + }); + } else if (b) { + s.push(pop(s) + "skewX(" + b + degParen); + } + } + function scale(xa, ya, xb, yb, s, q) { + if (xa !== xb || ya !== yb) { + var i = s.push(pop(s) + "scale(", null, ",", null, ")"); + q.push({ + i: i - 4, + x: (0, _number.default)(xa, xb) + }, { + i: i - 2, + x: (0, _number.default)(ya, yb) + }); + } else if (xb !== 1 || yb !== 1) { + s.push(pop(s) + "scale(" + xb + "," + yb + ")"); + } + } + return function (a, b) { + var s = [], + // string constants and placeholders + q = []; // number interpolators + a = parse(a), b = parse(b); + translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); + rotate(a.rotate, b.rotate, s, q); + skewX(a.skewX, b.skewX, s, q); + scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); + a = b = null; // gc + return function (t) { + var i = -1, + n = q.length, + o; + while (++i < n) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + }; +} +var interpolateTransformCss = exports.interpolateTransformCss = interpolateTransform(_parse.parseCss, "px, ", "px)", "deg)"); +var interpolateTransformSvg = exports.interpolateTransformSvg = interpolateTransform(_parse.parseSvg, ", ", ")", ")"); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/parse.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/parse.js new file mode 100644 index 000000000000..3ff8a4b3f964 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/transform/parse.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseCss = parseCss; +exports.parseSvg = parseSvg; +var _decompose = _interopRequireWildcard(require("./decompose.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +var svgNode; + +/* eslint-disable no-undef */ +function parseCss(value) { + const m = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + ""); + return m.isIdentity ? _decompose.identity : (0, _decompose.default)(m.a, m.b, m.c, m.d, m.e, m.f); +} +function parseSvg(value) { + if (value == null) return _decompose.identity; + if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); + svgNode.setAttribute("transform", value); + if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose.identity; + value = value.matrix; + return (0, _decompose.default)(value.a, value.b, value.c, value.d, value.e, value.f); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/value.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/value.js new file mode 100644 index 000000000000..9f26d08f0c63 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/value.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _index = require("../../../lib-vendor/d3-color/src/index.js"); +var _rgb = _interopRequireDefault(require("./rgb.js")); +var _array = require("./array.js"); +var _date = _interopRequireDefault(require("./date.js")); +var _number = _interopRequireDefault(require("./number.js")); +var _object = _interopRequireDefault(require("./object.js")); +var _string = _interopRequireDefault(require("./string.js")); +var _constant = _interopRequireDefault(require("./constant.js")); +var _numberArray = _interopRequireWildcard(require("./numberArray.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function _default(a, b) { + var t = typeof b, + c; + return b == null || t === "boolean" ? (0, _constant.default)(b) : (t === "number" ? _number.default : t === "string" ? (c = (0, _index.color)(b)) ? (b = c, _rgb.default) : _string.default : b instanceof _index.color ? _rgb.default : b instanceof Date ? _date.default : (0, _numberArray.isNumberArray)(b) ? _numberArray.default : Array.isArray(b) ? _array.genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? _object.default : _number.default)(a, b); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/zoom.js b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/zoom.js new file mode 100644 index 000000000000..30d4f236ae89 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-interpolate/src/zoom.js @@ -0,0 +1,66 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var epsilon2 = 1e-12; +function cosh(x) { + return ((x = Math.exp(x)) + 1 / x) / 2; +} +function sinh(x) { + return ((x = Math.exp(x)) - 1 / x) / 2; +} +function tanh(x) { + return ((x = Math.exp(2 * x)) - 1) / (x + 1); +} +var _default = exports.default = function zoomRho(rho, rho2, rho4) { + // p0 = [ux0, uy0, w0] + // p1 = [ux1, uy1, w1] + function zoom(p0, p1) { + var ux0 = p0[0], + uy0 = p0[1], + w0 = p0[2], + ux1 = p1[0], + uy1 = p1[1], + w1 = p1[2], + dx = ux1 - ux0, + dy = uy1 - uy0, + d2 = dx * dx + dy * dy, + i, + S; + + // Special case for u0 ≅ u1. + if (d2 < epsilon2) { + S = Math.log(w1 / w0) / rho; + i = function (t) { + return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(rho * t * S)]; + }; + } + + // General case. + else { + var d1 = Math.sqrt(d2), + b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), + b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), + r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), + r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); + S = (r1 - r0) / rho; + i = function (t) { + var s = t * S, + coshr0 = cosh(r0), + u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); + return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / cosh(rho * s + r0)]; + }; + } + i.duration = S * 1000 * rho / Math.SQRT2; + return i; + } + zoom.rho = function (_) { + var _1 = Math.max(1e-3, +_), + _2 = _1 * _1, + _4 = _2 * _2; + return zoomRho(_1, _2, _4); + }; + return zoom; +}(Math.SQRT2, 2, 4); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-path/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-path/LICENSE new file mode 100644 index 000000000000..ed25746bbfc8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-path/LICENSE @@ -0,0 +1,13 @@ +Copyright 2015-2022 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-path/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-path/src/index.js new file mode 100644 index 000000000000..725ee829d865 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-path/src/index.js @@ -0,0 +1,24 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Path", { + enumerable: true, + get: function () { + return _path.Path; + } +}); +Object.defineProperty(exports, "path", { + enumerable: true, + get: function () { + return _path.path; + } +}); +Object.defineProperty(exports, "pathRound", { + enumerable: true, + get: function () { + return _path.pathRound; + } +}); +var _path = require("./path.js"); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-path/src/path.js b/packages/x-charts-vendor/lib-vendor/d3-path/src/path.js new file mode 100644 index 000000000000..d0f5718c21ab --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-path/src/path.js @@ -0,0 +1,158 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Path = void 0; +exports.path = path; +exports.pathRound = pathRound; +const pi = Math.PI, + tau = 2 * pi, + epsilon = 1e-6, + tauEpsilon = tau - epsilon; +function append(strings) { + this._ += strings[0]; + for (let i = 1, n = strings.length; i < n; ++i) { + this._ += arguments[i] + strings[i]; + } +} +function appendRound(digits) { + let d = Math.floor(digits); + if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`); + if (d > 15) return append; + const k = 10 ** d; + return function (strings) { + this._ += strings[0]; + for (let i = 1, n = strings.length; i < n; ++i) { + this._ += Math.round(arguments[i] * k) / k + strings[i]; + } + }; +} +class Path { + constructor(digits) { + this._x0 = this._y0 = + // start of current subpath + this._x1 = this._y1 = null; // end of current subpath + this._ = ""; + this._append = digits == null ? append : appendRound(digits); + } + moveTo(x, y) { + this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`; + } + closePath() { + if (this._x1 !== null) { + this._x1 = this._x0, this._y1 = this._y0; + this._append`Z`; + } + } + lineTo(x, y) { + this._append`L${this._x1 = +x},${this._y1 = +y}`; + } + quadraticCurveTo(x1, y1, x, y) { + this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`; + } + bezierCurveTo(x1, y1, x2, y2, x, y) { + this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`; + } + arcTo(x1, y1, x2, y2, r) { + x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; + + // Is the radius negative? Error. + if (r < 0) throw new Error(`negative radius: ${r}`); + let x0 = this._x1, + y0 = this._y1, + x21 = x2 - x1, + y21 = y2 - y1, + x01 = x0 - x1, + y01 = y0 - y1, + l01_2 = x01 * x01 + y01 * y01; + + // Is this path empty? Move to (x1,y1). + if (this._x1 === null) { + this._append`M${this._x1 = x1},${this._y1 = y1}`; + } + + // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. + else if (!(l01_2 > epsilon)) ; + + // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? + // Equivalently, is (x1,y1) coincident with (x2,y2)? + // Or, is the radius zero? Line to (x1,y1). + else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) { + this._append`L${this._x1 = x1},${this._y1 = y1}`; + } + + // Otherwise, draw an arc! + else { + let x20 = x2 - x0, + y20 = y2 - y0, + l21_2 = x21 * x21 + y21 * y21, + l20_2 = x20 * x20 + y20 * y20, + l21 = Math.sqrt(l21_2), + l01 = Math.sqrt(l01_2), + l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), + t01 = l / l01, + t21 = l / l21; + + // If the start tangent is not coincident with (x0,y0), line to. + if (Math.abs(t01 - 1) > epsilon) { + this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`; + } + this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`; + } + } + arc(x, y, r, a0, a1, ccw) { + x = +x, y = +y, r = +r, ccw = !!ccw; + + // Is the radius negative? Error. + if (r < 0) throw new Error(`negative radius: ${r}`); + let dx = r * Math.cos(a0), + dy = r * Math.sin(a0), + x0 = x + dx, + y0 = y + dy, + cw = 1 ^ ccw, + da = ccw ? a0 - a1 : a1 - a0; + + // Is this path empty? Move to (x0,y0). + if (this._x1 === null) { + this._append`M${x0},${y0}`; + } + + // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). + else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) { + this._append`L${x0},${y0}`; + } + + // Is this arc empty? We’re done. + if (!r) return; + + // Does the angle go the wrong way? Flip the direction. + if (da < 0) da = da % tau + tau; + + // Is this a complete circle? Draw two arcs to complete the circle. + if (da > tauEpsilon) { + this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`; + } + + // Is this arc non-empty? Draw an arc! + else if (da > epsilon) { + this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`; + } + } + rect(x, y, w, h) { + this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`; + } + toString() { + return this._; + } +} +exports.Path = Path; +function path() { + return new Path(); +} + +// Allow instanceof d3.path +path.prototype = Path.prototype; +function pathRound(digits = 3) { + return new Path(+digits); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-scale/LICENSE new file mode 100644 index 000000000000..b0145150fd35 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2021 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/band.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/band.js new file mode 100644 index 000000000000..503c3445c37f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/band.js @@ -0,0 +1,87 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = band; +exports.point = point; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _init = require("./init.js"); +var _ordinal = _interopRequireDefault(require("./ordinal.js")); +function band() { + var scale = (0, _ordinal.default)().unknown(undefined), + domain = scale.domain, + ordinalRange = scale.range, + r0 = 0, + r1 = 1, + step, + bandwidth, + round = false, + paddingInner = 0, + paddingOuter = 0, + align = 0.5; + delete scale.unknown; + function rescale() { + var n = domain().length, + reverse = r1 < r0, + start = reverse ? r1 : r0, + stop = reverse ? r0 : r1; + step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); + if (round) step = Math.floor(step); + start += (stop - start - step * (n - paddingInner)) * align; + bandwidth = step * (1 - paddingInner); + if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); + var values = (0, _index.range)(n).map(function (i) { + return start + step * i; + }); + return ordinalRange(reverse ? values.reverse() : values); + } + scale.domain = function (_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + scale.range = function (_) { + return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; + }; + scale.rangeRound = function (_) { + return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); + }; + scale.bandwidth = function () { + return bandwidth; + }; + scale.step = function () { + return step; + }; + scale.round = function (_) { + return arguments.length ? (round = !!_, rescale()) : round; + }; + scale.padding = function (_) { + return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; + }; + scale.paddingInner = function (_) { + return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; + }; + scale.paddingOuter = function (_) { + return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; + }; + scale.align = function (_) { + return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; + }; + scale.copy = function () { + return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); + }; + return _init.initRange.apply(rescale(), arguments); +} +function pointish(scale) { + var copy = scale.copy; + scale.padding = scale.paddingOuter; + delete scale.paddingInner; + delete scale.paddingOuter; + scale.copy = function () { + return pointish(copy()); + }; + return scale; +} +function point() { + return pointish(band.apply(null, arguments).paddingInner(1)); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/colors.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/colors.js new file mode 100644 index 000000000000..e543b53f804b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/colors.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = colors; +function colors(s) { + return s.match(/.{6}/g).map(function (x) { + return "#" + x; + }); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/constant.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/constant.js new file mode 100644 index 000000000000..9e101d787cdd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/constant.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = constants; +function constants(x) { + return function () { + return x; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/continuous.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/continuous.js new file mode 100644 index 000000000000..1ecf6be65bfd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/continuous.js @@ -0,0 +1,116 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.copy = copy; +exports.default = continuous; +exports.identity = identity; +exports.transformer = transformer; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _index2 = require("../../../lib-vendor/d3-interpolate/src/index.js"); +var _constant = _interopRequireDefault(require("./constant.js")); +var _number = _interopRequireDefault(require("./number.js")); +var unit = [0, 1]; +function identity(x) { + return x; +} +function normalize(a, b) { + return (b -= a = +a) ? function (x) { + return (x - a) / b; + } : (0, _constant.default)(isNaN(b) ? NaN : 0.5); +} +function clamper(a, b) { + var t; + if (a > b) t = a, a = b, b = t; + return function (x) { + return Math.max(a, Math.min(b, x)); + }; +} + +// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. +// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. +function bimap(domain, range, interpolate) { + var d0 = domain[0], + d1 = domain[1], + r0 = range[0], + r1 = range[1]; + if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); + return function (x) { + return r0(d0(x)); + }; +} +function polymap(domain, range, interpolate) { + var j = Math.min(domain.length, range.length) - 1, + d = new Array(j), + r = new Array(j), + i = -1; + + // Reverse descending domains. + if (domain[j] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + while (++i < j) { + d[i] = normalize(domain[i], domain[i + 1]); + r[i] = interpolate(range[i], range[i + 1]); + } + return function (x) { + var i = (0, _index.bisect)(domain, x, 1, j) - 1; + return r[i](d[i](x)); + }; +} +function copy(source, target) { + return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown()); +} +function transformer() { + var domain = unit, + range = unit, + interpolate = _index2.interpolate, + transform, + untransform, + unknown, + clamp = identity, + piecewise, + output, + input; + function rescale() { + var n = Math.min(domain.length, range.length); + if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]); + piecewise = n > 2 ? polymap : bimap; + output = input = null; + return scale; + } + function scale(x) { + return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); + } + scale.invert = function (y) { + return clamp(untransform((input || (input = piecewise(range, domain.map(transform), _index2.interpolateNumber)))(y))); + }; + scale.domain = function (_) { + return arguments.length ? (domain = Array.from(_, _number.default), rescale()) : domain.slice(); + }; + scale.range = function (_) { + return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); + }; + scale.rangeRound = function (_) { + return range = Array.from(_), interpolate = _index2.interpolateRound, rescale(); + }; + scale.clamp = function (_) { + return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity; + }; + scale.interpolate = function (_) { + return arguments.length ? (interpolate = _, rescale()) : interpolate; + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + return function (t, u) { + transform = t, untransform = u; + return rescale(); + }; +} +function continuous() { + return transformer()(identity, identity); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/diverging.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/diverging.js new file mode 100644 index 000000000000..043d9a29dcc2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/diverging.js @@ -0,0 +1,91 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = diverging; +exports.divergingLog = divergingLog; +exports.divergingPow = divergingPow; +exports.divergingSqrt = divergingSqrt; +exports.divergingSymlog = divergingSymlog; +var _index = require("../../../lib-vendor/d3-interpolate/src/index.js"); +var _continuous = require("./continuous.js"); +var _init = require("./init.js"); +var _linear = require("./linear.js"); +var _log = require("./log.js"); +var _sequential = require("./sequential.js"); +var _symlog = require("./symlog.js"); +var _pow = require("./pow.js"); +function transformer() { + var x0 = 0, + x1 = 0.5, + x2 = 1, + s = 1, + t0, + t1, + t2, + k10, + k21, + interpolator = _continuous.identity, + transform, + clamp = false, + unknown; + function scale(x) { + return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); + } + scale.domain = function (_) { + return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2]; + }; + scale.clamp = function (_) { + return arguments.length ? (clamp = !!_, scale) : clamp; + }; + scale.interpolator = function (_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + function range(interpolate) { + return function (_) { + var r0, r1, r2; + return arguments.length ? ([r0, r1, r2] = _, interpolator = (0, _index.piecewise)(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)]; + }; + } + scale.range = range(_index.interpolate); + scale.rangeRound = range(_index.interpolateRound); + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + return function (t) { + transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1; + return scale; + }; +} +function diverging() { + var scale = (0, _linear.linearish)(transformer()(_continuous.identity)); + scale.copy = function () { + return (0, _sequential.copy)(scale, diverging()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function divergingLog() { + var scale = (0, _log.loggish)(transformer()).domain([0.1, 1, 10]); + scale.copy = function () { + return (0, _sequential.copy)(scale, divergingLog()).base(scale.base()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function divergingSymlog() { + var scale = (0, _symlog.symlogish)(transformer()); + scale.copy = function () { + return (0, _sequential.copy)(scale, divergingSymlog()).constant(scale.constant()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function divergingPow() { + var scale = (0, _pow.powish)(transformer()); + scale.copy = function () { + return (0, _sequential.copy)(scale, divergingPow()).exponent(scale.exponent()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function divergingSqrt() { + return divergingPow.apply(null, arguments).exponent(0.5); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/identity.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/identity.js new file mode 100644 index 000000000000..cdd427a4d249 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/identity.js @@ -0,0 +1,27 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = identity; +var _linear = require("./linear.js"); +var _number = _interopRequireDefault(require("./number.js")); +function identity(domain) { + var unknown; + function scale(x) { + return x == null || isNaN(x = +x) ? unknown : x; + } + scale.invert = scale; + scale.domain = scale.range = function (_) { + return arguments.length ? (domain = Array.from(_, _number.default), scale) : domain.slice(); + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function () { + return identity(domain).unknown(unknown); + }; + domain = arguments.length ? Array.from(domain, _number.default) : [0, 1]; + return (0, _linear.linearish)(scale); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/index.js new file mode 100644 index 000000000000..c6460fc5ab6a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/index.js @@ -0,0 +1,193 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "scaleBand", { + enumerable: true, + get: function () { + return _band.default; + } +}); +Object.defineProperty(exports, "scaleDiverging", { + enumerable: true, + get: function () { + return _diverging.default; + } +}); +Object.defineProperty(exports, "scaleDivergingLog", { + enumerable: true, + get: function () { + return _diverging.divergingLog; + } +}); +Object.defineProperty(exports, "scaleDivergingPow", { + enumerable: true, + get: function () { + return _diverging.divergingPow; + } +}); +Object.defineProperty(exports, "scaleDivergingSqrt", { + enumerable: true, + get: function () { + return _diverging.divergingSqrt; + } +}); +Object.defineProperty(exports, "scaleDivergingSymlog", { + enumerable: true, + get: function () { + return _diverging.divergingSymlog; + } +}); +Object.defineProperty(exports, "scaleIdentity", { + enumerable: true, + get: function () { + return _identity.default; + } +}); +Object.defineProperty(exports, "scaleImplicit", { + enumerable: true, + get: function () { + return _ordinal.implicit; + } +}); +Object.defineProperty(exports, "scaleLinear", { + enumerable: true, + get: function () { + return _linear.default; + } +}); +Object.defineProperty(exports, "scaleLog", { + enumerable: true, + get: function () { + return _log.default; + } +}); +Object.defineProperty(exports, "scaleOrdinal", { + enumerable: true, + get: function () { + return _ordinal.default; + } +}); +Object.defineProperty(exports, "scalePoint", { + enumerable: true, + get: function () { + return _band.point; + } +}); +Object.defineProperty(exports, "scalePow", { + enumerable: true, + get: function () { + return _pow.default; + } +}); +Object.defineProperty(exports, "scaleQuantile", { + enumerable: true, + get: function () { + return _quantile.default; + } +}); +Object.defineProperty(exports, "scaleQuantize", { + enumerable: true, + get: function () { + return _quantize.default; + } +}); +Object.defineProperty(exports, "scaleRadial", { + enumerable: true, + get: function () { + return _radial.default; + } +}); +Object.defineProperty(exports, "scaleSequential", { + enumerable: true, + get: function () { + return _sequential.default; + } +}); +Object.defineProperty(exports, "scaleSequentialLog", { + enumerable: true, + get: function () { + return _sequential.sequentialLog; + } +}); +Object.defineProperty(exports, "scaleSequentialPow", { + enumerable: true, + get: function () { + return _sequential.sequentialPow; + } +}); +Object.defineProperty(exports, "scaleSequentialQuantile", { + enumerable: true, + get: function () { + return _sequentialQuantile.default; + } +}); +Object.defineProperty(exports, "scaleSequentialSqrt", { + enumerable: true, + get: function () { + return _sequential.sequentialSqrt; + } +}); +Object.defineProperty(exports, "scaleSequentialSymlog", { + enumerable: true, + get: function () { + return _sequential.sequentialSymlog; + } +}); +Object.defineProperty(exports, "scaleSqrt", { + enumerable: true, + get: function () { + return _pow.sqrt; + } +}); +Object.defineProperty(exports, "scaleSymlog", { + enumerable: true, + get: function () { + return _symlog.default; + } +}); +Object.defineProperty(exports, "scaleThreshold", { + enumerable: true, + get: function () { + return _threshold.default; + } +}); +Object.defineProperty(exports, "scaleTime", { + enumerable: true, + get: function () { + return _time.default; + } +}); +Object.defineProperty(exports, "scaleUtc", { + enumerable: true, + get: function () { + return _utcTime.default; + } +}); +Object.defineProperty(exports, "tickFormat", { + enumerable: true, + get: function () { + return _tickFormat.default; + } +}); +var _band = _interopRequireWildcard(require("./band.js")); +var _identity = _interopRequireDefault(require("./identity.js")); +var _linear = _interopRequireDefault(require("./linear.js")); +var _log = _interopRequireDefault(require("./log.js")); +var _symlog = _interopRequireDefault(require("./symlog.js")); +var _ordinal = _interopRequireWildcard(require("./ordinal.js")); +var _pow = _interopRequireWildcard(require("./pow.js")); +var _radial = _interopRequireDefault(require("./radial.js")); +var _quantile = _interopRequireDefault(require("./quantile.js")); +var _quantize = _interopRequireDefault(require("./quantize.js")); +var _threshold = _interopRequireDefault(require("./threshold.js")); +var _time = _interopRequireDefault(require("./time.js")); +var _utcTime = _interopRequireDefault(require("./utcTime.js")); +var _sequential = _interopRequireWildcard(require("./sequential.js")); +var _sequentialQuantile = _interopRequireDefault(require("./sequentialQuantile.js")); +var _diverging = _interopRequireWildcard(require("./diverging.js")); +var _tickFormat = _interopRequireDefault(require("./tickFormat.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/init.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/init.js new file mode 100644 index 000000000000..41012afe9d6f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/init.js @@ -0,0 +1,38 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.initInterpolator = initInterpolator; +exports.initRange = initRange; +function initRange(domain, range) { + switch (arguments.length) { + case 0: + break; + case 1: + this.range(domain); + break; + default: + this.range(range).domain(domain); + break; + } + return this; +} +function initInterpolator(domain, interpolator) { + switch (arguments.length) { + case 0: + break; + case 1: + { + if (typeof domain === "function") this.interpolator(domain);else this.range(domain); + break; + } + default: + { + this.domain(domain); + if (typeof interpolator === "function") this.interpolator(interpolator);else this.range(interpolator); + break; + } + } + return this; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/linear.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/linear.js new file mode 100644 index 000000000000..316b966fb516 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/linear.js @@ -0,0 +1,67 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = linear; +exports.linearish = linearish; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _continuous = _interopRequireWildcard(require("./continuous.js")); +var _init = require("./init.js"); +var _tickFormat = _interopRequireDefault(require("./tickFormat.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function linearish(scale) { + var domain = scale.domain; + scale.ticks = function (count) { + var d = domain(); + return (0, _index.ticks)(d[0], d[d.length - 1], count == null ? 10 : count); + }; + scale.tickFormat = function (count, specifier) { + var d = domain(); + return (0, _tickFormat.default)(d[0], d[d.length - 1], count == null ? 10 : count, specifier); + }; + scale.nice = function (count) { + if (count == null) count = 10; + var d = domain(); + var i0 = 0; + var i1 = d.length - 1; + var start = d[i0]; + var stop = d[i1]; + var prestep; + var step; + var maxIter = 10; + if (stop < start) { + step = start, start = stop, stop = step; + step = i0, i0 = i1, i1 = step; + } + while (maxIter-- > 0) { + step = (0, _index.tickIncrement)(start, stop, count); + if (step === prestep) { + d[i0] = start; + d[i1] = stop; + return domain(d); + } else if (step > 0) { + start = Math.floor(start / step) * step; + stop = Math.ceil(stop / step) * step; + } else if (step < 0) { + start = Math.ceil(start * step) / step; + stop = Math.floor(stop * step) / step; + } else { + break; + } + prestep = step; + } + return scale; + }; + return scale; +} +function linear() { + var scale = (0, _continuous.default)(); + scale.copy = function () { + return (0, _continuous.copy)(scale, linear()); + }; + _init.initRange.apply(scale, arguments); + return linearish(scale); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/log.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/log.js new file mode 100644 index 000000000000..6c080c5f7ef8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/log.js @@ -0,0 +1,123 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = log; +exports.loggish = loggish; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _index2 = require("../../../lib-vendor/d3-format/src/index.js"); +var _nice = _interopRequireDefault(require("./nice.js")); +var _continuous = require("./continuous.js"); +var _init = require("./init.js"); +function transformLog(x) { + return Math.log(x); +} +function transformExp(x) { + return Math.exp(x); +} +function transformLogn(x) { + return -Math.log(-x); +} +function transformExpn(x) { + return -Math.exp(-x); +} +function pow10(x) { + return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; +} +function powp(base) { + return base === 10 ? pow10 : base === Math.E ? Math.exp : x => Math.pow(base, x); +} +function logp(base) { + return base === Math.E ? Math.log : base === 10 && Math.log10 || base === 2 && Math.log2 || (base = Math.log(base), x => Math.log(x) / base); +} +function reflect(f) { + return (x, k) => -f(-x, k); +} +function loggish(transform) { + const scale = transform(transformLog, transformExp); + const domain = scale.domain; + let base = 10; + let logs; + let pows; + function rescale() { + logs = logp(base), pows = powp(base); + if (domain()[0] < 0) { + logs = reflect(logs), pows = reflect(pows); + transform(transformLogn, transformExpn); + } else { + transform(transformLog, transformExp); + } + return scale; + } + scale.base = function (_) { + return arguments.length ? (base = +_, rescale()) : base; + }; + scale.domain = function (_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + scale.ticks = count => { + const d = domain(); + let u = d[0]; + let v = d[d.length - 1]; + const r = v < u; + if (r) [u, v] = [v, u]; + let i = logs(u); + let j = logs(v); + let k; + let t; + const n = count == null ? 10 : +count; + let z = []; + if (!(base % 1) && j - i < n) { + i = Math.floor(i), j = Math.ceil(j); + if (u > 0) for (; i <= j; ++i) { + for (k = 1; k < base; ++k) { + t = i < 0 ? k / pows(-i) : k * pows(i); + if (t < u) continue; + if (t > v) break; + z.push(t); + } + } else for (; i <= j; ++i) { + for (k = base - 1; k >= 1; --k) { + t = i > 0 ? k / pows(-i) : k * pows(i); + if (t < u) continue; + if (t > v) break; + z.push(t); + } + } + if (z.length * 2 < n) z = (0, _index.ticks)(u, v, n); + } else { + z = (0, _index.ticks)(i, j, Math.min(j - i, n)).map(pows); + } + return r ? z.reverse() : z; + }; + scale.tickFormat = (count, specifier) => { + if (count == null) count = 10; + if (specifier == null) specifier = base === 10 ? "s" : ","; + if (typeof specifier !== "function") { + if (!(base % 1) && (specifier = (0, _index2.formatSpecifier)(specifier)).precision == null) specifier.trim = true; + specifier = (0, _index2.format)(specifier); + } + if (count === Infinity) return specifier; + const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? + return d => { + let i = d / pows(Math.round(logs(d))); + if (i * base < base - 0.5) i *= base; + return i <= k ? specifier(d) : ""; + }; + }; + scale.nice = () => { + return domain((0, _nice.default)(domain(), { + floor: x => pows(Math.floor(logs(x))), + ceil: x => pows(Math.ceil(logs(x))) + })); + }; + return scale; +} +function log() { + const scale = loggish((0, _continuous.transformer)()).domain([1, 10]); + scale.copy = () => (0, _continuous.copy)(scale, log()).base(scale.base()); + _init.initRange.apply(scale, arguments); + return scale; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/nice.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/nice.js new file mode 100644 index 000000000000..78a4661a9c6e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/nice.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = nice; +function nice(domain, interval) { + domain = domain.slice(); + var i0 = 0, + i1 = domain.length - 1, + x0 = domain[i0], + x1 = domain[i1], + t; + if (x1 < x0) { + t = i0, i0 = i1, i1 = t; + t = x0, x0 = x1, x1 = t; + } + domain[i0] = interval.floor(x0); + domain[i1] = interval.ceil(x1); + return domain; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/number.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/number.js new file mode 100644 index 000000000000..2c3bd953e06a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/number.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = number; +function number(x) { + return +x; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/ordinal.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/ordinal.js new file mode 100644 index 000000000000..3fe158c35113 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/ordinal.js @@ -0,0 +1,44 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ordinal; +exports.implicit = void 0; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _init = require("./init.js"); +const implicit = exports.implicit = Symbol("implicit"); +function ordinal() { + var index = new _index.InternMap(), + domain = [], + range = [], + unknown = implicit; + function scale(d) { + let i = index.get(d); + if (i === undefined) { + if (unknown !== implicit) return unknown; + index.set(d, i = domain.push(d) - 1); + } + return range[i % range.length]; + } + scale.domain = function (_) { + if (!arguments.length) return domain.slice(); + domain = [], index = new _index.InternMap(); + for (const value of _) { + if (index.has(value)) continue; + index.set(value, domain.push(value) - 1); + } + return scale; + }; + scale.range = function (_) { + return arguments.length ? (range = Array.from(_), scale) : range.slice(); + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function () { + return ordinal(domain, range).unknown(unknown); + }; + _init.initRange.apply(scale, arguments); + return scale; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/pow.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/pow.js new file mode 100644 index 000000000000..915720727f81 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/pow.js @@ -0,0 +1,44 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = pow; +exports.powish = powish; +exports.sqrt = sqrt; +var _linear = require("./linear.js"); +var _continuous = require("./continuous.js"); +var _init = require("./init.js"); +function transformPow(exponent) { + return function (x) { + return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); + }; +} +function transformSqrt(x) { + return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); +} +function transformSquare(x) { + return x < 0 ? -x * x : x * x; +} +function powish(transform) { + var scale = transform(_continuous.identity, _continuous.identity), + exponent = 1; + function rescale() { + return exponent === 1 ? transform(_continuous.identity, _continuous.identity) : exponent === 0.5 ? transform(transformSqrt, transformSquare) : transform(transformPow(exponent), transformPow(1 / exponent)); + } + scale.exponent = function (_) { + return arguments.length ? (exponent = +_, rescale()) : exponent; + }; + return (0, _linear.linearish)(scale); +} +function pow() { + var scale = powish((0, _continuous.transformer)()); + scale.copy = function () { + return (0, _continuous.copy)(scale, pow()).exponent(scale.exponent()); + }; + _init.initRange.apply(scale, arguments); + return scale; +} +function sqrt() { + return pow.apply(null, arguments).exponent(0.5); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/quantile.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/quantile.js new file mode 100644 index 000000000000..96fdf7493d7c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/quantile.js @@ -0,0 +1,48 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = quantile; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _init = require("./init.js"); +function quantile() { + var domain = [], + range = [], + thresholds = [], + unknown; + function rescale() { + var i = 0, + n = Math.max(1, range.length); + thresholds = new Array(n - 1); + while (++i < n) thresholds[i - 1] = (0, _index.quantileSorted)(domain, i / n); + return scale; + } + function scale(x) { + return x == null || isNaN(x = +x) ? unknown : range[(0, _index.bisect)(thresholds, x)]; + } + scale.invertExtent = function (y) { + var i = range.indexOf(y); + return i < 0 ? [NaN, NaN] : [i > 0 ? thresholds[i - 1] : domain[0], i < thresholds.length ? thresholds[i] : domain[domain.length - 1]]; + }; + scale.domain = function (_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); + domain.sort(_index.ascending); + return rescale(); + }; + scale.range = function (_) { + return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.quantiles = function () { + return thresholds.slice(); + }; + scale.copy = function () { + return quantile().domain(domain).range(range).unknown(unknown); + }; + return _init.initRange.apply(scale, arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/quantize.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/quantize.js new file mode 100644 index 000000000000..756e0fc76501 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/quantize.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = quantize; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _linear = require("./linear.js"); +var _init = require("./init.js"); +function quantize() { + var x0 = 0, + x1 = 1, + n = 1, + domain = [0.5], + range = [0, 1], + unknown; + function scale(x) { + return x != null && x <= x ? range[(0, _index.bisect)(domain, x, 0, n)] : unknown; + } + function rescale() { + var i = -1; + domain = new Array(n); + while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); + return scale; + } + scale.domain = function (_) { + return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1]; + }; + scale.range = function (_) { + return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice(); + }; + scale.invertExtent = function (y) { + var i = range.indexOf(y); + return i < 0 ? [NaN, NaN] : i < 1 ? [x0, domain[0]] : i >= n ? [domain[n - 1], x1] : [domain[i - 1], domain[i]]; + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : scale; + }; + scale.thresholds = function () { + return domain.slice(); + }; + scale.copy = function () { + return quantize().domain([x0, x1]).range(range).unknown(unknown); + }; + return _init.initRange.apply((0, _linear.linearish)(scale), arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/radial.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/radial.js new file mode 100644 index 000000000000..26dea874dd9a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/radial.js @@ -0,0 +1,53 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = radial; +var _continuous = _interopRequireDefault(require("./continuous.js")); +var _init = require("./init.js"); +var _linear = require("./linear.js"); +var _number = _interopRequireDefault(require("./number.js")); +function square(x) { + return Math.sign(x) * x * x; +} +function unsquare(x) { + return Math.sign(x) * Math.sqrt(Math.abs(x)); +} +function radial() { + var squared = (0, _continuous.default)(), + range = [0, 1], + round = false, + unknown; + function scale(x) { + var y = unsquare(squared(x)); + return isNaN(y) ? unknown : round ? Math.round(y) : y; + } + scale.invert = function (y) { + return squared.invert(square(y)); + }; + scale.domain = function (_) { + return arguments.length ? (squared.domain(_), scale) : squared.domain(); + }; + scale.range = function (_) { + return arguments.length ? (squared.range((range = Array.from(_, _number.default)).map(square)), scale) : range.slice(); + }; + scale.rangeRound = function (_) { + return scale.range(_).round(true); + }; + scale.round = function (_) { + return arguments.length ? (round = !!_, scale) : round; + }; + scale.clamp = function (_) { + return arguments.length ? (squared.clamp(_), scale) : squared.clamp(); + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function () { + return radial(squared.domain(), range).round(round).clamp(squared.clamp()).unknown(unknown); + }; + _init.initRange.apply(scale, arguments); + return (0, _linear.linearish)(scale); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/sequential.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/sequential.js new file mode 100644 index 000000000000..a3aafa213657 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/sequential.js @@ -0,0 +1,90 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.copy = copy; +exports.default = sequential; +exports.sequentialLog = sequentialLog; +exports.sequentialPow = sequentialPow; +exports.sequentialSqrt = sequentialSqrt; +exports.sequentialSymlog = sequentialSymlog; +var _index = require("../../../lib-vendor/d3-interpolate/src/index.js"); +var _continuous = require("./continuous.js"); +var _init = require("./init.js"); +var _linear = require("./linear.js"); +var _log = require("./log.js"); +var _symlog = require("./symlog.js"); +var _pow = require("./pow.js"); +function transformer() { + var x0 = 0, + x1 = 1, + t0, + t1, + k10, + transform, + interpolator = _continuous.identity, + clamp = false, + unknown; + function scale(x) { + return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); + } + scale.domain = function (_) { + return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; + }; + scale.clamp = function (_) { + return arguments.length ? (clamp = !!_, scale) : clamp; + }; + scale.interpolator = function (_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + function range(interpolate) { + return function (_) { + var r0, r1; + return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)]; + }; + } + scale.range = range(_index.interpolate); + scale.rangeRound = range(_index.interpolateRound); + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + return function (t) { + transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); + return scale; + }; +} +function copy(source, target) { + return target.domain(source.domain()).interpolator(source.interpolator()).clamp(source.clamp()).unknown(source.unknown()); +} +function sequential() { + var scale = (0, _linear.linearish)(transformer()(_continuous.identity)); + scale.copy = function () { + return copy(scale, sequential()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function sequentialLog() { + var scale = (0, _log.loggish)(transformer()).domain([1, 10]); + scale.copy = function () { + return copy(scale, sequentialLog()).base(scale.base()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function sequentialSymlog() { + var scale = (0, _symlog.symlogish)(transformer()); + scale.copy = function () { + return copy(scale, sequentialSymlog()).constant(scale.constant()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function sequentialPow() { + var scale = (0, _pow.powish)(transformer()); + scale.copy = function () { + return copy(scale, sequentialPow()).exponent(scale.exponent()); + }; + return _init.initInterpolator.apply(scale, arguments); +} +function sequentialSqrt() { + return sequentialPow.apply(null, arguments).exponent(0.5); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/sequentialQuantile.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/sequentialQuantile.js new file mode 100644 index 000000000000..dc90b3eb9585 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/sequentialQuantile.js @@ -0,0 +1,38 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = sequentialQuantile; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _continuous = require("./continuous.js"); +var _init = require("./init.js"); +function sequentialQuantile() { + var domain = [], + interpolator = _continuous.identity; + function scale(x) { + if (x != null && !isNaN(x = +x)) return interpolator(((0, _index.bisect)(domain, x, 1) - 1) / (domain.length - 1)); + } + scale.domain = function (_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d); + domain.sort(_index.ascending); + return scale; + }; + scale.interpolator = function (_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + scale.range = function () { + return domain.map((d, i) => interpolator(i / (domain.length - 1))); + }; + scale.quantiles = function (n) { + return Array.from({ + length: n + 1 + }, (_, i) => (0, _index.quantile)(domain, i / n)); + }; + scale.copy = function () { + return sequentialQuantile(interpolator).domain(domain); + }; + return _init.initInterpolator.apply(scale, arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/symlog.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/symlog.js new file mode 100644 index 000000000000..cb86a6e674dd --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/symlog.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = symlog; +exports.symlogish = symlogish; +var _linear = require("./linear.js"); +var _continuous = require("./continuous.js"); +var _init = require("./init.js"); +function transformSymlog(c) { + return function (x) { + return Math.sign(x) * Math.log1p(Math.abs(x / c)); + }; +} +function transformSymexp(c) { + return function (x) { + return Math.sign(x) * Math.expm1(Math.abs(x)) * c; + }; +} +function symlogish(transform) { + var c = 1, + scale = transform(transformSymlog(c), transformSymexp(c)); + scale.constant = function (_) { + return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; + }; + return (0, _linear.linearish)(scale); +} +function symlog() { + var scale = symlogish((0, _continuous.transformer)()); + scale.copy = function () { + return (0, _continuous.copy)(scale, symlog()).constant(scale.constant()); + }; + return _init.initRange.apply(scale, arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/threshold.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/threshold.js new file mode 100644 index 000000000000..fbfcc9d84a6a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/threshold.js @@ -0,0 +1,34 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = threshold; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _init = require("./init.js"); +function threshold() { + var domain = [0.5], + range = [0, 1], + unknown, + n = 1; + function scale(x) { + return x != null && x <= x ? range[(0, _index.bisect)(domain, x, 0, n)] : unknown; + } + scale.domain = function (_) { + return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); + }; + scale.range = function (_) { + return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); + }; + scale.invertExtent = function (y) { + var i = range.indexOf(y); + return [domain[i - 1], domain[i]]; + }; + scale.unknown = function (_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + scale.copy = function () { + return threshold().domain(domain).range(range).unknown(unknown); + }; + return _init.initRange.apply(scale, arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/tickFormat.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/tickFormat.js new file mode 100644 index 000000000000..dd0e2d4aa67a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/tickFormat.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tickFormat; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _index2 = require("../../../lib-vendor/d3-format/src/index.js"); +function tickFormat(start, stop, count, specifier) { + var step = (0, _index.tickStep)(start, stop, count), + precision; + specifier = (0, _index2.formatSpecifier)(specifier == null ? ",f" : specifier); + switch (specifier.type) { + case "s": + { + var value = Math.max(Math.abs(start), Math.abs(stop)); + if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionPrefix)(step, value))) specifier.precision = precision; + return (0, _index2.formatPrefix)(specifier, value); + } + case "": + case "e": + case "g": + case "p": + case "r": + { + if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionRound)(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); + break; + } + case "f": + case "%": + { + if (specifier.precision == null && !isNaN(precision = (0, _index2.precisionFixed)(step))) specifier.precision = precision - (specifier.type === "%") * 2; + break; + } + } + return (0, _index2.format)(specifier); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/time.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/time.js new file mode 100644 index 000000000000..bb815160efb6 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/time.js @@ -0,0 +1,62 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.calendar = calendar; +exports.default = time; +var _index = require("../../../lib-vendor/d3-time/src/index.js"); +var _index2 = require("../../../lib-vendor/d3-time-format/src/index.js"); +var _continuous = _interopRequireWildcard(require("./continuous.js")); +var _init = require("./init.js"); +var _nice = _interopRequireDefault(require("./nice.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function date(t) { + return new Date(t); +} +function number(t) { + return t instanceof Date ? +t : +new Date(+t); +} +function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) { + var scale = (0, _continuous.default)(), + invert = scale.invert, + domain = scale.domain; + var formatMillisecond = format(".%L"), + formatSecond = format(":%S"), + formatMinute = format("%I:%M"), + formatHour = format("%I %p"), + formatDay = format("%a %d"), + formatWeek = format("%b %d"), + formatMonth = format("%B"), + formatYear = format("%Y"); + function tickFormat(date) { + return (second(date) < date ? formatMillisecond : minute(date) < date ? formatSecond : hour(date) < date ? formatMinute : day(date) < date ? formatHour : month(date) < date ? week(date) < date ? formatDay : formatWeek : year(date) < date ? formatMonth : formatYear)(date); + } + scale.invert = function (y) { + return new Date(invert(y)); + }; + scale.domain = function (_) { + return arguments.length ? domain(Array.from(_, number)) : domain().map(date); + }; + scale.ticks = function (interval) { + var d = domain(); + return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval); + }; + scale.tickFormat = function (count, specifier) { + return specifier == null ? tickFormat : format(specifier); + }; + scale.nice = function (interval) { + var d = domain(); + if (!interval || typeof interval.range !== "function") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval); + return interval ? domain((0, _nice.default)(d, interval)) : scale; + }; + scale.copy = function () { + return (0, _continuous.copy)(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format)); + }; + return scale; +} +function time() { + return _init.initRange.apply(calendar(_index.timeTicks, _index.timeTickInterval, _index.timeYear, _index.timeMonth, _index.timeWeek, _index.timeDay, _index.timeHour, _index.timeMinute, _index.timeSecond, _index2.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-scale/src/utcTime.js b/packages/x-charts-vendor/lib-vendor/d3-scale/src/utcTime.js new file mode 100644 index 000000000000..0e27375b6f0b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-scale/src/utcTime.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = utcTime; +var _index = require("../../../lib-vendor/d3-time/src/index.js"); +var _index2 = require("../../../lib-vendor/d3-time-format/src/index.js"); +var _time = require("./time.js"); +var _init = require("./init.js"); +function utcTime() { + return _init.initRange.apply((0, _time.calendar)(_index.utcTicks, _index.utcTickInterval, _index.utcYear, _index.utcMonth, _index.utcWeek, _index.utcDay, _index.utcHour, _index.utcMinute, _index.utcSecond, _index2.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-shape/LICENSE new file mode 100644 index 000000000000..fbe44bdc9ad5 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2022 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/arc.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/arc.js new file mode 100644 index 000000000000..dc44ccff79b8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/arc.js @@ -0,0 +1,250 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _constant = _interopRequireDefault(require("./constant.js")); +var _math = require("./math.js"); +var _path = require("./path.js"); +function arcInnerRadius(d) { + return d.innerRadius; +} +function arcOuterRadius(d) { + return d.outerRadius; +} +function arcStartAngle(d) { + return d.startAngle; +} +function arcEndAngle(d) { + return d.endAngle; +} +function arcPadAngle(d) { + return d && d.padAngle; // Note: optional! +} +function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { + var x10 = x1 - x0, + y10 = y1 - y0, + x32 = x3 - x2, + y32 = y3 - y2, + t = y32 * x10 - x32 * y10; + if (t * t < _math.epsilon) return; + t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; + return [x0 + t * x10, y0 + t * y10]; +} + +// Compute perpendicular offset line of length rc. +// http://mathworld.wolfram.com/Circle-LineIntersection.html +function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { + var x01 = x0 - x1, + y01 = y0 - y1, + lo = (cw ? rc : -rc) / (0, _math.sqrt)(x01 * x01 + y01 * y01), + ox = lo * y01, + oy = -lo * x01, + x11 = x0 + ox, + y11 = y0 + oy, + x10 = x1 + ox, + y10 = y1 + oy, + x00 = (x11 + x10) / 2, + y00 = (y11 + y10) / 2, + dx = x10 - x11, + dy = y10 - y11, + d2 = dx * dx + dy * dy, + r = r1 - rc, + D = x11 * y10 - x10 * y11, + d = (dy < 0 ? -1 : 1) * (0, _math.sqrt)((0, _math.max)(0, r * r * d2 - D * D)), + cx0 = (D * dy - dx * d) / d2, + cy0 = (-D * dx - dy * d) / d2, + cx1 = (D * dy + dx * d) / d2, + cy1 = (-D * dx + dy * d) / d2, + dx0 = cx0 - x00, + dy0 = cy0 - y00, + dx1 = cx1 - x00, + dy1 = cy1 - y00; + + // Pick the closer of the two intersection points. + // TODO Is there a faster way to determine which intersection to use? + if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; + return { + cx: cx0, + cy: cy0, + x01: -ox, + y01: -oy, + x11: cx0 * (r1 / r - 1), + y11: cy0 * (r1 / r - 1) + }; +} +function _default() { + var innerRadius = arcInnerRadius, + outerRadius = arcOuterRadius, + cornerRadius = (0, _constant.default)(0), + padRadius = null, + startAngle = arcStartAngle, + endAngle = arcEndAngle, + padAngle = arcPadAngle, + context = null, + path = (0, _path.withPath)(arc); + function arc() { + var buffer, + r, + r0 = +innerRadius.apply(this, arguments), + r1 = +outerRadius.apply(this, arguments), + a0 = startAngle.apply(this, arguments) - _math.halfPi, + a1 = endAngle.apply(this, arguments) - _math.halfPi, + da = (0, _math.abs)(a1 - a0), + cw = a1 > a0; + if (!context) context = buffer = path(); + + // Ensure that the outer radius is always larger than the inner radius. + if (r1 < r0) r = r1, r1 = r0, r0 = r; + + // Is it a point? + if (!(r1 > _math.epsilon)) context.moveTo(0, 0); + + // Or is it a circle or annulus? + else if (da > _math.tau - _math.epsilon) { + context.moveTo(r1 * (0, _math.cos)(a0), r1 * (0, _math.sin)(a0)); + context.arc(0, 0, r1, a0, a1, !cw); + if (r0 > _math.epsilon) { + context.moveTo(r0 * (0, _math.cos)(a1), r0 * (0, _math.sin)(a1)); + context.arc(0, 0, r0, a1, a0, cw); + } + } + + // Or is it a circular or annular sector? + else { + var a01 = a0, + a11 = a1, + a00 = a0, + a10 = a1, + da0 = da, + da1 = da, + ap = padAngle.apply(this, arguments) / 2, + rp = ap > _math.epsilon && (padRadius ? +padRadius.apply(this, arguments) : (0, _math.sqrt)(r0 * r0 + r1 * r1)), + rc = (0, _math.min)((0, _math.abs)(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), + rc0 = rc, + rc1 = rc, + t0, + t1; + + // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. + if (rp > _math.epsilon) { + var p0 = (0, _math.asin)(rp / r0 * (0, _math.sin)(ap)), + p1 = (0, _math.asin)(rp / r1 * (0, _math.sin)(ap)); + if ((da0 -= p0 * 2) > _math.epsilon) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;else da0 = 0, a00 = a10 = (a0 + a1) / 2; + if ((da1 -= p1 * 2) > _math.epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;else da1 = 0, a01 = a11 = (a0 + a1) / 2; + } + var x01 = r1 * (0, _math.cos)(a01), + y01 = r1 * (0, _math.sin)(a01), + x10 = r0 * (0, _math.cos)(a10), + y10 = r0 * (0, _math.sin)(a10); + + // Apply rounded corners? + if (rc > _math.epsilon) { + var x11 = r1 * (0, _math.cos)(a11), + y11 = r1 * (0, _math.sin)(a11), + x00 = r0 * (0, _math.cos)(a00), + y00 = r0 * (0, _math.sin)(a00), + oc; + + // Restrict the corner radius according to the sector angle. If this + // intersection fails, it’s probably because the arc is too small, so + // disable the corner radius entirely. + if (da < _math.pi) { + if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) { + var ax = x01 - oc[0], + ay = y01 - oc[1], + bx = x11 - oc[0], + by = y11 - oc[1], + kc = 1 / (0, _math.sin)((0, _math.acos)((ax * bx + ay * by) / ((0, _math.sqrt)(ax * ax + ay * ay) * (0, _math.sqrt)(bx * bx + by * by))) / 2), + lc = (0, _math.sqrt)(oc[0] * oc[0] + oc[1] * oc[1]); + rc0 = (0, _math.min)(rc, (r0 - lc) / (kc - 1)); + rc1 = (0, _math.min)(rc, (r1 - lc) / (kc + 1)); + } else { + rc0 = rc1 = 0; + } + } + } + + // Is the sector collapsed to a line? + if (!(da1 > _math.epsilon)) context.moveTo(x01, y01); + + // Does the sector’s outer ring have rounded corners? + else if (rc1 > _math.epsilon) { + t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); + t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); + context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); + + // Have the corners merged? + if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t1.y01, t1.x01), !cw); + + // Otherwise, draw the two corners and the ring. + else { + context.arc(t0.cx, t0.cy, rc1, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t0.y11, t0.x11), !cw); + context.arc(0, 0, r1, (0, _math.atan2)(t0.cy + t0.y11, t0.cx + t0.x11), (0, _math.atan2)(t1.cy + t1.y11, t1.cx + t1.x11), !cw); + context.arc(t1.cx, t1.cy, rc1, (0, _math.atan2)(t1.y11, t1.x11), (0, _math.atan2)(t1.y01, t1.x01), !cw); + } + } + + // Or is the outer ring just a circular arc? + else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); + + // Is there no inner ring, and it’s a circular sector? + // Or perhaps it’s an annular sector collapsed due to padding? + if (!(r0 > _math.epsilon) || !(da0 > _math.epsilon)) context.lineTo(x10, y10); + + // Does the sector’s inner ring (or point) have rounded corners? + else if (rc0 > _math.epsilon) { + t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); + t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); + context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); + + // Have the corners merged? + if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t1.y01, t1.x01), !cw); + + // Otherwise, draw the two corners and the ring. + else { + context.arc(t0.cx, t0.cy, rc0, (0, _math.atan2)(t0.y01, t0.x01), (0, _math.atan2)(t0.y11, t0.x11), !cw); + context.arc(0, 0, r0, (0, _math.atan2)(t0.cy + t0.y11, t0.cx + t0.x11), (0, _math.atan2)(t1.cy + t1.y11, t1.cx + t1.x11), cw); + context.arc(t1.cx, t1.cy, rc0, (0, _math.atan2)(t1.y11, t1.x11), (0, _math.atan2)(t1.y01, t1.x01), !cw); + } + } + + // Or is the inner ring just a circular arc? + else context.arc(0, 0, r0, a10, a00, cw); + } + context.closePath(); + if (buffer) return context = null, buffer + "" || null; + } + arc.centroid = function () { + var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, + a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math.pi / 2; + return [(0, _math.cos)(a) * r, (0, _math.sin)(a) * r]; + }; + arc.innerRadius = function (_) { + return arguments.length ? (innerRadius = typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : innerRadius; + }; + arc.outerRadius = function (_) { + return arguments.length ? (outerRadius = typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : outerRadius; + }; + arc.cornerRadius = function (_) { + return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : cornerRadius; + }; + arc.padRadius = function (_) { + return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : padRadius; + }; + arc.startAngle = function (_) { + return arguments.length ? (startAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : startAngle; + }; + arc.endAngle = function (_) { + return arguments.length ? (endAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : endAngle; + }; + arc.padAngle = function (_) { + return arguments.length ? (padAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), arc) : padAngle; + }; + arc.context = function (_) { + return arguments.length ? (context = _ == null ? null : _, arc) : context; + }; + return arc; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/area.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/area.js new file mode 100644 index 000000000000..680bf4ca95f4 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/area.js @@ -0,0 +1,98 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _array = _interopRequireDefault(require("./array.js")); +var _constant = _interopRequireDefault(require("./constant.js")); +var _linear = _interopRequireDefault(require("./curve/linear.js")); +var _line = _interopRequireDefault(require("./line.js")); +var _path = require("./path.js"); +var _point = require("./point.js"); +function _default(x0, y0, y1) { + var x1 = null, + defined = (0, _constant.default)(true), + context = null, + curve = _linear.default, + output = null, + path = (0, _path.withPath)(area); + x0 = typeof x0 === "function" ? x0 : x0 === undefined ? _point.x : (0, _constant.default)(+x0); + y0 = typeof y0 === "function" ? y0 : y0 === undefined ? (0, _constant.default)(0) : (0, _constant.default)(+y0); + y1 = typeof y1 === "function" ? y1 : y1 === undefined ? _point.y : (0, _constant.default)(+y1); + function area(data) { + var i, + j, + k, + n = (data = (0, _array.default)(data)).length, + d, + defined0 = false, + buffer, + x0z = new Array(n), + y0z = new Array(n); + if (context == null) output = curve(buffer = path()); + for (i = 0; i <= n; ++i) { + if (!(i < n && defined(d = data[i], i, data)) === defined0) { + if (defined0 = !defined0) { + j = i; + output.areaStart(); + output.lineStart(); + } else { + output.lineEnd(); + output.lineStart(); + for (k = i - 1; k >= j; --k) { + output.point(x0z[k], y0z[k]); + } + output.lineEnd(); + output.areaEnd(); + } + } + if (defined0) { + x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); + output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); + } + } + if (buffer) return output = null, buffer + "" || null; + } + function arealine() { + return (0, _line.default)().defined(defined).curve(curve).context(context); + } + area.x = function (_) { + return arguments.length ? (x0 = typeof _ === "function" ? _ : (0, _constant.default)(+_), x1 = null, area) : x0; + }; + area.x0 = function (_) { + return arguments.length ? (x0 = typeof _ === "function" ? _ : (0, _constant.default)(+_), area) : x0; + }; + area.x1 = function (_) { + return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : (0, _constant.default)(+_), area) : x1; + }; + area.y = function (_) { + return arguments.length ? (y0 = typeof _ === "function" ? _ : (0, _constant.default)(+_), y1 = null, area) : y0; + }; + area.y0 = function (_) { + return arguments.length ? (y0 = typeof _ === "function" ? _ : (0, _constant.default)(+_), area) : y0; + }; + area.y1 = function (_) { + return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : (0, _constant.default)(+_), area) : y1; + }; + area.lineX0 = area.lineY0 = function () { + return arealine().x(x0).y(y0); + }; + area.lineY1 = function () { + return arealine().x(x0).y(y1); + }; + area.lineX1 = function () { + return arealine().x(x1).y(y0); + }; + area.defined = function (_) { + return arguments.length ? (defined = typeof _ === "function" ? _ : (0, _constant.default)(!!_), area) : defined; + }; + area.curve = function (_) { + return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; + }; + area.context = function (_) { + return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; + }; + return area; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/areaRadial.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/areaRadial.js new file mode 100644 index 000000000000..4d4aa5478cd1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/areaRadial.js @@ -0,0 +1,42 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _radial = _interopRequireWildcard(require("./curve/radial.js")); +var _area = _interopRequireDefault(require("./area.js")); +var _lineRadial = require("./lineRadial.js"); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function _default() { + var a = (0, _area.default)().curve(_radial.curveRadialLinear), + c = a.curve, + x0 = a.lineX0, + x1 = a.lineX1, + y0 = a.lineY0, + y1 = a.lineY1; + a.angle = a.x, delete a.x; + a.startAngle = a.x0, delete a.x0; + a.endAngle = a.x1, delete a.x1; + a.radius = a.y, delete a.y; + a.innerRadius = a.y0, delete a.y0; + a.outerRadius = a.y1, delete a.y1; + a.lineStartAngle = function () { + return (0, _lineRadial.lineRadial)(x0()); + }, delete a.lineX0; + a.lineEndAngle = function () { + return (0, _lineRadial.lineRadial)(x1()); + }, delete a.lineX1; + a.lineInnerRadius = function () { + return (0, _lineRadial.lineRadial)(y0()); + }, delete a.lineY0; + a.lineOuterRadius = function () { + return (0, _lineRadial.lineRadial)(y1()); + }, delete a.lineY1; + a.curve = function (_) { + return arguments.length ? c((0, _radial.default)(_)) : c()._curve; + }; + return a; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/array.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/array.js new file mode 100644 index 000000000000..3bb14182db40 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/array.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.slice = void 0; +var slice = exports.slice = Array.prototype.slice; +function _default(x) { + return typeof x === "object" && "length" in x ? x // Array, TypedArray, NodeList, array-like + : Array.from(x); // Map, Set, iterable, string, or anything else +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/constant.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/constant.js new file mode 100644 index 000000000000..370b71f1b2a6 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/constant.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(x) { + return function constant() { + return x; + }; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basis.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basis.js new file mode 100644 index 000000000000..b25463d97d2d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basis.js @@ -0,0 +1,62 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Basis = Basis; +exports.default = _default; +exports.point = point; +function point(that, x, y) { + that._context.bezierCurveTo((2 * that._x0 + that._x1) / 3, (2 * that._y0 + that._y1) / 3, (that._x0 + 2 * that._x1) / 3, (that._y0 + 2 * that._y1) / 3, (that._x0 + 4 * that._x1 + x) / 6, (that._y0 + 4 * that._y1 + y) / 6); +} +function Basis(context) { + this._context = context; +} +Basis.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._y0 = this._y1 = NaN; + this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 3: + point(this, this._x1, this._y1); + // falls through + case 2: + this._context.lineTo(this._x1, this._y1); + break; + } + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); + // falls through + default: + point(this, x, y); + break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + } +}; +function _default(context) { + return new Basis(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisClosed.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisClosed.js new file mode 100644 index 000000000000..7b2bcb3f0ba2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisClosed.js @@ -0,0 +1,70 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _noop = _interopRequireDefault(require("../noop.js")); +var _basis = require("./basis.js"); +function BasisClosed(context) { + this._context = context; +} +BasisClosed.prototype = { + areaStart: _noop.default, + areaEnd: _noop.default, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; + this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 1: + { + this._context.moveTo(this._x2, this._y2); + this._context.closePath(); + break; + } + case 2: + { + this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); + this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); + this._context.closePath(); + break; + } + case 3: + { + this.point(this._x2, this._y2); + this.point(this._x3, this._y3); + this.point(this._x4, this._y4); + break; + } + } + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + this._x2 = x, this._y2 = y; + break; + case 1: + this._point = 2; + this._x3 = x, this._y3 = y; + break; + case 2: + this._point = 3; + this._x4 = x, this._y4 = y; + this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); + break; + default: + (0, _basis.point)(this, x, y); + break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + } +}; +function _default(context) { + return new BasisClosed(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisOpen.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisOpen.js new file mode 100644 index 000000000000..993a1fc114e8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/basisOpen.js @@ -0,0 +1,54 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _basis = require("./basis.js"); +function BasisOpen(context) { + this._context = context; +} +BasisOpen.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._y0 = this._y1 = NaN; + this._point = 0; + }, + lineEnd: function () { + if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + var x0 = (this._x0 + 4 * this._x1 + x) / 6, + y0 = (this._y0 + 4 * this._y1 + y) / 6; + this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); + break; + case 3: + this._point = 4; + // falls through + default: + (0, _basis.point)(this, x, y); + break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + } +}; +function _default(context) { + return new BasisOpen(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bump.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bump.js new file mode 100644 index 000000000000..d3a7b6061568 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bump.js @@ -0,0 +1,81 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.bumpRadial = bumpRadial; +exports.bumpX = bumpX; +exports.bumpY = bumpY; +var _pointRadial = _interopRequireDefault(require("../pointRadial.js")); +class Bump { + constructor(context, x) { + this._context = context; + this._x = x; + } + areaStart() { + this._line = 0; + } + areaEnd() { + this._line = NaN; + } + lineStart() { + this._point = 0; + } + lineEnd() { + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + this._line = 1 - this._line; + } + point(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + { + this._point = 1; + if (this._line) this._context.lineTo(x, y);else this._context.moveTo(x, y); + break; + } + case 1: + this._point = 2; + // falls through + default: + { + if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y); + break; + } + } + this._x0 = x, this._y0 = y; + } +} +class BumpRadial { + constructor(context) { + this._context = context; + } + lineStart() { + this._point = 0; + } + lineEnd() {} + point(x, y) { + x = +x, y = +y; + if (this._point === 0) { + this._point = 1; + } else { + const p0 = (0, _pointRadial.default)(this._x0, this._y0); + const p1 = (0, _pointRadial.default)(this._x0, this._y0 = (this._y0 + y) / 2); + const p2 = (0, _pointRadial.default)(x, this._y0); + const p3 = (0, _pointRadial.default)(x, y); + this._context.moveTo(...p0); + this._context.bezierCurveTo(...p1, ...p2, ...p3); + } + this._x0 = x, this._y0 = y; + } +} +function bumpX(context) { + return new Bump(context, true); +} +function bumpY(context) { + return new Bump(context, false); +} +function bumpRadial(context) { + return new BumpRadial(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bundle.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bundle.js new file mode 100644 index 000000000000..913dc639d77f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/bundle.js @@ -0,0 +1,50 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _basis = require("./basis.js"); +function Bundle(context, beta) { + this._basis = new _basis.Basis(context); + this._beta = beta; +} +Bundle.prototype = { + lineStart: function () { + this._x = []; + this._y = []; + this._basis.lineStart(); + }, + lineEnd: function () { + var x = this._x, + y = this._y, + j = x.length - 1; + if (j > 0) { + var x0 = x[0], + y0 = y[0], + dx = x[j] - x0, + dy = y[j] - y0, + i = -1, + t; + while (++i <= j) { + t = i / j; + this._basis.point(this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)); + } + } + this._x = this._y = null; + this._basis.lineEnd(); + }, + point: function (x, y) { + this._x.push(+x); + this._y.push(+y); + } +}; +var _default = exports.default = function custom(beta) { + function bundle(context) { + return beta === 1 ? new _basis.Basis(context) : new Bundle(context, beta); + } + bundle.beta = function (beta) { + return custom(+beta); + }; + return bundle; +}(0.85); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinal.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinal.js new file mode 100644 index 000000000000..408455b401c7 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinal.js @@ -0,0 +1,69 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Cardinal = Cardinal; +exports.default = void 0; +exports.point = point; +function point(that, x, y) { + that._context.bezierCurveTo(that._x1 + that._k * (that._x2 - that._x0), that._y1 + that._k * (that._y2 - that._y0), that._x2 + that._k * (that._x1 - x), that._y2 + that._k * (that._y1 - y), that._x2, that._y2); +} +function Cardinal(context, tension) { + this._context = context; + this._k = (1 - tension) / 6; +} +Cardinal.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; + this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 2: + this._context.lineTo(this._x2, this._y2); + break; + case 3: + point(this, this._x1, this._y1); + break; + } + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + this._x1 = x, this._y1 = y; + break; + case 2: + this._point = 3; + // falls through + default: + point(this, x, y); + break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; +var _default = exports.default = function custom(tension) { + function cardinal(context) { + return new Cardinal(context, tension); + } + cardinal.tension = function (tension) { + return custom(+tension); + }; + return cardinal; +}(0); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalClosed.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalClosed.js new file mode 100644 index 000000000000..81595c256657 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalClosed.js @@ -0,0 +1,76 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CardinalClosed = CardinalClosed; +exports.default = void 0; +var _noop = _interopRequireDefault(require("../noop.js")); +var _cardinal = require("./cardinal.js"); +function CardinalClosed(context, tension) { + this._context = context; + this._k = (1 - tension) / 6; +} +CardinalClosed.prototype = { + areaStart: _noop.default, + areaEnd: _noop.default, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; + this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 1: + { + this._context.moveTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 2: + { + this._context.lineTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 3: + { + this.point(this._x3, this._y3); + this.point(this._x4, this._y4); + this.point(this._x5, this._y5); + break; + } + } + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + this._x3 = x, this._y3 = y; + break; + case 1: + this._point = 2; + this._context.moveTo(this._x4 = x, this._y4 = y); + break; + case 2: + this._point = 3; + this._x5 = x, this._y5 = y; + break; + default: + (0, _cardinal.point)(this, x, y); + break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; +var _default = exports.default = function custom(tension) { + function cardinal(context) { + return new CardinalClosed(context, tension); + } + cardinal.tension = function (tension) { + return custom(+tension); + }; + return cardinal; +}(0); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalOpen.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalOpen.js new file mode 100644 index 000000000000..f6bb864bec66 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/cardinalOpen.js @@ -0,0 +1,60 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CardinalOpen = CardinalOpen; +exports.default = void 0; +var _cardinal = require("./cardinal.js"); +function CardinalOpen(context, tension) { + this._context = context; + this._k = (1 - tension) / 6; +} +CardinalOpen.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; + this._point = 0; + }, + lineEnd: function () { + if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); + break; + case 3: + this._point = 4; + // falls through + default: + (0, _cardinal.point)(this, x, y); + break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; +var _default = exports.default = function custom(tension) { + function cardinal(context) { + return new CardinalOpen(context, tension); + } + cardinal.tension = function (tension) { + return custom(+tension); + }; + return cardinal; +}(0); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRom.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRom.js new file mode 100644 index 000000000000..a1323aca799b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRom.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +exports.point = point; +var _math = require("../math.js"); +var _cardinal = require("./cardinal.js"); +function point(that, x, y) { + var x1 = that._x1, + y1 = that._y1, + x2 = that._x2, + y2 = that._y2; + if (that._l01_a > _math.epsilon) { + var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, + n = 3 * that._l01_a * (that._l01_a + that._l12_a); + x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; + y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; + } + if (that._l23_a > _math.epsilon) { + var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, + m = 3 * that._l23_a * (that._l23_a + that._l12_a); + x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; + y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; + } + that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); +} +function CatmullRom(context, alpha) { + this._context = context; + this._alpha = alpha; +} +CatmullRom.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; + this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 2: + this._context.lineTo(this._x2, this._y2); + break; + case 3: + this.point(this._x2, this._y2); + break; + } + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + if (this._point) { + var x23 = this._x2 - x, + y23 = this._y2 - y; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); + } + switch (this._point) { + case 0: + this._point = 1; + this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + // falls through + default: + point(this, x, y); + break; + } + this._l01_a = this._l12_a, this._l12_a = this._l23_a; + this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; +var _default = exports.default = function custom(alpha) { + function catmullRom(context) { + return alpha ? new CatmullRom(context, alpha) : new _cardinal.Cardinal(context, 0); + } + catmullRom.alpha = function (alpha) { + return custom(+alpha); + }; + return catmullRom; +}(0.5); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomClosed.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomClosed.js new file mode 100644 index 000000000000..ea06e8c7adbc --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomClosed.js @@ -0,0 +1,83 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _cardinalClosed = require("./cardinalClosed.js"); +var _noop = _interopRequireDefault(require("../noop.js")); +var _catmullRom = require("./catmullRom.js"); +function CatmullRomClosed(context, alpha) { + this._context = context; + this._alpha = alpha; +} +CatmullRomClosed.prototype = { + areaStart: _noop.default, + areaEnd: _noop.default, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; + this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 1: + { + this._context.moveTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 2: + { + this._context.lineTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 3: + { + this.point(this._x3, this._y3); + this.point(this._x4, this._y4); + this.point(this._x5, this._y5); + break; + } + } + }, + point: function (x, y) { + x = +x, y = +y; + if (this._point) { + var x23 = this._x2 - x, + y23 = this._y2 - y; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); + } + switch (this._point) { + case 0: + this._point = 1; + this._x3 = x, this._y3 = y; + break; + case 1: + this._point = 2; + this._context.moveTo(this._x4 = x, this._y4 = y); + break; + case 2: + this._point = 3; + this._x5 = x, this._y5 = y; + break; + default: + (0, _catmullRom.point)(this, x, y); + break; + } + this._l01_a = this._l12_a, this._l12_a = this._l23_a; + this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; +var _default = exports.default = function custom(alpha) { + function catmullRom(context) { + return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed.CardinalClosed(context, 0); + } + catmullRom.alpha = function (alpha) { + return custom(+alpha); + }; + return catmullRom; +}(0.5); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomOpen.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomOpen.js new file mode 100644 index 000000000000..35a4a8708222 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/catmullRomOpen.js @@ -0,0 +1,67 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _cardinalOpen = require("./cardinalOpen.js"); +var _catmullRom = require("./catmullRom.js"); +function CatmullRomOpen(context, alpha) { + this._context = context; + this._alpha = alpha; +} +CatmullRomOpen.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN; + this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0; + }, + lineEnd: function () { + if (this._line || this._line !== 0 && this._point === 3) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + if (this._point) { + var x23 = this._x2 - x, + y23 = this._y2 - y; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); + } + switch (this._point) { + case 0: + this._point = 1; + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); + break; + case 3: + this._point = 4; + // falls through + default: + (0, _catmullRom.point)(this, x, y); + break; + } + this._l01_a = this._l12_a, this._l12_a = this._l23_a; + this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; +var _default = exports.default = function custom(alpha) { + function catmullRom(context) { + return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen.CardinalOpen(context, 0); + } + catmullRom.alpha = function (alpha) { + return custom(+alpha); + }; + return catmullRom; +}(0.5); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linear.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linear.js new file mode 100644 index 000000000000..0dd374187b2a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linear.js @@ -0,0 +1,42 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function Linear(context) { + this._context = context; +} +Linear.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._point = 0; + }, + lineEnd: function () { + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + // falls through + default: + this._context.lineTo(x, y); + break; + } + } +}; +function _default(context) { + return new Linear(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linearClosed.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linearClosed.js new file mode 100644 index 000000000000..6cd4ca9b57ed --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/linearClosed.js @@ -0,0 +1,28 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _noop = _interopRequireDefault(require("../noop.js")); +function LinearClosed(context) { + this._context = context; +} +LinearClosed.prototype = { + areaStart: _noop.default, + areaEnd: _noop.default, + lineStart: function () { + this._point = 0; + }, + lineEnd: function () { + if (this._point) this._context.closePath(); + }, + point: function (x, y) { + x = +x, y = +y; + if (this._point) this._context.lineTo(x, y);else this._point = 1, this._context.moveTo(x, y); + } +}; +function _default(context) { + return new LinearClosed(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/monotone.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/monotone.js new file mode 100644 index 000000000000..b2a9f087c2ee --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/monotone.js @@ -0,0 +1,121 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.monotoneX = monotoneX; +exports.monotoneY = monotoneY; +function sign(x) { + return x < 0 ? -1 : 1; +} + +// Calculate the slopes of the tangents (Hermite-type interpolation) based on +// the following paper: Steffen, M. 1990. A Simple Method for Monotonic +// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. +// NOV(II), P. 443, 1990. +function slope3(that, x2, y2) { + var h0 = that._x1 - that._x0, + h1 = x2 - that._x1, + s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), + s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), + p = (s0 * h1 + s1 * h0) / (h0 + h1); + return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; +} + +// Calculate a one-sided slope. +function slope2(that, t) { + var h = that._x1 - that._x0; + return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; +} + +// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations +// "you can express cubic Hermite interpolation in terms of cubic Bézier curves +// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". +function point(that, t0, t1) { + var x0 = that._x0, + y0 = that._y0, + x1 = that._x1, + y1 = that._y1, + dx = (x1 - x0) / 3; + that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); +} +function MonotoneX(context) { + this._context = context; +} +MonotoneX.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN; + this._point = 0; + }, + lineEnd: function () { + switch (this._point) { + case 2: + this._context.lineTo(this._x1, this._y1); + break; + case 3: + point(this, this._t0, slope2(this, this._t0)); + break; + } + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function (x, y) { + var t1 = NaN; + x = +x, y = +y; + if (x === this._x1 && y === this._y1) return; // Ignore coincident points. + switch (this._point) { + case 0: + this._point = 1; + this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + break; + case 2: + this._point = 3; + point(this, slope2(this, t1 = slope3(this, x, y)), t1); + break; + default: + point(this, this._t0, t1 = slope3(this, x, y)); + break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + this._t0 = t1; + } +}; +function MonotoneY(context) { + this._context = new ReflectContext(context); +} +(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function (x, y) { + MonotoneX.prototype.point.call(this, y, x); +}; +function ReflectContext(context) { + this._context = context; +} +ReflectContext.prototype = { + moveTo: function (x, y) { + this._context.moveTo(y, x); + }, + closePath: function () { + this._context.closePath(); + }, + lineTo: function (x, y) { + this._context.lineTo(y, x); + }, + bezierCurveTo: function (x1, y1, x2, y2, x, y) { + this._context.bezierCurveTo(y1, x1, y2, x2, y, x); + } +}; +function monotoneX(context) { + return new MonotoneX(context); +} +function monotoneY(context) { + return new MonotoneY(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/natural.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/natural.js new file mode 100644 index 000000000000..a5bd1caf0d60 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/natural.js @@ -0,0 +1,67 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function Natural(context) { + this._context = context; +} +Natural.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x = []; + this._y = []; + }, + lineEnd: function () { + var x = this._x, + y = this._y, + n = x.length; + if (n) { + this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); + if (n === 2) { + this._context.lineTo(x[1], y[1]); + } else { + var px = controlPoints(x), + py = controlPoints(y); + for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { + this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); + } + } + } + if (this._line || this._line !== 0 && n === 1) this._context.closePath(); + this._line = 1 - this._line; + this._x = this._y = null; + }, + point: function (x, y) { + this._x.push(+x); + this._y.push(+y); + } +}; + +// See https://www.particleincell.com/2012/bezier-splines/ for derivation. +function controlPoints(x) { + var i, + n = x.length - 1, + m, + a = new Array(n), + b = new Array(n), + r = new Array(n); + a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; + for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; + a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; + for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; + a[n - 1] = r[n - 1] / b[n - 1]; + for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; + b[n - 1] = (x[n] + a[n - 1]) / 2; + for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; + return [a, b]; +} +function _default(context) { + return new Natural(context); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/radial.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/radial.js new file mode 100644 index 000000000000..55bfa0fb527d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/radial.js @@ -0,0 +1,37 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.curveRadialLinear = void 0; +exports.default = curveRadial; +var _linear = _interopRequireDefault(require("./linear.js")); +var curveRadialLinear = exports.curveRadialLinear = curveRadial(_linear.default); +function Radial(curve) { + this._curve = curve; +} +Radial.prototype = { + areaStart: function () { + this._curve.areaStart(); + }, + areaEnd: function () { + this._curve.areaEnd(); + }, + lineStart: function () { + this._curve.lineStart(); + }, + lineEnd: function () { + this._curve.lineEnd(); + }, + point: function (a, r) { + this._curve.point(r * Math.sin(a), r * -Math.cos(a)); + } +}; +function curveRadial(curve) { + function radial(context) { + return new Radial(curve(context)); + } + radial._curve = curve; + return radial; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/step.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/step.js new file mode 100644 index 000000000000..faba07377ca2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/curve/step.js @@ -0,0 +1,63 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.stepAfter = stepAfter; +exports.stepBefore = stepBefore; +function Step(context, t) { + this._context = context; + this._t = t; +} +Step.prototype = { + areaStart: function () { + this._line = 0; + }, + areaEnd: function () { + this._line = NaN; + }, + lineStart: function () { + this._x = this._y = NaN; + this._point = 0; + }, + lineEnd: function () { + if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); + if (this._line || this._line !== 0 && this._point === 1) this._context.closePath(); + if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; + }, + point: function (x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: + this._point = 1; + this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + // falls through + default: + { + if (this._t <= 0) { + this._context.lineTo(this._x, y); + this._context.lineTo(x, y); + } else { + var x1 = this._x * (1 - this._t) + x * this._t; + this._context.lineTo(x1, this._y); + this._context.lineTo(x1, y); + } + break; + } + } + this._x = x, this._y = y; + } +}; +function _default(context) { + return new Step(context, 0.5); +} +function stepBefore(context) { + return new Step(context, 0); +} +function stepAfter(context) { + return new Step(context, 1); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/descending.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/descending.js new file mode 100644 index 000000000000..6df215954b0e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/descending.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(a, b) { + return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/identity.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/identity.js new file mode 100644 index 000000000000..66d957a7cc5a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/identity.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(d) { + return d; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/index.js new file mode 100644 index 000000000000..41c3dd3cde42 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/index.js @@ -0,0 +1,436 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "arc", { + enumerable: true, + get: function () { + return _arc.default; + } +}); +Object.defineProperty(exports, "area", { + enumerable: true, + get: function () { + return _area.default; + } +}); +Object.defineProperty(exports, "areaRadial", { + enumerable: true, + get: function () { + return _areaRadial.default; + } +}); +Object.defineProperty(exports, "curveBasis", { + enumerable: true, + get: function () { + return _basis.default; + } +}); +Object.defineProperty(exports, "curveBasisClosed", { + enumerable: true, + get: function () { + return _basisClosed.default; + } +}); +Object.defineProperty(exports, "curveBasisOpen", { + enumerable: true, + get: function () { + return _basisOpen.default; + } +}); +Object.defineProperty(exports, "curveBumpX", { + enumerable: true, + get: function () { + return _bump.bumpX; + } +}); +Object.defineProperty(exports, "curveBumpY", { + enumerable: true, + get: function () { + return _bump.bumpY; + } +}); +Object.defineProperty(exports, "curveBundle", { + enumerable: true, + get: function () { + return _bundle.default; + } +}); +Object.defineProperty(exports, "curveCardinal", { + enumerable: true, + get: function () { + return _cardinal.default; + } +}); +Object.defineProperty(exports, "curveCardinalClosed", { + enumerable: true, + get: function () { + return _cardinalClosed.default; + } +}); +Object.defineProperty(exports, "curveCardinalOpen", { + enumerable: true, + get: function () { + return _cardinalOpen.default; + } +}); +Object.defineProperty(exports, "curveCatmullRom", { + enumerable: true, + get: function () { + return _catmullRom.default; + } +}); +Object.defineProperty(exports, "curveCatmullRomClosed", { + enumerable: true, + get: function () { + return _catmullRomClosed.default; + } +}); +Object.defineProperty(exports, "curveCatmullRomOpen", { + enumerable: true, + get: function () { + return _catmullRomOpen.default; + } +}); +Object.defineProperty(exports, "curveLinear", { + enumerable: true, + get: function () { + return _linear.default; + } +}); +Object.defineProperty(exports, "curveLinearClosed", { + enumerable: true, + get: function () { + return _linearClosed.default; + } +}); +Object.defineProperty(exports, "curveMonotoneX", { + enumerable: true, + get: function () { + return _monotone.monotoneX; + } +}); +Object.defineProperty(exports, "curveMonotoneY", { + enumerable: true, + get: function () { + return _monotone.monotoneY; + } +}); +Object.defineProperty(exports, "curveNatural", { + enumerable: true, + get: function () { + return _natural.default; + } +}); +Object.defineProperty(exports, "curveStep", { + enumerable: true, + get: function () { + return _step.default; + } +}); +Object.defineProperty(exports, "curveStepAfter", { + enumerable: true, + get: function () { + return _step.stepAfter; + } +}); +Object.defineProperty(exports, "curveStepBefore", { + enumerable: true, + get: function () { + return _step.stepBefore; + } +}); +Object.defineProperty(exports, "line", { + enumerable: true, + get: function () { + return _line.default; + } +}); +Object.defineProperty(exports, "lineRadial", { + enumerable: true, + get: function () { + return _lineRadial.default; + } +}); +Object.defineProperty(exports, "link", { + enumerable: true, + get: function () { + return _link.link; + } +}); +Object.defineProperty(exports, "linkHorizontal", { + enumerable: true, + get: function () { + return _link.linkHorizontal; + } +}); +Object.defineProperty(exports, "linkRadial", { + enumerable: true, + get: function () { + return _link.linkRadial; + } +}); +Object.defineProperty(exports, "linkVertical", { + enumerable: true, + get: function () { + return _link.linkVertical; + } +}); +Object.defineProperty(exports, "pie", { + enumerable: true, + get: function () { + return _pie.default; + } +}); +Object.defineProperty(exports, "pointRadial", { + enumerable: true, + get: function () { + return _pointRadial.default; + } +}); +Object.defineProperty(exports, "radialArea", { + enumerable: true, + get: function () { + return _areaRadial.default; + } +}); +Object.defineProperty(exports, "radialLine", { + enumerable: true, + get: function () { + return _lineRadial.default; + } +}); +Object.defineProperty(exports, "stack", { + enumerable: true, + get: function () { + return _stack.default; + } +}); +Object.defineProperty(exports, "stackOffsetDiverging", { + enumerable: true, + get: function () { + return _diverging.default; + } +}); +Object.defineProperty(exports, "stackOffsetExpand", { + enumerable: true, + get: function () { + return _expand.default; + } +}); +Object.defineProperty(exports, "stackOffsetNone", { + enumerable: true, + get: function () { + return _none.default; + } +}); +Object.defineProperty(exports, "stackOffsetSilhouette", { + enumerable: true, + get: function () { + return _silhouette.default; + } +}); +Object.defineProperty(exports, "stackOffsetWiggle", { + enumerable: true, + get: function () { + return _wiggle.default; + } +}); +Object.defineProperty(exports, "stackOrderAppearance", { + enumerable: true, + get: function () { + return _appearance.default; + } +}); +Object.defineProperty(exports, "stackOrderAscending", { + enumerable: true, + get: function () { + return _ascending.default; + } +}); +Object.defineProperty(exports, "stackOrderDescending", { + enumerable: true, + get: function () { + return _descending.default; + } +}); +Object.defineProperty(exports, "stackOrderInsideOut", { + enumerable: true, + get: function () { + return _insideOut.default; + } +}); +Object.defineProperty(exports, "stackOrderNone", { + enumerable: true, + get: function () { + return _none2.default; + } +}); +Object.defineProperty(exports, "stackOrderReverse", { + enumerable: true, + get: function () { + return _reverse.default; + } +}); +Object.defineProperty(exports, "symbol", { + enumerable: true, + get: function () { + return _symbol.default; + } +}); +Object.defineProperty(exports, "symbolAsterisk", { + enumerable: true, + get: function () { + return _asterisk.default; + } +}); +Object.defineProperty(exports, "symbolCircle", { + enumerable: true, + get: function () { + return _circle.default; + } +}); +Object.defineProperty(exports, "symbolCross", { + enumerable: true, + get: function () { + return _cross.default; + } +}); +Object.defineProperty(exports, "symbolDiamond", { + enumerable: true, + get: function () { + return _diamond.default; + } +}); +Object.defineProperty(exports, "symbolDiamond2", { + enumerable: true, + get: function () { + return _diamond2.default; + } +}); +Object.defineProperty(exports, "symbolPlus", { + enumerable: true, + get: function () { + return _plus.default; + } +}); +Object.defineProperty(exports, "symbolSquare", { + enumerable: true, + get: function () { + return _square.default; + } +}); +Object.defineProperty(exports, "symbolSquare2", { + enumerable: true, + get: function () { + return _square2.default; + } +}); +Object.defineProperty(exports, "symbolStar", { + enumerable: true, + get: function () { + return _star.default; + } +}); +Object.defineProperty(exports, "symbolTimes", { + enumerable: true, + get: function () { + return _times.default; + } +}); +Object.defineProperty(exports, "symbolTriangle", { + enumerable: true, + get: function () { + return _triangle.default; + } +}); +Object.defineProperty(exports, "symbolTriangle2", { + enumerable: true, + get: function () { + return _triangle2.default; + } +}); +Object.defineProperty(exports, "symbolWye", { + enumerable: true, + get: function () { + return _wye.default; + } +}); +Object.defineProperty(exports, "symbolX", { + enumerable: true, + get: function () { + return _times.default; + } +}); +Object.defineProperty(exports, "symbols", { + enumerable: true, + get: function () { + return _symbol.symbolsFill; + } +}); +Object.defineProperty(exports, "symbolsFill", { + enumerable: true, + get: function () { + return _symbol.symbolsFill; + } +}); +Object.defineProperty(exports, "symbolsStroke", { + enumerable: true, + get: function () { + return _symbol.symbolsStroke; + } +}); +var _arc = _interopRequireDefault(require("./arc.js")); +var _area = _interopRequireDefault(require("./area.js")); +var _line = _interopRequireDefault(require("./line.js")); +var _pie = _interopRequireDefault(require("./pie.js")); +var _areaRadial = _interopRequireDefault(require("./areaRadial.js")); +var _lineRadial = _interopRequireDefault(require("./lineRadial.js")); +var _pointRadial = _interopRequireDefault(require("./pointRadial.js")); +var _link = require("./link.js"); +var _symbol = _interopRequireWildcard(require("./symbol.js")); +var _asterisk = _interopRequireDefault(require("./symbol/asterisk.js")); +var _circle = _interopRequireDefault(require("./symbol/circle.js")); +var _cross = _interopRequireDefault(require("./symbol/cross.js")); +var _diamond = _interopRequireDefault(require("./symbol/diamond.js")); +var _diamond2 = _interopRequireDefault(require("./symbol/diamond2.js")); +var _plus = _interopRequireDefault(require("./symbol/plus.js")); +var _square = _interopRequireDefault(require("./symbol/square.js")); +var _square2 = _interopRequireDefault(require("./symbol/square2.js")); +var _star = _interopRequireDefault(require("./symbol/star.js")); +var _triangle = _interopRequireDefault(require("./symbol/triangle.js")); +var _triangle2 = _interopRequireDefault(require("./symbol/triangle2.js")); +var _wye = _interopRequireDefault(require("./symbol/wye.js")); +var _times = _interopRequireDefault(require("./symbol/times.js")); +var _basisClosed = _interopRequireDefault(require("./curve/basisClosed.js")); +var _basisOpen = _interopRequireDefault(require("./curve/basisOpen.js")); +var _basis = _interopRequireDefault(require("./curve/basis.js")); +var _bump = require("./curve/bump.js"); +var _bundle = _interopRequireDefault(require("./curve/bundle.js")); +var _cardinalClosed = _interopRequireDefault(require("./curve/cardinalClosed.js")); +var _cardinalOpen = _interopRequireDefault(require("./curve/cardinalOpen.js")); +var _cardinal = _interopRequireDefault(require("./curve/cardinal.js")); +var _catmullRomClosed = _interopRequireDefault(require("./curve/catmullRomClosed.js")); +var _catmullRomOpen = _interopRequireDefault(require("./curve/catmullRomOpen.js")); +var _catmullRom = _interopRequireDefault(require("./curve/catmullRom.js")); +var _linearClosed = _interopRequireDefault(require("./curve/linearClosed.js")); +var _linear = _interopRequireDefault(require("./curve/linear.js")); +var _monotone = require("./curve/monotone.js"); +var _natural = _interopRequireDefault(require("./curve/natural.js")); +var _step = _interopRequireWildcard(require("./curve/step.js")); +var _stack = _interopRequireDefault(require("./stack.js")); +var _expand = _interopRequireDefault(require("./offset/expand.js")); +var _diverging = _interopRequireDefault(require("./offset/diverging.js")); +var _none = _interopRequireDefault(require("./offset/none.js")); +var _silhouette = _interopRequireDefault(require("./offset/silhouette.js")); +var _wiggle = _interopRequireDefault(require("./offset/wiggle.js")); +var _appearance = _interopRequireDefault(require("./order/appearance.js")); +var _ascending = _interopRequireDefault(require("./order/ascending.js")); +var _descending = _interopRequireDefault(require("./order/descending.js")); +var _insideOut = _interopRequireDefault(require("./order/insideOut.js")); +var _none2 = _interopRequireDefault(require("./order/none.js")); +var _reverse = _interopRequireDefault(require("./order/reverse.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/line.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/line.js new file mode 100644 index 000000000000..3de4d6b7e130 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/line.js @@ -0,0 +1,52 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _array = _interopRequireDefault(require("./array.js")); +var _constant = _interopRequireDefault(require("./constant.js")); +var _linear = _interopRequireDefault(require("./curve/linear.js")); +var _path = require("./path.js"); +var _point = require("./point.js"); +function _default(x, y) { + var defined = (0, _constant.default)(true), + context = null, + curve = _linear.default, + output = null, + path = (0, _path.withPath)(line); + x = typeof x === "function" ? x : x === undefined ? _point.x : (0, _constant.default)(x); + y = typeof y === "function" ? y : y === undefined ? _point.y : (0, _constant.default)(y); + function line(data) { + var i, + n = (data = (0, _array.default)(data)).length, + d, + defined0 = false, + buffer; + if (context == null) output = curve(buffer = path()); + for (i = 0; i <= n; ++i) { + if (!(i < n && defined(d = data[i], i, data)) === defined0) { + if (defined0 = !defined0) output.lineStart();else output.lineEnd(); + } + if (defined0) output.point(+x(d, i, data), +y(d, i, data)); + } + if (buffer) return output = null, buffer + "" || null; + } + line.x = function (_) { + return arguments.length ? (x = typeof _ === "function" ? _ : (0, _constant.default)(+_), line) : x; + }; + line.y = function (_) { + return arguments.length ? (y = typeof _ === "function" ? _ : (0, _constant.default)(+_), line) : y; + }; + line.defined = function (_) { + return arguments.length ? (defined = typeof _ === "function" ? _ : (0, _constant.default)(!!_), line) : defined; + }; + line.curve = function (_) { + return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; + }; + line.context = function (_) { + return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; + }; + return line; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/lineRadial.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/lineRadial.js new file mode 100644 index 000000000000..a8bbfa2dd382 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/lineRadial.js @@ -0,0 +1,24 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.lineRadial = lineRadial; +var _radial = _interopRequireWildcard(require("./curve/radial.js")); +var _line = _interopRequireDefault(require("./line.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } +function lineRadial(l) { + var c = l.curve; + l.angle = l.x, delete l.x; + l.radius = l.y, delete l.y; + l.curve = function (_) { + return arguments.length ? c((0, _radial.default)(_)) : c()._curve; + }; + return l; +} +function _default() { + return lineRadial((0, _line.default)().curve(_radial.curveRadialLinear)); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/link.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/link.js new file mode 100644 index 000000000000..6bf9ba109811 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/link.js @@ -0,0 +1,70 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.link = link; +exports.linkHorizontal = linkHorizontal; +exports.linkRadial = linkRadial; +exports.linkVertical = linkVertical; +var _array = require("./array.js"); +var _constant = _interopRequireDefault(require("./constant.js")); +var _bump = require("./curve/bump.js"); +var _path = require("./path.js"); +var _point = require("./point.js"); +function linkSource(d) { + return d.source; +} +function linkTarget(d) { + return d.target; +} +function link(curve) { + let source = linkSource, + target = linkTarget, + x = _point.x, + y = _point.y, + context = null, + output = null, + path = (0, _path.withPath)(link); + function link() { + let buffer; + const argv = _array.slice.call(arguments); + const s = source.apply(this, argv); + const t = target.apply(this, argv); + if (context == null) output = curve(buffer = path()); + output.lineStart(); + argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv)); + argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv)); + output.lineEnd(); + if (buffer) return output = null, buffer + "" || null; + } + link.source = function (_) { + return arguments.length ? (source = _, link) : source; + }; + link.target = function (_) { + return arguments.length ? (target = _, link) : target; + }; + link.x = function (_) { + return arguments.length ? (x = typeof _ === "function" ? _ : (0, _constant.default)(+_), link) : x; + }; + link.y = function (_) { + return arguments.length ? (y = typeof _ === "function" ? _ : (0, _constant.default)(+_), link) : y; + }; + link.context = function (_) { + return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context; + }; + return link; +} +function linkHorizontal() { + return link(_bump.bumpX); +} +function linkVertical() { + return link(_bump.bumpY); +} +function linkRadial() { + const l = link(_bump.bumpRadial); + l.angle = l.x, delete l.x; + l.radius = l.y, delete l.y; + return l; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/math.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/math.js new file mode 100644 index 000000000000..445051a2d036 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/math.js @@ -0,0 +1,26 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.abs = void 0; +exports.acos = acos; +exports.asin = asin; +exports.tau = exports.sqrt = exports.sin = exports.pi = exports.min = exports.max = exports.halfPi = exports.epsilon = exports.cos = exports.atan2 = void 0; +const abs = exports.abs = Math.abs; +const atan2 = exports.atan2 = Math.atan2; +const cos = exports.cos = Math.cos; +const max = exports.max = Math.max; +const min = exports.min = Math.min; +const sin = exports.sin = Math.sin; +const sqrt = exports.sqrt = Math.sqrt; +const epsilon = exports.epsilon = 1e-12; +const pi = exports.pi = Math.PI; +const halfPi = exports.halfPi = pi / 2; +const tau = exports.tau = 2 * pi; +function acos(x) { + return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); +} +function asin(x) { + return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/noop.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/noop.js new file mode 100644 index 000000000000..1209259b537e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/noop.js @@ -0,0 +1,7 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default() {} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/diverging.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/diverging.js new file mode 100644 index 000000000000..d638c817a0c1 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/diverging.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(series, order) { + if (!((n = series.length) > 0)) return; + for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { + for (yp = yn = 0, i = 0; i < n; ++i) { + if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { + d[0] = yp, d[1] = yp += dy; + } else if (dy < 0) { + d[1] = yn, d[0] = yn += dy; + } else { + d[0] = 0, d[1] = dy; + } + } + } +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/expand.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/expand.js new file mode 100644 index 000000000000..5ae22123526e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/expand.js @@ -0,0 +1,16 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _none = _interopRequireDefault(require("./none.js")); +function _default(series, order) { + if (!((n = series.length) > 0)) return; + for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { + for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; + if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; + } + (0, _none.default)(series, order); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/none.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/none.js new file mode 100644 index 000000000000..c2d15b8837d3 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/none.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(series, order) { + if (!((n = series.length) > 1)) return; + for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { + s0 = s1, s1 = series[order[i]]; + for (j = 0; j < m; ++j) { + s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; + } + } +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/silhouette.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/silhouette.js new file mode 100644 index 000000000000..48a03a841a91 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/silhouette.js @@ -0,0 +1,16 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _none = _interopRequireDefault(require("./none.js")); +function _default(series, order) { + if (!((n = series.length) > 0)) return; + for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { + for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; + s0[j][1] += s0[j][0] = -y / 2; + } + (0, _none.default)(series, order); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/wiggle.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/wiggle.js new file mode 100644 index 000000000000..2b3aa5c05153 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/offset/wiggle.js @@ -0,0 +1,30 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _none = _interopRequireDefault(require("./none.js")); +function _default(series, order) { + if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; + for (var y = 0, j = 1, s0, m, n; j < m; ++j) { + for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { + var si = series[order[i]], + sij0 = si[j][1] || 0, + sij1 = si[j - 1][1] || 0, + s3 = (sij0 - sij1) / 2; + for (var k = 0; k < i; ++k) { + var sk = series[order[k]], + skj0 = sk[j][1] || 0, + skj1 = sk[j - 1][1] || 0; + s3 += skj0 - skj1; + } + s1 += sij0, s2 += s3 * sij0; + } + s0[j - 1][1] += s0[j - 1][0] = y; + if (s1) y -= s2 / s1; + } + s0[j - 1][1] += s0[j - 1][0] = y; + (0, _none.default)(series, order); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/appearance.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/appearance.js new file mode 100644 index 000000000000..a2e7b7dfae66 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/appearance.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _none = _interopRequireDefault(require("./none.js")); +function _default(series) { + var peaks = series.map(peak); + return (0, _none.default)(series).sort(function (a, b) { + return peaks[a] - peaks[b]; + }); +} +function peak(series) { + var i = -1, + j = 0, + n = series.length, + vi, + vj = -Infinity; + while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; + return j; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/ascending.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/ascending.js new file mode 100644 index 000000000000..1d8ace8c1ec4 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/ascending.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.sum = sum; +var _none = _interopRequireDefault(require("./none.js")); +function _default(series) { + var sums = series.map(sum); + return (0, _none.default)(series).sort(function (a, b) { + return sums[a] - sums[b]; + }); +} +function sum(series) { + var s = 0, + i = -1, + n = series.length, + v; + while (++i < n) if (v = +series[i][1]) s += v; + return s; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/descending.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/descending.js new file mode 100644 index 000000000000..b5ad57c86b0d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/descending.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _ascending = _interopRequireDefault(require("./ascending.js")); +function _default(series) { + return (0, _ascending.default)(series).reverse(); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/insideOut.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/insideOut.js new file mode 100644 index 000000000000..0fa683e73e63 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/insideOut.js @@ -0,0 +1,31 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _appearance = _interopRequireDefault(require("./appearance.js")); +var _ascending = require("./ascending.js"); +function _default(series) { + var n = series.length, + i, + j, + sums = series.map(_ascending.sum), + order = (0, _appearance.default)(series), + top = 0, + bottom = 0, + tops = [], + bottoms = []; + for (i = 0; i < n; ++i) { + j = order[i]; + if (top < bottom) { + top += sums[j]; + tops.push(j); + } else { + bottom += sums[j]; + bottoms.push(j); + } + } + return bottoms.reverse().concat(tops); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/none.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/none.js new file mode 100644 index 000000000000..06a85f6b222d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/none.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(series) { + var n = series.length, + o = new Array(n); + while (--n >= 0) o[n] = n; + return o; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/reverse.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/reverse.js new file mode 100644 index 000000000000..526ed9b455c2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/order/reverse.js @@ -0,0 +1,11 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _none = _interopRequireDefault(require("./none.js")); +function _default(series) { + return (0, _none.default)(series).reverse(); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/path.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/path.js new file mode 100644 index 000000000000..d382c24b9dd8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/path.js @@ -0,0 +1,22 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.withPath = withPath; +var _index = require("../../../lib-vendor/d3-path/src/index.js"); +function withPath(shape) { + let digits = 3; + shape.digits = function (_) { + if (!arguments.length) return digits; + if (_ == null) { + digits = null; + } else { + const d = Math.floor(_); + if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`); + digits = d; + } + return shape; + }; + return () => new _index.Path(digits); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/pie.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/pie.js new file mode 100644 index 000000000000..ceb8daff1f70 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/pie.js @@ -0,0 +1,79 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _array = _interopRequireDefault(require("./array.js")); +var _constant = _interopRequireDefault(require("./constant.js")); +var _descending = _interopRequireDefault(require("./descending.js")); +var _identity = _interopRequireDefault(require("./identity.js")); +var _math = require("./math.js"); +function _default() { + var value = _identity.default, + sortValues = _descending.default, + sort = null, + startAngle = (0, _constant.default)(0), + endAngle = (0, _constant.default)(_math.tau), + padAngle = (0, _constant.default)(0); + function pie(data) { + var i, + n = (data = (0, _array.default)(data)).length, + j, + k, + sum = 0, + index = new Array(n), + arcs = new Array(n), + a0 = +startAngle.apply(this, arguments), + da = Math.min(_math.tau, Math.max(-_math.tau, endAngle.apply(this, arguments) - a0)), + a1, + p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), + pa = p * (da < 0 ? -1 : 1), + v; + for (i = 0; i < n; ++i) { + if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { + sum += v; + } + } + + // Optionally sort the arcs by previously-computed values or by data. + if (sortValues != null) index.sort(function (i, j) { + return sortValues(arcs[i], arcs[j]); + });else if (sort != null) index.sort(function (i, j) { + return sort(data[i], data[j]); + }); + + // Compute the arcs! They are stored in the original data's order. + for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { + j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { + data: data[j], + index: i, + value: v, + startAngle: a0, + endAngle: a1, + padAngle: p + }; + } + return arcs; + } + pie.value = function (_) { + return arguments.length ? (value = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : value; + }; + pie.sortValues = function (_) { + return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; + }; + pie.sort = function (_) { + return arguments.length ? (sort = _, sortValues = null, pie) : sort; + }; + pie.startAngle = function (_) { + return arguments.length ? (startAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : startAngle; + }; + pie.endAngle = function (_) { + return arguments.length ? (endAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : endAngle; + }; + pie.padAngle = function (_) { + return arguments.length ? (padAngle = typeof _ === "function" ? _ : (0, _constant.default)(+_), pie) : padAngle; + }; + return pie; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/point.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/point.js new file mode 100644 index 000000000000..eb6cee240b53 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/point.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.x = x; +exports.y = y; +function x(p) { + return p[0]; +} +function y(p) { + return p[1]; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/pointRadial.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/pointRadial.js new file mode 100644 index 000000000000..6940a07bb5a9 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/pointRadial.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +function _default(x, y) { + return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/stack.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/stack.js new file mode 100644 index 000000000000..44f2a2a88fa0 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/stack.js @@ -0,0 +1,55 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _array = _interopRequireDefault(require("./array.js")); +var _constant = _interopRequireDefault(require("./constant.js")); +var _none = _interopRequireDefault(require("./offset/none.js")); +var _none2 = _interopRequireDefault(require("./order/none.js")); +function stackValue(d, key) { + return d[key]; +} +function stackSeries(key) { + const series = []; + series.key = key; + return series; +} +function _default() { + var keys = (0, _constant.default)([]), + order = _none2.default, + offset = _none.default, + value = stackValue; + function stack(data) { + var sz = Array.from(keys.apply(this, arguments), stackSeries), + i, + n = sz.length, + j = -1, + oz; + for (const d of data) { + for (i = 0, ++j; i < n; ++i) { + (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d; + } + } + for (i = 0, oz = (0, _array.default)(order(sz)); i < n; ++i) { + sz[oz[i]].index = i; + } + offset(sz, oz); + return sz; + } + stack.keys = function (_) { + return arguments.length ? (keys = typeof _ === "function" ? _ : (0, _constant.default)(Array.from(_)), stack) : keys; + }; + stack.value = function (_) { + return arguments.length ? (value = typeof _ === "function" ? _ : (0, _constant.default)(+_), stack) : value; + }; + stack.order = function (_) { + return arguments.length ? (order = _ == null ? _none2.default : typeof _ === "function" ? _ : (0, _constant.default)(Array.from(_)), stack) : order; + }; + stack.offset = function (_) { + return arguments.length ? (offset = _ == null ? _none.default : _, stack) : offset; + }; + return stack; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol.js new file mode 100644 index 000000000000..79a579b8cb3c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol.js @@ -0,0 +1,50 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = Symbol; +exports.symbolsStroke = exports.symbolsFill = void 0; +var _constant = _interopRequireDefault(require("./constant.js")); +var _path = require("./path.js"); +var _asterisk = _interopRequireDefault(require("./symbol/asterisk.js")); +var _circle = _interopRequireDefault(require("./symbol/circle.js")); +var _cross = _interopRequireDefault(require("./symbol/cross.js")); +var _diamond = _interopRequireDefault(require("./symbol/diamond.js")); +var _diamond2 = _interopRequireDefault(require("./symbol/diamond2.js")); +var _plus = _interopRequireDefault(require("./symbol/plus.js")); +var _square = _interopRequireDefault(require("./symbol/square.js")); +var _square2 = _interopRequireDefault(require("./symbol/square2.js")); +var _star = _interopRequireDefault(require("./symbol/star.js")); +var _triangle = _interopRequireDefault(require("./symbol/triangle.js")); +var _triangle2 = _interopRequireDefault(require("./symbol/triangle2.js")); +var _wye = _interopRequireDefault(require("./symbol/wye.js")); +var _times = _interopRequireDefault(require("./symbol/times.js")); +// These symbols are designed to be filled. +const symbolsFill = exports.symbolsFill = [_circle.default, _cross.default, _diamond.default, _square.default, _star.default, _triangle.default, _wye.default]; + +// These symbols are designed to be stroked (with a width of 1.5px and round caps). +const symbolsStroke = exports.symbolsStroke = [_circle.default, _plus.default, _times.default, _triangle2.default, _asterisk.default, _square2.default, _diamond2.default]; +function Symbol(type, size) { + let context = null, + path = (0, _path.withPath)(symbol); + type = typeof type === "function" ? type : (0, _constant.default)(type || _circle.default); + size = typeof size === "function" ? size : (0, _constant.default)(size === undefined ? 64 : +size); + function symbol() { + let buffer; + if (!context) context = buffer = path(); + type.apply(this, arguments).draw(context, +size.apply(this, arguments)); + if (buffer) return context = null, buffer + "" || null; + } + symbol.type = function (_) { + return arguments.length ? (type = typeof _ === "function" ? _ : (0, _constant.default)(_), symbol) : type; + }; + symbol.size = function (_) { + return arguments.length ? (size = typeof _ === "function" ? _ : (0, _constant.default)(+_), symbol) : size; + }; + symbol.context = function (_) { + return arguments.length ? (context = _ == null ? null : _, symbol) : context; + }; + return symbol; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/asterisk.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/asterisk.js new file mode 100644 index 000000000000..95553b92c399 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/asterisk.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +const sqrt3 = (0, _math.sqrt)(3); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size + (0, _math.min)(size / 28, 0.75)) * 0.59436; + const t = r / 2; + const u = t * sqrt3; + context.moveTo(0, r); + context.lineTo(0, -r); + context.moveTo(-u, -t); + context.lineTo(u, t); + context.moveTo(-u, t); + context.lineTo(u, -t); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/circle.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/circle.js new file mode 100644 index 000000000000..a248c50bf646 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/circle.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size / _math.pi); + context.moveTo(r, 0); + context.arc(0, 0, r, 0, _math.tau); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/cross.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/cross.js new file mode 100644 index 000000000000..3a0a7018d0d8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/cross.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size / 5) / 2; + context.moveTo(-3 * r, -r); + context.lineTo(-r, -r); + context.lineTo(-r, -3 * r); + context.lineTo(r, -3 * r); + context.lineTo(r, -r); + context.lineTo(3 * r, -r); + context.lineTo(3 * r, r); + context.lineTo(r, r); + context.lineTo(r, 3 * r); + context.lineTo(-r, 3 * r); + context.lineTo(-r, r); + context.lineTo(-3 * r, r); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond.js new file mode 100644 index 000000000000..7c1d04e70e4f --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +const tan30 = (0, _math.sqrt)(1 / 3); +const tan30_2 = tan30 * 2; +var _default = exports.default = { + draw(context, size) { + const y = (0, _math.sqrt)(size / tan30_2); + const x = y * tan30; + context.moveTo(0, -y); + context.lineTo(x, 0); + context.lineTo(0, y); + context.lineTo(-x, 0); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond2.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond2.js new file mode 100644 index 000000000000..38db01c2ef87 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/diamond2.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size) * 0.62625; + context.moveTo(0, -r); + context.lineTo(r, 0); + context.lineTo(0, r); + context.lineTo(-r, 0); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/plus.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/plus.js new file mode 100644 index 000000000000..eac65f85be1b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/plus.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size - (0, _math.min)(size / 7, 2)) * 0.87559; + context.moveTo(-r, 0); + context.lineTo(r, 0); + context.moveTo(0, r); + context.lineTo(0, -r); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square.js new file mode 100644 index 000000000000..eb217fcc2b68 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const w = (0, _math.sqrt)(size); + const x = -w / 2; + context.rect(x, x, w, w); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square2.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square2.js new file mode 100644 index 000000000000..a78921823c94 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/square2.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size) * 0.4431; + context.moveTo(r, r); + context.lineTo(r, -r); + context.lineTo(-r, -r); + context.lineTo(-r, r); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/star.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/star.js new file mode 100644 index 000000000000..fb353c754776 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/star.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +const ka = 0.89081309152928522810; +const kr = (0, _math.sin)(_math.pi / 10) / (0, _math.sin)(7 * _math.pi / 10); +const kx = (0, _math.sin)(_math.tau / 10) * kr; +const ky = -(0, _math.cos)(_math.tau / 10) * kr; +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size * ka); + const x = kx * r; + const y = ky * r; + context.moveTo(0, -r); + context.lineTo(x, y); + for (let i = 1; i < 5; ++i) { + const a = _math.tau * i / 5; + const c = (0, _math.cos)(a); + const s = (0, _math.sin)(a); + context.lineTo(s * r, -c * r); + context.lineTo(c * x - s * y, s * x + c * y); + } + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/times.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/times.js new file mode 100644 index 000000000000..15fce57f18b4 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/times.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size - (0, _math.min)(size / 6, 1.7)) * 0.6189; + context.moveTo(-r, -r); + context.lineTo(r, r); + context.moveTo(-r, r); + context.lineTo(r, -r); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle.js new file mode 100644 index 000000000000..682e80d97b1d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +const sqrt3 = (0, _math.sqrt)(3); +var _default = exports.default = { + draw(context, size) { + const y = -(0, _math.sqrt)(size / (sqrt3 * 3)); + context.moveTo(0, y * 2); + context.lineTo(-sqrt3 * y, -y); + context.lineTo(sqrt3 * y, -y); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle2.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle2.js new file mode 100644 index 000000000000..e1f4588ca646 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/triangle2.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +const sqrt3 = (0, _math.sqrt)(3); +var _default = exports.default = { + draw(context, size) { + const s = (0, _math.sqrt)(size) * 0.6824; + const t = s / 2; + const u = s * sqrt3 / 2; // cos(Math.PI / 6) + context.moveTo(0, -s); + context.lineTo(u, t); + context.lineTo(-u, t); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/wye.js b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/wye.js new file mode 100644 index 000000000000..7008cc867f81 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-shape/src/symbol/wye.js @@ -0,0 +1,32 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _math = require("../math.js"); +const c = -0.5; +const s = (0, _math.sqrt)(3) / 2; +const k = 1 / (0, _math.sqrt)(12); +const a = (k / 2 + 1) * 3; +var _default = exports.default = { + draw(context, size) { + const r = (0, _math.sqrt)(size / a); + const x0 = r / 2, + y0 = r * k; + const x1 = x0, + y1 = r * k + r; + const x2 = -x1, + y2 = y1; + context.moveTo(x0, y0); + context.lineTo(x1, y1); + context.lineTo(x2, y2); + context.lineTo(c * x0 - s * y0, s * x0 + c * y0); + context.lineTo(c * x1 - s * y1, s * x1 + c * y1); + context.lineTo(c * x2 - s * y2, s * x2 + c * y2); + context.lineTo(c * x0 + s * y0, c * y0 - s * x0); + context.lineTo(c * x1 + s * y1, c * y1 - s * x1); + context.lineTo(c * x2 + s * y2, c * y2 - s * x2); + context.closePath(); + } +}; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time-format/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-time-format/LICENSE new file mode 100644 index 000000000000..b0145150fd35 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time-format/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2021 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-time-format/src/defaultLocale.js b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/defaultLocale.js new file mode 100644 index 000000000000..6fdb1ad2ec21 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/defaultLocale.js @@ -0,0 +1,32 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = defaultLocale; +exports.utcParse = exports.utcFormat = exports.timeParse = exports.timeFormat = void 0; +var _locale = _interopRequireDefault(require("./locale.js")); +var locale; +var timeFormat; +var timeParse; +var utcFormat; +var utcParse; +defaultLocale({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); +function defaultLocale(definition) { + locale = (0, _locale.default)(definition); + exports.timeFormat = timeFormat = locale.format; + exports.timeParse = timeParse = locale.parse; + exports.utcFormat = utcFormat = locale.utcFormat; + exports.utcParse = utcParse = locale.utcParse; + return locale; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time-format/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/index.js new file mode 100644 index 000000000000..96f92a1b0272 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/index.js @@ -0,0 +1,60 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isoFormat", { + enumerable: true, + get: function () { + return _isoFormat.default; + } +}); +Object.defineProperty(exports, "isoParse", { + enumerable: true, + get: function () { + return _isoParse.default; + } +}); +Object.defineProperty(exports, "timeFormat", { + enumerable: true, + get: function () { + return _defaultLocale.timeFormat; + } +}); +Object.defineProperty(exports, "timeFormatDefaultLocale", { + enumerable: true, + get: function () { + return _defaultLocale.default; + } +}); +Object.defineProperty(exports, "timeFormatLocale", { + enumerable: true, + get: function () { + return _locale.default; + } +}); +Object.defineProperty(exports, "timeParse", { + enumerable: true, + get: function () { + return _defaultLocale.timeParse; + } +}); +Object.defineProperty(exports, "utcFormat", { + enumerable: true, + get: function () { + return _defaultLocale.utcFormat; + } +}); +Object.defineProperty(exports, "utcParse", { + enumerable: true, + get: function () { + return _defaultLocale.utcParse; + } +}); +var _defaultLocale = _interopRequireWildcard(require("./defaultLocale.js")); +var _locale = _interopRequireDefault(require("./locale.js")); +var _isoFormat = _interopRequireDefault(require("./isoFormat.js")); +var _isoParse = _interopRequireDefault(require("./isoParse.js")); +function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } +function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoFormat.js b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoFormat.js new file mode 100644 index 000000000000..6873561cec82 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoFormat.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isoSpecifier = exports.default = void 0; +var _defaultLocale = require("./defaultLocale.js"); +var isoSpecifier = exports.isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; +function formatIsoNative(date) { + return date.toISOString(); +} +var formatIso = Date.prototype.toISOString ? formatIsoNative : (0, _defaultLocale.utcFormat)(isoSpecifier); +var _default = exports.default = formatIso; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoParse.js b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoParse.js new file mode 100644 index 000000000000..b43d3b9bd16c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/isoParse.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _isoFormat = require("./isoFormat.js"); +var _defaultLocale = require("./defaultLocale.js"); +function parseIsoNative(string) { + var date = new Date(string); + return isNaN(date) ? null : date; +} +var parseIso = +new Date("2000-01-01T00:00:00.000Z") ? parseIsoNative : (0, _defaultLocale.utcParse)(_isoFormat.isoSpecifier); +var _default = exports.default = parseIso; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time-format/src/locale.js b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/locale.js new file mode 100644 index 000000000000..3b21337139c0 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time-format/src/locale.js @@ -0,0 +1,606 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = formatLocale; +var _index = require("../../../lib-vendor/d3-time/src/index.js"); +function localDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); + date.setFullYear(d.y); + return date; + } + return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); +} +function utcDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); + date.setUTCFullYear(d.y); + return date; + } + return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); +} +function newDate(y, m, d) { + return { + y: y, + m: m, + d: d, + H: 0, + M: 0, + S: 0, + L: 0 + }; +} +function formatLocale(locale) { + var locale_dateTime = locale.dateTime, + locale_date = locale.date, + locale_time = locale.time, + locale_periods = locale.periods, + locale_weekdays = locale.days, + locale_shortWeekdays = locale.shortDays, + locale_months = locale.months, + locale_shortMonths = locale.shortMonths; + var periodRe = formatRe(locale_periods), + periodLookup = formatLookup(locale_periods), + weekdayRe = formatRe(locale_weekdays), + weekdayLookup = formatLookup(locale_weekdays), + shortWeekdayRe = formatRe(locale_shortWeekdays), + shortWeekdayLookup = formatLookup(locale_shortWeekdays), + monthRe = formatRe(locale_months), + monthLookup = formatLookup(locale_months), + shortMonthRe = formatRe(locale_shortMonths), + shortMonthLookup = formatLookup(locale_shortMonths); + var formats = { + "a": formatShortWeekday, + "A": formatWeekday, + "b": formatShortMonth, + "B": formatMonth, + "c": null, + "d": formatDayOfMonth, + "e": formatDayOfMonth, + "f": formatMicroseconds, + "g": formatYearISO, + "G": formatFullYearISO, + "H": formatHour24, + "I": formatHour12, + "j": formatDayOfYear, + "L": formatMilliseconds, + "m": formatMonthNumber, + "M": formatMinutes, + "p": formatPeriod, + "q": formatQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatSeconds, + "u": formatWeekdayNumberMonday, + "U": formatWeekNumberSunday, + "V": formatWeekNumberISO, + "w": formatWeekdayNumberSunday, + "W": formatWeekNumberMonday, + "x": null, + "X": null, + "y": formatYear, + "Y": formatFullYear, + "Z": formatZone, + "%": formatLiteralPercent + }; + var utcFormats = { + "a": formatUTCShortWeekday, + "A": formatUTCWeekday, + "b": formatUTCShortMonth, + "B": formatUTCMonth, + "c": null, + "d": formatUTCDayOfMonth, + "e": formatUTCDayOfMonth, + "f": formatUTCMicroseconds, + "g": formatUTCYearISO, + "G": formatUTCFullYearISO, + "H": formatUTCHour24, + "I": formatUTCHour12, + "j": formatUTCDayOfYear, + "L": formatUTCMilliseconds, + "m": formatUTCMonthNumber, + "M": formatUTCMinutes, + "p": formatUTCPeriod, + "q": formatUTCQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatUTCSeconds, + "u": formatUTCWeekdayNumberMonday, + "U": formatUTCWeekNumberSunday, + "V": formatUTCWeekNumberISO, + "w": formatUTCWeekdayNumberSunday, + "W": formatUTCWeekNumberMonday, + "x": null, + "X": null, + "y": formatUTCYear, + "Y": formatUTCFullYear, + "Z": formatUTCZone, + "%": formatLiteralPercent + }; + var parses = { + "a": parseShortWeekday, + "A": parseWeekday, + "b": parseShortMonth, + "B": parseMonth, + "c": parseLocaleDateTime, + "d": parseDayOfMonth, + "e": parseDayOfMonth, + "f": parseMicroseconds, + "g": parseYear, + "G": parseFullYear, + "H": parseHour24, + "I": parseHour24, + "j": parseDayOfYear, + "L": parseMilliseconds, + "m": parseMonthNumber, + "M": parseMinutes, + "p": parsePeriod, + "q": parseQuarter, + "Q": parseUnixTimestamp, + "s": parseUnixTimestampSeconds, + "S": parseSeconds, + "u": parseWeekdayNumberMonday, + "U": parseWeekNumberSunday, + "V": parseWeekNumberISO, + "w": parseWeekdayNumberSunday, + "W": parseWeekNumberMonday, + "x": parseLocaleDate, + "X": parseLocaleTime, + "y": parseYear, + "Y": parseFullYear, + "Z": parseZone, + "%": parseLiteralPercent + }; + + // These recursive directive definitions must be deferred. + formats.x = newFormat(locale_date, formats); + formats.X = newFormat(locale_time, formats); + formats.c = newFormat(locale_dateTime, formats); + utcFormats.x = newFormat(locale_date, utcFormats); + utcFormats.X = newFormat(locale_time, utcFormats); + utcFormats.c = newFormat(locale_dateTime, utcFormats); + function newFormat(specifier, formats) { + return function (date) { + var string = [], + i = -1, + j = 0, + n = specifier.length, + c, + pad, + format; + if (!(date instanceof Date)) date = new Date(+date); + while (++i < n) { + if (specifier.charCodeAt(i) === 37) { + string.push(specifier.slice(j, i)); + if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);else pad = c === "e" ? " " : "0"; + if (format = formats[c]) c = format(date, pad); + string.push(c); + j = i + 1; + } + } + string.push(specifier.slice(j, i)); + return string.join(""); + }; + } + function newParse(specifier, Z) { + return function (string) { + var d = newDate(1900, undefined, 1), + i = parseSpecifier(d, specifier, string += "", 0), + week, + day; + if (i != string.length) return null; + + // If a UNIX timestamp is specified, return it. + if ("Q" in d) return new Date(d.Q); + if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); + + // If this is utcParse, never use the local timezone. + if (Z && !("Z" in d)) d.Z = 0; + + // The am-pm flag is 0 for AM, and 1 for PM. + if ("p" in d) d.H = d.H % 12 + d.p * 12; + + // If the month was not specified, inherit from the quarter. + if (d.m === undefined) d.m = "q" in d ? d.q : 0; + + // Convert day-of-week and week-of-year to day-of-year. + if ("V" in d) { + if (d.V < 1 || d.V > 53) return null; + if (!("w" in d)) d.w = 1; + if ("Z" in d) { + week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); + week = day > 4 || day === 0 ? _index.utcMonday.ceil(week) : (0, _index.utcMonday)(week); + week = _index.utcDay.offset(week, (d.V - 1) * 7); + d.y = week.getUTCFullYear(); + d.m = week.getUTCMonth(); + d.d = week.getUTCDate() + (d.w + 6) % 7; + } else { + week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); + week = day > 4 || day === 0 ? _index.timeMonday.ceil(week) : (0, _index.timeMonday)(week); + week = _index.timeDay.offset(week, (d.V - 1) * 7); + d.y = week.getFullYear(); + d.m = week.getMonth(); + d.d = week.getDate() + (d.w + 6) % 7; + } + } else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; + day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); + d.m = 0; + d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; + } + + // If a time zone is specified, all fields are interpreted as UTC and then + // offset according to the specified time zone. + if ("Z" in d) { + d.H += d.Z / 100 | 0; + d.M += d.Z % 100; + return utcDate(d); + } + + // Otherwise, all fields are in local time. + return localDate(d); + }; + } + function parseSpecifier(d, specifier, string, j) { + var i = 0, + n = specifier.length, + m = string.length, + c, + parse; + while (i < n) { + if (j >= m) return -1; + c = specifier.charCodeAt(i++); + if (c === 37) { + c = specifier.charAt(i++); + parse = parses[c in pads ? specifier.charAt(i++) : c]; + if (!parse || (j = parse(d, string, j)) < 0) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + return j; + } + function parsePeriod(d, string, i) { + var n = periodRe.exec(string.slice(i)); + return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function parseShortWeekday(d, string, i) { + var n = shortWeekdayRe.exec(string.slice(i)); + return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function parseWeekday(d, string, i) { + var n = weekdayRe.exec(string.slice(i)); + return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function parseShortMonth(d, string, i) { + var n = shortMonthRe.exec(string.slice(i)); + return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function parseMonth(d, string, i) { + var n = monthRe.exec(string.slice(i)); + return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function parseLocaleDateTime(d, string, i) { + return parseSpecifier(d, locale_dateTime, string, i); + } + function parseLocaleDate(d, string, i) { + return parseSpecifier(d, locale_date, string, i); + } + function parseLocaleTime(d, string, i) { + return parseSpecifier(d, locale_time, string, i); + } + function formatShortWeekday(d) { + return locale_shortWeekdays[d.getDay()]; + } + function formatWeekday(d) { + return locale_weekdays[d.getDay()]; + } + function formatShortMonth(d) { + return locale_shortMonths[d.getMonth()]; + } + function formatMonth(d) { + return locale_months[d.getMonth()]; + } + function formatPeriod(d) { + return locale_periods[+(d.getHours() >= 12)]; + } + function formatQuarter(d) { + return 1 + ~~(d.getMonth() / 3); + } + function formatUTCShortWeekday(d) { + return locale_shortWeekdays[d.getUTCDay()]; + } + function formatUTCWeekday(d) { + return locale_weekdays[d.getUTCDay()]; + } + function formatUTCShortMonth(d) { + return locale_shortMonths[d.getUTCMonth()]; + } + function formatUTCMonth(d) { + return locale_months[d.getUTCMonth()]; + } + function formatUTCPeriod(d) { + return locale_periods[+(d.getUTCHours() >= 12)]; + } + function formatUTCQuarter(d) { + return 1 + ~~(d.getUTCMonth() / 3); + } + return { + format: function (specifier) { + var f = newFormat(specifier += "", formats); + f.toString = function () { + return specifier; + }; + return f; + }, + parse: function (specifier) { + var p = newParse(specifier += "", false); + p.toString = function () { + return specifier; + }; + return p; + }, + utcFormat: function (specifier) { + var f = newFormat(specifier += "", utcFormats); + f.toString = function () { + return specifier; + }; + return f; + }, + utcParse: function (specifier) { + var p = newParse(specifier += "", true); + p.toString = function () { + return specifier; + }; + return p; + } + }; +} +var pads = { + "-": "", + "_": " ", + "0": "0" + }, + numberRe = /^\s*\d+/, + // note: ignores next directive + percentRe = /^%/, + requoteRe = /[\\^$*+?|[\]().{}]/g; +function pad(value, fill, width) { + var sign = value < 0 ? "-" : "", + string = (sign ? -value : value) + "", + length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); +} +function requote(s) { + return s.replace(requoteRe, "\\$&"); +} +function formatRe(names) { + return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); +} +function formatLookup(names) { + return new Map(names.map((name, i) => [name.toLowerCase(), i])); +} +function parseWeekdayNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.w = +n[0], i + n[0].length) : -1; +} +function parseWeekdayNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.u = +n[0], i + n[0].length) : -1; +} +function parseWeekNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.U = +n[0], i + n[0].length) : -1; +} +function parseWeekNumberISO(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.V = +n[0], i + n[0].length) : -1; +} +function parseWeekNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.W = +n[0], i + n[0].length) : -1; +} +function parseFullYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 4)); + return n ? (d.y = +n[0], i + n[0].length) : -1; +} +function parseYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; +} +function parseZone(d, string, i) { + var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); + return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; +} +function parseQuarter(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; +} +function parseMonthNumber(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.m = n[0] - 1, i + n[0].length) : -1; +} +function parseDayOfMonth(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.d = +n[0], i + n[0].length) : -1; +} +function parseDayOfYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; +} +function parseHour24(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.H = +n[0], i + n[0].length) : -1; +} +function parseMinutes(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.M = +n[0], i + n[0].length) : -1; +} +function parseSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.S = +n[0], i + n[0].length) : -1; +} +function parseMilliseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.L = +n[0], i + n[0].length) : -1; +} +function parseMicroseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 6)); + return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; +} +function parseLiteralPercent(d, string, i) { + var n = percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; +} +function parseUnixTimestamp(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = +n[0], i + n[0].length) : -1; +} +function parseUnixTimestampSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.s = +n[0], i + n[0].length) : -1; +} +function formatDayOfMonth(d, p) { + return pad(d.getDate(), p, 2); +} +function formatHour24(d, p) { + return pad(d.getHours(), p, 2); +} +function formatHour12(d, p) { + return pad(d.getHours() % 12 || 12, p, 2); +} +function formatDayOfYear(d, p) { + return pad(1 + _index.timeDay.count((0, _index.timeYear)(d), d), p, 3); +} +function formatMilliseconds(d, p) { + return pad(d.getMilliseconds(), p, 3); +} +function formatMicroseconds(d, p) { + return formatMilliseconds(d, p) + "000"; +} +function formatMonthNumber(d, p) { + return pad(d.getMonth() + 1, p, 2); +} +function formatMinutes(d, p) { + return pad(d.getMinutes(), p, 2); +} +function formatSeconds(d, p) { + return pad(d.getSeconds(), p, 2); +} +function formatWeekdayNumberMonday(d) { + var day = d.getDay(); + return day === 0 ? 7 : day; +} +function formatWeekNumberSunday(d, p) { + return pad(_index.timeSunday.count((0, _index.timeYear)(d) - 1, d), p, 2); +} +function dISO(d) { + var day = d.getDay(); + return day >= 4 || day === 0 ? (0, _index.timeThursday)(d) : _index.timeThursday.ceil(d); +} +function formatWeekNumberISO(d, p) { + d = dISO(d); + return pad(_index.timeThursday.count((0, _index.timeYear)(d), d) + ((0, _index.timeYear)(d).getDay() === 4), p, 2); +} +function formatWeekdayNumberSunday(d) { + return d.getDay(); +} +function formatWeekNumberMonday(d, p) { + return pad(_index.timeMonday.count((0, _index.timeYear)(d) - 1, d), p, 2); +} +function formatYear(d, p) { + return pad(d.getFullYear() % 100, p, 2); +} +function formatYearISO(d, p) { + d = dISO(d); + return pad(d.getFullYear() % 100, p, 2); +} +function formatFullYear(d, p) { + return pad(d.getFullYear() % 10000, p, 4); +} +function formatFullYearISO(d, p) { + var day = d.getDay(); + d = day >= 4 || day === 0 ? (0, _index.timeThursday)(d) : _index.timeThursday.ceil(d); + return pad(d.getFullYear() % 10000, p, 4); +} +function formatZone(d) { + var z = d.getTimezoneOffset(); + return (z > 0 ? "-" : (z *= -1, "+")) + pad(z / 60 | 0, "0", 2) + pad(z % 60, "0", 2); +} +function formatUTCDayOfMonth(d, p) { + return pad(d.getUTCDate(), p, 2); +} +function formatUTCHour24(d, p) { + return pad(d.getUTCHours(), p, 2); +} +function formatUTCHour12(d, p) { + return pad(d.getUTCHours() % 12 || 12, p, 2); +} +function formatUTCDayOfYear(d, p) { + return pad(1 + _index.utcDay.count((0, _index.utcYear)(d), d), p, 3); +} +function formatUTCMilliseconds(d, p) { + return pad(d.getUTCMilliseconds(), p, 3); +} +function formatUTCMicroseconds(d, p) { + return formatUTCMilliseconds(d, p) + "000"; +} +function formatUTCMonthNumber(d, p) { + return pad(d.getUTCMonth() + 1, p, 2); +} +function formatUTCMinutes(d, p) { + return pad(d.getUTCMinutes(), p, 2); +} +function formatUTCSeconds(d, p) { + return pad(d.getUTCSeconds(), p, 2); +} +function formatUTCWeekdayNumberMonday(d) { + var dow = d.getUTCDay(); + return dow === 0 ? 7 : dow; +} +function formatUTCWeekNumberSunday(d, p) { + return pad(_index.utcSunday.count((0, _index.utcYear)(d) - 1, d), p, 2); +} +function UTCdISO(d) { + var day = d.getUTCDay(); + return day >= 4 || day === 0 ? (0, _index.utcThursday)(d) : _index.utcThursday.ceil(d); +} +function formatUTCWeekNumberISO(d, p) { + d = UTCdISO(d); + return pad(_index.utcThursday.count((0, _index.utcYear)(d), d) + ((0, _index.utcYear)(d).getUTCDay() === 4), p, 2); +} +function formatUTCWeekdayNumberSunday(d) { + return d.getUTCDay(); +} +function formatUTCWeekNumberMonday(d, p) { + return pad(_index.utcMonday.count((0, _index.utcYear)(d) - 1, d), p, 2); +} +function formatUTCYear(d, p) { + return pad(d.getUTCFullYear() % 100, p, 2); +} +function formatUTCYearISO(d, p) { + d = UTCdISO(d); + return pad(d.getUTCFullYear() % 100, p, 2); +} +function formatUTCFullYear(d, p) { + return pad(d.getUTCFullYear() % 10000, p, 4); +} +function formatUTCFullYearISO(d, p) { + var day = d.getUTCDay(); + d = day >= 4 || day === 0 ? (0, _index.utcThursday)(d) : _index.utcThursday.ceil(d); + return pad(d.getUTCFullYear() % 10000, p, 4); +} +function formatUTCZone() { + return "+0000"; +} +function formatLiteralPercent() { + return "%"; +} +function formatUnixTimestamp(d) { + return +d; +} +function formatUnixTimestampSeconds(d) { + return Math.floor(+d / 1000); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/LICENSE b/packages/x-charts-vendor/lib-vendor/d3-time/LICENSE new file mode 100644 index 000000000000..fbe44bdc9ad5 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/LICENSE @@ -0,0 +1,13 @@ +Copyright 2010-2022 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/day.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/day.js new file mode 100644 index 000000000000..6a3bf656b5fa --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/day.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcDays = exports.utcDay = exports.unixDays = exports.unixDay = exports.timeDays = exports.timeDay = void 0; +var _interval = require("./interval.js"); +var _duration = require("./duration.js"); +const timeDay = exports.timeDay = (0, _interval.timeInterval)(date => date.setHours(0, 0, 0, 0), (date, step) => date.setDate(date.getDate() + step), (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration.durationMinute) / _duration.durationDay, date => date.getDate() - 1); +const timeDays = exports.timeDays = timeDay.range; +const utcDay = exports.utcDay = (0, _interval.timeInterval)(date => { + date.setUTCHours(0, 0, 0, 0); +}, (date, step) => { + date.setUTCDate(date.getUTCDate() + step); +}, (start, end) => { + return (end - start) / _duration.durationDay; +}, date => { + return date.getUTCDate() - 1; +}); +const utcDays = exports.utcDays = utcDay.range; +const unixDay = exports.unixDay = (0, _interval.timeInterval)(date => { + date.setUTCHours(0, 0, 0, 0); +}, (date, step) => { + date.setUTCDate(date.getUTCDate() + step); +}, (start, end) => { + return (end - start) / _duration.durationDay; +}, date => { + return Math.floor(date / _duration.durationDay); +}); +const unixDays = exports.unixDays = unixDay.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/duration.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/duration.js new file mode 100644 index 000000000000..6e5e52af362e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/duration.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.durationYear = exports.durationWeek = exports.durationSecond = exports.durationMonth = exports.durationMinute = exports.durationHour = exports.durationDay = void 0; +const durationSecond = exports.durationSecond = 1000; +const durationMinute = exports.durationMinute = durationSecond * 60; +const durationHour = exports.durationHour = durationMinute * 60; +const durationDay = exports.durationDay = durationHour * 24; +const durationWeek = exports.durationWeek = durationDay * 7; +const durationMonth = exports.durationMonth = durationDay * 30; +const durationYear = exports.durationYear = durationDay * 365; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/hour.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/hour.js new file mode 100644 index 000000000000..27240e003809 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/hour.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcHours = exports.utcHour = exports.timeHours = exports.timeHour = void 0; +var _interval = require("./interval.js"); +var _duration = require("./duration.js"); +const timeHour = exports.timeHour = (0, _interval.timeInterval)(date => { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration.durationSecond - date.getMinutes() * _duration.durationMinute); +}, (date, step) => { + date.setTime(+date + step * _duration.durationHour); +}, (start, end) => { + return (end - start) / _duration.durationHour; +}, date => { + return date.getHours(); +}); +const timeHours = exports.timeHours = timeHour.range; +const utcHour = exports.utcHour = (0, _interval.timeInterval)(date => { + date.setUTCMinutes(0, 0, 0); +}, (date, step) => { + date.setTime(+date + step * _duration.durationHour); +}, (start, end) => { + return (end - start) / _duration.durationHour; +}, date => { + return date.getUTCHours(); +}); +const utcHours = exports.utcHours = utcHour.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/index.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/index.js new file mode 100644 index 000000000000..6bc4b04e71be --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/index.js @@ -0,0 +1,417 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "timeDay", { + enumerable: true, + get: function () { + return _day.timeDay; + } +}); +Object.defineProperty(exports, "timeDays", { + enumerable: true, + get: function () { + return _day.timeDays; + } +}); +Object.defineProperty(exports, "timeFriday", { + enumerable: true, + get: function () { + return _week.timeFriday; + } +}); +Object.defineProperty(exports, "timeFridays", { + enumerable: true, + get: function () { + return _week.timeFridays; + } +}); +Object.defineProperty(exports, "timeHour", { + enumerable: true, + get: function () { + return _hour.timeHour; + } +}); +Object.defineProperty(exports, "timeHours", { + enumerable: true, + get: function () { + return _hour.timeHours; + } +}); +Object.defineProperty(exports, "timeInterval", { + enumerable: true, + get: function () { + return _interval.timeInterval; + } +}); +Object.defineProperty(exports, "timeMillisecond", { + enumerable: true, + get: function () { + return _millisecond.millisecond; + } +}); +Object.defineProperty(exports, "timeMilliseconds", { + enumerable: true, + get: function () { + return _millisecond.milliseconds; + } +}); +Object.defineProperty(exports, "timeMinute", { + enumerable: true, + get: function () { + return _minute.timeMinute; + } +}); +Object.defineProperty(exports, "timeMinutes", { + enumerable: true, + get: function () { + return _minute.timeMinutes; + } +}); +Object.defineProperty(exports, "timeMonday", { + enumerable: true, + get: function () { + return _week.timeMonday; + } +}); +Object.defineProperty(exports, "timeMondays", { + enumerable: true, + get: function () { + return _week.timeMondays; + } +}); +Object.defineProperty(exports, "timeMonth", { + enumerable: true, + get: function () { + return _month.timeMonth; + } +}); +Object.defineProperty(exports, "timeMonths", { + enumerable: true, + get: function () { + return _month.timeMonths; + } +}); +Object.defineProperty(exports, "timeSaturday", { + enumerable: true, + get: function () { + return _week.timeSaturday; + } +}); +Object.defineProperty(exports, "timeSaturdays", { + enumerable: true, + get: function () { + return _week.timeSaturdays; + } +}); +Object.defineProperty(exports, "timeSecond", { + enumerable: true, + get: function () { + return _second.second; + } +}); +Object.defineProperty(exports, "timeSeconds", { + enumerable: true, + get: function () { + return _second.seconds; + } +}); +Object.defineProperty(exports, "timeSunday", { + enumerable: true, + get: function () { + return _week.timeSunday; + } +}); +Object.defineProperty(exports, "timeSundays", { + enumerable: true, + get: function () { + return _week.timeSundays; + } +}); +Object.defineProperty(exports, "timeThursday", { + enumerable: true, + get: function () { + return _week.timeThursday; + } +}); +Object.defineProperty(exports, "timeThursdays", { + enumerable: true, + get: function () { + return _week.timeThursdays; + } +}); +Object.defineProperty(exports, "timeTickInterval", { + enumerable: true, + get: function () { + return _ticks.timeTickInterval; + } +}); +Object.defineProperty(exports, "timeTicks", { + enumerable: true, + get: function () { + return _ticks.timeTicks; + } +}); +Object.defineProperty(exports, "timeTuesday", { + enumerable: true, + get: function () { + return _week.timeTuesday; + } +}); +Object.defineProperty(exports, "timeTuesdays", { + enumerable: true, + get: function () { + return _week.timeTuesdays; + } +}); +Object.defineProperty(exports, "timeWednesday", { + enumerable: true, + get: function () { + return _week.timeWednesday; + } +}); +Object.defineProperty(exports, "timeWednesdays", { + enumerable: true, + get: function () { + return _week.timeWednesdays; + } +}); +Object.defineProperty(exports, "timeWeek", { + enumerable: true, + get: function () { + return _week.timeSunday; + } +}); +Object.defineProperty(exports, "timeWeeks", { + enumerable: true, + get: function () { + return _week.timeSundays; + } +}); +Object.defineProperty(exports, "timeYear", { + enumerable: true, + get: function () { + return _year.timeYear; + } +}); +Object.defineProperty(exports, "timeYears", { + enumerable: true, + get: function () { + return _year.timeYears; + } +}); +Object.defineProperty(exports, "unixDay", { + enumerable: true, + get: function () { + return _day.unixDay; + } +}); +Object.defineProperty(exports, "unixDays", { + enumerable: true, + get: function () { + return _day.unixDays; + } +}); +Object.defineProperty(exports, "utcDay", { + enumerable: true, + get: function () { + return _day.utcDay; + } +}); +Object.defineProperty(exports, "utcDays", { + enumerable: true, + get: function () { + return _day.utcDays; + } +}); +Object.defineProperty(exports, "utcFriday", { + enumerable: true, + get: function () { + return _week.utcFriday; + } +}); +Object.defineProperty(exports, "utcFridays", { + enumerable: true, + get: function () { + return _week.utcFridays; + } +}); +Object.defineProperty(exports, "utcHour", { + enumerable: true, + get: function () { + return _hour.utcHour; + } +}); +Object.defineProperty(exports, "utcHours", { + enumerable: true, + get: function () { + return _hour.utcHours; + } +}); +Object.defineProperty(exports, "utcMillisecond", { + enumerable: true, + get: function () { + return _millisecond.millisecond; + } +}); +Object.defineProperty(exports, "utcMilliseconds", { + enumerable: true, + get: function () { + return _millisecond.milliseconds; + } +}); +Object.defineProperty(exports, "utcMinute", { + enumerable: true, + get: function () { + return _minute.utcMinute; + } +}); +Object.defineProperty(exports, "utcMinutes", { + enumerable: true, + get: function () { + return _minute.utcMinutes; + } +}); +Object.defineProperty(exports, "utcMonday", { + enumerable: true, + get: function () { + return _week.utcMonday; + } +}); +Object.defineProperty(exports, "utcMondays", { + enumerable: true, + get: function () { + return _week.utcMondays; + } +}); +Object.defineProperty(exports, "utcMonth", { + enumerable: true, + get: function () { + return _month.utcMonth; + } +}); +Object.defineProperty(exports, "utcMonths", { + enumerable: true, + get: function () { + return _month.utcMonths; + } +}); +Object.defineProperty(exports, "utcSaturday", { + enumerable: true, + get: function () { + return _week.utcSaturday; + } +}); +Object.defineProperty(exports, "utcSaturdays", { + enumerable: true, + get: function () { + return _week.utcSaturdays; + } +}); +Object.defineProperty(exports, "utcSecond", { + enumerable: true, + get: function () { + return _second.second; + } +}); +Object.defineProperty(exports, "utcSeconds", { + enumerable: true, + get: function () { + return _second.seconds; + } +}); +Object.defineProperty(exports, "utcSunday", { + enumerable: true, + get: function () { + return _week.utcSunday; + } +}); +Object.defineProperty(exports, "utcSundays", { + enumerable: true, + get: function () { + return _week.utcSundays; + } +}); +Object.defineProperty(exports, "utcThursday", { + enumerable: true, + get: function () { + return _week.utcThursday; + } +}); +Object.defineProperty(exports, "utcThursdays", { + enumerable: true, + get: function () { + return _week.utcThursdays; + } +}); +Object.defineProperty(exports, "utcTickInterval", { + enumerable: true, + get: function () { + return _ticks.utcTickInterval; + } +}); +Object.defineProperty(exports, "utcTicks", { + enumerable: true, + get: function () { + return _ticks.utcTicks; + } +}); +Object.defineProperty(exports, "utcTuesday", { + enumerable: true, + get: function () { + return _week.utcTuesday; + } +}); +Object.defineProperty(exports, "utcTuesdays", { + enumerable: true, + get: function () { + return _week.utcTuesdays; + } +}); +Object.defineProperty(exports, "utcWednesday", { + enumerable: true, + get: function () { + return _week.utcWednesday; + } +}); +Object.defineProperty(exports, "utcWednesdays", { + enumerable: true, + get: function () { + return _week.utcWednesdays; + } +}); +Object.defineProperty(exports, "utcWeek", { + enumerable: true, + get: function () { + return _week.utcSunday; + } +}); +Object.defineProperty(exports, "utcWeeks", { + enumerable: true, + get: function () { + return _week.utcSundays; + } +}); +Object.defineProperty(exports, "utcYear", { + enumerable: true, + get: function () { + return _year.utcYear; + } +}); +Object.defineProperty(exports, "utcYears", { + enumerable: true, + get: function () { + return _year.utcYears; + } +}); +var _interval = require("./interval.js"); +var _millisecond = require("./millisecond.js"); +var _second = require("./second.js"); +var _minute = require("./minute.js"); +var _hour = require("./hour.js"); +var _day = require("./day.js"); +var _week = require("./week.js"); +var _month = require("./month.js"); +var _year = require("./year.js"); +var _ticks = require("./ticks.js"); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/interval.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/interval.js new file mode 100644 index 000000000000..1049b7a19fc8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/interval.js @@ -0,0 +1,61 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.timeInterval = timeInterval; +const t0 = new Date(), + t1 = new Date(); +function timeInterval(floori, offseti, count, field) { + function interval(date) { + return floori(date = arguments.length === 0 ? new Date() : new Date(+date)), date; + } + interval.floor = date => { + return floori(date = new Date(+date)), date; + }; + interval.ceil = date => { + return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; + }; + interval.round = date => { + const d0 = interval(date), + d1 = interval.ceil(date); + return date - d0 < d1 - date ? d0 : d1; + }; + interval.offset = (date, step) => { + return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; + }; + interval.range = (start, stop, step) => { + const range = []; + start = interval.ceil(start); + step = step == null ? 1 : Math.floor(step); + if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date + let previous; + do range.push(previous = new Date(+start)), offseti(start, step), floori(start); while (previous < start && start < stop); + return range; + }; + interval.filter = test => { + return timeInterval(date => { + if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); + }, (date, step) => { + if (date >= date) { + if (step < 0) while (++step <= 0) { + while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty + } else while (--step >= 0) { + while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty + } + } + }); + }; + if (count) { + interval.count = (start, end) => { + t0.setTime(+start), t1.setTime(+end); + floori(t0), floori(t1); + return Math.floor(count(t0, t1)); + }; + interval.every = step => { + step = Math.floor(step); + return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? d => field(d) % step === 0 : d => interval.count(0, d) % step === 0); + }; + } + return interval; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/millisecond.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/millisecond.js new file mode 100644 index 000000000000..2f1538a42971 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/millisecond.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.milliseconds = exports.millisecond = void 0; +var _interval = require("./interval.js"); +const millisecond = exports.millisecond = (0, _interval.timeInterval)(() => { + // noop +}, (date, step) => { + date.setTime(+date + step); +}, (start, end) => { + return end - start; +}); + +// An optimized implementation for this simple case. +millisecond.every = k => { + k = Math.floor(k); + if (!isFinite(k) || !(k > 0)) return null; + if (!(k > 1)) return millisecond; + return (0, _interval.timeInterval)(date => { + date.setTime(Math.floor(date / k) * k); + }, (date, step) => { + date.setTime(+date + step * k); + }, (start, end) => { + return (end - start) / k; + }); +}; +const milliseconds = exports.milliseconds = millisecond.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/minute.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/minute.js new file mode 100644 index 000000000000..644dea7a38e7 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/minute.js @@ -0,0 +1,28 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcMinutes = exports.utcMinute = exports.timeMinutes = exports.timeMinute = void 0; +var _interval = require("./interval.js"); +var _duration = require("./duration.js"); +const timeMinute = exports.timeMinute = (0, _interval.timeInterval)(date => { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration.durationSecond); +}, (date, step) => { + date.setTime(+date + step * _duration.durationMinute); +}, (start, end) => { + return (end - start) / _duration.durationMinute; +}, date => { + return date.getMinutes(); +}); +const timeMinutes = exports.timeMinutes = timeMinute.range; +const utcMinute = exports.utcMinute = (0, _interval.timeInterval)(date => { + date.setUTCSeconds(0, 0); +}, (date, step) => { + date.setTime(+date + step * _duration.durationMinute); +}, (start, end) => { + return (end - start) / _duration.durationMinute; +}, date => { + return date.getUTCMinutes(); +}); +const utcMinutes = exports.utcMinutes = utcMinute.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/month.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/month.js new file mode 100644 index 000000000000..3caa95557231 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/month.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcMonths = exports.utcMonth = exports.timeMonths = exports.timeMonth = void 0; +var _interval = require("./interval.js"); +const timeMonth = exports.timeMonth = (0, _interval.timeInterval)(date => { + date.setDate(1); + date.setHours(0, 0, 0, 0); +}, (date, step) => { + date.setMonth(date.getMonth() + step); +}, (start, end) => { + return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; +}, date => { + return date.getMonth(); +}); +const timeMonths = exports.timeMonths = timeMonth.range; +const utcMonth = exports.utcMonth = (0, _interval.timeInterval)(date => { + date.setUTCDate(1); + date.setUTCHours(0, 0, 0, 0); +}, (date, step) => { + date.setUTCMonth(date.getUTCMonth() + step); +}, (start, end) => { + return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; +}, date => { + return date.getUTCMonth(); +}); +const utcMonths = exports.utcMonths = utcMonth.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/second.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/second.js new file mode 100644 index 000000000000..abb57fc0780b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/second.js @@ -0,0 +1,18 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.seconds = exports.second = void 0; +var _interval = require("./interval.js"); +var _duration = require("./duration.js"); +const second = exports.second = (0, _interval.timeInterval)(date => { + date.setTime(date - date.getMilliseconds()); +}, (date, step) => { + date.setTime(+date + step * _duration.durationSecond); +}, (start, end) => { + return (end - start) / _duration.durationSecond; +}, date => { + return date.getUTCSeconds(); +}); +const seconds = exports.seconds = second.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/ticks.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/ticks.js new file mode 100644 index 000000000000..063d82c5b91e --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/ticks.js @@ -0,0 +1,41 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcTicks = exports.utcTickInterval = exports.timeTicks = exports.timeTickInterval = void 0; +var _index = require("../../../lib-vendor/d3-array/src/index.js"); +var _duration = require("./duration.js"); +var _millisecond = require("./millisecond.js"); +var _second = require("./second.js"); +var _minute = require("./minute.js"); +var _hour = require("./hour.js"); +var _day = require("./day.js"); +var _week = require("./week.js"); +var _month = require("./month.js"); +var _year = require("./year.js"); +function ticker(year, month, week, day, hour, minute) { + const tickIntervals = [[_second.second, 1, _duration.durationSecond], [_second.second, 5, 5 * _duration.durationSecond], [_second.second, 15, 15 * _duration.durationSecond], [_second.second, 30, 30 * _duration.durationSecond], [minute, 1, _duration.durationMinute], [minute, 5, 5 * _duration.durationMinute], [minute, 15, 15 * _duration.durationMinute], [minute, 30, 30 * _duration.durationMinute], [hour, 1, _duration.durationHour], [hour, 3, 3 * _duration.durationHour], [hour, 6, 6 * _duration.durationHour], [hour, 12, 12 * _duration.durationHour], [day, 1, _duration.durationDay], [day, 2, 2 * _duration.durationDay], [week, 1, _duration.durationWeek], [month, 1, _duration.durationMonth], [month, 3, 3 * _duration.durationMonth], [year, 1, _duration.durationYear]]; + function ticks(start, stop, count) { + const reverse = stop < start; + if (reverse) [start, stop] = [stop, start]; + const interval = count && typeof count.range === "function" ? count : tickInterval(start, stop, count); + const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop + return reverse ? ticks.reverse() : ticks; + } + function tickInterval(start, stop, count) { + const target = Math.abs(stop - start) / count; + const i = (0, _index.bisector)(([,, step]) => step).right(tickIntervals, target); + if (i === tickIntervals.length) return year.every((0, _index.tickStep)(start / _duration.durationYear, stop / _duration.durationYear, count)); + if (i === 0) return _millisecond.millisecond.every(Math.max((0, _index.tickStep)(start, stop, count), 1)); + const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; + return t.every(step); + } + return [ticks, tickInterval]; +} +const [utcTicks, utcTickInterval] = ticker(_year.utcYear, _month.utcMonth, _week.utcSunday, _day.unixDay, _hour.utcHour, _minute.utcMinute); +exports.utcTickInterval = utcTickInterval; +exports.utcTicks = utcTicks; +const [timeTicks, timeTickInterval] = ticker(_year.timeYear, _month.timeMonth, _week.timeSunday, _day.timeDay, _hour.timeHour, _minute.timeMinute); +exports.timeTickInterval = timeTickInterval; +exports.timeTicks = timeTicks; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/week.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/week.js new file mode 100644 index 000000000000..8f0904213e04 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/week.js @@ -0,0 +1,56 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcWednesdays = exports.utcWednesday = exports.utcTuesdays = exports.utcTuesday = exports.utcThursdays = exports.utcThursday = exports.utcSundays = exports.utcSunday = exports.utcSaturdays = exports.utcSaturday = exports.utcMondays = exports.utcMonday = exports.utcFridays = exports.utcFriday = exports.timeWednesdays = exports.timeWednesday = exports.timeTuesdays = exports.timeTuesday = exports.timeThursdays = exports.timeThursday = exports.timeSundays = exports.timeSunday = exports.timeSaturdays = exports.timeSaturday = exports.timeMondays = exports.timeMonday = exports.timeFridays = exports.timeFriday = void 0; +var _interval = require("./interval.js"); +var _duration = require("./duration.js"); +function timeWeekday(i) { + return (0, _interval.timeInterval)(date => { + date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); + date.setHours(0, 0, 0, 0); + }, (date, step) => { + date.setDate(date.getDate() + step * 7); + }, (start, end) => { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration.durationMinute) / _duration.durationWeek; + }); +} +const timeSunday = exports.timeSunday = timeWeekday(0); +const timeMonday = exports.timeMonday = timeWeekday(1); +const timeTuesday = exports.timeTuesday = timeWeekday(2); +const timeWednesday = exports.timeWednesday = timeWeekday(3); +const timeThursday = exports.timeThursday = timeWeekday(4); +const timeFriday = exports.timeFriday = timeWeekday(5); +const timeSaturday = exports.timeSaturday = timeWeekday(6); +const timeSundays = exports.timeSundays = timeSunday.range; +const timeMondays = exports.timeMondays = timeMonday.range; +const timeTuesdays = exports.timeTuesdays = timeTuesday.range; +const timeWednesdays = exports.timeWednesdays = timeWednesday.range; +const timeThursdays = exports.timeThursdays = timeThursday.range; +const timeFridays = exports.timeFridays = timeFriday.range; +const timeSaturdays = exports.timeSaturdays = timeSaturday.range; +function utcWeekday(i) { + return (0, _interval.timeInterval)(date => { + date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); + date.setUTCHours(0, 0, 0, 0); + }, (date, step) => { + date.setUTCDate(date.getUTCDate() + step * 7); + }, (start, end) => { + return (end - start) / _duration.durationWeek; + }); +} +const utcSunday = exports.utcSunday = utcWeekday(0); +const utcMonday = exports.utcMonday = utcWeekday(1); +const utcTuesday = exports.utcTuesday = utcWeekday(2); +const utcWednesday = exports.utcWednesday = utcWeekday(3); +const utcThursday = exports.utcThursday = utcWeekday(4); +const utcFriday = exports.utcFriday = utcWeekday(5); +const utcSaturday = exports.utcSaturday = utcWeekday(6); +const utcSundays = exports.utcSundays = utcSunday.range; +const utcMondays = exports.utcMondays = utcMonday.range; +const utcTuesdays = exports.utcTuesdays = utcTuesday.range; +const utcWednesdays = exports.utcWednesdays = utcWednesday.range; +const utcThursdays = exports.utcThursdays = utcThursday.range; +const utcFridays = exports.utcFridays = utcFriday.range; +const utcSaturdays = exports.utcSaturdays = utcSaturday.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/d3-time/src/year.js b/packages/x-charts-vendor/lib-vendor/d3-time/src/year.js new file mode 100644 index 000000000000..b5b890d95c52 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/d3-time/src/year.js @@ -0,0 +1,51 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.utcYears = exports.utcYear = exports.timeYears = exports.timeYear = void 0; +var _interval = require("./interval.js"); +const timeYear = exports.timeYear = (0, _interval.timeInterval)(date => { + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); +}, (date, step) => { + date.setFullYear(date.getFullYear() + step); +}, (start, end) => { + return end.getFullYear() - start.getFullYear(); +}, date => { + return date.getFullYear(); +}); + +// An optimized implementation for this simple case. +timeYear.every = k => { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0, _interval.timeInterval)(date => { + date.setFullYear(Math.floor(date.getFullYear() / k) * k); + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, (date, step) => { + date.setFullYear(date.getFullYear() + step * k); + }); +}; +const timeYears = exports.timeYears = timeYear.range; +const utcYear = exports.utcYear = (0, _interval.timeInterval)(date => { + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); +}, (date, step) => { + date.setUTCFullYear(date.getUTCFullYear() + step); +}, (start, end) => { + return end.getUTCFullYear() - start.getUTCFullYear(); +}, date => { + return date.getUTCFullYear(); +}); + +// An optimized implementation for this simple case. +utcYear.every = k => { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0, _interval.timeInterval)(date => { + date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, (date, step) => { + date.setUTCFullYear(date.getUTCFullYear() + step * k); + }); +}; +const utcYears = exports.utcYears = utcYear.range; \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/delaunator/LICENSE b/packages/x-charts-vendor/lib-vendor/delaunator/LICENSE new file mode 100644 index 000000000000..631921c40afa --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/delaunator/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2021, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/delaunator/delaunator.js b/packages/x-charts-vendor/lib-vendor/delaunator/delaunator.js new file mode 100644 index 000000000000..9f64c7ef772d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/delaunator/delaunator.js @@ -0,0 +1,688 @@ +"use strict"; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Delaunator = factory()); +})(this, function () { + 'use strict'; + + const epsilon = 1.1102230246251565e-16; + const splitter = 134217729; + const resulterrbound = (3 + 8 * epsilon) * epsilon; + + // fast_expansion_sum_zeroelim routine from oritinal code + function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; + } + function vec(n) { + return new Float64Array(n); + } + const ccwerrboundA = (3 + 16 * epsilon) * epsilon; + const ccwerrboundB = (2 + 12 * epsilon) * epsilon; + const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon; + const B = vec(4); + const C1 = vec(8); + const C2 = vec(12); + const D = vec(16); + const u = vec(4); + function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = estimate(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) { + return det; + } + errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C1len = sum(4, B, 4, u, C1); + s1 = acx * bcytail; + c = splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C2len = sum(C1len, C1, 4, u, C2); + s1 = acxtail * bcytail; + c = splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const Dlen = sum(C2len, C2, 4, u, D); + return D[Dlen - 1]; + } + function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); + } + const EPSILON = Math.pow(2, -52); + const EDGE_STACK = new Uint32Array(512); + class Delaunator { + static from(points, getX = defaultGetX, getY = defaultGetY) { + const n = points.length; + const coords = new Float64Array(n * 2); + for (let i = 0; i < n; i++) { + const p = points[i]; + coords[2 * i] = getX(p); + coords[2 * i + 1] = getY(p); + } + return new Delaunator(coords); + } + constructor(coords) { + const n = coords.length >> 1; + if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.'); + this.coords = coords; + + // arrays that will store the triangulation graph + const maxTriangles = Math.max(2 * n - 5, 0); + this._triangles = new Uint32Array(maxTriangles * 3); + this._halfedges = new Int32Array(maxTriangles * 3); + + // temporary arrays for tracking the edges of the advancing convex hull + this._hashSize = Math.ceil(Math.sqrt(n)); + this._hullPrev = new Uint32Array(n); // edge to prev edge + this._hullNext = new Uint32Array(n); // edge to next edge + this._hullTri = new Uint32Array(n); // edge to adjacent triangle + this._hullHash = new Int32Array(this._hashSize); // angular edge hash + + // temporary arrays for sorting points + this._ids = new Uint32Array(n); + this._dists = new Float64Array(n); + this.update(); + } + update() { + const { + coords, + _hullPrev: hullPrev, + _hullNext: hullNext, + _hullTri: hullTri, + _hullHash: hullHash + } = this; + const n = coords.length >> 1; + + // populate an array of point indices; calculate input data bbox + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + for (let i = 0; i < n; i++) { + const x = coords[2 * i]; + const y = coords[2 * i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + this._ids[i] = i; + } + const cx = (minX + maxX) / 2; + const cy = (minY + maxY) / 2; + let i0, i1, i2; + + // pick a seed point close to the center + for (let i = 0, minDist = Infinity; i < n; i++) { + const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]); + if (d < minDist) { + i0 = i; + minDist = d; + } + } + const i0x = coords[2 * i0]; + const i0y = coords[2 * i0 + 1]; + + // find the point closest to the seed + for (let i = 0, minDist = Infinity; i < n; i++) { + if (i === i0) continue; + const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]); + if (d < minDist && d > 0) { + i1 = i; + minDist = d; + } + } + let i1x = coords[2 * i1]; + let i1y = coords[2 * i1 + 1]; + let minRadius = Infinity; + + // find the third point which forms the smallest circumcircle with the first two + for (let i = 0; i < n; i++) { + if (i === i0 || i === i1) continue; + const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]); + if (r < minRadius) { + i2 = i; + minRadius = r; + } + } + let i2x = coords[2 * i2]; + let i2y = coords[2 * i2 + 1]; + if (minRadius === Infinity) { + // order collinear points by dx (or dy if all x are identical) + // and return the list as a hull + for (let i = 0; i < n; i++) { + this._dists[i] = coords[2 * i] - coords[0] || coords[2 * i + 1] - coords[1]; + } + quicksort(this._ids, this._dists, 0, n - 1); + const hull = new Uint32Array(n); + let j = 0; + for (let i = 0, d0 = -Infinity; i < n; i++) { + const id = this._ids[i]; + const d = this._dists[id]; + if (d > d0) { + hull[j++] = id; + d0 = d; + } + } + this.hull = hull.subarray(0, j); + this.triangles = new Uint32Array(0); + this.halfedges = new Uint32Array(0); + return; + } + + // swap the order of the seed points for counter-clockwise orientation + if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { + const i = i1; + const x = i1x; + const y = i1y; + i1 = i2; + i1x = i2x; + i1y = i2y; + i2 = i; + i2x = x; + i2y = y; + } + const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y); + this._cx = center.x; + this._cy = center.y; + for (let i = 0; i < n; i++) { + this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y); + } + + // sort the points by distance from the seed triangle circumcenter + quicksort(this._ids, this._dists, 0, n - 1); + + // set up the seed triangle as the starting hull + this._hullStart = i0; + let hullSize = 3; + hullNext[i0] = hullPrev[i2] = i1; + hullNext[i1] = hullPrev[i0] = i2; + hullNext[i2] = hullPrev[i1] = i0; + hullTri[i0] = 0; + hullTri[i1] = 1; + hullTri[i2] = 2; + hullHash.fill(-1); + hullHash[this._hashKey(i0x, i0y)] = i0; + hullHash[this._hashKey(i1x, i1y)] = i1; + hullHash[this._hashKey(i2x, i2y)] = i2; + this.trianglesLen = 0; + this._addTriangle(i0, i1, i2, -1, -1, -1); + for (let k = 0, xp, yp; k < this._ids.length; k++) { + const i = this._ids[k]; + const x = coords[2 * i]; + const y = coords[2 * i + 1]; + + // skip near-duplicate points + if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue; + xp = x; + yp = y; + + // skip seed triangle points + if (i === i0 || i === i1 || i === i2) continue; + + // find a visible edge on the convex hull using edge hash + let start = 0; + for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) { + start = hullHash[(key + j) % this._hashSize]; + if (start !== -1 && start !== hullNext[start]) break; + } + start = hullPrev[start]; + let e = start, + q; + while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) { + e = q; + if (e === start) { + e = -1; + break; + } + } + if (e === -1) continue; // likely a near-duplicate point; skip it + + // add the first triangle from the point + let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]); + + // recursively flip triangles from the point until they satisfy the Delaunay condition + hullTri[i] = this._legalize(t + 2); + hullTri[e] = t; // keep track of boundary triangles on the hull + hullSize++; + + // walk forward through the hull, adding more triangles and flipping recursively + let n = hullNext[e]; + while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) { + t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]); + hullTri[i] = this._legalize(t + 2); + hullNext[n] = n; // mark as removed + hullSize--; + n = q; + } + + // walk backward from the other side, adding more triangles and flipping + if (e === start) { + while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) { + t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]); + this._legalize(t + 2); + hullTri[q] = t; + hullNext[e] = e; // mark as removed + hullSize--; + e = q; + } + } + + // update the hull indices + this._hullStart = hullPrev[i] = e; + hullNext[e] = hullPrev[n] = i; + hullNext[i] = n; + + // save the two new edges in the hash table + hullHash[this._hashKey(x, y)] = i; + hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e; + } + this.hull = new Uint32Array(hullSize); + for (let i = 0, e = this._hullStart; i < hullSize; i++) { + this.hull[i] = e; + e = hullNext[e]; + } + + // trim typed triangle mesh arrays + this.triangles = this._triangles.subarray(0, this.trianglesLen); + this.halfedges = this._halfedges.subarray(0, this.trianglesLen); + } + _hashKey(x, y) { + return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize; + } + _legalize(a) { + const { + _triangles: triangles, + _halfedges: halfedges, + coords + } = this; + let i = 0; + let ar = 0; + + // recursion eliminated with a fixed-size stack + while (true) { + const b = halfedges[a]; + + /* if the pair of triangles doesn't satisfy the Delaunay condition + * (p1 is inside the circumcircle of [p0, pl, pr]), flip them, + * then do the same check/flip recursively for the new pair of triangles + * + * pl pl + * /||\ / \ + * al/ || \bl al/ \a + * / || \ / \ + * / a||b \ flip /___ar___\ + * p0\ || /p1 => p0\---bl---/p1 + * \ || / \ / + * ar\ || /br b\ /br + * \||/ \ / + * pr pr + */ + const a0 = a - a % 3; + ar = a0 + (a + 2) % 3; + if (b === -1) { + // convex hull edge + if (i === 0) break; + a = EDGE_STACK[--i]; + continue; + } + const b0 = b - b % 3; + const al = a0 + (a + 1) % 3; + const bl = b0 + (b + 2) % 3; + const p0 = triangles[ar]; + const pr = triangles[a]; + const pl = triangles[al]; + const p1 = triangles[bl]; + const illegal = inCircle(coords[2 * p0], coords[2 * p0 + 1], coords[2 * pr], coords[2 * pr + 1], coords[2 * pl], coords[2 * pl + 1], coords[2 * p1], coords[2 * p1 + 1]); + if (illegal) { + triangles[a] = p1; + triangles[b] = p0; + const hbl = halfedges[bl]; + + // edge swapped on the other side of the hull (rare); fix the halfedge reference + if (hbl === -1) { + let e = this._hullStart; + do { + if (this._hullTri[e] === bl) { + this._hullTri[e] = a; + break; + } + e = this._hullPrev[e]; + } while (e !== this._hullStart); + } + this._link(a, hbl); + this._link(b, halfedges[ar]); + this._link(ar, bl); + const br = b0 + (b + 1) % 3; + + // don't worry about hitting the cap: it can only happen on extremely degenerate input + if (i < EDGE_STACK.length) { + EDGE_STACK[i++] = br; + } + } else { + if (i === 0) break; + a = EDGE_STACK[--i]; + } + } + return ar; + } + _link(a, b) { + this._halfedges[a] = b; + if (b !== -1) this._halfedges[b] = a; + } + + // add a new triangle given vertex indices and adjacent half-edge ids + _addTriangle(i0, i1, i2, a, b, c) { + const t = this.trianglesLen; + this._triangles[t] = i0; + this._triangles[t + 1] = i1; + this._triangles[t + 2] = i2; + this._link(t, a); + this._link(t + 1, b); + this._link(t + 2, c); + this.trianglesLen += 3; + return t; + } + } + + // monotonically increases with real angle, but doesn't need expensive trigonometry + function pseudoAngle(dx, dy) { + const p = dx / (Math.abs(dx) + Math.abs(dy)); + return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1] + } + function dist(ax, ay, bx, by) { + const dx = ax - bx; + const dy = ay - by; + return dx * dx + dy * dy; + } + function inCircle(ax, ay, bx, by, cx, cy, px, py) { + const dx = ax - px; + const dy = ay - py; + const ex = bx - px; + const ey = by - py; + const fx = cx - px; + const fy = cy - py; + const ap = dx * dx + dy * dy; + const bp = ex * ex + ey * ey; + const cp = fx * fx + fy * fy; + return dx * (ey * cp - bp * fy) - dy * (ex * cp - bp * fx) + ap * (ex * fy - ey * fx) < 0; + } + function circumradius(ax, ay, bx, by, cx, cy) { + const dx = bx - ax; + const dy = by - ay; + const ex = cx - ax; + const ey = cy - ay; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; + const d = 0.5 / (dx * ey - dy * ex); + const x = (ey * bl - dy * cl) * d; + const y = (dx * cl - ex * bl) * d; + return x * x + y * y; + } + function circumcenter(ax, ay, bx, by, cx, cy) { + const dx = bx - ax; + const dy = by - ay; + const ex = cx - ax; + const ey = cy - ay; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; + const d = 0.5 / (dx * ey - dy * ex); + const x = ax + (ey * bl - dy * cl) * d; + const y = ay + (dx * cl - ex * bl) * d; + return { + x, + y + }; + } + function quicksort(ids, dists, left, right) { + if (right - left <= 20) { + for (let i = left + 1; i <= right; i++) { + const temp = ids[i]; + const tempDist = dists[temp]; + let j = i - 1; + while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--]; + ids[j + 1] = temp; + } + } else { + const median = left + right >> 1; + let i = left + 1; + let j = right; + swap(ids, median, i); + if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right); + if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right); + if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i); + const temp = ids[i]; + const tempDist = dists[temp]; + while (true) { + do i++; while (dists[ids[i]] < tempDist); + do j--; while (dists[ids[j]] > tempDist); + if (j < i) break; + swap(ids, i, j); + } + ids[left + 1] = ids[j]; + ids[j] = temp; + if (right - i + 1 >= j - left) { + quicksort(ids, dists, i, right); + quicksort(ids, dists, left, j - 1); + } else { + quicksort(ids, dists, left, j - 1); + quicksort(ids, dists, i, right); + } + } + } + function swap(arr, i, j) { + const tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + function defaultGetX(p) { + return p[0]; + } + function defaultGetY(p) { + return p[1]; + } + return Delaunator; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/delaunator/delaunator.min.js b/packages/x-charts-vendor/lib-vendor/delaunator/delaunator.min.js new file mode 100644 index 000000000000..fea4092ad305 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/delaunator/delaunator.min.js @@ -0,0 +1,316 @@ +"use strict"; + +!function (t, i) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : (t = "undefined" != typeof globalThis ? globalThis : t || self).Delaunator = i(); +}(this, function () { + "use strict"; + + const t = 11102230246251565e-32, + i = 134217729, + s = (3 + 8 * t) * t; + function e(t, i, s, e, n) { + let h, + r, + l, + o, + a = i[0], + f = e[0], + c = 0, + u = 0; + f > a == f > -a ? (h = a, a = i[++c]) : (h = f, f = e[++u]); + let _ = 0; + if (c < t && u < s) for (f > a == f > -a ? (r = a + h, l = h - (r - a), a = i[++c]) : (r = f + h, l = h - (r - f), f = e[++u]), h = r, 0 !== l && (n[_++] = l); c < t && u < s;) f > a == f > -a ? (r = h + a, o = r - h, l = h - (r - o) + (a - o), a = i[++c]) : (r = h + f, o = r - h, l = h - (r - o) + (f - o), f = e[++u]), h = r, 0 !== l && (n[_++] = l); + for (; c < t;) r = h + a, o = r - h, l = h - (r - o) + (a - o), a = i[++c], h = r, 0 !== l && (n[_++] = l); + for (; u < s;) r = h + f, o = r - h, l = h - (r - o) + (f - o), f = e[++u], h = r, 0 !== l && (n[_++] = l); + return 0 === h && 0 !== _ || (n[_++] = h), _; + } + function n(t) { + return new Float64Array(t); + } + const h = 22204460492503146e-32, + r = 11093356479670487e-47, + l = n(4), + o = n(8), + a = n(12), + f = n(16), + c = n(4); + function u(t, n, u, _, d, g) { + const y = (n - g) * (u - d), + w = (t - d) * (_ - g), + b = y - w, + A = Math.abs(y + w); + return Math.abs(b) >= 33306690738754716e-32 * A ? b : -function (t, n, u, _, d, g, y) { + let w, b, A, k, M, p, x, S, T, z, U, m, K, L, v, F, P, E; + const H = t - d, + I = u - d, + N = n - g, + j = _ - g; + L = H * j, p = i * H, x = p - (p - H), S = H - x, p = i * j, T = p - (p - j), z = j - T, v = S * z - (L - x * T - S * T - x * z), F = N * I, p = i * N, x = p - (p - N), S = N - x, p = i * I, T = p - (p - I), z = I - T, P = S * z - (F - x * T - S * T - x * z), U = v - P, M = v - U, l[0] = v - (U + M) + (M - P), m = L + U, M = m - L, K = L - (m - M) + (U - M), U = K - F, M = K - U, l[1] = K - (U + M) + (M - F), E = m + U, M = E - m, l[2] = m - (E - M) + (U - M), l[3] = E; + let q = function (t, i) { + let s = i[0]; + for (let e = 1; e < t; e++) s += i[e]; + return s; + }(4, l), + D = h * y; + if (q >= D || -q >= D) return q; + if (M = t - H, w = t - (H + M) + (M - d), M = u - I, A = u - (I + M) + (M - d), M = n - N, b = n - (N + M) + (M - g), M = _ - j, k = _ - (j + M) + (M - g), 0 === w && 0 === b && 0 === A && 0 === k) return q; + if (D = r * y + s * Math.abs(q), q += H * k + j * w - (N * A + I * b), q >= D || -q >= D) return q; + L = w * j, p = i * w, x = p - (p - w), S = w - x, p = i * j, T = p - (p - j), z = j - T, v = S * z - (L - x * T - S * T - x * z), F = b * I, p = i * b, x = p - (p - b), S = b - x, p = i * I, T = p - (p - I), z = I - T, P = S * z - (F - x * T - S * T - x * z), U = v - P, M = v - U, c[0] = v - (U + M) + (M - P), m = L + U, M = m - L, K = L - (m - M) + (U - M), U = K - F, M = K - U, c[1] = K - (U + M) + (M - F), E = m + U, M = E - m, c[2] = m - (E - M) + (U - M), c[3] = E; + const B = e(4, l, 4, c, o); + L = H * k, p = i * H, x = p - (p - H), S = H - x, p = i * k, T = p - (p - k), z = k - T, v = S * z - (L - x * T - S * T - x * z), F = N * A, p = i * N, x = p - (p - N), S = N - x, p = i * A, T = p - (p - A), z = A - T, P = S * z - (F - x * T - S * T - x * z), U = v - P, M = v - U, c[0] = v - (U + M) + (M - P), m = L + U, M = m - L, K = L - (m - M) + (U - M), U = K - F, M = K - U, c[1] = K - (U + M) + (M - F), E = m + U, M = E - m, c[2] = m - (E - M) + (U - M), c[3] = E; + const C = e(B, o, 4, c, a); + L = w * k, p = i * w, x = p - (p - w), S = w - x, p = i * k, T = p - (p - k), z = k - T, v = S * z - (L - x * T - S * T - x * z), F = b * A, p = i * b, x = p - (p - b), S = b - x, p = i * A, T = p - (p - A), z = A - T, P = S * z - (F - x * T - S * T - x * z), U = v - P, M = v - U, c[0] = v - (U + M) + (M - P), m = L + U, M = m - L, K = L - (m - M) + (U - M), U = K - F, M = K - U, c[1] = K - (U + M) + (M - F), E = m + U, M = E - m, c[2] = m - (E - M) + (U - M), c[3] = E; + const G = e(C, a, 4, c, f); + return f[G - 1]; + }(t, n, u, _, d, g, A); + } + const _ = Math.pow(2, -52), + d = new Uint32Array(512); + class g { + static from(t, i = M, s = p) { + const e = t.length, + n = new Float64Array(2 * e); + for (let h = 0; h < e; h++) { + const e = t[h]; + n[2 * h] = i(e), n[2 * h + 1] = s(e); + } + return new g(n); + } + constructor(t) { + const i = t.length >> 1; + if (i > 0 && "number" != typeof t[0]) throw new Error("Expected coords to contain numbers."); + this.coords = t; + const s = Math.max(2 * i - 5, 0); + this._triangles = new Uint32Array(3 * s), this._halfedges = new Int32Array(3 * s), this._hashSize = Math.ceil(Math.sqrt(i)), this._hullPrev = new Uint32Array(i), this._hullNext = new Uint32Array(i), this._hullTri = new Uint32Array(i), this._hullHash = new Int32Array(this._hashSize), this._ids = new Uint32Array(i), this._dists = new Float64Array(i), this.update(); + } + update() { + const { + coords: t, + _hullPrev: i, + _hullNext: s, + _hullTri: e, + _hullHash: n + } = this, + h = t.length >> 1; + let r = 1 / 0, + l = 1 / 0, + o = -1 / 0, + a = -1 / 0; + for (let i = 0; i < h; i++) { + const s = t[2 * i], + e = t[2 * i + 1]; + s < r && (r = s), e < l && (l = e), s > o && (o = s), e > a && (a = e), this._ids[i] = i; + } + const f = (r + o) / 2, + c = (l + a) / 2; + let d, g, w; + for (let i = 0, s = 1 / 0; i < h; i++) { + const e = y(f, c, t[2 * i], t[2 * i + 1]); + e < s && (d = i, s = e); + } + const k = t[2 * d], + M = t[2 * d + 1]; + for (let i = 0, s = 1 / 0; i < h; i++) { + if (i === d) continue; + const e = y(k, M, t[2 * i], t[2 * i + 1]); + e < s && e > 0 && (g = i, s = e); + } + let p = t[2 * g], + x = t[2 * g + 1], + S = 1 / 0; + for (let i = 0; i < h; i++) { + if (i === d || i === g) continue; + const s = b(k, M, p, x, t[2 * i], t[2 * i + 1]); + s < S && (w = i, S = s); + } + let T = t[2 * w], + z = t[2 * w + 1]; + if (S === 1 / 0) { + for (let i = 0; i < h; i++) this._dists[i] = t[2 * i] - t[0] || t[2 * i + 1] - t[1]; + A(this._ids, this._dists, 0, h - 1); + const i = new Uint32Array(h); + let s = 0; + for (let t = 0, e = -1 / 0; t < h; t++) { + const n = this._ids[t], + h = this._dists[n]; + h > e && (i[s++] = n, e = h); + } + return this.hull = i.subarray(0, s), this.triangles = new Uint32Array(0), void (this.halfedges = new Uint32Array(0)); + } + if (u(k, M, p, x, T, z) < 0) { + const t = g, + i = p, + s = x; + g = w, p = T, x = z, w = t, T = i, z = s; + } + const U = function (t, i, s, e, n, h) { + const r = s - t, + l = e - i, + o = n - t, + a = h - i, + f = r * r + l * l, + c = o * o + a * a, + u = .5 / (r * a - l * o); + return { + x: t + (a * f - l * c) * u, + y: i + (r * c - o * f) * u + }; + }(k, M, p, x, T, z); + this._cx = U.x, this._cy = U.y; + for (let i = 0; i < h; i++) this._dists[i] = y(t[2 * i], t[2 * i + 1], U.x, U.y); + A(this._ids, this._dists, 0, h - 1), this._hullStart = d; + let m = 3; + s[d] = i[w] = g, s[g] = i[d] = w, s[w] = i[g] = d, e[d] = 0, e[g] = 1, e[w] = 2, n.fill(-1), n[this._hashKey(k, M)] = d, n[this._hashKey(p, x)] = g, n[this._hashKey(T, z)] = w, this.trianglesLen = 0, this._addTriangle(d, g, w, -1, -1, -1); + for (let h, r, l = 0; l < this._ids.length; l++) { + const o = this._ids[l], + a = t[2 * o], + f = t[2 * o + 1]; + if (l > 0 && Math.abs(a - h) <= _ && Math.abs(f - r) <= _) continue; + if (h = a, r = f, o === d || o === g || o === w) continue; + let c = 0; + for (let t = 0, i = this._hashKey(a, f); t < this._hashSize && (c = n[(i + t) % this._hashSize], -1 === c || c === s[c]); t++); + c = i[c]; + let y, + b = c; + for (; y = s[b], u(a, f, t[2 * b], t[2 * b + 1], t[2 * y], t[2 * y + 1]) >= 0;) if (b = y, b === c) { + b = -1; + break; + } + if (-1 === b) continue; + let A = this._addTriangle(b, o, s[b], -1, -1, e[b]); + e[o] = this._legalize(A + 2), e[b] = A, m++; + let k = s[b]; + for (; y = s[k], u(a, f, t[2 * k], t[2 * k + 1], t[2 * y], t[2 * y + 1]) < 0;) A = this._addTriangle(k, o, y, e[o], -1, e[k]), e[o] = this._legalize(A + 2), s[k] = k, m--, k = y; + if (b === c) for (; y = i[b], u(a, f, t[2 * y], t[2 * y + 1], t[2 * b], t[2 * b + 1]) < 0;) A = this._addTriangle(y, o, b, -1, e[b], e[y]), this._legalize(A + 2), e[y] = A, s[b] = b, m--, b = y; + this._hullStart = i[o] = b, s[b] = i[k] = o, s[o] = k, n[this._hashKey(a, f)] = o, n[this._hashKey(t[2 * b], t[2 * b + 1])] = b; + } + this.hull = new Uint32Array(m); + for (let t = 0, i = this._hullStart; t < m; t++) this.hull[t] = i, i = s[i]; + this.triangles = this._triangles.subarray(0, this.trianglesLen), this.halfedges = this._halfedges.subarray(0, this.trianglesLen); + } + _hashKey(t, i) { + return Math.floor(function (t, i) { + const s = t / (Math.abs(t) + Math.abs(i)); + return (i > 0 ? 3 - s : 1 + s) / 4; + }(t - this._cx, i - this._cy) * this._hashSize) % this._hashSize; + } + _legalize(t) { + const { + _triangles: i, + _halfedges: s, + coords: e + } = this; + let n = 0, + h = 0; + for (;;) { + const r = s[t], + l = t - t % 3; + if (h = l + (t + 2) % 3, -1 === r) { + if (0 === n) break; + t = d[--n]; + continue; + } + const o = r - r % 3, + a = l + (t + 1) % 3, + f = o + (r + 2) % 3, + c = i[h], + u = i[t], + _ = i[a], + g = i[f]; + if (w(e[2 * c], e[2 * c + 1], e[2 * u], e[2 * u + 1], e[2 * _], e[2 * _ + 1], e[2 * g], e[2 * g + 1])) { + i[t] = g, i[r] = c; + const e = s[f]; + if (-1 === e) { + let i = this._hullStart; + do { + if (this._hullTri[i] === f) { + this._hullTri[i] = t; + break; + } + i = this._hullPrev[i]; + } while (i !== this._hullStart); + } + this._link(t, e), this._link(r, s[h]), this._link(h, f); + const l = o + (r + 1) % 3; + n < d.length && (d[n++] = l); + } else { + if (0 === n) break; + t = d[--n]; + } + } + return h; + } + _link(t, i) { + this._halfedges[t] = i, -1 !== i && (this._halfedges[i] = t); + } + _addTriangle(t, i, s, e, n, h) { + const r = this.trianglesLen; + return this._triangles[r] = t, this._triangles[r + 1] = i, this._triangles[r + 2] = s, this._link(r, e), this._link(r + 1, n), this._link(r + 2, h), this.trianglesLen += 3, r; + } + } + function y(t, i, s, e) { + const n = t - s, + h = i - e; + return n * n + h * h; + } + function w(t, i, s, e, n, h, r, l) { + const o = t - r, + a = i - l, + f = s - r, + c = e - l, + u = n - r, + _ = h - l, + d = f * f + c * c, + g = u * u + _ * _; + return o * (c * g - d * _) - a * (f * g - d * u) + (o * o + a * a) * (f * _ - c * u) < 0; + } + function b(t, i, s, e, n, h) { + const r = s - t, + l = e - i, + o = n - t, + a = h - i, + f = r * r + l * l, + c = o * o + a * a, + u = .5 / (r * a - l * o), + _ = (a * f - l * c) * u, + d = (r * c - o * f) * u; + return _ * _ + d * d; + } + function A(t, i, s, e) { + if (e - s <= 20) for (let n = s + 1; n <= e; n++) { + const e = t[n], + h = i[e]; + let r = n - 1; + for (; r >= s && i[t[r]] > h;) t[r + 1] = t[r--]; + t[r + 1] = e; + } else { + let n = s + 1, + h = e; + k(t, s + e >> 1, n), i[t[s]] > i[t[e]] && k(t, s, e), i[t[n]] > i[t[e]] && k(t, n, e), i[t[s]] > i[t[n]] && k(t, s, n); + const r = t[n], + l = i[r]; + for (;;) { + do { + n++; + } while (i[t[n]] < l); + do { + h--; + } while (i[t[h]] > l); + if (h < n) break; + k(t, n, h); + } + t[s + 1] = t[h], t[h] = r, e - n + 1 >= h - s ? (A(t, i, n, e), A(t, i, s, h - 1)) : (A(t, i, s, h - 1), A(t, i, n, e)); + } + } + function k(t, i, s) { + const e = t[i]; + t[i] = t[s], t[s] = e; + } + function M(t) { + return t[0]; + } + function p(t) { + return t[1]; + } + return g; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/delaunator/index.js b/packages/x-charts-vendor/lib-vendor/delaunator/index.js new file mode 100644 index 000000000000..9134fe7aa9da --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/delaunator/index.js @@ -0,0 +1,440 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _index = require("../../lib-vendor/robust-predicates/index.js"); +const EPSILON = Math.pow(2, -52); +const EDGE_STACK = new Uint32Array(512); +class Delaunator { + static from(points, getX = defaultGetX, getY = defaultGetY) { + const n = points.length; + const coords = new Float64Array(n * 2); + for (let i = 0; i < n; i++) { + const p = points[i]; + coords[2 * i] = getX(p); + coords[2 * i + 1] = getY(p); + } + return new Delaunator(coords); + } + constructor(coords) { + const n = coords.length >> 1; + if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.'); + this.coords = coords; + + // arrays that will store the triangulation graph + const maxTriangles = Math.max(2 * n - 5, 0); + this._triangles = new Uint32Array(maxTriangles * 3); + this._halfedges = new Int32Array(maxTriangles * 3); + + // temporary arrays for tracking the edges of the advancing convex hull + this._hashSize = Math.ceil(Math.sqrt(n)); + this._hullPrev = new Uint32Array(n); // edge to prev edge + this._hullNext = new Uint32Array(n); // edge to next edge + this._hullTri = new Uint32Array(n); // edge to adjacent triangle + this._hullHash = new Int32Array(this._hashSize); // angular edge hash + + // temporary arrays for sorting points + this._ids = new Uint32Array(n); + this._dists = new Float64Array(n); + this.update(); + } + update() { + const { + coords, + _hullPrev: hullPrev, + _hullNext: hullNext, + _hullTri: hullTri, + _hullHash: hullHash + } = this; + const n = coords.length >> 1; + + // populate an array of point indices; calculate input data bbox + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + for (let i = 0; i < n; i++) { + const x = coords[2 * i]; + const y = coords[2 * i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + this._ids[i] = i; + } + const cx = (minX + maxX) / 2; + const cy = (minY + maxY) / 2; + let i0, i1, i2; + + // pick a seed point close to the center + for (let i = 0, minDist = Infinity; i < n; i++) { + const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]); + if (d < minDist) { + i0 = i; + minDist = d; + } + } + const i0x = coords[2 * i0]; + const i0y = coords[2 * i0 + 1]; + + // find the point closest to the seed + for (let i = 0, minDist = Infinity; i < n; i++) { + if (i === i0) continue; + const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]); + if (d < minDist && d > 0) { + i1 = i; + minDist = d; + } + } + let i1x = coords[2 * i1]; + let i1y = coords[2 * i1 + 1]; + let minRadius = Infinity; + + // find the third point which forms the smallest circumcircle with the first two + for (let i = 0; i < n; i++) { + if (i === i0 || i === i1) continue; + const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]); + if (r < minRadius) { + i2 = i; + minRadius = r; + } + } + let i2x = coords[2 * i2]; + let i2y = coords[2 * i2 + 1]; + if (minRadius === Infinity) { + // order collinear points by dx (or dy if all x are identical) + // and return the list as a hull + for (let i = 0; i < n; i++) { + this._dists[i] = coords[2 * i] - coords[0] || coords[2 * i + 1] - coords[1]; + } + quicksort(this._ids, this._dists, 0, n - 1); + const hull = new Uint32Array(n); + let j = 0; + for (let i = 0, d0 = -Infinity; i < n; i++) { + const id = this._ids[i]; + const d = this._dists[id]; + if (d > d0) { + hull[j++] = id; + d0 = d; + } + } + this.hull = hull.subarray(0, j); + this.triangles = new Uint32Array(0); + this.halfedges = new Uint32Array(0); + return; + } + + // swap the order of the seed points for counter-clockwise orientation + if ((0, _index.orient2d)(i0x, i0y, i1x, i1y, i2x, i2y) < 0) { + const i = i1; + const x = i1x; + const y = i1y; + i1 = i2; + i1x = i2x; + i1y = i2y; + i2 = i; + i2x = x; + i2y = y; + } + const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y); + this._cx = center.x; + this._cy = center.y; + for (let i = 0; i < n; i++) { + this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y); + } + + // sort the points by distance from the seed triangle circumcenter + quicksort(this._ids, this._dists, 0, n - 1); + + // set up the seed triangle as the starting hull + this._hullStart = i0; + let hullSize = 3; + hullNext[i0] = hullPrev[i2] = i1; + hullNext[i1] = hullPrev[i0] = i2; + hullNext[i2] = hullPrev[i1] = i0; + hullTri[i0] = 0; + hullTri[i1] = 1; + hullTri[i2] = 2; + hullHash.fill(-1); + hullHash[this._hashKey(i0x, i0y)] = i0; + hullHash[this._hashKey(i1x, i1y)] = i1; + hullHash[this._hashKey(i2x, i2y)] = i2; + this.trianglesLen = 0; + this._addTriangle(i0, i1, i2, -1, -1, -1); + for (let k = 0, xp, yp; k < this._ids.length; k++) { + const i = this._ids[k]; + const x = coords[2 * i]; + const y = coords[2 * i + 1]; + + // skip near-duplicate points + if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue; + xp = x; + yp = y; + + // skip seed triangle points + if (i === i0 || i === i1 || i === i2) continue; + + // find a visible edge on the convex hull using edge hash + let start = 0; + for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) { + start = hullHash[(key + j) % this._hashSize]; + if (start !== -1 && start !== hullNext[start]) break; + } + start = hullPrev[start]; + let e = start, + q; + while (q = hullNext[e], (0, _index.orient2d)(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) { + e = q; + if (e === start) { + e = -1; + break; + } + } + if (e === -1) continue; // likely a near-duplicate point; skip it + + // add the first triangle from the point + let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]); + + // recursively flip triangles from the point until they satisfy the Delaunay condition + hullTri[i] = this._legalize(t + 2); + hullTri[e] = t; // keep track of boundary triangles on the hull + hullSize++; + + // walk forward through the hull, adding more triangles and flipping recursively + let n = hullNext[e]; + while (q = hullNext[n], (0, _index.orient2d)(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) { + t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]); + hullTri[i] = this._legalize(t + 2); + hullNext[n] = n; // mark as removed + hullSize--; + n = q; + } + + // walk backward from the other side, adding more triangles and flipping + if (e === start) { + while (q = hullPrev[e], (0, _index.orient2d)(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) { + t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]); + this._legalize(t + 2); + hullTri[q] = t; + hullNext[e] = e; // mark as removed + hullSize--; + e = q; + } + } + + // update the hull indices + this._hullStart = hullPrev[i] = e; + hullNext[e] = hullPrev[n] = i; + hullNext[i] = n; + + // save the two new edges in the hash table + hullHash[this._hashKey(x, y)] = i; + hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e; + } + this.hull = new Uint32Array(hullSize); + for (let i = 0, e = this._hullStart; i < hullSize; i++) { + this.hull[i] = e; + e = hullNext[e]; + } + + // trim typed triangle mesh arrays + this.triangles = this._triangles.subarray(0, this.trianglesLen); + this.halfedges = this._halfedges.subarray(0, this.trianglesLen); + } + _hashKey(x, y) { + return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize; + } + _legalize(a) { + const { + _triangles: triangles, + _halfedges: halfedges, + coords + } = this; + let i = 0; + let ar = 0; + + // recursion eliminated with a fixed-size stack + while (true) { + const b = halfedges[a]; + + /* if the pair of triangles doesn't satisfy the Delaunay condition + * (p1 is inside the circumcircle of [p0, pl, pr]), flip them, + * then do the same check/flip recursively for the new pair of triangles + * + * pl pl + * /||\ / \ + * al/ || \bl al/ \a + * / || \ / \ + * / a||b \ flip /___ar___\ + * p0\ || /p1 => p0\---bl---/p1 + * \ || / \ / + * ar\ || /br b\ /br + * \||/ \ / + * pr pr + */ + const a0 = a - a % 3; + ar = a0 + (a + 2) % 3; + if (b === -1) { + // convex hull edge + if (i === 0) break; + a = EDGE_STACK[--i]; + continue; + } + const b0 = b - b % 3; + const al = a0 + (a + 1) % 3; + const bl = b0 + (b + 2) % 3; + const p0 = triangles[ar]; + const pr = triangles[a]; + const pl = triangles[al]; + const p1 = triangles[bl]; + const illegal = inCircle(coords[2 * p0], coords[2 * p0 + 1], coords[2 * pr], coords[2 * pr + 1], coords[2 * pl], coords[2 * pl + 1], coords[2 * p1], coords[2 * p1 + 1]); + if (illegal) { + triangles[a] = p1; + triangles[b] = p0; + const hbl = halfedges[bl]; + + // edge swapped on the other side of the hull (rare); fix the halfedge reference + if (hbl === -1) { + let e = this._hullStart; + do { + if (this._hullTri[e] === bl) { + this._hullTri[e] = a; + break; + } + e = this._hullPrev[e]; + } while (e !== this._hullStart); + } + this._link(a, hbl); + this._link(b, halfedges[ar]); + this._link(ar, bl); + const br = b0 + (b + 1) % 3; + + // don't worry about hitting the cap: it can only happen on extremely degenerate input + if (i < EDGE_STACK.length) { + EDGE_STACK[i++] = br; + } + } else { + if (i === 0) break; + a = EDGE_STACK[--i]; + } + } + return ar; + } + _link(a, b) { + this._halfedges[a] = b; + if (b !== -1) this._halfedges[b] = a; + } + + // add a new triangle given vertex indices and adjacent half-edge ids + _addTriangle(i0, i1, i2, a, b, c) { + const t = this.trianglesLen; + this._triangles[t] = i0; + this._triangles[t + 1] = i1; + this._triangles[t + 2] = i2; + this._link(t, a); + this._link(t + 1, b); + this._link(t + 2, c); + this.trianglesLen += 3; + return t; + } +} + +// monotonically increases with real angle, but doesn't need expensive trigonometry +exports.default = Delaunator; +function pseudoAngle(dx, dy) { + const p = dx / (Math.abs(dx) + Math.abs(dy)); + return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1] +} +function dist(ax, ay, bx, by) { + const dx = ax - bx; + const dy = ay - by; + return dx * dx + dy * dy; +} +function inCircle(ax, ay, bx, by, cx, cy, px, py) { + const dx = ax - px; + const dy = ay - py; + const ex = bx - px; + const ey = by - py; + const fx = cx - px; + const fy = cy - py; + const ap = dx * dx + dy * dy; + const bp = ex * ex + ey * ey; + const cp = fx * fx + fy * fy; + return dx * (ey * cp - bp * fy) - dy * (ex * cp - bp * fx) + ap * (ex * fy - ey * fx) < 0; +} +function circumradius(ax, ay, bx, by, cx, cy) { + const dx = bx - ax; + const dy = by - ay; + const ex = cx - ax; + const ey = cy - ay; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; + const d = 0.5 / (dx * ey - dy * ex); + const x = (ey * bl - dy * cl) * d; + const y = (dx * cl - ex * bl) * d; + return x * x + y * y; +} +function circumcenter(ax, ay, bx, by, cx, cy) { + const dx = bx - ax; + const dy = by - ay; + const ex = cx - ax; + const ey = cy - ay; + const bl = dx * dx + dy * dy; + const cl = ex * ex + ey * ey; + const d = 0.5 / (dx * ey - dy * ex); + const x = ax + (ey * bl - dy * cl) * d; + const y = ay + (dx * cl - ex * bl) * d; + return { + x, + y + }; +} +function quicksort(ids, dists, left, right) { + if (right - left <= 20) { + for (let i = left + 1; i <= right; i++) { + const temp = ids[i]; + const tempDist = dists[temp]; + let j = i - 1; + while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--]; + ids[j + 1] = temp; + } + } else { + const median = left + right >> 1; + let i = left + 1; + let j = right; + swap(ids, median, i); + if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right); + if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right); + if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i); + const temp = ids[i]; + const tempDist = dists[temp]; + while (true) { + do i++; while (dists[ids[i]] < tempDist); + do j--; while (dists[ids[j]] > tempDist); + if (j < i) break; + swap(ids, i, j); + } + ids[left + 1] = ids[j]; + ids[j] = temp; + if (right - i + 1 >= j - left) { + quicksort(ids, dists, i, right); + quicksort(ids, dists, left, j - 1); + } else { + quicksort(ids, dists, left, j - 1); + quicksort(ids, dists, i, right); + } + } +} +function swap(arr, i, j) { + const tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; +} +function defaultGetX(p) { + return p[0]; +} +function defaultGetY(p) { + return p[1]; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/internmap/LICENSE b/packages/x-charts-vendor/lib-vendor/internmap/LICENSE new file mode 100644 index 000000000000..6fca7113f8ba --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/internmap/LICENSE @@ -0,0 +1,13 @@ +Copyright 2021 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/packages/x-charts-vendor/lib-vendor/internmap/src/index.js b/packages/x-charts-vendor/lib-vendor/internmap/src/index.js new file mode 100644 index 000000000000..9dc9704b86a2 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/internmap/src/index.js @@ -0,0 +1,87 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.InternSet = exports.InternMap = void 0; +class InternMap extends Map { + constructor(entries, key = keyof) { + super(); + Object.defineProperties(this, { + _intern: { + value: new Map() + }, + _key: { + value: key + } + }); + if (entries != null) for (const [key, value] of entries) this.set(key, value); + } + get(key) { + return super.get(intern_get(this, key)); + } + has(key) { + return super.has(intern_get(this, key)); + } + set(key, value) { + return super.set(intern_set(this, key), value); + } + delete(key) { + return super.delete(intern_delete(this, key)); + } +} +exports.InternMap = InternMap; +class InternSet extends Set { + constructor(values, key = keyof) { + super(); + Object.defineProperties(this, { + _intern: { + value: new Map() + }, + _key: { + value: key + } + }); + if (values != null) for (const value of values) this.add(value); + } + has(value) { + return super.has(intern_get(this, value)); + } + add(value) { + return super.add(intern_set(this, value)); + } + delete(value) { + return super.delete(intern_delete(this, value)); + } +} +exports.InternSet = InternSet; +function intern_get({ + _intern, + _key +}, value) { + const key = _key(value); + return _intern.has(key) ? _intern.get(key) : value; +} +function intern_set({ + _intern, + _key +}, value) { + const key = _key(value); + if (_intern.has(key)) return _intern.get(key); + _intern.set(key, value); + return value; +} +function intern_delete({ + _intern, + _key +}, value) { + const key = _key(value); + if (_intern.has(key)) { + value = _intern.get(key); + _intern.delete(key); + } + return value; +} +function keyof(value) { + return value !== null && typeof value === "object" ? value.valueOf() : value; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/LICENSE b/packages/x-charts-vendor/lib-vendor/robust-predicates/LICENSE new file mode 100644 index 000000000000..cf1ab25da034 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/incircle.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/incircle.js new file mode 100644 index 000000000000..7a9d147b49c8 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/incircle.js @@ -0,0 +1,667 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.incircle = incircle; +exports.incirclefast = incirclefast; +var _util = require("./util.js"); +const iccerrboundA = (10 + 96 * _util.epsilon) * _util.epsilon; +const iccerrboundB = (4 + 48 * _util.epsilon) * _util.epsilon; +const iccerrboundC = (44 + 576 * _util.epsilon) * _util.epsilon * _util.epsilon; +const bc = (0, _util.vec)(4); +const ca = (0, _util.vec)(4); +const ab = (0, _util.vec)(4); +const aa = (0, _util.vec)(4); +const bb = (0, _util.vec)(4); +const cc = (0, _util.vec)(4); +const u = (0, _util.vec)(4); +const v = (0, _util.vec)(4); +const axtbc = (0, _util.vec)(8); +const aytbc = (0, _util.vec)(8); +const bxtca = (0, _util.vec)(8); +const bytca = (0, _util.vec)(8); +const cxtab = (0, _util.vec)(8); +const cytab = (0, _util.vec)(8); +const abt = (0, _util.vec)(8); +const bct = (0, _util.vec)(8); +const cat = (0, _util.vec)(8); +const abtt = (0, _util.vec)(4); +const bctt = (0, _util.vec)(4); +const catt = (0, _util.vec)(4); +const _8 = (0, _util.vec)(8); +const _16 = (0, _util.vec)(16); +const _16b = (0, _util.vec)(16); +const _16c = (0, _util.vec)(16); +const _32 = (0, _util.vec)(32); +const _32b = (0, _util.vec)(32); +const _48 = (0, _util.vec)(48); +const _64 = (0, _util.vec)(64); +let fin = (0, _util.vec)(1152); +let fin2 = (0, _util.vec)(1152); +function finadd(finlen, a, alen) { + finlen = (0, _util.sum)(finlen, fin, a, alen, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail; + let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen; + let abtlen, bctlen, catlen; + let abttlen, bcttlen, cattlen; + let n1, n0; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + s1 = bdx * cdy; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = _util.splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = _util.splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = _util.splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = _util.splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = _util.splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = _util.splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _util.sum)((0, _util.sum)((0, _util.sum)((0, _util.scale)((0, _util.scale)(4, bc, adx, _8), _8, adx, _16), _16, (0, _util.scale)((0, _util.scale)(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, (0, _util.sum)((0, _util.scale)((0, _util.scale)(4, ca, bdx, _8), _8, bdx, _16), _16, (0, _util.scale)((0, _util.scale)(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, (0, _util.sum)((0, _util.scale)((0, _util.scale)(4, ab, cdx, _8), _8, cdx, _16), _16, (0, _util.scale)((0, _util.scale)(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin); + let det = (0, _util.estimate)(finlen, fin); + let errbound = iccerrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) { + return det; + } + errbound = iccerrboundC * permanent + _util.resulterrbound * Math.abs(det); + det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx)); + if (det >= errbound || -det >= errbound) { + return det; + } + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = adx * adx; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = ady * ady; + c = _util.splitter * ady; + ahi = c - (c - ady); + alo = ady - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + aa[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + aa[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + aa[2] = _j - (u3 - bvirt) + (_i - bvirt); + aa[3] = u3; + } + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = bdx * bdx; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = bdy * bdy; + c = _util.splitter * bdy; + ahi = c - (c - bdy); + alo = bdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + bb[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + bb[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + bb[2] = _j - (u3 - bvirt) + (_i - bvirt); + bb[3] = u3; + } + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = cdx * cdx; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = cdy * cdy; + c = _util.splitter * cdy; + ahi = c - (c - cdy); + alo = cdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + cc[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + cc[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + cc[2] = _j - (u3 - bvirt) + (_i - bvirt); + cc[3] = u3; + } + if (adxtail !== 0) { + axtbclen = (0, _util.scale)(4, bc, adxtail, axtbc); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(axtbclen, axtbc, 2 * adx, _16), _16, (0, _util.scale)((0, _util.scale)(4, cc, adxtail, _8), _8, bdy, _16b), _16b, (0, _util.scale)((0, _util.scale)(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48); + } + if (adytail !== 0) { + aytbclen = (0, _util.scale)(4, bc, adytail, aytbc); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(aytbclen, aytbc, 2 * ady, _16), _16, (0, _util.scale)((0, _util.scale)(4, bb, adytail, _8), _8, cdx, _16b), _16b, (0, _util.scale)((0, _util.scale)(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48); + } + if (bdxtail !== 0) { + bxtcalen = (0, _util.scale)(4, ca, bdxtail, bxtca); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(bxtcalen, bxtca, 2 * bdx, _16), _16, (0, _util.scale)((0, _util.scale)(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, (0, _util.scale)((0, _util.scale)(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48); + } + if (bdytail !== 0) { + bytcalen = (0, _util.scale)(4, ca, bdytail, bytca); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(bytcalen, bytca, 2 * bdy, _16), _16, (0, _util.scale)((0, _util.scale)(4, cc, bdytail, _8), _8, adx, _16b), _16b, (0, _util.scale)((0, _util.scale)(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48); + } + if (cdxtail !== 0) { + cxtablen = (0, _util.scale)(4, ab, cdxtail, cxtab); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(cxtablen, cxtab, 2 * cdx, _16), _16, (0, _util.scale)((0, _util.scale)(4, bb, cdxtail, _8), _8, ady, _16b), _16b, (0, _util.scale)((0, _util.scale)(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48); + } + if (cdytail !== 0) { + cytablen = (0, _util.scale)(4, ab, cdytail, cytab); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(cytablen, cytab, 2 * cdy, _16), _16, (0, _util.scale)((0, _util.scale)(4, aa, cdytail, _8), _8, bdx, _16b), _16b, (0, _util.scale)((0, _util.scale)(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48); + } + if (adxtail !== 0 || adytail !== 0) { + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = bdxtail * cdy; + c = _util.splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = _util.splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * cdytail; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = _util.splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + s1 = cdxtail * -bdy; + c = _util.splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = _util.splitter * -bdy; + bhi = c - (c - -bdy); + blo = -bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * -bdytail; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = _util.splitter * -bdytail; + bhi = c - (c - -bdytail); + blo = -bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + bctlen = (0, _util.sum)(4, u, 4, v, bct); + s1 = bdxtail * cdytail; + c = _util.splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = _util.splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdxtail * bdytail; + c = _util.splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = _util.splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bctt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bctt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bctt[2] = _j - (u3 - bvirt) + (_i - bvirt); + bctt[3] = u3; + bcttlen = 4; + } else { + bct[0] = 0; + bctlen = 1; + bctt[0] = 0; + bcttlen = 1; + } + if (adxtail !== 0) { + const len = (0, _util.scale)(bctlen, bct, adxtail, _16c); + finlen = finadd(finlen, (0, _util.sum)((0, _util.scale)(axtbclen, axtbc, adxtail, _16), _16, (0, _util.scale)(len, _16c, 2 * adx, _32), _32, _48), _48); + const len2 = (0, _util.scale)(bcttlen, bctt, adxtail, _8); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(len2, _8, 2 * adx, _16), _16, (0, _util.scale)(len2, _8, adxtail, _16b), _16b, (0, _util.scale)(len, _16c, adxtail, _32), _32, _32b, _64), _64); + if (bdytail !== 0) { + finlen = finadd(finlen, (0, _util.scale)((0, _util.scale)(4, cc, adxtail, _8), _8, bdytail, _16), _16); + } + if (cdytail !== 0) { + finlen = finadd(finlen, (0, _util.scale)((0, _util.scale)(4, bb, -adxtail, _8), _8, cdytail, _16), _16); + } + } + if (adytail !== 0) { + const len = (0, _util.scale)(bctlen, bct, adytail, _16c); + finlen = finadd(finlen, (0, _util.sum)((0, _util.scale)(aytbclen, aytbc, adytail, _16), _16, (0, _util.scale)(len, _16c, 2 * ady, _32), _32, _48), _48); + const len2 = (0, _util.scale)(bcttlen, bctt, adytail, _8); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(len2, _8, 2 * ady, _16), _16, (0, _util.scale)(len2, _8, adytail, _16b), _16b, (0, _util.scale)(len, _16c, adytail, _32), _32, _32b, _64), _64); + } + } + if (bdxtail !== 0 || bdytail !== 0) { + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = cdxtail * ady; + c = _util.splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = _util.splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * adytail; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = _util.splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -cdy; + n0 = -cdytail; + s1 = adxtail * n1; + c = _util.splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = _util.splitter * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * n0; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = _util.splitter * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + catlen = (0, _util.sum)(4, u, 4, v, cat); + s1 = cdxtail * adytail; + c = _util.splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = _util.splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adxtail * cdytail; + c = _util.splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = _util.splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + catt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + catt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + catt[2] = _j - (u3 - bvirt) + (_i - bvirt); + catt[3] = u3; + cattlen = 4; + } else { + cat[0] = 0; + catlen = 1; + catt[0] = 0; + cattlen = 1; + } + if (bdxtail !== 0) { + const len = (0, _util.scale)(catlen, cat, bdxtail, _16c); + finlen = finadd(finlen, (0, _util.sum)((0, _util.scale)(bxtcalen, bxtca, bdxtail, _16), _16, (0, _util.scale)(len, _16c, 2 * bdx, _32), _32, _48), _48); + const len2 = (0, _util.scale)(cattlen, catt, bdxtail, _8); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(len2, _8, 2 * bdx, _16), _16, (0, _util.scale)(len2, _8, bdxtail, _16b), _16b, (0, _util.scale)(len, _16c, bdxtail, _32), _32, _32b, _64), _64); + if (cdytail !== 0) { + finlen = finadd(finlen, (0, _util.scale)((0, _util.scale)(4, aa, bdxtail, _8), _8, cdytail, _16), _16); + } + if (adytail !== 0) { + finlen = finadd(finlen, (0, _util.scale)((0, _util.scale)(4, cc, -bdxtail, _8), _8, adytail, _16), _16); + } + } + if (bdytail !== 0) { + const len = (0, _util.scale)(catlen, cat, bdytail, _16c); + finlen = finadd(finlen, (0, _util.sum)((0, _util.scale)(bytcalen, bytca, bdytail, _16), _16, (0, _util.scale)(len, _16c, 2 * bdy, _32), _32, _48), _48); + const len2 = (0, _util.scale)(cattlen, catt, bdytail, _8); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(len2, _8, 2 * bdy, _16), _16, (0, _util.scale)(len2, _8, bdytail, _16b), _16b, (0, _util.scale)(len, _16c, bdytail, _32), _32, _32b, _64), _64); + } + } + if (cdxtail !== 0 || cdytail !== 0) { + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = adxtail * bdy; + c = _util.splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = _util.splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * bdytail; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = _util.splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -ady; + n0 = -adytail; + s1 = bdxtail * n1; + c = _util.splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = _util.splitter * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * n0; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = _util.splitter * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + abtlen = (0, _util.sum)(4, u, 4, v, abt); + s1 = adxtail * bdytail; + c = _util.splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = _util.splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdxtail * adytail; + c = _util.splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = _util.splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + abtt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + abtt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + abtt[2] = _j - (u3 - bvirt) + (_i - bvirt); + abtt[3] = u3; + abttlen = 4; + } else { + abt[0] = 0; + abtlen = 1; + abtt[0] = 0; + abttlen = 1; + } + if (cdxtail !== 0) { + const len = (0, _util.scale)(abtlen, abt, cdxtail, _16c); + finlen = finadd(finlen, (0, _util.sum)((0, _util.scale)(cxtablen, cxtab, cdxtail, _16), _16, (0, _util.scale)(len, _16c, 2 * cdx, _32), _32, _48), _48); + const len2 = (0, _util.scale)(abttlen, abtt, cdxtail, _8); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(len2, _8, 2 * cdx, _16), _16, (0, _util.scale)(len2, _8, cdxtail, _16b), _16b, (0, _util.scale)(len, _16c, cdxtail, _32), _32, _32b, _64), _64); + if (adytail !== 0) { + finlen = finadd(finlen, (0, _util.scale)((0, _util.scale)(4, bb, cdxtail, _8), _8, adytail, _16), _16); + } + if (bdytail !== 0) { + finlen = finadd(finlen, (0, _util.scale)((0, _util.scale)(4, aa, -cdxtail, _8), _8, bdytail, _16), _16); + } + } + if (cdytail !== 0) { + const len = (0, _util.scale)(abtlen, abt, cdytail, _16c); + finlen = finadd(finlen, (0, _util.sum)((0, _util.scale)(cytablen, cytab, cdytail, _16), _16, (0, _util.scale)(len, _16c, 2 * cdy, _32), _32, _48), _48); + const len2 = (0, _util.scale)(abttlen, abtt, cdytail, _8); + finlen = finadd(finlen, (0, _util.sum_three)((0, _util.scale)(len2, _8, 2 * cdy, _16), _16, (0, _util.scale)(len2, _8, cdytail, _16b), _16b, (0, _util.scale)(len, _16c, cdytail, _32), _32, _32b, _64), _64); + } + } + return fin[finlen - 1]; +} +function incircle(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const alift = adx * adx + ady * ady; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const blift = bdx * bdx + bdy * bdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const clift = cdx * cdx + cdy * cdy; + const det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift; + const errbound = iccerrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent); +} +function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const ady = ay - dy; + const bdx = bx - dx; + const bdy = by - dy; + const cdx = cx - dx; + const cdy = cy - dy; + const abdet = adx * bdy - bdx * ady; + const bcdet = bdx * cdy - cdx * bdy; + const cadet = cdx * ady - adx * cdy; + const alift = adx * adx + ady * ady; + const blift = bdx * bdx + bdy * bdy; + const clift = cdx * cdx + cdy * cdy; + return alift * bcdet + blift * cadet + clift * abdet; +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/insphere.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/insphere.js new file mode 100644 index 000000000000..8b0767b8a610 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/insphere.js @@ -0,0 +1,693 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.insphere = insphere; +exports.inspherefast = inspherefast; +var _util = require("./util.js"); +const isperrboundA = (16 + 224 * _util.epsilon) * _util.epsilon; +const isperrboundB = (5 + 72 * _util.epsilon) * _util.epsilon; +const isperrboundC = (71 + 1408 * _util.epsilon) * _util.epsilon * _util.epsilon; +const ab = (0, _util.vec)(4); +const bc = (0, _util.vec)(4); +const cd = (0, _util.vec)(4); +const de = (0, _util.vec)(4); +const ea = (0, _util.vec)(4); +const ac = (0, _util.vec)(4); +const bd = (0, _util.vec)(4); +const ce = (0, _util.vec)(4); +const da = (0, _util.vec)(4); +const eb = (0, _util.vec)(4); +const abc = (0, _util.vec)(24); +const bcd = (0, _util.vec)(24); +const cde = (0, _util.vec)(24); +const dea = (0, _util.vec)(24); +const eab = (0, _util.vec)(24); +const abd = (0, _util.vec)(24); +const bce = (0, _util.vec)(24); +const cda = (0, _util.vec)(24); +const deb = (0, _util.vec)(24); +const eac = (0, _util.vec)(24); +const adet = (0, _util.vec)(1152); +const bdet = (0, _util.vec)(1152); +const cdet = (0, _util.vec)(1152); +const ddet = (0, _util.vec)(1152); +const edet = (0, _util.vec)(1152); +const abdet = (0, _util.vec)(2304); +const cddet = (0, _util.vec)(2304); +const cdedet = (0, _util.vec)(3456); +const deter = (0, _util.vec)(5760); +const _8 = (0, _util.vec)(8); +const _8b = (0, _util.vec)(8); +const _8c = (0, _util.vec)(8); +const _16 = (0, _util.vec)(16); +const _24 = (0, _util.vec)(24); +const _48 = (0, _util.vec)(48); +const _48b = (0, _util.vec)(48); +const _96 = (0, _util.vec)(96); +const _192 = (0, _util.vec)(192); +const _384x = (0, _util.vec)(384); +const _384y = (0, _util.vec)(384); +const _384z = (0, _util.vec)(384); +const _768 = (0, _util.vec)(768); +function sum_three_scale(a, b, c, az, bz, cz, out) { + return (0, _util.sum_three)((0, _util.scale)(4, a, az, _8), _8, (0, _util.scale)(4, b, bz, _8b), _8b, (0, _util.scale)(4, c, cz, _8c), _8c, _16, out); +} +function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) { + const len = (0, _util.sum)((0, _util.sum)(alen, a, blen, b, _48), _48, (0, _util.negate)((0, _util.sum)(clen, c, dlen, d, _48b), _48b), _48b, _96); + return (0, _util.sum_three)((0, _util.scale)((0, _util.scale)(len, _96, x, _192), _192, x, _384x), _384x, (0, _util.scale)((0, _util.scale)(len, _96, y, _192), _192, y, _384y), _384y, (0, _util.scale)((0, _util.scale)(len, _96, z, _192), _192, z, _384z), _384z, _768, out); +} +function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + s1 = ax * by; + c = _util.splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = _util.splitter * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ay; + c = _util.splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = _util.splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + s1 = bx * cy; + c = _util.splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = _util.splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * by; + c = _util.splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = _util.splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cx * dy; + c = _util.splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = _util.splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * cy; + c = _util.splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = _util.splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + cd[2] = _j - (u3 - bvirt) + (_i - bvirt); + cd[3] = u3; + s1 = dx * ey; + c = _util.splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = _util.splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * dy; + c = _util.splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = _util.splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + de[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + de[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + de[2] = _j - (u3 - bvirt) + (_i - bvirt); + de[3] = u3; + s1 = ex * ay; + c = _util.splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = _util.splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * ey; + c = _util.splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = _util.splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ea[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ea[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ea[2] = _j - (u3 - bvirt) + (_i - bvirt); + ea[3] = u3; + s1 = ax * cy; + c = _util.splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = _util.splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * ay; + c = _util.splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = _util.splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ac[2] = _j - (u3 - bvirt) + (_i - bvirt); + ac[3] = u3; + s1 = bx * dy; + c = _util.splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = _util.splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * by; + c = _util.splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = _util.splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bd[2] = _j - (u3 - bvirt) + (_i - bvirt); + bd[3] = u3; + s1 = cx * ey; + c = _util.splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = _util.splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * cy; + c = _util.splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = _util.splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ce[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ce[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ce[2] = _j - (u3 - bvirt) + (_i - bvirt); + ce[3] = u3; + s1 = dx * ay; + c = _util.splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = _util.splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * dy; + c = _util.splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = _util.splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + da[2] = _j - (u3 - bvirt) + (_i - bvirt); + da[3] = u3; + s1 = ex * by; + c = _util.splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = _util.splitter * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ey; + c = _util.splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = _util.splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + eb[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + eb[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + eb[2] = _j - (u3 - bvirt) + (_i - bvirt); + eb[3] = u3; + const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc); + const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd); + const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde); + const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea); + const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab); + const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd); + const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce); + const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda); + const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb); + const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac); + const deterlen = (0, _util.sum_three)(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, (0, _util.sum_three)(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter); + return deter[deterlen - 1]; +} +const xdet = (0, _util.vec)(96); +const ydet = (0, _util.vec)(96); +const zdet = (0, _util.vec)(96); +const fin = (0, _util.vec)(1152); +function liftadapt(a, b, c, az, bz, cz, x, y, z, out) { + const len = sum_three_scale(a, b, c, az, bz, cz, _24); + return (0, _util.sum_three)((0, _util.scale)((0, _util.scale)(len, _24, x, _48), _48, x, xdet), xdet, (0, _util.scale)((0, _util.scale)(len, _24, y, _48), _48, y, ydet), ydet, (0, _util.scale)((0, _util.scale)(len, _24, z, _48), _48, z, zdet), zdet, _192, out); +} +function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) { + let ab3, bc3, cd3, da3, ac3, bd3; + let aextail, bextail, cextail, dextail; + let aeytail, beytail, ceytail, deytail; + let aeztail, beztail, ceztail, deztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0; + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + s1 = aex * bey; + c = _util.splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = _util.splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bex * aey; + c = _util.splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = _util.splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + ab3 = _j + _i; + bvirt = ab3 - _j; + ab[2] = _j - (ab3 - bvirt) + (_i - bvirt); + ab[3] = ab3; + s1 = bex * cey; + c = _util.splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = _util.splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * bey; + c = _util.splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = _util.splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + bc3 = _j + _i; + bvirt = bc3 - _j; + bc[2] = _j - (bc3 - bvirt) + (_i - bvirt); + bc[3] = bc3; + s1 = cex * dey; + c = _util.splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = _util.splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * cey; + c = _util.splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = _util.splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + cd3 = _j + _i; + bvirt = cd3 - _j; + cd[2] = _j - (cd3 - bvirt) + (_i - bvirt); + cd[3] = cd3; + s1 = dex * aey; + c = _util.splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = _util.splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = aex * dey; + c = _util.splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = _util.splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + da3 = _j + _i; + bvirt = da3 - _j; + da[2] = _j - (da3 - bvirt) + (_i - bvirt); + da[3] = da3; + s1 = aex * cey; + c = _util.splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = _util.splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * aey; + c = _util.splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = _util.splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + ac3 = _j + _i; + bvirt = ac3 - _j; + ac[2] = _j - (ac3 - bvirt) + (_i - bvirt); + ac[3] = ac3; + s1 = bex * dey; + c = _util.splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = _util.splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * bey; + c = _util.splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = _util.splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + bd3 = _j + _i; + bvirt = bd3 - _j; + bd[2] = _j - (bd3 - bvirt) + (_i - bvirt); + bd[3] = bd3; + const finlen = (0, _util.sum)((0, _util.sum)((0, _util.negate)(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, (0, _util.sum)((0, _util.negate)(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin); + let det = (0, _util.estimate)(finlen, fin); + let errbound = isperrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - aex; + aextail = ax - (aex + bvirt) + (bvirt - ex); + bvirt = ay - aey; + aeytail = ay - (aey + bvirt) + (bvirt - ey); + bvirt = az - aez; + aeztail = az - (aez + bvirt) + (bvirt - ez); + bvirt = bx - bex; + bextail = bx - (bex + bvirt) + (bvirt - ex); + bvirt = by - bey; + beytail = by - (bey + bvirt) + (bvirt - ey); + bvirt = bz - bez; + beztail = bz - (bez + bvirt) + (bvirt - ez); + bvirt = cx - cex; + cextail = cx - (cex + bvirt) + (bvirt - ex); + bvirt = cy - cey; + ceytail = cy - (cey + bvirt) + (bvirt - ey); + bvirt = cz - cez; + ceztail = cz - (cez + bvirt) + (bvirt - ez); + bvirt = dx - dex; + dextail = dx - (dex + bvirt) + (bvirt - ex); + bvirt = dy - dey; + deytail = dy - (dey + bvirt) + (bvirt - ey); + bvirt = dz - dez; + deztail = dz - (dez + bvirt) + (bvirt - ez); + if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) { + return det; + } + errbound = isperrboundC * permanent + _util.resulterrbound * Math.abs(det); + const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail); + const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail); + const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail); + const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail); + const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail); + const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail); + det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3))); + if (det >= errbound || -det >= errbound) { + return det; + } + return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez); +} +function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + const aexbey = aex * bey; + const bexaey = bex * aey; + const ab = aexbey - bexaey; + const bexcey = bex * cey; + const cexbey = cex * bey; + const bc = bexcey - cexbey; + const cexdey = cex * dey; + const dexcey = dex * cey; + const cd = cexdey - dexcey; + const dexaey = dex * aey; + const aexdey = aex * dey; + const da = dexaey - aexdey; + const aexcey = aex * cey; + const cexaey = cex * aey; + const ac = aexcey - cexaey; + const bexdey = bex * dey; + const dexbey = dex * bey; + const bd = bexdey - dexbey; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + const det = clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab) + (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd)); + const aezplus = Math.abs(aez); + const bezplus = Math.abs(bez); + const cezplus = Math.abs(cez); + const dezplus = Math.abs(dez); + const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey); + const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey); + const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey); + const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey); + const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey); + const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey); + const permanent = (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift + (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift + (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift + (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift; + const errbound = isperrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent); +} +function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) { + const aex = pax - pex; + const bex = pbx - pex; + const cex = pcx - pex; + const dex = pdx - pex; + const aey = pay - pey; + const bey = pby - pey; + const cey = pcy - pey; + const dey = pdy - pey; + const aez = paz - pez; + const bez = pbz - pez; + const cez = pcz - pez; + const dez = pdz - pez; + const ab = aex * bey - bex * aey; + const bc = bex * cey - cex * bey; + const cd = cex * dey - dex * cey; + const da = dex * aey - aex * dey; + const ac = aex * cey - cex * aey; + const bd = bex * dey - dex * bey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + return clift * dab - dlift * abc + (alift * bcd - blift * cda); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient2d.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient2d.js new file mode 100644 index 000000000000..725b2f8d5f9c --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient2d.js @@ -0,0 +1,174 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.orient2d = orient2d; +exports.orient2dfast = orient2dfast; +var _util = require("./util.js"); +const ccwerrboundA = (3 + 16 * _util.epsilon) * _util.epsilon; +const ccwerrboundB = (2 + 12 * _util.epsilon) * _util.epsilon; +const ccwerrboundC = (9 + 64 * _util.epsilon) * _util.epsilon * _util.epsilon; +const B = (0, _util.vec)(4); +const C1 = (0, _util.vec)(8); +const C2 = (0, _util.vec)(12); +const D = (0, _util.vec)(16); +const u = (0, _util.vec)(4); +function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = _util.splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = _util.splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = _util.splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = _util.splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = (0, _util.estimate)(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) { + return det; + } + errbound = ccwerrboundC * detsum + _util.resulterrbound * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = _util.splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = _util.splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = _util.splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = _util.splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C1len = (0, _util.sum)(4, B, 4, u, C1); + s1 = acx * bcytail; + c = _util.splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = _util.splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = _util.splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = _util.splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C2len = (0, _util.sum)(C1len, C1, 4, u, C2); + s1 = acxtail * bcytail; + c = _util.splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = _util.splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = _util.splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = _util.splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const Dlen = (0, _util.sum)(C2len, C2, 4, u, D); + return D[Dlen - 1]; +} +function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); +} +function orient2dfast(ax, ay, bx, by, cx, cy) { + return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient3d.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient3d.js new file mode 100644 index 000000000000..49aaf8958c8d --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/orient3d.js @@ -0,0 +1,422 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.orient3d = orient3d; +exports.orient3dfast = orient3dfast; +var _util = require("./util.js"); +const o3derrboundA = (7 + 56 * _util.epsilon) * _util.epsilon; +const o3derrboundB = (3 + 28 * _util.epsilon) * _util.epsilon; +const o3derrboundC = (26 + 288 * _util.epsilon) * _util.epsilon * _util.epsilon; +const bc = (0, _util.vec)(4); +const ca = (0, _util.vec)(4); +const ab = (0, _util.vec)(4); +const at_b = (0, _util.vec)(4); +const at_c = (0, _util.vec)(4); +const bt_c = (0, _util.vec)(4); +const bt_a = (0, _util.vec)(4); +const ct_a = (0, _util.vec)(4); +const ct_b = (0, _util.vec)(4); +const bct = (0, _util.vec)(8); +const cat = (0, _util.vec)(8); +const abt = (0, _util.vec)(8); +const u = (0, _util.vec)(4); +const _8 = (0, _util.vec)(8); +const _8b = (0, _util.vec)(8); +const _16 = (0, _util.vec)(8); +const _12 = (0, _util.vec)(12); +let fin = (0, _util.vec)(192); +let fin2 = (0, _util.vec)(192); +function finadd(finlen, alen, a) { + finlen = (0, _util.sum)(finlen, fin, alen, a, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; +} +function tailinit(xtail, ytail, ax, ay, bx, by, a, b) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate; + if (xtail === 0) { + if (ytail === 0) { + a[0] = 0; + b[0] = 0; + return 1; + } else { + negate = -ytail; + s1 = negate * ax; + c = _util.splitter * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = _util.splitter * ax; + bhi = c - (c - ax); + blo = ax - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + s1 = ytail * bx; + c = _util.splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = _util.splitter * bx; + bhi = c - (c - bx); + blo = bx - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } + } else { + if (ytail === 0) { + s1 = xtail * ay; + c = _util.splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = _util.splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + negate = -xtail; + s1 = negate * by; + c = _util.splitter * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = _util.splitter * by; + bhi = c - (c - by); + blo = by - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } else { + s1 = xtail * ay; + c = _util.splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = _util.splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ytail * ax; + c = _util.splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = _util.splitter * ax; + bhi = c - (c - ax); + blo = ax - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + a[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + a[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + a[2] = _j - (u3 - bvirt) + (_i - bvirt); + a[3] = u3; + s1 = ytail * bx; + c = _util.splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = _util.splitter * bx; + bhi = c - (c - bx); + blo = bx - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = xtail * by; + c = _util.splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = _util.splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + b[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + b[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + b[2] = _j - (u3 - bvirt) + (_i - bvirt); + b[3] = u3; + return 4; + } + } +} +function tailadd(finlen, a, b, k, z) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3; + s1 = a * b; + c = _util.splitter * a; + ahi = c - (c - a); + alo = a - ahi; + c = _util.splitter * b; + bhi = c - (c - b); + blo = b - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + c = _util.splitter * k; + bhi = c - (c - k); + blo = k - bhi; + _i = s0 * k; + c = _util.splitter * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * k; + c = _util.splitter * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + if (z !== 0) { + c = _util.splitter * z; + bhi = c - (c - z); + blo = z - bhi; + _i = s0 * z; + c = _util.splitter * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * z; + c = _util.splitter * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + } + return finlen; +} +function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail; + let adytail, bdytail, cdytail; + let adztail, bdztail, cdztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + s1 = bdx * cdy; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = _util.splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = _util.splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = _util.splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = _util.splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = _util.splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = _util.splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = _util.splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = _util.splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = _util.splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = (0, _util.sum)((0, _util.sum)((0, _util.scale)(4, bc, adz, _8), _8, (0, _util.scale)(4, ca, bdz, _8b), _8b, _16), _16, (0, _util.scale)(4, ab, cdz, _8), _8, fin); + let det = (0, _util.estimate)(finlen, fin); + let errbound = o3derrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + bvirt = az - adz; + adztail = az - (adz + bvirt) + (bvirt - dz); + bvirt = bz - bdz; + bdztail = bz - (bdz + bvirt) + (bvirt - dz); + bvirt = cz - cdz; + cdztail = cz - (cdz + bvirt) + (bvirt - dz); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) { + return det; + } + errbound = o3derrboundC * permanent + _util.resulterrbound * Math.abs(det); + det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx); + if (det >= errbound || -det >= errbound) { + return det; + } + const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c); + const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a); + const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b); + const bctlen = (0, _util.sum)(bt_len, bt_c, ct_len, ct_b, bct); + finlen = finadd(finlen, (0, _util.scale)(bctlen, bct, adz, _16), _16); + const catlen = (0, _util.sum)(ct_len, ct_a, at_len, at_c, cat); + finlen = finadd(finlen, (0, _util.scale)(catlen, cat, bdz, _16), _16); + const abtlen = (0, _util.sum)(at_len, at_b, bt_len, bt_a, abt); + finlen = finadd(finlen, (0, _util.scale)(abtlen, abt, cdz, _16), _16); + if (adztail !== 0) { + finlen = finadd(finlen, (0, _util.scale)(4, bc, adztail, _12), _12); + finlen = finadd(finlen, (0, _util.scale)(bctlen, bct, adztail, _16), _16); + } + if (bdztail !== 0) { + finlen = finadd(finlen, (0, _util.scale)(4, ca, bdztail, _12), _12); + finlen = finadd(finlen, (0, _util.scale)(catlen, cat, bdztail, _16), _16); + } + if (cdztail !== 0) { + finlen = finadd(finlen, (0, _util.scale)(4, ab, cdztail, _12), _12); + finlen = finadd(finlen, (0, _util.scale)(abtlen, abt, cdztail, _16), _16); + } + if (adxtail !== 0) { + if (bdytail !== 0) { + finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail); + } + if (cdytail !== 0) { + finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail); + } + } + if (bdxtail !== 0) { + if (cdytail !== 0) { + finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail); + } + if (adytail !== 0) { + finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail); + } + } + if (cdxtail !== 0) { + if (adytail !== 0) { + finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail); + } + if (bdytail !== 0) { + finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail); + } + } + return fin[finlen - 1]; +} +function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz); + const errbound = o3derrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent); +} +function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/util.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/util.js new file mode 100644 index 000000000000..b7a1eaeaac89 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/esm/util.js @@ -0,0 +1,147 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.epsilon = void 0; +exports.estimate = estimate; +exports.negate = negate; +exports.resulterrbound = void 0; +exports.scale = scale; +exports.splitter = void 0; +exports.sum = sum; +exports.sum_three = sum_three; +exports.vec = vec; +const epsilon = exports.epsilon = 1.1102230246251565e-16; +const splitter = exports.splitter = 134217729; +const resulterrbound = exports.resulterrbound = (3 + 8 * epsilon) * epsilon; + +// fast_expansion_sum_zeroelim routine from oritinal code +function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; +} +function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); +} + +// scale_expansion_zeroelim routine from oritinal code +function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) { + h[hindex++] = hh; + } + for (let i = 1; i < elen; i++) { + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) { + h[hindex++] = hh; + } + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; +} +function negate(elen, e) { + for (let i = 0; i < elen; i++) e[i] = -e[i]; + return elen; +} +function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; +} +function vec(n) { + return new Float64Array(n); +} \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/index.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/index.js new file mode 100644 index 000000000000..b70df243c219 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/index.js @@ -0,0 +1,57 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "incircle", { + enumerable: true, + get: function () { + return _incircle.incircle; + } +}); +Object.defineProperty(exports, "incirclefast", { + enumerable: true, + get: function () { + return _incircle.incirclefast; + } +}); +Object.defineProperty(exports, "insphere", { + enumerable: true, + get: function () { + return _insphere.insphere; + } +}); +Object.defineProperty(exports, "inspherefast", { + enumerable: true, + get: function () { + return _insphere.inspherefast; + } +}); +Object.defineProperty(exports, "orient2d", { + enumerable: true, + get: function () { + return _orient2d.orient2d; + } +}); +Object.defineProperty(exports, "orient2dfast", { + enumerable: true, + get: function () { + return _orient2d.orient2dfast; + } +}); +Object.defineProperty(exports, "orient3d", { + enumerable: true, + get: function () { + return _orient3d.orient3d; + } +}); +Object.defineProperty(exports, "orient3dfast", { + enumerable: true, + get: function () { + return _orient3d.orient3dfast; + } +}); +var _orient2d = require("./esm/orient2d.js"); +var _orient3d = require("./esm/orient3d.js"); +var _incircle = require("./esm/incircle.js"); +var _insphere = require("./esm/insphere.js"); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.js new file mode 100644 index 000000000000..eb7b0cb31573 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.js @@ -0,0 +1,798 @@ +"use strict"; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {})); +})(this, function (exports) { + 'use strict'; + + const epsilon = 1.1102230246251565e-16; + const splitter = 134217729; + const resulterrbound = (3 + 8 * epsilon) * epsilon; + + // fast_expansion_sum_zeroelim routine from oritinal code + function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); + } + + // scale_expansion_zeroelim routine from oritinal code + function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) { + h[hindex++] = hh; + } + for (let i = 1; i < elen; i++) { + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) { + h[hindex++] = hh; + } + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; + } + function vec(n) { + return new Float64Array(n); + } + const iccerrboundA = (10 + 96 * epsilon) * epsilon; + const iccerrboundB = (4 + 48 * epsilon) * epsilon; + const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon; + const bc = vec(4); + const ca = vec(4); + const ab = vec(4); + const aa = vec(4); + const bb = vec(4); + const cc = vec(4); + const u = vec(4); + const v = vec(4); + const axtbc = vec(8); + const aytbc = vec(8); + const bxtca = vec(8); + const bytca = vec(8); + const cxtab = vec(8); + const cytab = vec(8); + const abt = vec(8); + const bct = vec(8); + const cat = vec(8); + const abtt = vec(4); + const bctt = vec(4); + const catt = vec(4); + const _8 = vec(8); + const _16 = vec(16); + const _16b = vec(16); + const _16c = vec(16); + const _32 = vec(32); + const _32b = vec(32); + const _48 = vec(48); + const _64 = vec(64); + let fin = vec(1152); + let fin2 = vec(1152); + function finadd(finlen, a, alen) { + finlen = sum(finlen, fin, a, alen, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; + } + function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail; + let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen; + let abtlen, bctlen, catlen; + let abttlen, bcttlen, cattlen; + let n1, n0; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + s1 = bdx * cdy; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = sum(sum(sum(scale(scale(4, bc, adx, _8), _8, adx, _16), _16, scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32, sum(scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16, scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64, sum(scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16, scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin); + let det = estimate(finlen, fin); + let errbound = iccerrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) { + return det; + } + errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det); + det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx)); + if (det >= errbound || -det >= errbound) { + return det; + } + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = adx * adx; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = ady * ady; + c = splitter * ady; + ahi = c - (c - ady); + alo = ady - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + aa[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + aa[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + aa[2] = _j - (u3 - bvirt) + (_i - bvirt); + aa[3] = u3; + } + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = bdx * bdx; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = bdy * bdy; + c = splitter * bdy; + ahi = c - (c - bdy); + alo = bdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + bb[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + bb[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + bb[2] = _j - (u3 - bvirt) + (_i - bvirt); + bb[3] = u3; + } + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = cdx * cdx; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = cdy * cdy; + c = splitter * cdy; + ahi = c - (c - cdy); + alo = cdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + cc[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + cc[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + cc[2] = _j - (u3 - bvirt) + (_i - bvirt); + cc[3] = u3; + } + if (adxtail !== 0) { + axtbclen = scale(4, bc, adxtail, axtbc); + finlen = finadd(finlen, sum_three(scale(axtbclen, axtbc, 2 * adx, _16), _16, scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b, scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48); + } + if (adytail !== 0) { + aytbclen = scale(4, bc, adytail, aytbc); + finlen = finadd(finlen, sum_three(scale(aytbclen, aytbc, 2 * ady, _16), _16, scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b, scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48); + } + if (bdxtail !== 0) { + bxtcalen = scale(4, ca, bdxtail, bxtca); + finlen = finadd(finlen, sum_three(scale(bxtcalen, bxtca, 2 * bdx, _16), _16, scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b, scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48); + } + if (bdytail !== 0) { + bytcalen = scale(4, ca, bdytail, bytca); + finlen = finadd(finlen, sum_three(scale(bytcalen, bytca, 2 * bdy, _16), _16, scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b, scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48); + } + if (cdxtail !== 0) { + cxtablen = scale(4, ab, cdxtail, cxtab); + finlen = finadd(finlen, sum_three(scale(cxtablen, cxtab, 2 * cdx, _16), _16, scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b, scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48); + } + if (cdytail !== 0) { + cytablen = scale(4, ab, cdytail, cytab); + finlen = finadd(finlen, sum_three(scale(cytablen, cytab, 2 * cdy, _16), _16, scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b, scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48); + } + if (adxtail !== 0 || adytail !== 0) { + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = bdxtail * cdy; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * cdytail; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + s1 = cdxtail * -bdy; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * -bdy; + bhi = c - (c - -bdy); + blo = -bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * -bdytail; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * -bdytail; + bhi = c - (c - -bdytail); + blo = -bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + bctlen = sum(4, u, 4, v, bct); + s1 = bdxtail * cdytail; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdxtail * bdytail; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bctt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bctt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bctt[2] = _j - (u3 - bvirt) + (_i - bvirt); + bctt[3] = u3; + bcttlen = 4; + } else { + bct[0] = 0; + bctlen = 1; + bctt[0] = 0; + bcttlen = 1; + } + if (adxtail !== 0) { + const len = scale(bctlen, bct, adxtail, _16c); + finlen = finadd(finlen, sum(scale(axtbclen, axtbc, adxtail, _16), _16, scale(len, _16c, 2 * adx, _32), _32, _48), _48); + const len2 = scale(bcttlen, bctt, adxtail, _8); + finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * adx, _16), _16, scale(len2, _8, adxtail, _16b), _16b, scale(len, _16c, adxtail, _32), _32, _32b, _64), _64); + if (bdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16); + } + if (cdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16); + } + } + if (adytail !== 0) { + const len = scale(bctlen, bct, adytail, _16c); + finlen = finadd(finlen, sum(scale(aytbclen, aytbc, adytail, _16), _16, scale(len, _16c, 2 * ady, _32), _32, _48), _48); + const len2 = scale(bcttlen, bctt, adytail, _8); + finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * ady, _16), _16, scale(len2, _8, adytail, _16b), _16b, scale(len, _16c, adytail, _32), _32, _32b, _64), _64); + } + } + if (bdxtail !== 0 || bdytail !== 0) { + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = cdxtail * ady; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * adytail; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -cdy; + n0 = -cdytail; + s1 = adxtail * n1; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * n0; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + catlen = sum(4, u, 4, v, cat); + s1 = cdxtail * adytail; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adxtail * cdytail; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + catt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + catt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + catt[2] = _j - (u3 - bvirt) + (_i - bvirt); + catt[3] = u3; + cattlen = 4; + } else { + cat[0] = 0; + catlen = 1; + catt[0] = 0; + cattlen = 1; + } + if (bdxtail !== 0) { + const len = scale(catlen, cat, bdxtail, _16c); + finlen = finadd(finlen, sum(scale(bxtcalen, bxtca, bdxtail, _16), _16, scale(len, _16c, 2 * bdx, _32), _32, _48), _48); + const len2 = scale(cattlen, catt, bdxtail, _8); + finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * bdx, _16), _16, scale(len2, _8, bdxtail, _16b), _16b, scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64); + if (cdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16); + } + if (adytail !== 0) { + finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16); + } + } + if (bdytail !== 0) { + const len = scale(catlen, cat, bdytail, _16c); + finlen = finadd(finlen, sum(scale(bytcalen, bytca, bdytail, _16), _16, scale(len, _16c, 2 * bdy, _32), _32, _48), _48); + const len2 = scale(cattlen, catt, bdytail, _8); + finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * bdy, _16), _16, scale(len2, _8, bdytail, _16b), _16b, scale(len, _16c, bdytail, _32), _32, _32b, _64), _64); + } + } + if (cdxtail !== 0 || cdytail !== 0) { + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = adxtail * bdy; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * bdytail; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -ady; + n0 = -adytail; + s1 = bdxtail * n1; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * n0; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + abtlen = sum(4, u, 4, v, abt); + s1 = adxtail * bdytail; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdxtail * adytail; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + abtt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + abtt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + abtt[2] = _j - (u3 - bvirt) + (_i - bvirt); + abtt[3] = u3; + abttlen = 4; + } else { + abt[0] = 0; + abtlen = 1; + abtt[0] = 0; + abttlen = 1; + } + if (cdxtail !== 0) { + const len = scale(abtlen, abt, cdxtail, _16c); + finlen = finadd(finlen, sum(scale(cxtablen, cxtab, cdxtail, _16), _16, scale(len, _16c, 2 * cdx, _32), _32, _48), _48); + const len2 = scale(abttlen, abtt, cdxtail, _8); + finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * cdx, _16), _16, scale(len2, _8, cdxtail, _16b), _16b, scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64); + if (adytail !== 0) { + finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16); + } + if (bdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16); + } + } + if (cdytail !== 0) { + const len = scale(abtlen, abt, cdytail, _16c); + finlen = finadd(finlen, sum(scale(cytablen, cytab, cdytail, _16), _16, scale(len, _16c, 2 * cdy, _32), _32, _48), _48); + const len2 = scale(abttlen, abtt, cdytail, _8); + finlen = finadd(finlen, sum_three(scale(len2, _8, 2 * cdy, _16), _16, scale(len2, _8, cdytail, _16b), _16b, scale(len, _16c, cdytail, _32), _32, _32b, _64), _64); + } + } + return fin[finlen - 1]; + } + function incircle(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const alift = adx * adx + ady * ady; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const blift = bdx * bdx + bdy * bdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const clift = cdx * cdx + cdy * cdy; + const det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift; + const errbound = iccerrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent); + } + function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const ady = ay - dy; + const bdx = bx - dx; + const bdy = by - dy; + const cdx = cx - dx; + const cdy = cy - dy; + const abdet = adx * bdy - bdx * ady; + const bcdet = bdx * cdy - cdx * bdy; + const cadet = cdx * ady - adx * cdy; + const alift = adx * adx + ady * ady; + const blift = bdx * bdx + bdy * bdy; + const clift = cdx * cdx + cdy * cdy; + return alift * bcdet + blift * cadet + clift * abdet; + } + exports.incircle = incircle; + exports.incirclefast = incirclefast; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.min.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.min.js new file mode 100644 index 000000000000..fe1b328f8a96 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/incircle.min.js @@ -0,0 +1,170 @@ +"use strict"; + +!function (t, n) { + "object" == typeof exports && "undefined" != typeof module ? n(exports) : "function" == typeof define && define.amd ? define(["exports"], n) : n((t = "undefined" != typeof globalThis ? globalThis : t || self).predicates = {}); +}(this, function (t) { + "use strict"; + + const n = 11102230246251565e-32, + e = 134217729, + o = (3 + 8 * n) * n; + function f(t, n, e, o, f) { + let i, + r, + c, + s, + u = n[0], + a = o[0], + l = 0, + b = 0; + a > u == a > -u ? (i = u, u = n[++l]) : (i = a, a = o[++b]); + let d = 0; + if (l < t && b < e) for (a > u == a > -u ? (r = u + i, c = i - (r - u), u = n[++l]) : (r = a + i, c = i - (r - a), a = o[++b]), i = r, 0 !== c && (f[d++] = c); l < t && b < e;) a > u == a > -u ? (r = i + u, s = r - i, c = i - (r - s) + (u - s), u = n[++l]) : (r = i + a, s = r - i, c = i - (r - s) + (a - s), a = o[++b]), i = r, 0 !== c && (f[d++] = c); + for (; l < t;) r = i + u, s = r - i, c = i - (r - s) + (u - s), u = n[++l], i = r, 0 !== c && (f[d++] = c); + for (; b < e;) r = i + a, s = r - i, c = i - (r - s) + (a - s), a = o[++b], i = r, 0 !== c && (f[d++] = c); + return 0 === i && 0 !== d || (f[d++] = i), d; + } + function i(t, n, e, o, i, r, c, s) { + return f(f(t, n, e, o, c), c, i, r, s); + } + function r(t, n, o, f) { + let i, r, c, s, u, a, l, b, d, h, p; + l = e * o, h = l - (l - o), p = o - h; + let M = n[0]; + i = M * o, l = e * M, b = l - (l - M), d = M - b, c = d * p - (i - b * h - d * h - b * p); + let y = 0; + 0 !== c && (f[y++] = c); + for (let x = 1; x < t; x++) M = n[x], s = M * o, l = e * M, b = l - (l - M), d = M - b, u = d * p - (s - b * h - d * h - b * p), r = i + u, a = r - i, c = i - (r - a) + (u - a), 0 !== c && (f[y++] = c), i = s + r, c = r - (i - s), 0 !== c && (f[y++] = c); + return 0 === i && 0 !== y || (f[y++] = i), y; + } + function c(t) { + return new Float64Array(t); + } + const s = 4440892098500632e-31, + u = 5423418723394464e-46, + a = c(4), + l = c(4), + b = c(4), + d = c(4), + h = c(4), + p = c(4), + M = c(4), + y = c(4), + x = c(8), + g = c(8), + m = c(8), + T = c(8), + j = c(8), + w = c(8), + A = c(8), + F = c(8), + k = c(8), + q = c(4), + v = c(4), + z = c(4), + B = c(8), + C = c(16), + D = c(16), + E = c(16), + G = c(32), + H = c(32), + I = c(48), + J = c(64); + let K = c(1152), + L = c(1152); + function N(t, n, e) { + t = f(t, K, n, e, L); + const o = K; + return K = L, L = o, t; + } + t.incircle = function (t, n, c, L, O, P, Q, R) { + const S = t - Q, + U = c - Q, + V = O - Q, + W = n - R, + X = L - R, + Y = P - R, + Z = U * Y, + $ = V * X, + _ = S * S + W * W, + tt = V * W, + nt = S * Y, + et = U * U + X * X, + ot = S * X, + ft = U * W, + it = V * V + Y * Y, + rt = _ * (Z - $) + et * (tt - nt) + it * (ot - ft), + ct = (Math.abs(Z) + Math.abs($)) * _ + (Math.abs(tt) + Math.abs(nt)) * et + (Math.abs(ot) + Math.abs(ft)) * it, + st = 11102230246251577e-31 * ct; + return rt > st || -rt > st ? rt : function (t, n, c, L, O, P, Q, R, S) { + let U, V, W, X, Y, Z, $, _, tt, nt, et, ot, ft, it, rt, ct, st, ut, at, lt, bt, dt, ht, pt, Mt, yt, xt, gt, mt, Tt, jt, wt, At, Ft, kt; + const qt = t - Q, + vt = c - Q, + zt = O - Q, + Bt = n - R, + Ct = L - R, + Dt = P - R; + jt = vt * Dt, ht = e * vt, pt = ht - (ht - vt), Mt = vt - pt, ht = e * Dt, yt = ht - (ht - Dt), xt = Dt - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = zt * Ct, ht = e * zt, pt = ht - (ht - zt), Mt = zt - pt, ht = e * Ct, yt = ht - (ht - Ct), xt = Ct - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt - Ft, dt = wt - gt, a[0] = wt - (gt + dt) + (dt - Ft), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt - At, dt = Tt - gt, a[1] = Tt - (gt + dt) + (dt - At), kt = mt + gt, dt = kt - mt, a[2] = mt - (kt - dt) + (gt - dt), a[3] = kt, jt = zt * Bt, ht = e * zt, pt = ht - (ht - zt), Mt = zt - pt, ht = e * Bt, yt = ht - (ht - Bt), xt = Bt - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = qt * Dt, ht = e * qt, pt = ht - (ht - qt), Mt = qt - pt, ht = e * Dt, yt = ht - (ht - Dt), xt = Dt - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt - Ft, dt = wt - gt, l[0] = wt - (gt + dt) + (dt - Ft), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt - At, dt = Tt - gt, l[1] = Tt - (gt + dt) + (dt - At), kt = mt + gt, dt = kt - mt, l[2] = mt - (kt - dt) + (gt - dt), l[3] = kt, jt = qt * Ct, ht = e * qt, pt = ht - (ht - qt), Mt = qt - pt, ht = e * Ct, yt = ht - (ht - Ct), xt = Ct - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = vt * Bt, ht = e * vt, pt = ht - (ht - vt), Mt = vt - pt, ht = e * Bt, yt = ht - (ht - Bt), xt = Bt - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt - Ft, dt = wt - gt, b[0] = wt - (gt + dt) + (dt - Ft), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt - At, dt = Tt - gt, b[1] = Tt - (gt + dt) + (dt - At), kt = mt + gt, dt = kt - mt, b[2] = mt - (kt - dt) + (gt - dt), b[3] = kt, U = f(f(f(r(r(4, a, qt, B), B, qt, C), C, r(r(4, a, Bt, B), B, Bt, D), D, G), G, f(r(r(4, l, vt, B), B, vt, C), C, r(r(4, l, Ct, B), B, Ct, D), D, H), H, J), J, f(r(r(4, b, zt, B), B, zt, C), C, r(r(4, b, Dt, B), B, Dt, D), D, G), G, K); + let Et = function (t, n) { + let e = n[0]; + for (let o = 1; o < t; o++) e += n[o]; + return e; + }(U, K), + Gt = s * S; + if (Et >= Gt || -Et >= Gt) return Et; + if (dt = t - qt, V = t - (qt + dt) + (dt - Q), dt = n - Bt, Y = n - (Bt + dt) + (dt - R), dt = c - vt, W = c - (vt + dt) + (dt - Q), dt = L - Ct, Z = L - (Ct + dt) + (dt - R), dt = O - zt, X = O - (zt + dt) + (dt - Q), dt = P - Dt, $ = P - (Dt + dt) + (dt - R), 0 === V && 0 === W && 0 === X && 0 === Y && 0 === Z && 0 === $) return Et; + if (Gt = u * S + o * Math.abs(Et), Et += (qt * qt + Bt * Bt) * (vt * $ + Dt * W - (Ct * X + zt * Z)) + 2 * (qt * V + Bt * Y) * (vt * Dt - Ct * zt) + ((vt * vt + Ct * Ct) * (zt * Y + Bt * X - (Dt * V + qt * $)) + 2 * (vt * W + Ct * Z) * (zt * Bt - Dt * qt)) + ((zt * zt + Dt * Dt) * (qt * Z + Ct * V - (Bt * W + vt * Y)) + 2 * (zt * X + Dt * $) * (qt * Ct - Bt * vt)), Et >= Gt || -Et >= Gt) return Et; + if (0 === W && 0 === Z && 0 === X && 0 === $ || (jt = qt * qt, ht = e * qt, pt = ht - (ht - qt), Mt = qt - pt, wt = Mt * Mt - (jt - pt * pt - (pt + pt) * Mt), At = Bt * Bt, ht = e * Bt, pt = ht - (ht - Bt), Mt = Bt - pt, Ft = Mt * Mt - (At - pt * pt - (pt + pt) * Mt), gt = wt + Ft, dt = gt - wt, d[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, d[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, d[2] = mt - (kt - dt) + (gt - dt), d[3] = kt), 0 === X && 0 === $ && 0 === V && 0 === Y || (jt = vt * vt, ht = e * vt, pt = ht - (ht - vt), Mt = vt - pt, wt = Mt * Mt - (jt - pt * pt - (pt + pt) * Mt), At = Ct * Ct, ht = e * Ct, pt = ht - (ht - Ct), Mt = Ct - pt, Ft = Mt * Mt - (At - pt * pt - (pt + pt) * Mt), gt = wt + Ft, dt = gt - wt, h[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, h[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, h[2] = mt - (kt - dt) + (gt - dt), h[3] = kt), 0 === V && 0 === Y && 0 === W && 0 === Z || (jt = zt * zt, ht = e * zt, pt = ht - (ht - zt), Mt = zt - pt, wt = Mt * Mt - (jt - pt * pt - (pt + pt) * Mt), At = Dt * Dt, ht = e * Dt, pt = ht - (ht - Dt), Mt = Dt - pt, Ft = Mt * Mt - (At - pt * pt - (pt + pt) * Mt), gt = wt + Ft, dt = gt - wt, p[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, p[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, p[2] = mt - (kt - dt) + (gt - dt), p[3] = kt), 0 !== V && (_ = r(4, a, V, x), U = N(U, i(r(_, x, 2 * qt, C), C, r(r(4, p, V, B), B, Ct, D), D, r(r(4, h, V, B), B, -Dt, E), E, G, I), I)), 0 !== Y && (tt = r(4, a, Y, g), U = N(U, i(r(tt, g, 2 * Bt, C), C, r(r(4, h, Y, B), B, zt, D), D, r(r(4, p, Y, B), B, -vt, E), E, G, I), I)), 0 !== W && (nt = r(4, l, W, m), U = N(U, i(r(nt, m, 2 * vt, C), C, r(r(4, d, W, B), B, Dt, D), D, r(r(4, p, W, B), B, -Bt, E), E, G, I), I)), 0 !== Z && (et = r(4, l, Z, T), U = N(U, i(r(et, T, 2 * Ct, C), C, r(r(4, p, Z, B), B, qt, D), D, r(r(4, d, Z, B), B, -zt, E), E, G, I), I)), 0 !== X && (ot = r(4, b, X, j), U = N(U, i(r(ot, j, 2 * zt, C), C, r(r(4, h, X, B), B, Bt, D), D, r(r(4, d, X, B), B, -Ct, E), E, G, I), I)), 0 !== $ && (ft = r(4, b, $, w), U = N(U, i(r(ft, w, 2 * Dt, C), C, r(r(4, d, $, B), B, vt, D), D, r(r(4, h, $, B), B, -qt, E), E, G, I), I)), 0 !== V || 0 !== Y) { + if (0 !== W || 0 !== Z || 0 !== X || 0 !== $ ? (jt = W * Dt, ht = e * W, pt = ht - (ht - W), Mt = W - pt, ht = e * Dt, yt = ht - (ht - Dt), xt = Dt - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = vt * $, ht = e * vt, pt = ht - (ht - vt), Mt = vt - pt, ht = e * $, yt = ht - (ht - $), xt = $ - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt + Ft, dt = gt - wt, M[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, M[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, M[2] = mt - (kt - dt) + (gt - dt), M[3] = kt, jt = X * -Ct, ht = e * X, pt = ht - (ht - X), Mt = X - pt, ht = e * -Ct, yt = ht - (ht - -Ct), xt = -Ct - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = zt * -Z, ht = e * zt, pt = ht - (ht - zt), Mt = zt - pt, ht = e * -Z, yt = ht - (ht - -Z), xt = -Z - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt + Ft, dt = gt - wt, y[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, y[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, y[2] = mt - (kt - dt) + (gt - dt), y[3] = kt, rt = f(4, M, 4, y, F), jt = W * $, ht = e * W, pt = ht - (ht - W), Mt = W - pt, ht = e * $, yt = ht - (ht - $), xt = $ - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = X * Z, ht = e * X, pt = ht - (ht - X), Mt = X - pt, ht = e * Z, yt = ht - (ht - Z), xt = Z - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt - Ft, dt = wt - gt, v[0] = wt - (gt + dt) + (dt - Ft), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt - At, dt = Tt - gt, v[1] = Tt - (gt + dt) + (dt - At), kt = mt + gt, dt = kt - mt, v[2] = mt - (kt - dt) + (gt - dt), v[3] = kt, ut = 4) : (F[0] = 0, rt = 1, v[0] = 0, ut = 1), 0 !== V) { + const t = r(rt, F, V, E); + U = N(U, f(r(_, x, V, C), C, r(t, E, 2 * qt, G), G, I), I); + const n = r(ut, v, V, B); + U = N(U, i(r(n, B, 2 * qt, C), C, r(n, B, V, D), D, r(t, E, V, G), G, H, J), J), 0 !== Z && (U = N(U, r(r(4, p, V, B), B, Z, C), C)), 0 !== $ && (U = N(U, r(r(4, h, -V, B), B, $, C), C)); + } + if (0 !== Y) { + const t = r(rt, F, Y, E); + U = N(U, f(r(tt, g, Y, C), C, r(t, E, 2 * Bt, G), G, I), I); + const n = r(ut, v, Y, B); + U = N(U, i(r(n, B, 2 * Bt, C), C, r(n, B, Y, D), D, r(t, E, Y, G), G, H, J), J); + } + } + if (0 !== W || 0 !== Z) { + if (0 !== X || 0 !== $ || 0 !== V || 0 !== Y ? (jt = X * Bt, ht = e * X, pt = ht - (ht - X), Mt = X - pt, ht = e * Bt, yt = ht - (ht - Bt), xt = Bt - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = zt * Y, ht = e * zt, pt = ht - (ht - zt), Mt = zt - pt, ht = e * Y, yt = ht - (ht - Y), xt = Y - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt + Ft, dt = gt - wt, M[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, M[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, M[2] = mt - (kt - dt) + (gt - dt), M[3] = kt, lt = -Dt, bt = -$, jt = V * lt, ht = e * V, pt = ht - (ht - V), Mt = V - pt, ht = e * lt, yt = ht - (ht - lt), xt = lt - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = qt * bt, ht = e * qt, pt = ht - (ht - qt), Mt = qt - pt, ht = e * bt, yt = ht - (ht - bt), xt = bt - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt + Ft, dt = gt - wt, y[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, y[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, y[2] = mt - (kt - dt) + (gt - dt), y[3] = kt, ct = f(4, M, 4, y, k), jt = X * Y, ht = e * X, pt = ht - (ht - X), Mt = X - pt, ht = e * Y, yt = ht - (ht - Y), xt = Y - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = V * $, ht = e * V, pt = ht - (ht - V), Mt = V - pt, ht = e * $, yt = ht - (ht - $), xt = $ - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt - Ft, dt = wt - gt, z[0] = wt - (gt + dt) + (dt - Ft), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt - At, dt = Tt - gt, z[1] = Tt - (gt + dt) + (dt - At), kt = mt + gt, dt = kt - mt, z[2] = mt - (kt - dt) + (gt - dt), z[3] = kt, at = 4) : (k[0] = 0, ct = 1, z[0] = 0, at = 1), 0 !== W) { + const t = r(ct, k, W, E); + U = N(U, f(r(nt, m, W, C), C, r(t, E, 2 * vt, G), G, I), I); + const n = r(at, z, W, B); + U = N(U, i(r(n, B, 2 * vt, C), C, r(n, B, W, D), D, r(t, E, W, G), G, H, J), J), 0 !== $ && (U = N(U, r(r(4, d, W, B), B, $, C), C)), 0 !== Y && (U = N(U, r(r(4, p, -W, B), B, Y, C), C)); + } + if (0 !== Z) { + const t = r(ct, k, Z, E); + U = N(U, f(r(et, T, Z, C), C, r(t, E, 2 * Ct, G), G, I), I); + const n = r(at, z, Z, B); + U = N(U, i(r(n, B, 2 * Ct, C), C, r(n, B, Z, D), D, r(t, E, Z, G), G, H, J), J); + } + } + if (0 !== X || 0 !== $) { + if (0 !== V || 0 !== Y || 0 !== W || 0 !== Z ? (jt = V * Ct, ht = e * V, pt = ht - (ht - V), Mt = V - pt, ht = e * Ct, yt = ht - (ht - Ct), xt = Ct - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = qt * Z, ht = e * qt, pt = ht - (ht - qt), Mt = qt - pt, ht = e * Z, yt = ht - (ht - Z), xt = Z - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt + Ft, dt = gt - wt, M[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, M[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, M[2] = mt - (kt - dt) + (gt - dt), M[3] = kt, lt = -Bt, bt = -Y, jt = W * lt, ht = e * W, pt = ht - (ht - W), Mt = W - pt, ht = e * lt, yt = ht - (ht - lt), xt = lt - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = vt * bt, ht = e * vt, pt = ht - (ht - vt), Mt = vt - pt, ht = e * bt, yt = ht - (ht - bt), xt = bt - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt + Ft, dt = gt - wt, y[0] = wt - (gt - dt) + (Ft - dt), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt + At, dt = gt - Tt, y[1] = Tt - (gt - dt) + (At - dt), kt = mt + gt, dt = kt - mt, y[2] = mt - (kt - dt) + (gt - dt), y[3] = kt, it = f(4, M, 4, y, A), jt = V * Z, ht = e * V, pt = ht - (ht - V), Mt = V - pt, ht = e * Z, yt = ht - (ht - Z), xt = Z - yt, wt = Mt * xt - (jt - pt * yt - Mt * yt - pt * xt), At = W * Y, ht = e * W, pt = ht - (ht - W), Mt = W - pt, ht = e * Y, yt = ht - (ht - Y), xt = Y - yt, Ft = Mt * xt - (At - pt * yt - Mt * yt - pt * xt), gt = wt - Ft, dt = wt - gt, q[0] = wt - (gt + dt) + (dt - Ft), mt = jt + gt, dt = mt - jt, Tt = jt - (mt - dt) + (gt - dt), gt = Tt - At, dt = Tt - gt, q[1] = Tt - (gt + dt) + (dt - At), kt = mt + gt, dt = kt - mt, q[2] = mt - (kt - dt) + (gt - dt), q[3] = kt, st = 4) : (A[0] = 0, it = 1, q[0] = 0, st = 1), 0 !== X) { + const t = r(it, A, X, E); + U = N(U, f(r(ot, j, X, C), C, r(t, E, 2 * zt, G), G, I), I); + const n = r(st, q, X, B); + U = N(U, i(r(n, B, 2 * zt, C), C, r(n, B, X, D), D, r(t, E, X, G), G, H, J), J), 0 !== Y && (U = N(U, r(r(4, h, X, B), B, Y, C), C)), 0 !== Z && (U = N(U, r(r(4, d, -X, B), B, Z, C), C)); + } + if (0 !== $) { + const t = r(it, A, $, E); + U = N(U, f(r(ft, w, $, C), C, r(t, E, 2 * Dt, G), G, I), I); + const n = r(st, q, $, B); + U = N(U, i(r(n, B, 2 * Dt, C), C, r(n, B, $, D), D, r(t, E, $, G), G, H, J), J); + } + } + return K[U - 1]; + }(t, n, c, L, O, P, Q, R, ct); + }, t.incirclefast = function (t, n, e, o, f, i, r, c) { + const s = t - r, + u = n - c, + a = e - r, + l = o - c, + b = f - r, + d = i - c; + return (s * s + u * u) * (a * d - b * l) + (a * a + l * l) * (b * u - s * d) + (b * b + d * d) * (s * l - a * u); + }; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.js new file mode 100644 index 000000000000..e98e951f6eae --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.js @@ -0,0 +1,828 @@ +"use strict"; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {})); +})(this, function (exports) { + 'use strict'; + + const epsilon = 1.1102230246251565e-16; + const splitter = 134217729; + const resulterrbound = (3 + 8 * epsilon) * epsilon; + + // fast_expansion_sum_zeroelim routine from oritinal code + function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); + } + + // scale_expansion_zeroelim routine from oritinal code + function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) { + h[hindex++] = hh; + } + for (let i = 1; i < elen; i++) { + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) { + h[hindex++] = hh; + } + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function negate(elen, e) { + for (let i = 0; i < elen; i++) e[i] = -e[i]; + return elen; + } + function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; + } + function vec(n) { + return new Float64Array(n); + } + const isperrboundA = (16 + 224 * epsilon) * epsilon; + const isperrboundB = (5 + 72 * epsilon) * epsilon; + const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon; + const ab = vec(4); + const bc = vec(4); + const cd = vec(4); + const de = vec(4); + const ea = vec(4); + const ac = vec(4); + const bd = vec(4); + const ce = vec(4); + const da = vec(4); + const eb = vec(4); + const abc = vec(24); + const bcd = vec(24); + const cde = vec(24); + const dea = vec(24); + const eab = vec(24); + const abd = vec(24); + const bce = vec(24); + const cda = vec(24); + const deb = vec(24); + const eac = vec(24); + const adet = vec(1152); + const bdet = vec(1152); + const cdet = vec(1152); + const ddet = vec(1152); + const edet = vec(1152); + const abdet = vec(2304); + const cddet = vec(2304); + const cdedet = vec(3456); + const deter = vec(5760); + const _8 = vec(8); + const _8b = vec(8); + const _8c = vec(8); + const _16 = vec(16); + const _24 = vec(24); + const _48 = vec(48); + const _48b = vec(48); + const _96 = vec(96); + const _192 = vec(192); + const _384x = vec(384); + const _384y = vec(384); + const _384z = vec(384); + const _768 = vec(768); + function sum_three_scale(a, b, c, az, bz, cz, out) { + return sum_three(scale(4, a, az, _8), _8, scale(4, b, bz, _8b), _8b, scale(4, c, cz, _8c), _8c, _16, out); + } + function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) { + const len = sum(sum(alen, a, blen, b, _48), _48, negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96); + return sum_three(scale(scale(len, _96, x, _192), _192, x, _384x), _384x, scale(scale(len, _96, y, _192), _192, y, _384y), _384y, scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out); + } + function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + s1 = ax * by; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ay; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + s1 = bx * cy; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * by; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cx * dy; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * cy; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + cd[2] = _j - (u3 - bvirt) + (_i - bvirt); + cd[3] = u3; + s1 = dx * ey; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * dy; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + de[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + de[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + de[2] = _j - (u3 - bvirt) + (_i - bvirt); + de[3] = u3; + s1 = ex * ay; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * ey; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ea[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ea[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ea[2] = _j - (u3 - bvirt) + (_i - bvirt); + ea[3] = u3; + s1 = ax * cy; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * ay; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ac[2] = _j - (u3 - bvirt) + (_i - bvirt); + ac[3] = u3; + s1 = bx * dy; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * by; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bd[2] = _j - (u3 - bvirt) + (_i - bvirt); + bd[3] = u3; + s1 = cx * ey; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * cy; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ce[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ce[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ce[2] = _j - (u3 - bvirt) + (_i - bvirt); + ce[3] = u3; + s1 = dx * ay; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * dy; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + da[2] = _j - (u3 - bvirt) + (_i - bvirt); + da[3] = u3; + s1 = ex * by; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ey; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + eb[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + eb[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + eb[2] = _j - (u3 - bvirt) + (_i - bvirt); + eb[3] = u3; + const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc); + const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd); + const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde); + const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea); + const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab); + const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd); + const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce); + const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda); + const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb); + const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac); + const deterlen = sum_three(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, sum_three(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter); + return deter[deterlen - 1]; + } + const xdet = vec(96); + const ydet = vec(96); + const zdet = vec(96); + const fin = vec(1152); + function liftadapt(a, b, c, az, bz, cz, x, y, z, out) { + const len = sum_three_scale(a, b, c, az, bz, cz, _24); + return sum_three(scale(scale(len, _24, x, _48), _48, x, xdet), xdet, scale(scale(len, _24, y, _48), _48, y, ydet), ydet, scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out); + } + function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) { + let ab3, bc3, cd3, da3, ac3, bd3; + let aextail, bextail, cextail, dextail; + let aeytail, beytail, ceytail, deytail; + let aeztail, beztail, ceztail, deztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0; + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + s1 = aex * bey; + c = splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bex * aey; + c = splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + ab3 = _j + _i; + bvirt = ab3 - _j; + ab[2] = _j - (ab3 - bvirt) + (_i - bvirt); + ab[3] = ab3; + s1 = bex * cey; + c = splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * bey; + c = splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + bc3 = _j + _i; + bvirt = bc3 - _j; + bc[2] = _j - (bc3 - bvirt) + (_i - bvirt); + bc[3] = bc3; + s1 = cex * dey; + c = splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * cey; + c = splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + cd3 = _j + _i; + bvirt = cd3 - _j; + cd[2] = _j - (cd3 - bvirt) + (_i - bvirt); + cd[3] = cd3; + s1 = dex * aey; + c = splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = aex * dey; + c = splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + da3 = _j + _i; + bvirt = da3 - _j; + da[2] = _j - (da3 - bvirt) + (_i - bvirt); + da[3] = da3; + s1 = aex * cey; + c = splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * aey; + c = splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + ac3 = _j + _i; + bvirt = ac3 - _j; + ac[2] = _j - (ac3 - bvirt) + (_i - bvirt); + ac[3] = ac3; + s1 = bex * dey; + c = splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * bey; + c = splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + bd3 = _j + _i; + bvirt = bd3 - _j; + bd[2] = _j - (bd3 - bvirt) + (_i - bvirt); + bd[3] = bd3; + const finlen = sum(sum(negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, sum(negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin); + let det = estimate(finlen, fin); + let errbound = isperrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - aex; + aextail = ax - (aex + bvirt) + (bvirt - ex); + bvirt = ay - aey; + aeytail = ay - (aey + bvirt) + (bvirt - ey); + bvirt = az - aez; + aeztail = az - (aez + bvirt) + (bvirt - ez); + bvirt = bx - bex; + bextail = bx - (bex + bvirt) + (bvirt - ex); + bvirt = by - bey; + beytail = by - (bey + bvirt) + (bvirt - ey); + bvirt = bz - bez; + beztail = bz - (bez + bvirt) + (bvirt - ez); + bvirt = cx - cex; + cextail = cx - (cex + bvirt) + (bvirt - ex); + bvirt = cy - cey; + ceytail = cy - (cey + bvirt) + (bvirt - ey); + bvirt = cz - cez; + ceztail = cz - (cez + bvirt) + (bvirt - ez); + bvirt = dx - dex; + dextail = dx - (dex + bvirt) + (bvirt - ex); + bvirt = dy - dey; + deytail = dy - (dey + bvirt) + (bvirt - ey); + bvirt = dz - dez; + deztail = dz - (dez + bvirt) + (bvirt - ez); + if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) { + return det; + } + errbound = isperrboundC * permanent + resulterrbound * Math.abs(det); + const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail); + const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail); + const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail); + const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail); + const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail); + const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail); + det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3))); + if (det >= errbound || -det >= errbound) { + return det; + } + return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez); + } + function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + const aexbey = aex * bey; + const bexaey = bex * aey; + const ab = aexbey - bexaey; + const bexcey = bex * cey; + const cexbey = cex * bey; + const bc = bexcey - cexbey; + const cexdey = cex * dey; + const dexcey = dex * cey; + const cd = cexdey - dexcey; + const dexaey = dex * aey; + const aexdey = aex * dey; + const da = dexaey - aexdey; + const aexcey = aex * cey; + const cexaey = cex * aey; + const ac = aexcey - cexaey; + const bexdey = bex * dey; + const dexbey = dex * bey; + const bd = bexdey - dexbey; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + const det = clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab) + (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd)); + const aezplus = Math.abs(aez); + const bezplus = Math.abs(bez); + const cezplus = Math.abs(cez); + const dezplus = Math.abs(dez); + const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey); + const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey); + const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey); + const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey); + const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey); + const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey); + const permanent = (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift + (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift + (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift + (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift; + const errbound = isperrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent); + } + function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) { + const aex = pax - pex; + const bex = pbx - pex; + const cex = pcx - pex; + const dex = pdx - pex; + const aey = pay - pey; + const bey = pby - pey; + const cey = pcy - pey; + const dey = pdy - pey; + const aez = paz - pez; + const bez = pbz - pez; + const cez = pcz - pez; + const dez = pdz - pez; + const ab = aex * bey - bex * aey; + const bc = bex * cey - cex * bey; + const cd = cex * dey - dex * cey; + const da = dex * aey - aex * dey; + const ac = aex * cey - cex * aey; + const bd = bex * dey - dex * bey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + return clift * dab - dlift * abc + (alift * bcd - blift * cda); + } + exports.insphere = insphere; + exports.inspherefast = inspherefast; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.min.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.min.js new file mode 100644 index 000000000000..f524f2a8a744 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/insphere.min.js @@ -0,0 +1,223 @@ +"use strict"; + +!function (t, n) { + "object" == typeof exports && "undefined" != typeof module ? n(exports) : "function" == typeof define && define.amd ? define(["exports"], n) : n((t = "undefined" != typeof globalThis ? globalThis : t || self).predicates = {}); +}(this, function (t) { + "use strict"; + + const n = 11102230246251565e-32, + e = 134217729, + r = (3 + 8 * n) * n; + function o(t, n, e, r, o) { + let a, + s, + f, + u, + i = n[0], + c = r[0], + h = 0, + b = 0; + c > i == c > -i ? (a = i, i = n[++h]) : (a = c, c = r[++b]); + let l = 0; + if (h < t && b < e) for (c > i == c > -i ? (s = i + a, f = a - (s - i), i = n[++h]) : (s = c + a, f = a - (s - c), c = r[++b]), a = s, 0 !== f && (o[l++] = f); h < t && b < e;) c > i == c > -i ? (s = a + i, u = s - a, f = a - (s - u) + (i - u), i = n[++h]) : (s = a + c, u = s - a, f = a - (s - u) + (c - u), c = r[++b]), a = s, 0 !== f && (o[l++] = f); + for (; h < t;) s = a + i, u = s - a, f = a - (s - u) + (i - u), i = n[++h], a = s, 0 !== f && (o[l++] = f); + for (; b < e;) s = a + c, u = s - a, f = a - (s - u) + (c - u), c = r[++b], a = s, 0 !== f && (o[l++] = f); + return 0 === a && 0 !== l || (o[l++] = a), l; + } + function a(t, n, e, r, a, s, f, u) { + return o(o(t, n, e, r, f), f, a, s, u); + } + function s(t, n, r, o) { + let a, s, f, u, i, c, h, b, l, M, d; + h = e * r, M = h - (h - r), d = r - M; + let p = n[0]; + a = p * r, h = e * p, b = h - (h - p), l = p - b, f = l * d - (a - b * M - l * M - b * d); + let y = 0; + 0 !== f && (o[y++] = f); + for (let x = 1; x < t; x++) p = n[x], u = p * r, h = e * p, b = h - (h - p), l = p - b, i = l * d - (u - b * M - l * M - b * d), s = a + i, c = s - a, f = a - (s - c) + (i - c), 0 !== f && (o[y++] = f), a = u + s, f = s - (a - u), 0 !== f && (o[y++] = f); + return 0 === a && 0 !== y || (o[y++] = a), y; + } + function f(t, n) { + for (let e = 0; e < t; e++) n[e] = -n[e]; + return t; + } + function u(t) { + return new Float64Array(t); + } + const i = 5551115123125792e-31, + c = 8751425667295619e-46, + h = u(4), + b = u(4), + l = u(4), + M = u(4), + d = u(4), + p = u(4), + y = u(4), + x = u(4), + g = u(4), + m = u(4), + T = u(24), + j = u(24), + w = u(24), + A = u(24), + F = u(24), + k = u(24), + q = u(24), + v = u(24), + z = u(24), + B = u(24), + C = u(1152), + D = u(1152), + E = u(1152), + G = u(1152), + H = u(1152), + I = u(2304), + J = u(2304), + K = u(3456), + L = u(5760), + N = u(8), + O = u(8), + P = u(8), + Q = u(16), + R = u(24), + S = u(48), + U = u(48), + V = u(96), + W = u(192), + X = u(384), + Y = u(384), + Z = u(384), + $ = u(768); + function _(t, n, e, r, o, f, u) { + return a(s(4, t, r, N), N, s(4, n, o, O), O, s(4, e, f, P), P, Q, u); + } + function tt(t, n, e, r, u, i, c, h, b, l, M, d) { + const p = o(o(t, n, e, r, S), S, f(o(u, i, c, h, U), U), U, V); + return a(s(s(p, V, b, W), W, b, X), X, s(s(p, V, l, W), W, l, Y), Y, s(s(p, V, M, W), W, M, Z), Z, $, d); + } + const nt = u(96), + et = u(96), + rt = u(96), + ot = u(1152); + function at(t, n, e, r, o, f, u, i, c, h) { + const b = _(t, n, e, r, o, f, R); + return a(s(s(b, R, u, S), S, u, nt), nt, s(s(b, R, i, S), S, i, et), et, s(s(b, R, c, S), S, c, rt), rt, W, h); + } + function st(t, n, s, u, N, O, P, Q, R, S, U, V, W, X, Y, Z) { + let $, nt, et, rt, st, ft, ut, it, ct, ht, bt, lt, Mt, dt, pt, yt, xt, gt, mt, Tt, jt, wt, At, Ft, kt, qt, vt, zt, Bt, Ct, Dt; + const Et = t - W, + Gt = u - W, + Ht = P - W, + It = S - W, + Jt = n - X, + Kt = N - X, + Lt = Q - X, + Nt = U - X, + Ot = s - Y, + Pt = O - Y, + Qt = R - Y, + Rt = V - Y; + zt = Et * Kt, Tt = e * Et, jt = Tt - (Tt - Et), wt = Et - jt, Tt = e * Kt, At = Tt - (Tt - Kt), Ft = Kt - At, Bt = wt * Ft - (zt - jt * At - wt * At - jt * Ft), Ct = Gt * Jt, Tt = e * Gt, jt = Tt - (Tt - Gt), wt = Gt - jt, Tt = e * Jt, At = Tt - (Tt - Jt), Ft = Jt - At, Dt = wt * Ft - (Ct - jt * At - wt * At - jt * Ft), kt = Bt - Dt, mt = Bt - kt, h[0] = Bt - (kt + mt) + (mt - Dt), qt = zt + kt, mt = qt - zt, vt = zt - (qt - mt) + (kt - mt), kt = vt - Ct, mt = vt - kt, h[1] = vt - (kt + mt) + (mt - Ct), $ = qt + kt, mt = $ - qt, h[2] = qt - ($ - mt) + (kt - mt), h[3] = $, zt = Gt * Lt, Tt = e * Gt, jt = Tt - (Tt - Gt), wt = Gt - jt, Tt = e * Lt, At = Tt - (Tt - Lt), Ft = Lt - At, Bt = wt * Ft - (zt - jt * At - wt * At - jt * Ft), Ct = Ht * Kt, Tt = e * Ht, jt = Tt - (Tt - Ht), wt = Ht - jt, Tt = e * Kt, At = Tt - (Tt - Kt), Ft = Kt - At, Dt = wt * Ft - (Ct - jt * At - wt * At - jt * Ft), kt = Bt - Dt, mt = Bt - kt, b[0] = Bt - (kt + mt) + (mt - Dt), qt = zt + kt, mt = qt - zt, vt = zt - (qt - mt) + (kt - mt), kt = vt - Ct, mt = vt - kt, b[1] = vt - (kt + mt) + (mt - Ct), nt = qt + kt, mt = nt - qt, b[2] = qt - (nt - mt) + (kt - mt), b[3] = nt, zt = Ht * Nt, Tt = e * Ht, jt = Tt - (Tt - Ht), wt = Ht - jt, Tt = e * Nt, At = Tt - (Tt - Nt), Ft = Nt - At, Bt = wt * Ft - (zt - jt * At - wt * At - jt * Ft), Ct = It * Lt, Tt = e * It, jt = Tt - (Tt - It), wt = It - jt, Tt = e * Lt, At = Tt - (Tt - Lt), Ft = Lt - At, Dt = wt * Ft - (Ct - jt * At - wt * At - jt * Ft), kt = Bt - Dt, mt = Bt - kt, l[0] = Bt - (kt + mt) + (mt - Dt), qt = zt + kt, mt = qt - zt, vt = zt - (qt - mt) + (kt - mt), kt = vt - Ct, mt = vt - kt, l[1] = vt - (kt + mt) + (mt - Ct), et = qt + kt, mt = et - qt, l[2] = qt - (et - mt) + (kt - mt), l[3] = et, zt = It * Jt, Tt = e * It, jt = Tt - (Tt - It), wt = It - jt, Tt = e * Jt, At = Tt - (Tt - Jt), Ft = Jt - At, Bt = wt * Ft - (zt - jt * At - wt * At - jt * Ft), Ct = Et * Nt, Tt = e * Et, jt = Tt - (Tt - Et), wt = Et - jt, Tt = e * Nt, At = Tt - (Tt - Nt), Ft = Nt - At, Dt = wt * Ft - (Ct - jt * At - wt * At - jt * Ft), kt = Bt - Dt, mt = Bt - kt, g[0] = Bt - (kt + mt) + (mt - Dt), qt = zt + kt, mt = qt - zt, vt = zt - (qt - mt) + (kt - mt), kt = vt - Ct, mt = vt - kt, g[1] = vt - (kt + mt) + (mt - Ct), rt = qt + kt, mt = rt - qt, g[2] = qt - (rt - mt) + (kt - mt), g[3] = rt, zt = Et * Lt, Tt = e * Et, jt = Tt - (Tt - Et), wt = Et - jt, Tt = e * Lt, At = Tt - (Tt - Lt), Ft = Lt - At, Bt = wt * Ft - (zt - jt * At - wt * At - jt * Ft), Ct = Ht * Jt, Tt = e * Ht, jt = Tt - (Tt - Ht), wt = Ht - jt, Tt = e * Jt, At = Tt - (Tt - Jt), Ft = Jt - At, Dt = wt * Ft - (Ct - jt * At - wt * At - jt * Ft), kt = Bt - Dt, mt = Bt - kt, p[0] = Bt - (kt + mt) + (mt - Dt), qt = zt + kt, mt = qt - zt, vt = zt - (qt - mt) + (kt - mt), kt = vt - Ct, mt = vt - kt, p[1] = vt - (kt + mt) + (mt - Ct), st = qt + kt, mt = st - qt, p[2] = qt - (st - mt) + (kt - mt), p[3] = st, zt = Gt * Nt, Tt = e * Gt, jt = Tt - (Tt - Gt), wt = Gt - jt, Tt = e * Nt, At = Tt - (Tt - Nt), Ft = Nt - At, Bt = wt * Ft - (zt - jt * At - wt * At - jt * Ft), Ct = It * Kt, Tt = e * It, jt = Tt - (Tt - It), wt = It - jt, Tt = e * Kt, At = Tt - (Tt - Kt), Ft = Kt - At, Dt = wt * Ft - (Ct - jt * At - wt * At - jt * Ft), kt = Bt - Dt, mt = Bt - kt, y[0] = Bt - (kt + mt) + (mt - Dt), qt = zt + kt, mt = qt - zt, vt = zt - (qt - mt) + (kt - mt), kt = vt - Ct, mt = vt - kt, y[1] = vt - (kt + mt) + (mt - Ct), ft = qt + kt, mt = ft - qt, y[2] = qt - (ft - mt) + (kt - mt), y[3] = ft; + let St = function (t, n) { + let e = n[0]; + for (let r = 1; r < t; r++) e += n[r]; + return e; + }(o(o(f(at(b, l, y, Rt, Pt, -Qt, Et, Jt, Ot, C), C), C, at(l, g, p, Ot, Qt, Rt, Gt, Kt, Pt, D), D, I), I, o(f(at(g, h, y, Pt, Rt, Ot, Ht, Lt, Qt, E), E), E, at(h, b, p, Qt, Ot, -Pt, It, Nt, Rt, G), G, J), J, ot), ot), + Ut = i * Z; + if (St >= Ut || -St >= Ut) return St; + if (mt = t - Et, ut = t - (Et + mt) + (mt - W), mt = n - Jt, bt = n - (Jt + mt) + (mt - X), mt = s - Ot, pt = s - (Ot + mt) + (mt - Y), mt = u - Gt, it = u - (Gt + mt) + (mt - W), mt = N - Kt, lt = N - (Kt + mt) + (mt - X), mt = O - Pt, yt = O - (Pt + mt) + (mt - Y), mt = P - Ht, ct = P - (Ht + mt) + (mt - W), mt = Q - Lt, Mt = Q - (Lt + mt) + (mt - X), mt = R - Qt, xt = R - (Qt + mt) + (mt - Y), mt = S - It, ht = S - (It + mt) + (mt - W), mt = U - Nt, dt = U - (Nt + mt) + (mt - X), mt = V - Rt, gt = V - (Rt + mt) + (mt - Y), 0 === ut && 0 === bt && 0 === pt && 0 === it && 0 === lt && 0 === yt && 0 === ct && 0 === Mt && 0 === xt && 0 === ht && 0 === dt && 0 === gt) return St; + Ut = c * Z + r * Math.abs(St); + const Vt = Et * lt + Kt * ut - (Jt * it + Gt * bt), + Wt = Gt * Mt + Lt * it - (Kt * ct + Ht * lt), + Xt = Ht * dt + Nt * ct - (Lt * ht + It * Mt), + Yt = It * bt + Jt * ht - (Nt * ut + Et * dt), + Zt = Et * Mt + Lt * ut - (Jt * ct + Ht * bt), + $t = Gt * dt + Nt * it - (Kt * ht + It * lt); + return St += (Gt * Gt + Kt * Kt + Pt * Pt) * (Qt * Yt + Rt * Zt + Ot * Xt + (xt * rt + gt * st + pt * et)) + (It * It + Nt * Nt + Rt * Rt) * (Ot * Wt - Pt * Zt + Qt * Vt + (pt * nt - yt * st + xt * $)) - ((Et * Et + Jt * Jt + Ot * Ot) * (Pt * Xt - Qt * $t + Rt * Wt + (yt * et - xt * ft + gt * nt)) + (Ht * Ht + Lt * Lt + Qt * Qt) * (Rt * Vt + Ot * $t + Pt * Yt + (gt * $ + pt * ft + yt * rt))) + 2 * ((Gt * it + Kt * lt + Pt * yt) * (Qt * rt + Rt * st + Ot * et) + (It * ht + Nt * dt + Rt * gt) * (Ot * nt - Pt * st + Qt * $) - ((Et * ut + Jt * bt + Ot * pt) * (Pt * et - Qt * ft + Rt * nt) + (Ht * ct + Lt * Mt + Qt * xt) * (Rt * $ + Ot * ft + Pt * rt))), St >= Ut || -St >= Ut ? St : function (t, n, r, o, s, f, u, i, c, N, O, P, Q, R, S) { + let U, V, W, X, Y, Z, $, nt, et, rt, ot, at, st, ft; + rt = t * s, V = e * t, W = V - (V - t), X = t - W, V = e * s, Y = V - (V - s), Z = s - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = o * n, V = e * o, W = V - (V - o), X = o - W, V = e * n, Y = V - (V - n), Z = n - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, h[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, h[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, h[2] = nt - (ft - U) + ($ - U), h[3] = ft, rt = o * i, V = e * o, W = V - (V - o), X = o - W, V = e * i, Y = V - (V - i), Z = i - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = u * s, V = e * u, W = V - (V - u), X = u - W, V = e * s, Y = V - (V - s), Z = s - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, b[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, b[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, b[2] = nt - (ft - U) + ($ - U), b[3] = ft, rt = u * O, V = e * u, W = V - (V - u), X = u - W, V = e * O, Y = V - (V - O), Z = O - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = N * i, V = e * N, W = V - (V - N), X = N - W, V = e * i, Y = V - (V - i), Z = i - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, l[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, l[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, l[2] = nt - (ft - U) + ($ - U), l[3] = ft, rt = N * R, V = e * N, W = V - (V - N), X = N - W, V = e * R, Y = V - (V - R), Z = R - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = Q * O, V = e * Q, W = V - (V - Q), X = Q - W, V = e * O, Y = V - (V - O), Z = O - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, M[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, M[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, M[2] = nt - (ft - U) + ($ - U), M[3] = ft, rt = Q * n, V = e * Q, W = V - (V - Q), X = Q - W, V = e * n, Y = V - (V - n), Z = n - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = t * R, V = e * t, W = V - (V - t), X = t - W, V = e * R, Y = V - (V - R), Z = R - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, d[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, d[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, d[2] = nt - (ft - U) + ($ - U), d[3] = ft, rt = t * i, V = e * t, W = V - (V - t), X = t - W, V = e * i, Y = V - (V - i), Z = i - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = u * n, V = e * u, W = V - (V - u), X = u - W, V = e * n, Y = V - (V - n), Z = n - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, p[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, p[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, p[2] = nt - (ft - U) + ($ - U), p[3] = ft, rt = o * O, V = e * o, W = V - (V - o), X = o - W, V = e * O, Y = V - (V - O), Z = O - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = N * s, V = e * N, W = V - (V - N), X = N - W, V = e * s, Y = V - (V - s), Z = s - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, y[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, y[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, y[2] = nt - (ft - U) + ($ - U), y[3] = ft, rt = u * R, V = e * u, W = V - (V - u), X = u - W, V = e * R, Y = V - (V - R), Z = R - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = Q * i, V = e * Q, W = V - (V - Q), X = Q - W, V = e * i, Y = V - (V - i), Z = i - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, x[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, x[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, x[2] = nt - (ft - U) + ($ - U), x[3] = ft, rt = N * n, V = e * N, W = V - (V - N), X = N - W, V = e * n, Y = V - (V - n), Z = n - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = t * O, V = e * t, W = V - (V - t), X = t - W, V = e * O, Y = V - (V - O), Z = O - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, g[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, g[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, g[2] = nt - (ft - U) + ($ - U), g[3] = ft, rt = Q * s, V = e * Q, W = V - (V - Q), X = Q - W, V = e * s, Y = V - (V - s), Z = s - Y, ot = X * Z - (rt - W * Y - X * Y - W * Z), at = o * R, V = e * o, W = V - (V - o), X = o - W, V = e * R, Y = V - (V - R), Z = R - Y, st = X * Z - (at - W * Y - X * Y - W * Z), $ = ot - st, U = ot - $, m[0] = ot - ($ + U) + (U - st), nt = rt + $, U = nt - rt, et = rt - (nt - U) + ($ - U), $ = et - at, U = et - $, m[1] = et - ($ + U) + (U - at), ft = nt + $, U = ft - nt, m[2] = nt - (ft - U) + ($ - U), m[3] = ft; + const ut = _(h, b, p, c, r, -f, T), + it = _(b, l, y, P, f, -c, j), + ct = _(l, M, x, S, c, -P, w), + ht = _(M, d, g, r, P, -S, A), + bt = _(d, h, m, f, S, -r, F), + lt = _(h, y, g, P, r, f, k), + Mt = _(b, x, m, S, f, c, q), + dt = _(l, g, p, r, c, P, v), + pt = _(M, m, y, f, P, S, z), + yt = _(d, p, x, c, S, r, B), + xt = a(tt(ct, w, Mt, q, pt, z, it, j, t, n, r, C), C, tt(ht, A, dt, v, yt, B, ct, w, o, s, f, D), D, a(tt(bt, F, pt, z, lt, k, ht, A, u, i, c, E), E, tt(ut, T, yt, B, Mt, q, bt, F, N, O, P, G), G, tt(it, j, lt, k, dt, v, ut, T, Q, R, S, H), H, J, K), K, I, L); + return L[xt - 1]; + }(t, n, s, u, N, O, P, Q, R, S, U, V, W, X, Y); + } + t.insphere = function (t, n, e, r, o, a, s, f, u, i, c, h, b, l, M) { + const d = t - b, + p = r - b, + y = s - b, + x = i - b, + g = n - l, + m = o - l, + T = f - l, + j = c - l, + w = e - M, + A = a - M, + F = u - M, + k = h - M, + q = d * m, + v = p * g, + z = q - v, + B = p * T, + C = y * m, + D = B - C, + E = y * j, + G = x * T, + H = E - G, + I = x * g, + J = d * j, + K = I - J, + L = d * T, + N = y * g, + O = L - N, + P = p * j, + Q = x * m, + R = P - Q, + S = d * d + g * g + w * w, + U = p * p + m * m + A * A, + V = y * y + T * T + F * F, + W = x * x + j * j + k * k, + X = V * (k * z + w * R + A * K) - W * (w * D - A * O + F * z) + (S * (A * H - F * R + k * D) - U * (F * K + k * O + w * H)), + Y = Math.abs(w), + Z = Math.abs(A), + $ = Math.abs(F), + _ = Math.abs(k), + tt = Math.abs(q) + Math.abs(v), + nt = Math.abs(B) + Math.abs(C), + et = Math.abs(E) + Math.abs(G), + rt = Math.abs(I) + Math.abs(J), + ot = Math.abs(L) + Math.abs(N), + at = Math.abs(P) + Math.abs(Q), + ft = (et * Z + at * $ + nt * _) * S + (rt * $ + ot * _ + et * Y) * U + (tt * _ + at * Y + rt * Z) * V + (nt * Y + ot * Z + tt * $) * W, + ut = 17763568394002532e-31 * ft; + return X > ut || -X > ut ? X : -st(t, n, e, r, o, a, s, f, u, i, c, h, b, l, M, ft); + }, t.inspherefast = function (t, n, e, r, o, a, s, f, u, i, c, h, b, l, M) { + const d = t - b, + p = r - b, + y = s - b, + x = i - b, + g = n - l, + m = o - l, + T = f - l, + j = c - l, + w = e - M, + A = a - M, + F = u - M, + k = h - M, + q = d * m - p * g, + v = p * T - y * m, + z = y * j - x * T, + B = x * g - d * j, + C = d * T - y * g, + D = p * j - x * m; + return (y * y + T * T + F * F) * (k * q + w * D + A * B) - (x * x + j * j + k * k) * (w * v - A * C + F * q) + ((d * d + g * g + w * w) * (A * z - F * D + k * v) - (p * p + m * m + A * A) * (F * B + k * C + w * z)); + }; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.js new file mode 100644 index 000000000000..39e54b701bca --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.js @@ -0,0 +1,260 @@ +"use strict"; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {})); +})(this, function (exports) { + 'use strict'; + + const epsilon = 1.1102230246251565e-16; + const splitter = 134217729; + const resulterrbound = (3 + 8 * epsilon) * epsilon; + + // fast_expansion_sum_zeroelim routine from oritinal code + function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; + } + function vec(n) { + return new Float64Array(n); + } + const ccwerrboundA = (3 + 16 * epsilon) * epsilon; + const ccwerrboundB = (2 + 12 * epsilon) * epsilon; + const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon; + const B = vec(4); + const C1 = vec(8); + const C2 = vec(12); + const D = vec(16); + const u = vec(4); + function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = estimate(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) { + return det; + } + errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C1len = sum(4, B, 4, u, C1); + s1 = acx * bcytail; + c = splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const C2len = sum(C1len, C1, 4, u, C2); + s1 = acxtail * bcytail; + c = splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + const Dlen = sum(C2len, C2, 4, u, D); + return D[Dlen - 1]; + } + function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); + } + function orient2dfast(ax, ay, bx, by, cx, cy) { + return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy); + } + exports.orient2d = orient2d; + exports.orient2dfast = orient2dfast; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.min.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.min.js new file mode 100644 index 000000000000..22e66628ed4a --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient2d.min.js @@ -0,0 +1,69 @@ +"use strict"; + +!function (t, e) { + "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).predicates = {}); +}(this, function (t) { + "use strict"; + + const e = 11102230246251565e-32, + n = 134217729, + o = (3 + 8 * e) * e; + function r(t, e, n, o, r) { + let f, + i, + u, + s, + c = e[0], + a = o[0], + l = 0, + d = 0; + a > c == a > -c ? (f = c, c = e[++l]) : (f = a, a = o[++d]); + let p = 0; + if (l < t && d < n) for (a > c == a > -c ? (i = c + f, u = f - (i - c), c = e[++l]) : (i = a + f, u = f - (i - a), a = o[++d]), f = i, 0 !== u && (r[p++] = u); l < t && d < n;) a > c == a > -c ? (i = f + c, s = i - f, u = f - (i - s) + (c - s), c = e[++l]) : (i = f + a, s = i - f, u = f - (i - s) + (a - s), a = o[++d]), f = i, 0 !== u && (r[p++] = u); + for (; l < t;) i = f + c, s = i - f, u = f - (i - s) + (c - s), c = e[++l], f = i, 0 !== u && (r[p++] = u); + for (; d < n;) i = f + a, s = i - f, u = f - (i - s) + (a - s), a = o[++d], f = i, 0 !== u && (r[p++] = u); + return 0 === f && 0 !== p || (r[p++] = f), p; + } + function f(t) { + return new Float64Array(t); + } + const i = 22204460492503146e-32, + u = 11093356479670487e-47, + s = f(4), + c = f(8), + a = f(12), + l = f(16), + d = f(4); + t.orient2d = function (t, e, f, p, b, h) { + const y = (e - h) * (f - b), + x = (t - b) * (p - h), + M = y - x, + g = Math.abs(y + x); + return Math.abs(M) >= 33306690738754716e-32 * g ? M : -function (t, e, f, p, b, h, y) { + let x, M, g, m, T, j, w, A, F, k, q, v, z, B, C, D, E, G; + const H = t - b, + I = f - b, + J = e - h, + K = p - h; + B = H * K, j = n * H, w = j - (j - H), A = H - w, j = n * K, F = j - (j - K), k = K - F, C = A * k - (B - w * F - A * F - w * k), D = J * I, j = n * J, w = j - (j - J), A = J - w, j = n * I, F = j - (j - I), k = I - F, E = A * k - (D - w * F - A * F - w * k), q = C - E, T = C - q, s[0] = C - (q + T) + (T - E), v = B + q, T = v - B, z = B - (v - T) + (q - T), q = z - D, T = z - q, s[1] = z - (q + T) + (T - D), G = v + q, T = G - v, s[2] = v - (G - T) + (q - T), s[3] = G; + let L = function (t, e) { + let n = e[0]; + for (let o = 1; o < t; o++) n += e[o]; + return n; + }(4, s), + N = i * y; + if (L >= N || -L >= N) return L; + if (T = t - H, x = t - (H + T) + (T - b), T = f - I, g = f - (I + T) + (T - b), T = e - J, M = e - (J + T) + (T - h), T = p - K, m = p - (K + T) + (T - h), 0 === x && 0 === M && 0 === g && 0 === m) return L; + if (N = u * y + o * Math.abs(L), L += H * m + K * x - (J * g + I * M), L >= N || -L >= N) return L; + B = x * K, j = n * x, w = j - (j - x), A = x - w, j = n * K, F = j - (j - K), k = K - F, C = A * k - (B - w * F - A * F - w * k), D = M * I, j = n * M, w = j - (j - M), A = M - w, j = n * I, F = j - (j - I), k = I - F, E = A * k - (D - w * F - A * F - w * k), q = C - E, T = C - q, d[0] = C - (q + T) + (T - E), v = B + q, T = v - B, z = B - (v - T) + (q - T), q = z - D, T = z - q, d[1] = z - (q + T) + (T - D), G = v + q, T = G - v, d[2] = v - (G - T) + (q - T), d[3] = G; + const O = r(4, s, 4, d, c); + B = H * m, j = n * H, w = j - (j - H), A = H - w, j = n * m, F = j - (j - m), k = m - F, C = A * k - (B - w * F - A * F - w * k), D = J * g, j = n * J, w = j - (j - J), A = J - w, j = n * g, F = j - (j - g), k = g - F, E = A * k - (D - w * F - A * F - w * k), q = C - E, T = C - q, d[0] = C - (q + T) + (T - E), v = B + q, T = v - B, z = B - (v - T) + (q - T), q = z - D, T = z - q, d[1] = z - (q + T) + (T - D), G = v + q, T = G - v, d[2] = v - (G - T) + (q - T), d[3] = G; + const P = r(O, c, 4, d, a); + B = x * m, j = n * x, w = j - (j - x), A = x - w, j = n * m, F = j - (j - m), k = m - F, C = A * k - (B - w * F - A * F - w * k), D = M * g, j = n * M, w = j - (j - M), A = M - w, j = n * g, F = j - (j - g), k = g - F, E = A * k - (D - w * F - A * F - w * k), q = C - E, T = C - q, d[0] = C - (q + T) + (T - E), v = B + q, T = v - B, z = B - (v - T) + (q - T), q = z - D, T = z - q, d[1] = z - (q + T) + (T - D), G = v + q, T = G - v, d[2] = v - (G - T) + (q - T), d[3] = G; + const Q = r(P, a, 4, d, l); + return l[Q - 1]; + }(t, e, f, p, b, h, g); + }, t.orient2dfast = function (t, e, n, o, r, f) { + return (e - f) * (n - r) - (t - r) * (o - f); + }; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.js new file mode 100644 index 000000000000..8d89726f0e4b --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.js @@ -0,0 +1,550 @@ +"use strict"; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {})); +})(this, function (exports) { + 'use strict'; + + const epsilon = 1.1102230246251565e-16; + const splitter = 134217729; + const resulterrbound = (3 + 8 * epsilon) * epsilon; + + // fast_expansion_sum_zeroelim routine from oritinal code + function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + + // scale_expansion_zeroelim routine from oritinal code + function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) { + h[hindex++] = hh; + } + for (let i = 1; i < elen; i++) { + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) { + h[hindex++] = hh; + } + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; + } + function vec(n) { + return new Float64Array(n); + } + const o3derrboundA = (7 + 56 * epsilon) * epsilon; + const o3derrboundB = (3 + 28 * epsilon) * epsilon; + const o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon; + const bc = vec(4); + const ca = vec(4); + const ab = vec(4); + const at_b = vec(4); + const at_c = vec(4); + const bt_c = vec(4); + const bt_a = vec(4); + const ct_a = vec(4); + const ct_b = vec(4); + const bct = vec(8); + const cat = vec(8); + const abt = vec(8); + const u = vec(4); + const _8 = vec(8); + const _8b = vec(8); + const _16 = vec(8); + const _12 = vec(12); + let fin = vec(192); + let fin2 = vec(192); + function finadd(finlen, alen, a) { + finlen = sum(finlen, fin, alen, a, fin2); + const tmp = fin; + fin = fin2; + fin2 = tmp; + return finlen; + } + function tailinit(xtail, ytail, ax, ay, bx, by, a, b) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3, negate; + if (xtail === 0) { + if (ytail === 0) { + a[0] = 0; + b[0] = 0; + return 1; + } else { + negate = -ytail; + s1 = negate * ax; + c = splitter * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = splitter * ax; + bhi = c - (c - ax); + blo = ax - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + s1 = ytail * bx; + c = splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = splitter * bx; + bhi = c - (c - bx); + blo = bx - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } + } else { + if (ytail === 0) { + s1 = xtail * ay; + c = splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + negate = -xtail; + s1 = negate * by; + c = splitter * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } else { + s1 = xtail * ay; + c = splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ytail * ax; + c = splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = splitter * ax; + bhi = c - (c - ax); + blo = ax - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + a[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + a[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + a[2] = _j - (u3 - bvirt) + (_i - bvirt); + a[3] = u3; + s1 = ytail * bx; + c = splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = splitter * bx; + bhi = c - (c - bx); + blo = bx - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = xtail * by; + c = splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + b[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + b[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + b[2] = _j - (u3 - bvirt) + (_i - bvirt); + b[3] = u3; + return 4; + } + } + } + function tailadd(finlen, a, b, k, z) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3; + s1 = a * b; + c = splitter * a; + ahi = c - (c - a); + alo = a - ahi; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + c = splitter * k; + bhi = c - (c - k); + blo = k - bhi; + _i = s0 * k; + c = splitter * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * k; + c = splitter * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + if (z !== 0) { + c = splitter * z; + bhi = c - (c - z); + blo = z - bhi; + _i = s0 * z; + c = splitter * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * z; + c = splitter * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u[2] = _k - (u3 - _j); + u[3] = u3; + finlen = finadd(finlen, 4, u); + } + return finlen; + } + function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail; + let adytail, bdytail, cdytail; + let adztail, bdztail, cdztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + s1 = bdx * cdy; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cdx * ady; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + finlen = sum(sum(scale(4, bc, adz, _8), _8, scale(4, ca, bdz, _8b), _8b, _16), _16, scale(4, ab, cdz, _8), _8, fin); + let det = estimate(finlen, fin); + let errbound = o3derrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + bvirt = az - adz; + adztail = az - (adz + bvirt) + (bvirt - dz); + bvirt = bz - bdz; + bdztail = bz - (bdz + bvirt) + (bvirt - dz); + bvirt = cz - cdz; + cdztail = cz - (cdz + bvirt) + (bvirt - dz); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) { + return det; + } + errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det); + det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx); + if (det >= errbound || -det >= errbound) { + return det; + } + const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c); + const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a); + const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b); + const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct); + finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16); + const catlen = sum(ct_len, ct_a, at_len, at_c, cat); + finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16); + const abtlen = sum(at_len, at_b, bt_len, bt_a, abt); + finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16); + if (adztail !== 0) { + finlen = finadd(finlen, scale(4, bc, adztail, _12), _12); + finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16); + } + if (bdztail !== 0) { + finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12); + finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16); + } + if (cdztail !== 0) { + finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12); + finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16); + } + if (adxtail !== 0) { + if (bdytail !== 0) { + finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail); + } + if (cdytail !== 0) { + finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail); + } + } + if (bdxtail !== 0) { + if (cdytail !== 0) { + finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail); + } + if (adytail !== 0) { + finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail); + } + } + if (cdxtail !== 0) { + if (adytail !== 0) { + finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail); + } + if (bdytail !== 0) { + finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail); + } + } + return fin[finlen - 1]; + } + function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz); + const errbound = o3derrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent); + } + function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy); + } + exports.orient3d = orient3d; + exports.orient3dfast = orient3dfast; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.min.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.min.js new file mode 100644 index 000000000000..2183f9ee59ce --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/orient3d.min.js @@ -0,0 +1,133 @@ +"use strict"; + +!function (t, n) { + "object" == typeof exports && "undefined" != typeof module ? n(exports) : "function" == typeof define && define.amd ? define(["exports"], n) : n((t = "undefined" != typeof globalThis ? globalThis : t || self).predicates = {}); +}(this, function (t) { + "use strict"; + + const n = 11102230246251565e-32, + e = 134217729, + o = (3 + 8 * n) * n; + function r(t, n, e, o, r) { + let f, + s, + u, + i, + a = n[0], + c = o[0], + l = 0, + b = 0; + c > a == c > -a ? (f = a, a = n[++l]) : (f = c, c = o[++b]); + let h = 0; + if (l < t && b < e) for (c > a == c > -a ? (s = a + f, u = f - (s - a), a = n[++l]) : (s = c + f, u = f - (s - c), c = o[++b]), f = s, 0 !== u && (r[h++] = u); l < t && b < e;) c > a == c > -a ? (s = f + a, i = s - f, u = f - (s - i) + (a - i), a = n[++l]) : (s = f + c, i = s - f, u = f - (s - i) + (c - i), c = o[++b]), f = s, 0 !== u && (r[h++] = u); + for (; l < t;) s = f + a, i = s - f, u = f - (s - i) + (a - i), a = n[++l], f = s, 0 !== u && (r[h++] = u); + for (; b < e;) s = f + c, i = s - f, u = f - (s - i) + (c - i), c = o[++b], f = s, 0 !== u && (r[h++] = u); + return 0 === f && 0 !== h || (r[h++] = f), h; + } + function f(t, n, o, r) { + let f, s, u, i, a, c, l, b, h, d, M; + l = e * o, d = l - (l - o), M = o - d; + let p = n[0]; + f = p * o, l = e * p, b = l - (l - p), h = p - b, u = h * M - (f - b * d - h * d - b * M); + let y = 0; + 0 !== u && (r[y++] = u); + for (let x = 1; x < t; x++) p = n[x], i = p * o, l = e * p, b = l - (l - p), h = p - b, a = h * M - (i - b * d - h * d - b * M), s = f + a, c = s - f, u = f - (s - c) + (a - c), 0 !== u && (r[y++] = u), f = i + s, u = s - (f - i), 0 !== u && (r[y++] = u); + return 0 === f && 0 !== y || (r[y++] = f), y; + } + function s(t) { + return new Float64Array(t); + } + const u = 3330669073875473e-31, + i = 32047474274603644e-47, + a = s(4), + c = s(4), + l = s(4), + b = s(4), + h = s(4), + d = s(4), + M = s(4), + p = s(4), + y = s(4), + x = s(8), + g = s(8), + m = s(8), + T = s(4), + j = s(8), + w = s(8), + A = s(8), + F = s(12); + let k = s(192), + q = s(192); + function v(t, n, e) { + t = r(t, k, n, e, q); + const o = k; + return k = q, q = o, t; + } + function z(t, n, o, r, f, s, u, i) { + let a, c, l, b, h, d, M, p, y, x, g, m, T, j, w; + return 0 === t ? 0 === n ? (u[0] = 0, i[0] = 0, 1) : (w = -n, x = w * o, c = e * w, l = c - (c - w), b = w - l, c = e * o, h = c - (c - o), d = o - h, u[0] = b * d - (x - l * h - b * h - l * d), u[1] = x, x = n * f, c = e * n, l = c - (c - n), b = n - l, c = e * f, h = c - (c - f), d = f - h, i[0] = b * d - (x - l * h - b * h - l * d), i[1] = x, 2) : 0 === n ? (x = t * r, c = e * t, l = c - (c - t), b = t - l, c = e * r, h = c - (c - r), d = r - h, u[0] = b * d - (x - l * h - b * h - l * d), u[1] = x, w = -t, x = w * s, c = e * w, l = c - (c - w), b = w - l, c = e * s, h = c - (c - s), d = s - h, i[0] = b * d - (x - l * h - b * h - l * d), i[1] = x, 2) : (x = t * r, c = e * t, l = c - (c - t), b = t - l, c = e * r, h = c - (c - r), d = r - h, g = b * d - (x - l * h - b * h - l * d), m = n * o, c = e * n, l = c - (c - n), b = n - l, c = e * o, h = c - (c - o), d = o - h, T = b * d - (m - l * h - b * h - l * d), M = g - T, a = g - M, u[0] = g - (M + a) + (a - T), p = x + M, a = p - x, y = x - (p - a) + (M - a), M = y - m, a = y - M, u[1] = y - (M + a) + (a - m), j = p + M, a = j - p, u[2] = p - (j - a) + (M - a), u[3] = j, x = n * f, c = e * n, l = c - (c - n), b = n - l, c = e * f, h = c - (c - f), d = f - h, g = b * d - (x - l * h - b * h - l * d), m = t * s, c = e * t, l = c - (c - t), b = t - l, c = e * s, h = c - (c - s), d = s - h, T = b * d - (m - l * h - b * h - l * d), M = g - T, a = g - M, i[0] = g - (M + a) + (a - T), p = x + M, a = p - x, y = x - (p - a) + (M - a), M = y - m, a = y - M, i[1] = y - (M + a) + (a - m), j = p + M, a = j - p, i[2] = p - (j - a) + (M - a), i[3] = j, 4); + } + function B(t, n, o, r, f) { + let s, u, i, a, c, l, b, h, d, M, p, y, x; + return p = n * o, u = e * n, i = u - (u - n), a = n - i, u = e * o, c = u - (u - o), l = o - c, y = a * l - (p - i * c - a * c - i * l), u = e * r, c = u - (u - r), l = r - c, b = y * r, u = e * y, i = u - (u - y), a = y - i, T[0] = a * l - (b - i * c - a * c - i * l), h = p * r, u = e * p, i = u - (u - p), a = p - i, M = a * l - (h - i * c - a * c - i * l), d = b + M, s = d - b, T[1] = b - (d - s) + (M - s), x = h + d, T[2] = d - (x - h), T[3] = x, t = v(t, 4, T), 0 !== f && (u = e * f, c = u - (u - f), l = f - c, b = y * f, u = e * y, i = u - (u - y), a = y - i, T[0] = a * l - (b - i * c - a * c - i * l), h = p * f, u = e * p, i = u - (u - p), a = p - i, M = a * l - (h - i * c - a * c - i * l), d = b + M, s = d - b, T[1] = b - (d - s) + (M - s), x = h + d, T[2] = d - (x - h), T[3] = x, t = v(t, 4, T)), t; + } + t.orient3d = function (t, n, s, T, q, C, D, E, G, H, I, J) { + const K = t - H, + L = T - H, + N = D - H, + O = n - I, + P = q - I, + Q = E - I, + R = s - J, + S = C - J, + U = G - J, + V = L * Q, + W = N * P, + X = N * O, + Y = K * Q, + Z = K * P, + $ = L * O, + _ = R * (V - W) + S * (X - Y) + U * (Z - $), + tt = (Math.abs(V) + Math.abs(W)) * Math.abs(R) + (Math.abs(X) + Math.abs(Y)) * Math.abs(S) + (Math.abs(Z) + Math.abs($)) * Math.abs(U), + nt = 7771561172376103e-31 * tt; + return _ > nt || -_ > nt ? _ : function (t, n, s, T, q, C, D, E, G, H, I, J, K) { + let L, N, O, P, Q, R, S, U, V, W, X, Y, Z, $, _, tt, nt, et, ot, rt, ft, st, ut, it; + const at = t - H, + ct = T - H, + lt = D - H, + bt = n - I, + ht = q - I, + dt = E - I, + Mt = s - J, + pt = C - J, + yt = G - J; + rt = ct * dt, Y = e * ct, Z = Y - (Y - ct), $ = ct - Z, Y = e * dt, _ = Y - (Y - dt), tt = dt - _, ft = $ * tt - (rt - Z * _ - $ * _ - Z * tt), st = lt * ht, Y = e * lt, Z = Y - (Y - lt), $ = lt - Z, Y = e * ht, _ = Y - (Y - ht), tt = ht - _, ut = $ * tt - (st - Z * _ - $ * _ - Z * tt), nt = ft - ut, X = ft - nt, a[0] = ft - (nt + X) + (X - ut), et = rt + nt, X = et - rt, ot = rt - (et - X) + (nt - X), nt = ot - st, X = ot - nt, a[1] = ot - (nt + X) + (X - st), it = et + nt, X = it - et, a[2] = et - (it - X) + (nt - X), a[3] = it, rt = lt * bt, Y = e * lt, Z = Y - (Y - lt), $ = lt - Z, Y = e * bt, _ = Y - (Y - bt), tt = bt - _, ft = $ * tt - (rt - Z * _ - $ * _ - Z * tt), st = at * dt, Y = e * at, Z = Y - (Y - at), $ = at - Z, Y = e * dt, _ = Y - (Y - dt), tt = dt - _, ut = $ * tt - (st - Z * _ - $ * _ - Z * tt), nt = ft - ut, X = ft - nt, c[0] = ft - (nt + X) + (X - ut), et = rt + nt, X = et - rt, ot = rt - (et - X) + (nt - X), nt = ot - st, X = ot - nt, c[1] = ot - (nt + X) + (X - st), it = et + nt, X = it - et, c[2] = et - (it - X) + (nt - X), c[3] = it, rt = at * ht, Y = e * at, Z = Y - (Y - at), $ = at - Z, Y = e * ht, _ = Y - (Y - ht), tt = ht - _, ft = $ * tt - (rt - Z * _ - $ * _ - Z * tt), st = ct * bt, Y = e * ct, Z = Y - (Y - ct), $ = ct - Z, Y = e * bt, _ = Y - (Y - bt), tt = bt - _, ut = $ * tt - (st - Z * _ - $ * _ - Z * tt), nt = ft - ut, X = ft - nt, l[0] = ft - (nt + X) + (X - ut), et = rt + nt, X = et - rt, ot = rt - (et - X) + (nt - X), nt = ot - st, X = ot - nt, l[1] = ot - (nt + X) + (X - st), it = et + nt, X = it - et, l[2] = et - (it - X) + (nt - X), l[3] = it, L = r(r(f(4, a, Mt, j), j, f(4, c, pt, w), w, A), A, f(4, l, yt, j), j, k); + let xt = function (t, n) { + let e = n[0]; + for (let o = 1; o < t; o++) e += n[o]; + return e; + }(L, k), + gt = u * K; + if (xt >= gt || -xt >= gt) return xt; + if (X = t - at, N = t - (at + X) + (X - H), X = T - ct, O = T - (ct + X) + (X - H), X = D - lt, P = D - (lt + X) + (X - H), X = n - bt, Q = n - (bt + X) + (X - I), X = q - ht, R = q - (ht + X) + (X - I), X = E - dt, S = E - (dt + X) + (X - I), X = s - Mt, U = s - (Mt + X) + (X - J), X = C - pt, V = C - (pt + X) + (X - J), X = G - yt, W = G - (yt + X) + (X - J), 0 === N && 0 === O && 0 === P && 0 === Q && 0 === R && 0 === S && 0 === U && 0 === V && 0 === W) return xt; + if (gt = i * K + o * Math.abs(xt), xt += Mt * (ct * S + dt * O - (ht * P + lt * R)) + U * (ct * dt - ht * lt) + pt * (lt * Q + bt * P - (dt * N + at * S)) + V * (lt * bt - dt * at) + yt * (at * R + ht * N - (bt * O + ct * Q)) + W * (at * ht - bt * ct), xt >= gt || -xt >= gt) return xt; + const mt = z(N, Q, ct, ht, lt, dt, b, h), + Tt = z(O, R, lt, dt, at, bt, d, M), + jt = z(P, S, at, bt, ct, ht, p, y), + wt = r(Tt, d, jt, y, x); + L = v(L, f(wt, x, Mt, A), A); + const At = r(jt, p, mt, h, g); + L = v(L, f(At, g, pt, A), A); + const Ft = r(mt, b, Tt, M, m); + return L = v(L, f(Ft, m, yt, A), A), 0 !== U && (L = v(L, f(4, a, U, F), F), L = v(L, f(wt, x, U, A), A)), 0 !== V && (L = v(L, f(4, c, V, F), F), L = v(L, f(At, g, V, A), A)), 0 !== W && (L = v(L, f(4, l, W, F), F), L = v(L, f(Ft, m, W, A), A)), 0 !== N && (0 !== R && (L = B(L, N, R, yt, W)), 0 !== S && (L = B(L, -N, S, pt, V))), 0 !== O && (0 !== S && (L = B(L, O, S, Mt, U)), 0 !== Q && (L = B(L, -O, Q, yt, W))), 0 !== P && (0 !== Q && (L = B(L, P, Q, pt, V)), 0 !== R && (L = B(L, -P, R, Mt, U))), k[L - 1]; + }(t, n, s, T, q, C, D, E, G, H, I, J, tt); + }, t.orient3dfast = function (t, n, e, o, r, f, s, u, i, a, c, l) { + const b = n - c, + h = r - c, + d = u - c, + M = e - l, + p = f - l, + y = i - l; + return (t - a) * (h * y - p * d) + (o - a) * (d * M - y * b) + (s - a) * (b * p - M * h); + }; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.js new file mode 100644 index 000000000000..9373065fa391 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.js @@ -0,0 +1,2073 @@ +"use strict"; + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {})); +})(this, function (exports) { + 'use strict'; + + const epsilon = 1.1102230246251565e-16; + const splitter = 134217729; + const resulterrbound = (3 + 8 * epsilon) * epsilon; + + // fast_expansion_sum_zeroelim routine from oritinal code + function sum(elen, e, flen, f, h) { + let Q, Qnew, hh, bvirt; + let enow = e[0]; + let fnow = f[0]; + let eindex = 0; + let findex = 0; + if (fnow > enow === fnow > -enow) { + Q = enow; + enow = e[++eindex]; + } else { + Q = fnow; + fnow = f[++findex]; + } + let hindex = 0; + if (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = enow + Q; + hh = Q - (Qnew - enow); + enow = e[++eindex]; + } else { + Qnew = fnow + Q; + hh = Q - (Qnew - fnow); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + while (eindex < elen && findex < flen) { + if (fnow > enow === fnow > -enow) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + } else { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + } + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + } + while (eindex < elen) { + Qnew = Q + enow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (enow - bvirt); + enow = e[++eindex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + while (findex < flen) { + Qnew = Q + fnow; + bvirt = Qnew - Q; + hh = Q - (Qnew - bvirt) + (fnow - bvirt); + fnow = f[++findex]; + Q = Qnew; + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function sum_three(alen, a, blen, b, clen, c, tmp, out) { + return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out); + } + + // scale_expansion_zeroelim routine from oritinal code + function scale(elen, e, b, h) { + let Q, sum, hh, product1, product0; + let bvirt, c, ahi, alo, bhi, blo; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + let enow = e[0]; + Q = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo); + let hindex = 0; + if (hh !== 0) { + h[hindex++] = hh; + } + for (let i = 1; i < elen; i++) { + enow = e[i]; + product1 = enow * b; + c = splitter * enow; + ahi = c - (c - enow); + alo = enow - ahi; + product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo); + sum = Q + product0; + bvirt = sum - Q; + hh = Q - (sum - bvirt) + (product0 - bvirt); + if (hh !== 0) { + h[hindex++] = hh; + } + Q = product1 + sum; + hh = sum - (Q - product1); + if (hh !== 0) { + h[hindex++] = hh; + } + } + if (Q !== 0 || hindex === 0) { + h[hindex++] = Q; + } + return hindex; + } + function negate(elen, e) { + for (let i = 0; i < elen; i++) e[i] = -e[i]; + return elen; + } + function estimate(elen, e) { + let Q = e[0]; + for (let i = 1; i < elen; i++) Q += e[i]; + return Q; + } + function vec(n) { + return new Float64Array(n); + } + const ccwerrboundA = (3 + 16 * epsilon) * epsilon; + const ccwerrboundB = (2 + 12 * epsilon) * epsilon; + const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon; + const B = vec(4); + const C1 = vec(8); + const C2 = vec(12); + const D = vec(16); + const u$2 = vec(4); + function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) { + let acxtail, acytail, bcxtail, bcytail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const acx = ax - cx; + const bcx = bx - cx; + const acy = ay - cy; + const bcy = by - cy; + s1 = acx * bcy; + c = splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcx; + c = splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + B[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + B[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + B[2] = _j - (u3 - bvirt) + (_i - bvirt); + B[3] = u3; + let det = estimate(4, B); + let errbound = ccwerrboundB * detsum; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - acx; + acxtail = ax - (acx + bvirt) + (bvirt - cx); + bvirt = bx - bcx; + bcxtail = bx - (bcx + bvirt) + (bvirt - cx); + bvirt = ay - acy; + acytail = ay - (acy + bvirt) + (bvirt - cy); + bvirt = by - bcy; + bcytail = by - (bcy + bvirt) + (bvirt - cy); + if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) { + return det; + } + errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det); + det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail); + if (det >= errbound || -det >= errbound) return det; + s1 = acxtail * bcy; + c = splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = splitter * bcy; + bhi = c - (c - bcy); + blo = bcy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcx; + c = splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = splitter * bcx; + bhi = c - (c - bcx); + blo = bcx - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u$2[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u$2[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u$2[2] = _j - (u3 - bvirt) + (_i - bvirt); + u$2[3] = u3; + const C1len = sum(4, B, 4, u$2, C1); + s1 = acx * bcytail; + c = splitter * acx; + ahi = c - (c - acx); + alo = acx - ahi; + c = splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acy * bcxtail; + c = splitter * acy; + ahi = c - (c - acy); + alo = acy - ahi; + c = splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u$2[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u$2[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u$2[2] = _j - (u3 - bvirt) + (_i - bvirt); + u$2[3] = u3; + const C2len = sum(C1len, C1, 4, u$2, C2); + s1 = acxtail * bcytail; + c = splitter * acxtail; + ahi = c - (c - acxtail); + alo = acxtail - ahi; + c = splitter * bcytail; + bhi = c - (c - bcytail); + blo = bcytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = acytail * bcxtail; + c = splitter * acytail; + ahi = c - (c - acytail); + alo = acytail - ahi; + c = splitter * bcxtail; + bhi = c - (c - bcxtail); + blo = bcxtail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + u$2[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + u$2[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + u$2[2] = _j - (u3 - bvirt) + (_i - bvirt); + u$2[3] = u3; + const Dlen = sum(C2len, C2, 4, u$2, D); + return D[Dlen - 1]; + } + function orient2d(ax, ay, bx, by, cx, cy) { + const detleft = (ay - cy) * (bx - cx); + const detright = (ax - cx) * (by - cy); + const det = detleft - detright; + const detsum = Math.abs(detleft + detright); + if (Math.abs(det) >= ccwerrboundA * detsum) return det; + return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum); + } + function orient2dfast(ax, ay, bx, by, cx, cy) { + return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy); + } + const o3derrboundA = (7 + 56 * epsilon) * epsilon; + const o3derrboundB = (3 + 28 * epsilon) * epsilon; + const o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon; + const bc$2 = vec(4); + const ca$1 = vec(4); + const ab$2 = vec(4); + const at_b = vec(4); + const at_c = vec(4); + const bt_c = vec(4); + const bt_a = vec(4); + const ct_a = vec(4); + const ct_b = vec(4); + const bct$1 = vec(8); + const cat$1 = vec(8); + const abt$1 = vec(8); + const u$1 = vec(4); + const _8$2 = vec(8); + const _8b$1 = vec(8); + const _16$2 = vec(8); + const _12 = vec(12); + let fin$2 = vec(192); + let fin2$1 = vec(192); + function finadd$1(finlen, alen, a) { + finlen = sum(finlen, fin$2, alen, a, fin2$1); + const tmp = fin$2; + fin$2 = fin2$1; + fin2$1 = tmp; + return finlen; + } + function tailinit(xtail, ytail, ax, ay, bx, by, a, b) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3, negate; + if (xtail === 0) { + if (ytail === 0) { + a[0] = 0; + b[0] = 0; + return 1; + } else { + negate = -ytail; + s1 = negate * ax; + c = splitter * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = splitter * ax; + bhi = c - (c - ax); + blo = ax - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + s1 = ytail * bx; + c = splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = splitter * bx; + bhi = c - (c - bx); + blo = bx - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } + } else { + if (ytail === 0) { + s1 = xtail * ay; + c = splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + a[1] = s1; + negate = -xtail; + s1 = negate * by; + c = splitter * negate; + ahi = c - (c - negate); + alo = negate - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + b[1] = s1; + return 2; + } else { + s1 = xtail * ay; + c = splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ytail * ax; + c = splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = splitter * ax; + bhi = c - (c - ax); + blo = ax - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + a[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + a[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + a[2] = _j - (u3 - bvirt) + (_i - bvirt); + a[3] = u3; + s1 = ytail * bx; + c = splitter * ytail; + ahi = c - (c - ytail); + alo = ytail - ahi; + c = splitter * bx; + bhi = c - (c - bx); + blo = bx - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = xtail * by; + c = splitter * xtail; + ahi = c - (c - xtail); + alo = xtail - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + b[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + b[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + b[2] = _j - (u3 - bvirt) + (_i - bvirt); + b[3] = u3; + return 4; + } + } + } + function tailadd(finlen, a, b, k, z) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3; + s1 = a * b; + c = splitter * a; + ahi = c - (c - a); + alo = a - ahi; + c = splitter * b; + bhi = c - (c - b); + blo = b - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + c = splitter * k; + bhi = c - (c - k); + blo = k - bhi; + _i = s0 * k; + c = splitter * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * k; + c = splitter * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u$1[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u$1[2] = _k - (u3 - _j); + u$1[3] = u3; + finlen = finadd$1(finlen, 4, u$1); + if (z !== 0) { + c = splitter * z; + bhi = c - (c - z); + blo = z - bhi; + _i = s0 * z; + c = splitter * s0; + ahi = c - (c - s0); + alo = s0 - ahi; + u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo); + _j = s1 * z; + c = splitter * s1; + ahi = c - (c - s1); + alo = s1 - ahi; + _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo); + _k = _i + _0; + bvirt = _k - _i; + u$1[1] = _i - (_k - bvirt) + (_0 - bvirt); + u3 = _j + _k; + u$1[2] = _k - (u3 - _j); + u$1[3] = u3; + finlen = finadd$1(finlen, 4, u$1); + } + return finlen; + } + function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail; + let adytail, bdytail, cdytail; + let adztail, bdztail, cdztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + s1 = bdx * cdy; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc$2[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc$2[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc$2[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc$2[3] = u3; + s1 = cdx * ady; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca$1[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca$1[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca$1[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca$1[3] = u3; + s1 = adx * bdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab$2[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab$2[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab$2[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab$2[3] = u3; + finlen = sum(sum(scale(4, bc$2, adz, _8$2), _8$2, scale(4, ca$1, bdz, _8b$1), _8b$1, _16$2), _16$2, scale(4, ab$2, cdz, _8$2), _8$2, fin$2); + let det = estimate(finlen, fin$2); + let errbound = o3derrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + bvirt = az - adz; + adztail = az - (adz + bvirt) + (bvirt - dz); + bvirt = bz - bdz; + bdztail = bz - (bdz + bvirt) + (bvirt - dz); + bvirt = cz - cdz; + cdztail = cz - (cdz + bvirt) + (bvirt - dz); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0 && adztail === 0 && bdztail === 0 && cdztail === 0) { + return det; + } + errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det); + det += adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) + bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) + cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx); + if (det >= errbound || -det >= errbound) { + return det; + } + const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c); + const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a); + const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b); + const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct$1); + finlen = finadd$1(finlen, scale(bctlen, bct$1, adz, _16$2), _16$2); + const catlen = sum(ct_len, ct_a, at_len, at_c, cat$1); + finlen = finadd$1(finlen, scale(catlen, cat$1, bdz, _16$2), _16$2); + const abtlen = sum(at_len, at_b, bt_len, bt_a, abt$1); + finlen = finadd$1(finlen, scale(abtlen, abt$1, cdz, _16$2), _16$2); + if (adztail !== 0) { + finlen = finadd$1(finlen, scale(4, bc$2, adztail, _12), _12); + finlen = finadd$1(finlen, scale(bctlen, bct$1, adztail, _16$2), _16$2); + } + if (bdztail !== 0) { + finlen = finadd$1(finlen, scale(4, ca$1, bdztail, _12), _12); + finlen = finadd$1(finlen, scale(catlen, cat$1, bdztail, _16$2), _16$2); + } + if (cdztail !== 0) { + finlen = finadd$1(finlen, scale(4, ab$2, cdztail, _12), _12); + finlen = finadd$1(finlen, scale(abtlen, abt$1, cdztail, _16$2), _16$2); + } + if (adxtail !== 0) { + if (bdytail !== 0) { + finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail); + } + if (cdytail !== 0) { + finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail); + } + } + if (bdxtail !== 0) { + if (cdytail !== 0) { + finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail); + } + if (adytail !== 0) { + finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail); + } + } + if (cdxtail !== 0) { + if (adytail !== 0) { + finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail); + } + if (bdytail !== 0) { + finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail); + } + } + return fin$2[finlen - 1]; + } + function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz); + const errbound = o3derrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent); + } + function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const adz = az - dz; + const bdz = bz - dz; + const cdz = cz - dz; + return adx * (bdy * cdz - bdz * cdy) + bdx * (cdy * adz - cdz * ady) + cdx * (ady * bdz - adz * bdy); + } + const iccerrboundA = (10 + 96 * epsilon) * epsilon; + const iccerrboundB = (4 + 48 * epsilon) * epsilon; + const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon; + const bc$1 = vec(4); + const ca = vec(4); + const ab$1 = vec(4); + const aa = vec(4); + const bb = vec(4); + const cc = vec(4); + const u = vec(4); + const v = vec(4); + const axtbc = vec(8); + const aytbc = vec(8); + const bxtca = vec(8); + const bytca = vec(8); + const cxtab = vec(8); + const cytab = vec(8); + const abt = vec(8); + const bct = vec(8); + const cat = vec(8); + const abtt = vec(4); + const bctt = vec(4); + const catt = vec(4); + const _8$1 = vec(8); + const _16$1 = vec(16); + const _16b = vec(16); + const _16c = vec(16); + const _32 = vec(32); + const _32b = vec(32); + const _48$1 = vec(48); + const _64 = vec(64); + let fin$1 = vec(1152); + let fin2 = vec(1152); + function finadd(finlen, a, alen) { + finlen = sum(finlen, fin$1, a, alen, fin2); + const tmp = fin$1; + fin$1 = fin2; + fin2 = tmp; + return finlen; + } + function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) { + let finlen; + let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail; + let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen; + let abtlen, bctlen, catlen; + let abttlen, bcttlen, cattlen; + let n1, n0; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + s1 = bdx * cdy; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * bdy; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc$1[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc$1[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc$1[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc$1[3] = u3; + s1 = cdx * ady; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * cdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ca[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ca[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ca[2] = _j - (u3 - bvirt) + (_i - bvirt); + ca[3] = u3; + s1 = adx * bdy; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * ady; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab$1[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab$1[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab$1[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab$1[3] = u3; + finlen = sum(sum(sum(scale(scale(4, bc$1, adx, _8$1), _8$1, adx, _16$1), _16$1, scale(scale(4, bc$1, ady, _8$1), _8$1, ady, _16b), _16b, _32), _32, sum(scale(scale(4, ca, bdx, _8$1), _8$1, bdx, _16$1), _16$1, scale(scale(4, ca, bdy, _8$1), _8$1, bdy, _16b), _16b, _32b), _32b, _64), _64, sum(scale(scale(4, ab$1, cdx, _8$1), _8$1, cdx, _16$1), _16$1, scale(scale(4, ab$1, cdy, _8$1), _8$1, cdy, _16b), _16b, _32), _32, fin$1); + let det = estimate(finlen, fin$1); + let errbound = iccerrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - adx; + adxtail = ax - (adx + bvirt) + (bvirt - dx); + bvirt = ay - ady; + adytail = ay - (ady + bvirt) + (bvirt - dy); + bvirt = bx - bdx; + bdxtail = bx - (bdx + bvirt) + (bvirt - dx); + bvirt = by - bdy; + bdytail = by - (bdy + bvirt) + (bvirt - dy); + bvirt = cx - cdx; + cdxtail = cx - (cdx + bvirt) + (bvirt - dx); + bvirt = cy - cdy; + cdytail = cy - (cdy + bvirt) + (bvirt - dy); + if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) { + return det; + } + errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det); + det += (adx * adx + ady * ady) * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx) + ((bdx * bdx + bdy * bdy) * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) + ((cdx * cdx + cdy * cdy) * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx)); + if (det >= errbound || -det >= errbound) { + return det; + } + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = adx * adx; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = ady * ady; + c = splitter * ady; + ahi = c - (c - ady); + alo = ady - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + aa[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + aa[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + aa[2] = _j - (u3 - bvirt) + (_i - bvirt); + aa[3] = u3; + } + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = bdx * bdx; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = bdy * bdy; + c = splitter * bdy; + ahi = c - (c - bdy); + alo = bdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + bb[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + bb[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + bb[2] = _j - (u3 - bvirt) + (_i - bvirt); + bb[3] = u3; + } + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = cdx * cdx; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo); + t1 = cdy * cdy; + c = splitter * cdy; + ahi = c - (c - cdy); + alo = cdy - ahi; + t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo); + _i = s0 + t0; + bvirt = _i - s0; + cc[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + cc[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + cc[2] = _j - (u3 - bvirt) + (_i - bvirt); + cc[3] = u3; + } + if (adxtail !== 0) { + axtbclen = scale(4, bc$1, adxtail, axtbc); + finlen = finadd(finlen, sum_three(scale(axtbclen, axtbc, 2 * adx, _16$1), _16$1, scale(scale(4, cc, adxtail, _8$1), _8$1, bdy, _16b), _16b, scale(scale(4, bb, adxtail, _8$1), _8$1, -cdy, _16c), _16c, _32, _48$1), _48$1); + } + if (adytail !== 0) { + aytbclen = scale(4, bc$1, adytail, aytbc); + finlen = finadd(finlen, sum_three(scale(aytbclen, aytbc, 2 * ady, _16$1), _16$1, scale(scale(4, bb, adytail, _8$1), _8$1, cdx, _16b), _16b, scale(scale(4, cc, adytail, _8$1), _8$1, -bdx, _16c), _16c, _32, _48$1), _48$1); + } + if (bdxtail !== 0) { + bxtcalen = scale(4, ca, bdxtail, bxtca); + finlen = finadd(finlen, sum_three(scale(bxtcalen, bxtca, 2 * bdx, _16$1), _16$1, scale(scale(4, aa, bdxtail, _8$1), _8$1, cdy, _16b), _16b, scale(scale(4, cc, bdxtail, _8$1), _8$1, -ady, _16c), _16c, _32, _48$1), _48$1); + } + if (bdytail !== 0) { + bytcalen = scale(4, ca, bdytail, bytca); + finlen = finadd(finlen, sum_three(scale(bytcalen, bytca, 2 * bdy, _16$1), _16$1, scale(scale(4, cc, bdytail, _8$1), _8$1, adx, _16b), _16b, scale(scale(4, aa, bdytail, _8$1), _8$1, -cdx, _16c), _16c, _32, _48$1), _48$1); + } + if (cdxtail !== 0) { + cxtablen = scale(4, ab$1, cdxtail, cxtab); + finlen = finadd(finlen, sum_three(scale(cxtablen, cxtab, 2 * cdx, _16$1), _16$1, scale(scale(4, bb, cdxtail, _8$1), _8$1, ady, _16b), _16b, scale(scale(4, aa, cdxtail, _8$1), _8$1, -bdy, _16c), _16c, _32, _48$1), _48$1); + } + if (cdytail !== 0) { + cytablen = scale(4, ab$1, cdytail, cytab); + finlen = finadd(finlen, sum_three(scale(cytablen, cytab, 2 * cdy, _16$1), _16$1, scale(scale(4, aa, cdytail, _8$1), _8$1, bdx, _16b), _16b, scale(scale(4, bb, cdytail, _8$1), _8$1, -adx, _16c), _16c, _32, _48$1), _48$1); + } + if (adxtail !== 0 || adytail !== 0) { + if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) { + s1 = bdxtail * cdy; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * cdy; + bhi = c - (c - cdy); + blo = cdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * cdytail; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + s1 = cdxtail * -bdy; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * -bdy; + bhi = c - (c - -bdy); + blo = -bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * -bdytail; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * -bdytail; + bhi = c - (c - -bdytail); + blo = -bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + bctlen = sum(4, u, 4, v, bct); + s1 = bdxtail * cdytail; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdxtail * bdytail; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bctt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bctt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bctt[2] = _j - (u3 - bvirt) + (_i - bvirt); + bctt[3] = u3; + bcttlen = 4; + } else { + bct[0] = 0; + bctlen = 1; + bctt[0] = 0; + bcttlen = 1; + } + if (adxtail !== 0) { + const len = scale(bctlen, bct, adxtail, _16c); + finlen = finadd(finlen, sum(scale(axtbclen, axtbc, adxtail, _16$1), _16$1, scale(len, _16c, 2 * adx, _32), _32, _48$1), _48$1); + const len2 = scale(bcttlen, bctt, adxtail, _8$1); + finlen = finadd(finlen, sum_three(scale(len2, _8$1, 2 * adx, _16$1), _16$1, scale(len2, _8$1, adxtail, _16b), _16b, scale(len, _16c, adxtail, _32), _32, _32b, _64), _64); + if (bdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8$1), _8$1, bdytail, _16$1), _16$1); + } + if (cdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8$1), _8$1, cdytail, _16$1), _16$1); + } + } + if (adytail !== 0) { + const len = scale(bctlen, bct, adytail, _16c); + finlen = finadd(finlen, sum(scale(aytbclen, aytbc, adytail, _16$1), _16$1, scale(len, _16c, 2 * ady, _32), _32, _48$1), _48$1); + const len2 = scale(bcttlen, bctt, adytail, _8$1); + finlen = finadd(finlen, sum_three(scale(len2, _8$1, 2 * ady, _16$1), _16$1, scale(len2, _8$1, adytail, _16b), _16b, scale(len, _16c, adytail, _32), _32, _32b, _64), _64); + } + } + if (bdxtail !== 0 || bdytail !== 0) { + if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) { + s1 = cdxtail * ady; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * ady; + bhi = c - (c - ady); + blo = ady - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cdx * adytail; + c = splitter * cdx; + ahi = c - (c - cdx); + alo = cdx - ahi; + c = splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -cdy; + n0 = -cdytail; + s1 = adxtail * n1; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * n0; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + catlen = sum(4, u, 4, v, cat); + s1 = cdxtail * adytail; + c = splitter * cdxtail; + ahi = c - (c - cdxtail); + alo = cdxtail - ahi; + c = splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adxtail * cdytail; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * cdytail; + bhi = c - (c - cdytail); + blo = cdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + catt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + catt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + catt[2] = _j - (u3 - bvirt) + (_i - bvirt); + catt[3] = u3; + cattlen = 4; + } else { + cat[0] = 0; + catlen = 1; + catt[0] = 0; + cattlen = 1; + } + if (bdxtail !== 0) { + const len = scale(catlen, cat, bdxtail, _16c); + finlen = finadd(finlen, sum(scale(bxtcalen, bxtca, bdxtail, _16$1), _16$1, scale(len, _16c, 2 * bdx, _32), _32, _48$1), _48$1); + const len2 = scale(cattlen, catt, bdxtail, _8$1); + finlen = finadd(finlen, sum_three(scale(len2, _8$1, 2 * bdx, _16$1), _16$1, scale(len2, _8$1, bdxtail, _16b), _16b, scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64); + if (cdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8$1), _8$1, cdytail, _16$1), _16$1); + } + if (adytail !== 0) { + finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8$1), _8$1, adytail, _16$1), _16$1); + } + } + if (bdytail !== 0) { + const len = scale(catlen, cat, bdytail, _16c); + finlen = finadd(finlen, sum(scale(bytcalen, bytca, bdytail, _16$1), _16$1, scale(len, _16c, 2 * bdy, _32), _32, _48$1), _48$1); + const len2 = scale(cattlen, catt, bdytail, _8$1); + finlen = finadd(finlen, sum_three(scale(len2, _8$1, 2 * bdy, _16$1), _16$1, scale(len2, _8$1, bdytail, _16b), _16b, scale(len, _16c, bdytail, _32), _32, _32b, _64), _64); + } + } + if (cdxtail !== 0 || cdytail !== 0) { + if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) { + s1 = adxtail * bdy; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * bdy; + bhi = c - (c - bdy); + blo = bdy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = adx * bdytail; + c = splitter * adx; + ahi = c - (c - adx); + alo = adx - ahi; + c = splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + u[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + u[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + u[2] = _j - (u3 - bvirt) + (_i - bvirt); + u[3] = u3; + n1 = -ady; + n0 = -adytail; + s1 = bdxtail * n1; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * n1; + bhi = c - (c - n1); + blo = n1 - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdx * n0; + c = splitter * bdx; + ahi = c - (c - bdx); + alo = bdx - ahi; + c = splitter * n0; + bhi = c - (c - n0); + blo = n0 - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 + t0; + bvirt = _i - s0; + v[0] = s0 - (_i - bvirt) + (t0 - bvirt); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 + t1; + bvirt = _i - _0; + v[1] = _0 - (_i - bvirt) + (t1 - bvirt); + u3 = _j + _i; + bvirt = u3 - _j; + v[2] = _j - (u3 - bvirt) + (_i - bvirt); + v[3] = u3; + abtlen = sum(4, u, 4, v, abt); + s1 = adxtail * bdytail; + c = splitter * adxtail; + ahi = c - (c - adxtail); + alo = adxtail - ahi; + c = splitter * bdytail; + bhi = c - (c - bdytail); + blo = bdytail - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bdxtail * adytail; + c = splitter * bdxtail; + ahi = c - (c - bdxtail); + alo = bdxtail - ahi; + c = splitter * adytail; + bhi = c - (c - adytail); + blo = adytail - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + abtt[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + abtt[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + abtt[2] = _j - (u3 - bvirt) + (_i - bvirt); + abtt[3] = u3; + abttlen = 4; + } else { + abt[0] = 0; + abtlen = 1; + abtt[0] = 0; + abttlen = 1; + } + if (cdxtail !== 0) { + const len = scale(abtlen, abt, cdxtail, _16c); + finlen = finadd(finlen, sum(scale(cxtablen, cxtab, cdxtail, _16$1), _16$1, scale(len, _16c, 2 * cdx, _32), _32, _48$1), _48$1); + const len2 = scale(abttlen, abtt, cdxtail, _8$1); + finlen = finadd(finlen, sum_three(scale(len2, _8$1, 2 * cdx, _16$1), _16$1, scale(len2, _8$1, cdxtail, _16b), _16b, scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64); + if (adytail !== 0) { + finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8$1), _8$1, adytail, _16$1), _16$1); + } + if (bdytail !== 0) { + finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8$1), _8$1, bdytail, _16$1), _16$1); + } + } + if (cdytail !== 0) { + const len = scale(abtlen, abt, cdytail, _16c); + finlen = finadd(finlen, sum(scale(cytablen, cytab, cdytail, _16$1), _16$1, scale(len, _16c, 2 * cdy, _32), _32, _48$1), _48$1); + const len2 = scale(abttlen, abtt, cdytail, _8$1); + finlen = finadd(finlen, sum_three(scale(len2, _8$1, 2 * cdy, _16$1), _16$1, scale(len2, _8$1, cdytail, _16b), _16b, scale(len, _16c, cdytail, _32), _32, _32b, _64), _64); + } + } + return fin$1[finlen - 1]; + } + function incircle(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const bdx = bx - dx; + const cdx = cx - dx; + const ady = ay - dy; + const bdy = by - dy; + const cdy = cy - dy; + const bdxcdy = bdx * cdy; + const cdxbdy = cdx * bdy; + const alift = adx * adx + ady * ady; + const cdxady = cdx * ady; + const adxcdy = adx * cdy; + const blift = bdx * bdx + bdy * bdy; + const adxbdy = adx * bdy; + const bdxady = bdx * ady; + const clift = cdx * cdx + cdy * cdy; + const det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) + clift * (adxbdy - bdxady); + const permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift + (Math.abs(cdxady) + Math.abs(adxcdy)) * blift + (Math.abs(adxbdy) + Math.abs(bdxady)) * clift; + const errbound = iccerrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent); + } + function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) { + const adx = ax - dx; + const ady = ay - dy; + const bdx = bx - dx; + const bdy = by - dy; + const cdx = cx - dx; + const cdy = cy - dy; + const abdet = adx * bdy - bdx * ady; + const bcdet = bdx * cdy - cdx * bdy; + const cadet = cdx * ady - adx * cdy; + const alift = adx * adx + ady * ady; + const blift = bdx * bdx + bdy * bdy; + const clift = cdx * cdx + cdy * cdy; + return alift * bcdet + blift * cadet + clift * abdet; + } + const isperrboundA = (16 + 224 * epsilon) * epsilon; + const isperrboundB = (5 + 72 * epsilon) * epsilon; + const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon; + const ab = vec(4); + const bc = vec(4); + const cd = vec(4); + const de = vec(4); + const ea = vec(4); + const ac = vec(4); + const bd = vec(4); + const ce = vec(4); + const da = vec(4); + const eb = vec(4); + const abc = vec(24); + const bcd = vec(24); + const cde = vec(24); + const dea = vec(24); + const eab = vec(24); + const abd = vec(24); + const bce = vec(24); + const cda = vec(24); + const deb = vec(24); + const eac = vec(24); + const adet = vec(1152); + const bdet = vec(1152); + const cdet = vec(1152); + const ddet = vec(1152); + const edet = vec(1152); + const abdet = vec(2304); + const cddet = vec(2304); + const cdedet = vec(3456); + const deter = vec(5760); + const _8 = vec(8); + const _8b = vec(8); + const _8c = vec(8); + const _16 = vec(16); + const _24 = vec(24); + const _48 = vec(48); + const _48b = vec(48); + const _96 = vec(96); + const _192 = vec(192); + const _384x = vec(384); + const _384y = vec(384); + const _384z = vec(384); + const _768 = vec(768); + function sum_three_scale(a, b, c, az, bz, cz, out) { + return sum_three(scale(4, a, az, _8), _8, scale(4, b, bz, _8b), _8b, scale(4, c, cz, _8c), _8c, _16, out); + } + function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) { + const len = sum(sum(alen, a, blen, b, _48), _48, negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96); + return sum_three(scale(scale(len, _96, x, _192), _192, x, _384x), _384x, scale(scale(len, _96, y, _192), _192, y, _384y), _384y, scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out); + } + function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3; + s1 = ax * by; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ay; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ab[2] = _j - (u3 - bvirt) + (_i - bvirt); + ab[3] = u3; + s1 = bx * cy; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * by; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bc[2] = _j - (u3 - bvirt) + (_i - bvirt); + bc[3] = u3; + s1 = cx * dy; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * cy; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + cd[2] = _j - (u3 - bvirt) + (_i - bvirt); + cd[3] = u3; + s1 = dx * ey; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * dy; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + de[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + de[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + de[2] = _j - (u3 - bvirt) + (_i - bvirt); + de[3] = u3; + s1 = ex * ay; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * ey; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ea[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ea[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ea[2] = _j - (u3 - bvirt) + (_i - bvirt); + ea[3] = u3; + s1 = ax * cy; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cx * ay; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ac[2] = _j - (u3 - bvirt) + (_i - bvirt); + ac[3] = u3; + s1 = bx * dy; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dx * by; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + bd[2] = _j - (u3 - bvirt) + (_i - bvirt); + bd[3] = u3; + s1 = cx * ey; + c = splitter * cx; + ahi = c - (c - cx); + alo = cx - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ex * cy; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * cy; + bhi = c - (c - cy); + blo = cy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ce[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ce[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + ce[2] = _j - (u3 - bvirt) + (_i - bvirt); + ce[3] = u3; + s1 = dx * ay; + c = splitter * dx; + ahi = c - (c - dx); + alo = dx - ahi; + c = splitter * ay; + bhi = c - (c - ay); + blo = ay - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = ax * dy; + c = splitter * ax; + ahi = c - (c - ax); + alo = ax - ahi; + c = splitter * dy; + bhi = c - (c - dy); + blo = dy - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + da[2] = _j - (u3 - bvirt) + (_i - bvirt); + da[3] = u3; + s1 = ex * by; + c = splitter * ex; + ahi = c - (c - ex); + alo = ex - ahi; + c = splitter * by; + bhi = c - (c - by); + blo = by - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bx * ey; + c = splitter * bx; + ahi = c - (c - bx); + alo = bx - ahi; + c = splitter * ey; + bhi = c - (c - ey); + blo = ey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + eb[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + eb[1] = _0 - (_i + bvirt) + (bvirt - t1); + u3 = _j + _i; + bvirt = u3 - _j; + eb[2] = _j - (u3 - bvirt) + (_i - bvirt); + eb[3] = u3; + const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc); + const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd); + const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde); + const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea); + const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab); + const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd); + const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce); + const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda); + const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb); + const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac); + const deterlen = sum_three(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, sum_three(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter); + return deter[deterlen - 1]; + } + const xdet = vec(96); + const ydet = vec(96); + const zdet = vec(96); + const fin = vec(1152); + function liftadapt(a, b, c, az, bz, cz, x, y, z, out) { + const len = sum_three_scale(a, b, c, az, bz, cz, _24); + return sum_three(scale(scale(len, _24, x, _48), _48, x, xdet), xdet, scale(scale(len, _24, y, _48), _48, y, ydet), ydet, scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out); + } + function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) { + let ab3, bc3, cd3, da3, ac3, bd3; + let aextail, bextail, cextail, dextail; + let aeytail, beytail, ceytail, deytail; + let aeztail, beztail, ceztail, deztail; + let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0; + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + s1 = aex * bey; + c = splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = bex * aey; + c = splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ab[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ab[1] = _0 - (_i + bvirt) + (bvirt - t1); + ab3 = _j + _i; + bvirt = ab3 - _j; + ab[2] = _j - (ab3 - bvirt) + (_i - bvirt); + ab[3] = ab3; + s1 = bex * cey; + c = splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * bey; + c = splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bc[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bc[1] = _0 - (_i + bvirt) + (bvirt - t1); + bc3 = _j + _i; + bvirt = bc3 - _j; + bc[2] = _j - (bc3 - bvirt) + (_i - bvirt); + bc[3] = bc3; + s1 = cex * dey; + c = splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * cey; + c = splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + cd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + cd[1] = _0 - (_i + bvirt) + (bvirt - t1); + cd3 = _j + _i; + bvirt = cd3 - _j; + cd[2] = _j - (cd3 - bvirt) + (_i - bvirt); + cd[3] = cd3; + s1 = dex * aey; + c = splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = aex * dey; + c = splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + da[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + da[1] = _0 - (_i + bvirt) + (bvirt - t1); + da3 = _j + _i; + bvirt = da3 - _j; + da[2] = _j - (da3 - bvirt) + (_i - bvirt); + da[3] = da3; + s1 = aex * cey; + c = splitter * aex; + ahi = c - (c - aex); + alo = aex - ahi; + c = splitter * cey; + bhi = c - (c - cey); + blo = cey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = cex * aey; + c = splitter * cex; + ahi = c - (c - cex); + alo = cex - ahi; + c = splitter * aey; + bhi = c - (c - aey); + blo = aey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + ac[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + ac[1] = _0 - (_i + bvirt) + (bvirt - t1); + ac3 = _j + _i; + bvirt = ac3 - _j; + ac[2] = _j - (ac3 - bvirt) + (_i - bvirt); + ac[3] = ac3; + s1 = bex * dey; + c = splitter * bex; + ahi = c - (c - bex); + alo = bex - ahi; + c = splitter * dey; + bhi = c - (c - dey); + blo = dey - bhi; + s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo); + t1 = dex * bey; + c = splitter * dex; + ahi = c - (c - dex); + alo = dex - ahi; + c = splitter * bey; + bhi = c - (c - bey); + blo = bey - bhi; + t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo); + _i = s0 - t0; + bvirt = s0 - _i; + bd[0] = s0 - (_i + bvirt) + (bvirt - t0); + _j = s1 + _i; + bvirt = _j - s1; + _0 = s1 - (_j - bvirt) + (_i - bvirt); + _i = _0 - t1; + bvirt = _0 - _i; + bd[1] = _0 - (_i + bvirt) + (bvirt - t1); + bd3 = _j + _i; + bvirt = bd3 - _j; + bd[2] = _j - (bd3 - bvirt) + (_i - bvirt); + bd[3] = bd3; + const finlen = sum(sum(negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, sum(negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin); + let det = estimate(finlen, fin); + let errbound = isperrboundB * permanent; + if (det >= errbound || -det >= errbound) { + return det; + } + bvirt = ax - aex; + aextail = ax - (aex + bvirt) + (bvirt - ex); + bvirt = ay - aey; + aeytail = ay - (aey + bvirt) + (bvirt - ey); + bvirt = az - aez; + aeztail = az - (aez + bvirt) + (bvirt - ez); + bvirt = bx - bex; + bextail = bx - (bex + bvirt) + (bvirt - ex); + bvirt = by - bey; + beytail = by - (bey + bvirt) + (bvirt - ey); + bvirt = bz - bez; + beztail = bz - (bez + bvirt) + (bvirt - ez); + bvirt = cx - cex; + cextail = cx - (cex + bvirt) + (bvirt - ex); + bvirt = cy - cey; + ceytail = cy - (cey + bvirt) + (bvirt - ey); + bvirt = cz - cez; + ceztail = cz - (cez + bvirt) + (bvirt - ez); + bvirt = dx - dex; + dextail = dx - (dex + bvirt) + (bvirt - ex); + bvirt = dy - dey; + deytail = dy - (dey + bvirt) + (bvirt - ey); + bvirt = dz - dez; + deztail = dz - (dez + bvirt) + (bvirt - ez); + if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) { + return det; + } + errbound = isperrboundC * permanent + resulterrbound * Math.abs(det); + const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail); + const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail); + const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail); + const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail); + const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail); + const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail); + det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3))); + if (det >= errbound || -det >= errbound) { + return det; + } + return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez); + } + function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) { + const aex = ax - ex; + const bex = bx - ex; + const cex = cx - ex; + const dex = dx - ex; + const aey = ay - ey; + const bey = by - ey; + const cey = cy - ey; + const dey = dy - ey; + const aez = az - ez; + const bez = bz - ez; + const cez = cz - ez; + const dez = dz - ez; + const aexbey = aex * bey; + const bexaey = bex * aey; + const ab = aexbey - bexaey; + const bexcey = bex * cey; + const cexbey = cex * bey; + const bc = bexcey - cexbey; + const cexdey = cex * dey; + const dexcey = dex * cey; + const cd = cexdey - dexcey; + const dexaey = dex * aey; + const aexdey = aex * dey; + const da = dexaey - aexdey; + const aexcey = aex * cey; + const cexaey = cex * aey; + const ac = aexcey - cexaey; + const bexdey = bex * dey; + const dexbey = dex * bey; + const bd = bexdey - dexbey; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + const det = clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab) + (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd)); + const aezplus = Math.abs(aez); + const bezplus = Math.abs(bez); + const cezplus = Math.abs(cez); + const dezplus = Math.abs(dez); + const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey); + const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey); + const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey); + const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey); + const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey); + const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey); + const permanent = (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift + (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift + (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift + (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift; + const errbound = isperrboundA * permanent; + if (det > errbound || -det > errbound) { + return det; + } + return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent); + } + function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) { + const aex = pax - pex; + const bex = pbx - pex; + const cex = pcx - pex; + const dex = pdx - pex; + const aey = pay - pey; + const bey = pby - pey; + const cey = pcy - pey; + const dey = pdy - pey; + const aez = paz - pez; + const bez = pbz - pez; + const cez = pcz - pez; + const dez = pdz - pez; + const ab = aex * bey - bex * aey; + const bc = bex * cey - cex * bey; + const cd = cex * dey - dex * cey; + const da = dex * aey - aex * dey; + const ac = aex * cey - cex * aey; + const bd = bex * dey - dex * bey; + const abc = aez * bc - bez * ac + cez * ab; + const bcd = bez * cd - cez * bd + dez * bc; + const cda = cez * da + dez * ac + aez * cd; + const dab = dez * ab + aez * bd + bez * da; + const alift = aex * aex + aey * aey + aez * aez; + const blift = bex * bex + bey * bey + bez * bez; + const clift = cex * cex + cey * cey + cez * cez; + const dlift = dex * dex + dey * dey + dez * dez; + return clift * dab - dlift * abc + (alift * bcd - blift * cda); + } + exports.incircle = incircle; + exports.incirclefast = incirclefast; + exports.insphere = insphere; + exports.inspherefast = inspherefast; + exports.orient2d = orient2d; + exports.orient2dfast = orient2dfast; + exports.orient3d = orient3d; + exports.orient3dfast = orient3dfast; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.min.js b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.min.js new file mode 100644 index 000000000000..bf9e2599b961 --- /dev/null +++ b/packages/x-charts-vendor/lib-vendor/robust-predicates/umd/predicates.min.js @@ -0,0 +1,468 @@ +"use strict"; + +!function (t, n) { + "object" == typeof exports && "undefined" != typeof module ? n(exports) : "function" == typeof define && define.amd ? define(["exports"], n) : n((t = "undefined" != typeof globalThis ? globalThis : t || self).predicates = {}); +}(this, function (t) { + "use strict"; + + const n = 11102230246251565e-32, + e = 134217729, + r = (3 + 8 * n) * n; + function s(t, n, e, r, s) { + let o, + a, + c, + f, + i = n[0], + u = r[0], + h = 0, + b = 0; + u > i == u > -i ? (o = i, i = n[++h]) : (o = u, u = r[++b]); + let M = 0; + if (h < t && b < e) for (u > i == u > -i ? (a = i + o, c = o - (a - i), i = n[++h]) : (a = u + o, c = o - (a - u), u = r[++b]), o = a, 0 !== c && (s[M++] = c); h < t && b < e;) u > i == u > -i ? (a = o + i, f = a - o, c = o - (a - f) + (i - f), i = n[++h]) : (a = o + u, f = a - o, c = o - (a - f) + (u - f), u = r[++b]), o = a, 0 !== c && (s[M++] = c); + for (; h < t;) a = o + i, f = a - o, c = o - (a - f) + (i - f), i = n[++h], o = a, 0 !== c && (s[M++] = c); + for (; b < e;) a = o + u, f = a - o, c = o - (a - f) + (u - f), u = r[++b], o = a, 0 !== c && (s[M++] = c); + return 0 === o && 0 !== M || (s[M++] = o), M; + } + function o(t, n, e, r, o, a, c, f) { + return s(s(t, n, e, r, c), c, o, a, f); + } + function a(t, n, r, s) { + let o, a, c, f, i, u, h, b, M, l, d; + h = e * r, l = h - (h - r), d = r - l; + let p = n[0]; + o = p * r, h = e * p, b = h - (h - p), M = p - b, c = M * d - (o - b * l - M * l - b * d); + let y = 0; + 0 !== c && (s[y++] = c); + for (let x = 1; x < t; x++) p = n[x], f = p * r, h = e * p, b = h - (h - p), M = p - b, i = M * d - (f - b * l - M * l - b * d), a = o + i, u = a - o, c = o - (a - u) + (i - u), 0 !== c && (s[y++] = c), o = f + a, c = a - (o - f), 0 !== c && (s[y++] = c); + return 0 === o && 0 !== y || (s[y++] = o), y; + } + function c(t, n) { + for (let e = 0; e < t; e++) n[e] = -n[e]; + return t; + } + function f(t, n) { + let e = n[0]; + for (let r = 1; r < t; r++) e += n[r]; + return e; + } + function i(t) { + return new Float64Array(t); + } + const u = 22204460492503146e-32, + h = 11093356479670487e-47, + b = i(4), + M = i(8), + l = i(12), + d = i(16), + p = i(4); + const y = 3330669073875473e-31, + x = 32047474274603644e-47, + g = i(4), + m = i(4), + T = i(4), + j = i(4), + w = i(4), + A = i(4), + F = i(4), + k = i(4), + q = i(4), + v = i(8), + z = i(8), + B = i(8), + C = i(4), + D = i(8), + E = i(8), + G = i(8), + H = i(12); + let I = i(192), + J = i(192); + function K(t, n, e) { + t = s(t, I, n, e, J); + const r = I; + return I = J, J = r, t; + } + function L(t, n, r, s, o, a, c, f) { + let i, u, h, b, M, l, d, p, y, x, g, m, T, j, w; + return 0 === t ? 0 === n ? (c[0] = 0, f[0] = 0, 1) : (w = -n, x = w * r, u = e * w, h = u - (u - w), b = w - h, u = e * r, M = u - (u - r), l = r - M, c[0] = b * l - (x - h * M - b * M - h * l), c[1] = x, x = n * o, u = e * n, h = u - (u - n), b = n - h, u = e * o, M = u - (u - o), l = o - M, f[0] = b * l - (x - h * M - b * M - h * l), f[1] = x, 2) : 0 === n ? (x = t * s, u = e * t, h = u - (u - t), b = t - h, u = e * s, M = u - (u - s), l = s - M, c[0] = b * l - (x - h * M - b * M - h * l), c[1] = x, w = -t, x = w * a, u = e * w, h = u - (u - w), b = w - h, u = e * a, M = u - (u - a), l = a - M, f[0] = b * l - (x - h * M - b * M - h * l), f[1] = x, 2) : (x = t * s, u = e * t, h = u - (u - t), b = t - h, u = e * s, M = u - (u - s), l = s - M, g = b * l - (x - h * M - b * M - h * l), m = n * r, u = e * n, h = u - (u - n), b = n - h, u = e * r, M = u - (u - r), l = r - M, T = b * l - (m - h * M - b * M - h * l), d = g - T, i = g - d, c[0] = g - (d + i) + (i - T), p = x + d, i = p - x, y = x - (p - i) + (d - i), d = y - m, i = y - d, c[1] = y - (d + i) + (i - m), j = p + d, i = j - p, c[2] = p - (j - i) + (d - i), c[3] = j, x = n * o, u = e * n, h = u - (u - n), b = n - h, u = e * o, M = u - (u - o), l = o - M, g = b * l - (x - h * M - b * M - h * l), m = t * a, u = e * t, h = u - (u - t), b = t - h, u = e * a, M = u - (u - a), l = a - M, T = b * l - (m - h * M - b * M - h * l), d = g - T, i = g - d, f[0] = g - (d + i) + (i - T), p = x + d, i = p - x, y = x - (p - i) + (d - i), d = y - m, i = y - d, f[1] = y - (d + i) + (i - m), j = p + d, i = j - p, f[2] = p - (j - i) + (d - i), f[3] = j, 4); + } + function N(t, n, r, s, o) { + let a, c, f, i, u, h, b, M, l, d, p, y, x; + return p = n * r, c = e * n, f = c - (c - n), i = n - f, c = e * r, u = c - (c - r), h = r - u, y = i * h - (p - f * u - i * u - f * h), c = e * s, u = c - (c - s), h = s - u, b = y * s, c = e * y, f = c - (c - y), i = y - f, C[0] = i * h - (b - f * u - i * u - f * h), M = p * s, c = e * p, f = c - (c - p), i = p - f, d = i * h - (M - f * u - i * u - f * h), l = b + d, a = l - b, C[1] = b - (l - a) + (d - a), x = M + l, C[2] = l - (x - M), C[3] = x, t = K(t, 4, C), 0 !== o && (c = e * o, u = c - (c - o), h = o - u, b = y * o, c = e * y, f = c - (c - y), i = y - f, C[0] = i * h - (b - f * u - i * u - f * h), M = p * o, c = e * p, f = c - (c - p), i = p - f, d = i * h - (M - f * u - i * u - f * h), l = b + d, a = l - b, C[1] = b - (l - a) + (d - a), x = M + l, C[2] = l - (x - M), C[3] = x, t = K(t, 4, C)), t; + } + const O = 4440892098500632e-31, + P = 5423418723394464e-46, + Q = i(4), + R = i(4), + S = i(4), + U = i(4), + V = i(4), + W = i(4), + X = i(4), + Y = i(4), + Z = i(8), + $ = i(8), + _ = i(8), + tt = i(8), + nt = i(8), + et = i(8), + rt = i(8), + st = i(8), + ot = i(8), + at = i(4), + ct = i(4), + ft = i(4), + it = i(8), + ut = i(16), + ht = i(16), + bt = i(16), + Mt = i(32), + lt = i(32), + dt = i(48), + pt = i(64); + let yt = i(1152), + xt = i(1152); + function gt(t, n, e) { + t = s(t, yt, n, e, xt); + const r = yt; + return yt = xt, xt = r, t; + } + const mt = 5551115123125792e-31, + Tt = 8751425667295619e-46, + jt = i(4), + wt = i(4), + At = i(4), + Ft = i(4), + kt = i(4), + qt = i(4), + vt = i(4), + zt = i(4), + Bt = i(4), + Ct = i(4), + Dt = i(24), + Et = i(24), + Gt = i(24), + Ht = i(24), + It = i(24), + Jt = i(24), + Kt = i(24), + Lt = i(24), + Nt = i(24), + Ot = i(24), + Pt = i(1152), + Qt = i(1152), + Rt = i(1152), + St = i(1152), + Ut = i(1152), + Vt = i(2304), + Wt = i(2304), + Xt = i(3456), + Yt = i(5760), + Zt = i(8), + $t = i(8), + _t = i(8), + tn = i(16), + nn = i(24), + en = i(48), + rn = i(48), + sn = i(96), + on = i(192), + an = i(384), + cn = i(384), + fn = i(384), + un = i(768); + function hn(t, n, e, r, s, c, f) { + return o(a(4, t, r, Zt), Zt, a(4, n, s, $t), $t, a(4, e, c, _t), _t, tn, f); + } + function bn(t, n, e, r, f, i, u, h, b, M, l, d) { + const p = s(s(t, n, e, r, en), en, c(s(f, i, u, h, rn), rn), rn, sn); + return o(a(a(p, sn, b, on), on, b, an), an, a(a(p, sn, M, on), on, M, cn), cn, a(a(p, sn, l, on), on, l, fn), fn, un, d); + } + const Mn = i(96), + ln = i(96), + dn = i(96), + pn = i(1152); + function yn(t, n, e, r, s, c, f, i, u, h) { + const b = hn(t, n, e, r, s, c, nn); + return o(a(a(b, nn, f, en), en, f, Mn), Mn, a(a(b, nn, i, en), en, i, ln), ln, a(a(b, nn, u, en), en, u, dn), dn, on, h); + } + function xn(t, n, a, i, u, h, b, M, l, d, p, y, x, g, m, T) { + let j, w, A, F, k, q, v, z, B, C, D, E, G, H, I, J, K, L, N, O, P, Q, R, S, U, V, W, X, Y, Z, $; + const _ = t - x, + tt = i - x, + nt = b - x, + et = d - x, + rt = n - g, + st = u - g, + ot = M - g, + at = p - g, + ct = a - m, + ft = h - m, + it = l - m, + ut = y - m; + X = _ * st, O = e * _, P = O - (O - _), Q = _ - P, O = e * st, R = O - (O - st), S = st - R, Y = Q * S - (X - P * R - Q * R - P * S), Z = tt * rt, O = e * tt, P = O - (O - tt), Q = tt - P, O = e * rt, R = O - (O - rt), S = rt - R, $ = Q * S - (Z - P * R - Q * R - P * S), U = Y - $, N = Y - U, jt[0] = Y - (U + N) + (N - $), V = X + U, N = V - X, W = X - (V - N) + (U - N), U = W - Z, N = W - U, jt[1] = W - (U + N) + (N - Z), j = V + U, N = j - V, jt[2] = V - (j - N) + (U - N), jt[3] = j, X = tt * ot, O = e * tt, P = O - (O - tt), Q = tt - P, O = e * ot, R = O - (O - ot), S = ot - R, Y = Q * S - (X - P * R - Q * R - P * S), Z = nt * st, O = e * nt, P = O - (O - nt), Q = nt - P, O = e * st, R = O - (O - st), S = st - R, $ = Q * S - (Z - P * R - Q * R - P * S), U = Y - $, N = Y - U, wt[0] = Y - (U + N) + (N - $), V = X + U, N = V - X, W = X - (V - N) + (U - N), U = W - Z, N = W - U, wt[1] = W - (U + N) + (N - Z), w = V + U, N = w - V, wt[2] = V - (w - N) + (U - N), wt[3] = w, X = nt * at, O = e * nt, P = O - (O - nt), Q = nt - P, O = e * at, R = O - (O - at), S = at - R, Y = Q * S - (X - P * R - Q * R - P * S), Z = et * ot, O = e * et, P = O - (O - et), Q = et - P, O = e * ot, R = O - (O - ot), S = ot - R, $ = Q * S - (Z - P * R - Q * R - P * S), U = Y - $, N = Y - U, At[0] = Y - (U + N) + (N - $), V = X + U, N = V - X, W = X - (V - N) + (U - N), U = W - Z, N = W - U, At[1] = W - (U + N) + (N - Z), A = V + U, N = A - V, At[2] = V - (A - N) + (U - N), At[3] = A, X = et * rt, O = e * et, P = O - (O - et), Q = et - P, O = e * rt, R = O - (O - rt), S = rt - R, Y = Q * S - (X - P * R - Q * R - P * S), Z = _ * at, O = e * _, P = O - (O - _), Q = _ - P, O = e * at, R = O - (O - at), S = at - R, $ = Q * S - (Z - P * R - Q * R - P * S), U = Y - $, N = Y - U, Bt[0] = Y - (U + N) + (N - $), V = X + U, N = V - X, W = X - (V - N) + (U - N), U = W - Z, N = W - U, Bt[1] = W - (U + N) + (N - Z), F = V + U, N = F - V, Bt[2] = V - (F - N) + (U - N), Bt[3] = F, X = _ * ot, O = e * _, P = O - (O - _), Q = _ - P, O = e * ot, R = O - (O - ot), S = ot - R, Y = Q * S - (X - P * R - Q * R - P * S), Z = nt * rt, O = e * nt, P = O - (O - nt), Q = nt - P, O = e * rt, R = O - (O - rt), S = rt - R, $ = Q * S - (Z - P * R - Q * R - P * S), U = Y - $, N = Y - U, qt[0] = Y - (U + N) + (N - $), V = X + U, N = V - X, W = X - (V - N) + (U - N), U = W - Z, N = W - U, qt[1] = W - (U + N) + (N - Z), k = V + U, N = k - V, qt[2] = V - (k - N) + (U - N), qt[3] = k, X = tt * at, O = e * tt, P = O - (O - tt), Q = tt - P, O = e * at, R = O - (O - at), S = at - R, Y = Q * S - (X - P * R - Q * R - P * S), Z = et * st, O = e * et, P = O - (O - et), Q = et - P, O = e * st, R = O - (O - st), S = st - R, $ = Q * S - (Z - P * R - Q * R - P * S), U = Y - $, N = Y - U, vt[0] = Y - (U + N) + (N - $), V = X + U, N = V - X, W = X - (V - N) + (U - N), U = W - Z, N = W - U, vt[1] = W - (U + N) + (N - Z), q = V + U, N = q - V, vt[2] = V - (q - N) + (U - N), vt[3] = q; + let ht = f(s(s(c(yn(wt, At, vt, ut, ft, -it, _, rt, ct, Pt), Pt), Pt, yn(At, Bt, qt, ct, it, ut, tt, st, ft, Qt), Qt, Vt), Vt, s(c(yn(Bt, jt, vt, ft, ut, ct, nt, ot, it, Rt), Rt), Rt, yn(jt, wt, qt, it, ct, -ft, et, at, ut, St), St, Wt), Wt, pn), pn), + bt = mt * T; + if (ht >= bt || -ht >= bt) return ht; + if (N = t - _, v = t - (_ + N) + (N - x), N = n - rt, D = n - (rt + N) + (N - g), N = a - ct, I = a - (ct + N) + (N - m), N = i - tt, z = i - (tt + N) + (N - x), N = u - st, E = u - (st + N) + (N - g), N = h - ft, J = h - (ft + N) + (N - m), N = b - nt, B = b - (nt + N) + (N - x), N = M - ot, G = M - (ot + N) + (N - g), N = l - it, K = l - (it + N) + (N - m), N = d - et, C = d - (et + N) + (N - x), N = p - at, H = p - (at + N) + (N - g), N = y - ut, L = y - (ut + N) + (N - m), 0 === v && 0 === D && 0 === I && 0 === z && 0 === E && 0 === J && 0 === B && 0 === G && 0 === K && 0 === C && 0 === H && 0 === L) return ht; + bt = Tt * T + r * Math.abs(ht); + const Mt = _ * E + st * v - (rt * z + tt * D), + lt = tt * G + ot * z - (st * B + nt * E), + dt = nt * H + at * B - (ot * C + et * G), + pt = et * D + rt * C - (at * v + _ * H), + yt = _ * G + ot * v - (rt * B + nt * D), + xt = tt * H + at * z - (st * C + et * E); + return ht += (tt * tt + st * st + ft * ft) * (it * pt + ut * yt + ct * dt + (K * F + L * k + I * A)) + (et * et + at * at + ut * ut) * (ct * lt - ft * yt + it * Mt + (I * w - J * k + K * j)) - ((_ * _ + rt * rt + ct * ct) * (ft * dt - it * xt + ut * lt + (J * A - K * q + L * w)) + (nt * nt + ot * ot + it * it) * (ut * Mt + ct * xt + ft * pt + (L * j + I * q + J * F))) + 2 * ((tt * z + st * E + ft * J) * (it * F + ut * k + ct * A) + (et * C + at * H + ut * L) * (ct * w - ft * k + it * j) - ((_ * v + rt * D + ct * I) * (ft * A - it * q + ut * w) + (nt * B + ot * G + it * K) * (ut * j + ct * q + ft * F))), ht >= bt || -ht >= bt ? ht : function (t, n, r, s, a, c, f, i, u, h, b, M, l, d, p) { + let y, x, g, m, T, j, w, A, F, k, q, v, z, B; + k = t * a, x = e * t, g = x - (x - t), m = t - g, x = e * a, T = x - (x - a), j = a - T, q = m * j - (k - g * T - m * T - g * j), v = s * n, x = e * s, g = x - (x - s), m = s - g, x = e * n, T = x - (x - n), j = n - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, jt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, jt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, jt[2] = A - (B - y) + (w - y), jt[3] = B, k = s * i, x = e * s, g = x - (x - s), m = s - g, x = e * i, T = x - (x - i), j = i - T, q = m * j - (k - g * T - m * T - g * j), v = f * a, x = e * f, g = x - (x - f), m = f - g, x = e * a, T = x - (x - a), j = a - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, wt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, wt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, wt[2] = A - (B - y) + (w - y), wt[3] = B, k = f * b, x = e * f, g = x - (x - f), m = f - g, x = e * b, T = x - (x - b), j = b - T, q = m * j - (k - g * T - m * T - g * j), v = h * i, x = e * h, g = x - (x - h), m = h - g, x = e * i, T = x - (x - i), j = i - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, At[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, At[1] = F - (w + y) + (y - v), B = A + w, y = B - A, At[2] = A - (B - y) + (w - y), At[3] = B, k = h * d, x = e * h, g = x - (x - h), m = h - g, x = e * d, T = x - (x - d), j = d - T, q = m * j - (k - g * T - m * T - g * j), v = l * b, x = e * l, g = x - (x - l), m = l - g, x = e * b, T = x - (x - b), j = b - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, Ft[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, Ft[1] = F - (w + y) + (y - v), B = A + w, y = B - A, Ft[2] = A - (B - y) + (w - y), Ft[3] = B, k = l * n, x = e * l, g = x - (x - l), m = l - g, x = e * n, T = x - (x - n), j = n - T, q = m * j - (k - g * T - m * T - g * j), v = t * d, x = e * t, g = x - (x - t), m = t - g, x = e * d, T = x - (x - d), j = d - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, kt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, kt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, kt[2] = A - (B - y) + (w - y), kt[3] = B, k = t * i, x = e * t, g = x - (x - t), m = t - g, x = e * i, T = x - (x - i), j = i - T, q = m * j - (k - g * T - m * T - g * j), v = f * n, x = e * f, g = x - (x - f), m = f - g, x = e * n, T = x - (x - n), j = n - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, qt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, qt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, qt[2] = A - (B - y) + (w - y), qt[3] = B, k = s * b, x = e * s, g = x - (x - s), m = s - g, x = e * b, T = x - (x - b), j = b - T, q = m * j - (k - g * T - m * T - g * j), v = h * a, x = e * h, g = x - (x - h), m = h - g, x = e * a, T = x - (x - a), j = a - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, vt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, vt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, vt[2] = A - (B - y) + (w - y), vt[3] = B, k = f * d, x = e * f, g = x - (x - f), m = f - g, x = e * d, T = x - (x - d), j = d - T, q = m * j - (k - g * T - m * T - g * j), v = l * i, x = e * l, g = x - (x - l), m = l - g, x = e * i, T = x - (x - i), j = i - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, zt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, zt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, zt[2] = A - (B - y) + (w - y), zt[3] = B, k = h * n, x = e * h, g = x - (x - h), m = h - g, x = e * n, T = x - (x - n), j = n - T, q = m * j - (k - g * T - m * T - g * j), v = t * b, x = e * t, g = x - (x - t), m = t - g, x = e * b, T = x - (x - b), j = b - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, Bt[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, Bt[1] = F - (w + y) + (y - v), B = A + w, y = B - A, Bt[2] = A - (B - y) + (w - y), Bt[3] = B, k = l * a, x = e * l, g = x - (x - l), m = l - g, x = e * a, T = x - (x - a), j = a - T, q = m * j - (k - g * T - m * T - g * j), v = s * d, x = e * s, g = x - (x - s), m = s - g, x = e * d, T = x - (x - d), j = d - T, z = m * j - (v - g * T - m * T - g * j), w = q - z, y = q - w, Ct[0] = q - (w + y) + (y - z), A = k + w, y = A - k, F = k - (A - y) + (w - y), w = F - v, y = F - w, Ct[1] = F - (w + y) + (y - v), B = A + w, y = B - A, Ct[2] = A - (B - y) + (w - y), Ct[3] = B; + const C = hn(jt, wt, qt, u, r, -c, Dt), + D = hn(wt, At, vt, M, c, -u, Et), + E = hn(At, Ft, zt, p, u, -M, Gt), + G = hn(Ft, kt, Bt, r, M, -p, Ht), + H = hn(kt, jt, Ct, c, p, -r, It), + I = hn(jt, vt, Bt, M, r, c, Jt), + J = hn(wt, zt, Ct, p, c, u, Kt), + K = hn(At, Bt, qt, r, u, M, Lt), + L = hn(Ft, Ct, vt, c, M, p, Nt), + N = hn(kt, qt, zt, u, p, r, Ot), + O = o(bn(E, Gt, J, Kt, L, Nt, D, Et, t, n, r, Pt), Pt, bn(G, Ht, K, Lt, N, Ot, E, Gt, s, a, c, Qt), Qt, o(bn(H, It, L, Nt, I, Jt, G, Ht, f, i, u, Rt), Rt, bn(C, Dt, N, Ot, J, Kt, H, It, h, b, M, St), St, bn(D, Et, I, Jt, K, Lt, C, Dt, l, d, p, Ut), Ut, Wt, Xt), Xt, Vt, Yt); + return Yt[O - 1]; + }(t, n, a, i, u, h, b, M, l, d, p, y, x, g, m); + } + t.incircle = function (t, n, c, i, u, h, b, M) { + const l = t - b, + d = c - b, + p = u - b, + y = n - M, + x = i - M, + g = h - M, + m = d * g, + T = p * x, + j = l * l + y * y, + w = p * y, + A = l * g, + F = d * d + x * x, + k = l * x, + q = d * y, + v = p * p + g * g, + z = j * (m - T) + F * (w - A) + v * (k - q), + B = (Math.abs(m) + Math.abs(T)) * j + (Math.abs(w) + Math.abs(A)) * F + (Math.abs(k) + Math.abs(q)) * v, + C = 11102230246251577e-31 * B; + return z > C || -z > C ? z : function (t, n, c, i, u, h, b, M, l) { + let d, p, y, x, g, m, T, j, w, A, F, k, q, v, z, B, C, D, E, G, H, I, J, K, L, N, xt, mt, Tt, jt, wt, At, Ft, kt, qt; + const vt = t - b, + zt = c - b, + Bt = u - b, + Ct = n - M, + Dt = i - M, + Et = h - M; + wt = zt * Et, J = e * zt, K = J - (J - zt), L = zt - K, J = e * Et, N = J - (J - Et), xt = Et - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = Bt * Dt, J = e * Bt, K = J - (J - Bt), L = Bt - K, J = e * Dt, N = J - (J - Dt), xt = Dt - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At - kt, I = At - mt, Q[0] = At - (mt + I) + (I - kt), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt - Ft, I = jt - mt, Q[1] = jt - (mt + I) + (I - Ft), qt = Tt + mt, I = qt - Tt, Q[2] = Tt - (qt - I) + (mt - I), Q[3] = qt, wt = Bt * Ct, J = e * Bt, K = J - (J - Bt), L = Bt - K, J = e * Ct, N = J - (J - Ct), xt = Ct - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = vt * Et, J = e * vt, K = J - (J - vt), L = vt - K, J = e * Et, N = J - (J - Et), xt = Et - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At - kt, I = At - mt, R[0] = At - (mt + I) + (I - kt), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt - Ft, I = jt - mt, R[1] = jt - (mt + I) + (I - Ft), qt = Tt + mt, I = qt - Tt, R[2] = Tt - (qt - I) + (mt - I), R[3] = qt, wt = vt * Dt, J = e * vt, K = J - (J - vt), L = vt - K, J = e * Dt, N = J - (J - Dt), xt = Dt - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = zt * Ct, J = e * zt, K = J - (J - zt), L = zt - K, J = e * Ct, N = J - (J - Ct), xt = Ct - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At - kt, I = At - mt, S[0] = At - (mt + I) + (I - kt), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt - Ft, I = jt - mt, S[1] = jt - (mt + I) + (I - Ft), qt = Tt + mt, I = qt - Tt, S[2] = Tt - (qt - I) + (mt - I), S[3] = qt, d = s(s(s(a(a(4, Q, vt, it), it, vt, ut), ut, a(a(4, Q, Ct, it), it, Ct, ht), ht, Mt), Mt, s(a(a(4, R, zt, it), it, zt, ut), ut, a(a(4, R, Dt, it), it, Dt, ht), ht, lt), lt, pt), pt, s(a(a(4, S, Bt, it), it, Bt, ut), ut, a(a(4, S, Et, it), it, Et, ht), ht, Mt), Mt, yt); + let Gt = f(d, yt), + Ht = O * l; + if (Gt >= Ht || -Gt >= Ht) return Gt; + if (I = t - vt, p = t - (vt + I) + (I - b), I = n - Ct, g = n - (Ct + I) + (I - M), I = c - zt, y = c - (zt + I) + (I - b), I = i - Dt, m = i - (Dt + I) + (I - M), I = u - Bt, x = u - (Bt + I) + (I - b), I = h - Et, T = h - (Et + I) + (I - M), 0 === p && 0 === y && 0 === x && 0 === g && 0 === m && 0 === T) return Gt; + if (Ht = P * l + r * Math.abs(Gt), Gt += (vt * vt + Ct * Ct) * (zt * T + Et * y - (Dt * x + Bt * m)) + 2 * (vt * p + Ct * g) * (zt * Et - Dt * Bt) + ((zt * zt + Dt * Dt) * (Bt * g + Ct * x - (Et * p + vt * T)) + 2 * (zt * y + Dt * m) * (Bt * Ct - Et * vt)) + ((Bt * Bt + Et * Et) * (vt * m + Dt * p - (Ct * y + zt * g)) + 2 * (Bt * x + Et * T) * (vt * Dt - Ct * zt)), Gt >= Ht || -Gt >= Ht) return Gt; + if (0 === y && 0 === m && 0 === x && 0 === T || (wt = vt * vt, J = e * vt, K = J - (J - vt), L = vt - K, At = L * L - (wt - K * K - (K + K) * L), Ft = Ct * Ct, J = e * Ct, K = J - (J - Ct), L = Ct - K, kt = L * L - (Ft - K * K - (K + K) * L), mt = At + kt, I = mt - At, U[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, U[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, U[2] = Tt - (qt - I) + (mt - I), U[3] = qt), 0 === x && 0 === T && 0 === p && 0 === g || (wt = zt * zt, J = e * zt, K = J - (J - zt), L = zt - K, At = L * L - (wt - K * K - (K + K) * L), Ft = Dt * Dt, J = e * Dt, K = J - (J - Dt), L = Dt - K, kt = L * L - (Ft - K * K - (K + K) * L), mt = At + kt, I = mt - At, V[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, V[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, V[2] = Tt - (qt - I) + (mt - I), V[3] = qt), 0 === p && 0 === g && 0 === y && 0 === m || (wt = Bt * Bt, J = e * Bt, K = J - (J - Bt), L = Bt - K, At = L * L - (wt - K * K - (K + K) * L), Ft = Et * Et, J = e * Et, K = J - (J - Et), L = Et - K, kt = L * L - (Ft - K * K - (K + K) * L), mt = At + kt, I = mt - At, W[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, W[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, W[2] = Tt - (qt - I) + (mt - I), W[3] = qt), 0 !== p && (j = a(4, Q, p, Z), d = gt(d, o(a(j, Z, 2 * vt, ut), ut, a(a(4, W, p, it), it, Dt, ht), ht, a(a(4, V, p, it), it, -Et, bt), bt, Mt, dt), dt)), 0 !== g && (w = a(4, Q, g, $), d = gt(d, o(a(w, $, 2 * Ct, ut), ut, a(a(4, V, g, it), it, Bt, ht), ht, a(a(4, W, g, it), it, -zt, bt), bt, Mt, dt), dt)), 0 !== y && (A = a(4, R, y, _), d = gt(d, o(a(A, _, 2 * zt, ut), ut, a(a(4, U, y, it), it, Et, ht), ht, a(a(4, W, y, it), it, -Ct, bt), bt, Mt, dt), dt)), 0 !== m && (F = a(4, R, m, tt), d = gt(d, o(a(F, tt, 2 * Dt, ut), ut, a(a(4, W, m, it), it, vt, ht), ht, a(a(4, U, m, it), it, -Bt, bt), bt, Mt, dt), dt)), 0 !== x && (k = a(4, S, x, nt), d = gt(d, o(a(k, nt, 2 * Bt, ut), ut, a(a(4, V, x, it), it, Ct, ht), ht, a(a(4, U, x, it), it, -Dt, bt), bt, Mt, dt), dt)), 0 !== T && (q = a(4, S, T, et), d = gt(d, o(a(q, et, 2 * Et, ut), ut, a(a(4, U, T, it), it, zt, ht), ht, a(a(4, V, T, it), it, -vt, bt), bt, Mt, dt), dt)), 0 !== p || 0 !== g) { + if (0 !== y || 0 !== m || 0 !== x || 0 !== T ? (wt = y * Et, J = e * y, K = J - (J - y), L = y - K, J = e * Et, N = J - (J - Et), xt = Et - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = zt * T, J = e * zt, K = J - (J - zt), L = zt - K, J = e * T, N = J - (J - T), xt = T - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At + kt, I = mt - At, X[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, X[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, X[2] = Tt - (qt - I) + (mt - I), X[3] = qt, wt = x * -Dt, J = e * x, K = J - (J - x), L = x - K, J = e * -Dt, N = J - (J - -Dt), xt = -Dt - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = Bt * -m, J = e * Bt, K = J - (J - Bt), L = Bt - K, J = e * -m, N = J - (J - -m), xt = -m - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At + kt, I = mt - At, Y[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, Y[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, Y[2] = Tt - (qt - I) + (mt - I), Y[3] = qt, z = s(4, X, 4, Y, st), wt = y * T, J = e * y, K = J - (J - y), L = y - K, J = e * T, N = J - (J - T), xt = T - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = x * m, J = e * x, K = J - (J - x), L = x - K, J = e * m, N = J - (J - m), xt = m - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At - kt, I = At - mt, ct[0] = At - (mt + I) + (I - kt), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt - Ft, I = jt - mt, ct[1] = jt - (mt + I) + (I - Ft), qt = Tt + mt, I = qt - Tt, ct[2] = Tt - (qt - I) + (mt - I), ct[3] = qt, D = 4) : (st[0] = 0, z = 1, ct[0] = 0, D = 1), 0 !== p) { + const t = a(z, st, p, bt); + d = gt(d, s(a(j, Z, p, ut), ut, a(t, bt, 2 * vt, Mt), Mt, dt), dt); + const n = a(D, ct, p, it); + d = gt(d, o(a(n, it, 2 * vt, ut), ut, a(n, it, p, ht), ht, a(t, bt, p, Mt), Mt, lt, pt), pt), 0 !== m && (d = gt(d, a(a(4, W, p, it), it, m, ut), ut)), 0 !== T && (d = gt(d, a(a(4, V, -p, it), it, T, ut), ut)); + } + if (0 !== g) { + const t = a(z, st, g, bt); + d = gt(d, s(a(w, $, g, ut), ut, a(t, bt, 2 * Ct, Mt), Mt, dt), dt); + const n = a(D, ct, g, it); + d = gt(d, o(a(n, it, 2 * Ct, ut), ut, a(n, it, g, ht), ht, a(t, bt, g, Mt), Mt, lt, pt), pt); + } + } + if (0 !== y || 0 !== m) { + if (0 !== x || 0 !== T || 0 !== p || 0 !== g ? (wt = x * Ct, J = e * x, K = J - (J - x), L = x - K, J = e * Ct, N = J - (J - Ct), xt = Ct - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = Bt * g, J = e * Bt, K = J - (J - Bt), L = Bt - K, J = e * g, N = J - (J - g), xt = g - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At + kt, I = mt - At, X[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, X[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, X[2] = Tt - (qt - I) + (mt - I), X[3] = qt, G = -Et, H = -T, wt = p * G, J = e * p, K = J - (J - p), L = p - K, J = e * G, N = J - (J - G), xt = G - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = vt * H, J = e * vt, K = J - (J - vt), L = vt - K, J = e * H, N = J - (J - H), xt = H - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At + kt, I = mt - At, Y[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, Y[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, Y[2] = Tt - (qt - I) + (mt - I), Y[3] = qt, B = s(4, X, 4, Y, ot), wt = x * g, J = e * x, K = J - (J - x), L = x - K, J = e * g, N = J - (J - g), xt = g - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = p * T, J = e * p, K = J - (J - p), L = p - K, J = e * T, N = J - (J - T), xt = T - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At - kt, I = At - mt, ft[0] = At - (mt + I) + (I - kt), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt - Ft, I = jt - mt, ft[1] = jt - (mt + I) + (I - Ft), qt = Tt + mt, I = qt - Tt, ft[2] = Tt - (qt - I) + (mt - I), ft[3] = qt, E = 4) : (ot[0] = 0, B = 1, ft[0] = 0, E = 1), 0 !== y) { + const t = a(B, ot, y, bt); + d = gt(d, s(a(A, _, y, ut), ut, a(t, bt, 2 * zt, Mt), Mt, dt), dt); + const n = a(E, ft, y, it); + d = gt(d, o(a(n, it, 2 * zt, ut), ut, a(n, it, y, ht), ht, a(t, bt, y, Mt), Mt, lt, pt), pt), 0 !== T && (d = gt(d, a(a(4, U, y, it), it, T, ut), ut)), 0 !== g && (d = gt(d, a(a(4, W, -y, it), it, g, ut), ut)); + } + if (0 !== m) { + const t = a(B, ot, m, bt); + d = gt(d, s(a(F, tt, m, ut), ut, a(t, bt, 2 * Dt, Mt), Mt, dt), dt); + const n = a(E, ft, m, it); + d = gt(d, o(a(n, it, 2 * Dt, ut), ut, a(n, it, m, ht), ht, a(t, bt, m, Mt), Mt, lt, pt), pt); + } + } + if (0 !== x || 0 !== T) { + if (0 !== p || 0 !== g || 0 !== y || 0 !== m ? (wt = p * Dt, J = e * p, K = J - (J - p), L = p - K, J = e * Dt, N = J - (J - Dt), xt = Dt - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = vt * m, J = e * vt, K = J - (J - vt), L = vt - K, J = e * m, N = J - (J - m), xt = m - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At + kt, I = mt - At, X[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, X[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, X[2] = Tt - (qt - I) + (mt - I), X[3] = qt, G = -Ct, H = -g, wt = y * G, J = e * y, K = J - (J - y), L = y - K, J = e * G, N = J - (J - G), xt = G - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = zt * H, J = e * zt, K = J - (J - zt), L = zt - K, J = e * H, N = J - (J - H), xt = H - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At + kt, I = mt - At, Y[0] = At - (mt - I) + (kt - I), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt + Ft, I = mt - jt, Y[1] = jt - (mt - I) + (Ft - I), qt = Tt + mt, I = qt - Tt, Y[2] = Tt - (qt - I) + (mt - I), Y[3] = qt, v = s(4, X, 4, Y, rt), wt = p * m, J = e * p, K = J - (J - p), L = p - K, J = e * m, N = J - (J - m), xt = m - N, At = L * xt - (wt - K * N - L * N - K * xt), Ft = y * g, J = e * y, K = J - (J - y), L = y - K, J = e * g, N = J - (J - g), xt = g - N, kt = L * xt - (Ft - K * N - L * N - K * xt), mt = At - kt, I = At - mt, at[0] = At - (mt + I) + (I - kt), Tt = wt + mt, I = Tt - wt, jt = wt - (Tt - I) + (mt - I), mt = jt - Ft, I = jt - mt, at[1] = jt - (mt + I) + (I - Ft), qt = Tt + mt, I = qt - Tt, at[2] = Tt - (qt - I) + (mt - I), at[3] = qt, C = 4) : (rt[0] = 0, v = 1, at[0] = 0, C = 1), 0 !== x) { + const t = a(v, rt, x, bt); + d = gt(d, s(a(k, nt, x, ut), ut, a(t, bt, 2 * Bt, Mt), Mt, dt), dt); + const n = a(C, at, x, it); + d = gt(d, o(a(n, it, 2 * Bt, ut), ut, a(n, it, x, ht), ht, a(t, bt, x, Mt), Mt, lt, pt), pt), 0 !== g && (d = gt(d, a(a(4, V, x, it), it, g, ut), ut)), 0 !== m && (d = gt(d, a(a(4, U, -x, it), it, m, ut), ut)); + } + if (0 !== T) { + const t = a(v, rt, T, bt); + d = gt(d, s(a(q, et, T, ut), ut, a(t, bt, 2 * Et, Mt), Mt, dt), dt); + const n = a(C, at, T, it); + d = gt(d, o(a(n, it, 2 * Et, ut), ut, a(n, it, T, ht), ht, a(t, bt, T, Mt), Mt, lt, pt), pt); + } + } + return yt[d - 1]; + }(t, n, c, i, u, h, b, M, B); + }, t.incirclefast = function (t, n, e, r, s, o, a, c) { + const f = t - a, + i = n - c, + u = e - a, + h = r - c, + b = s - a, + M = o - c; + return (f * f + i * i) * (u * M - b * h) + (u * u + h * h) * (b * i - f * M) + (b * b + M * M) * (f * h - u * i); + }, t.insphere = function (t, n, e, r, s, o, a, c, f, i, u, h, b, M, l) { + const d = t - b, + p = r - b, + y = a - b, + x = i - b, + g = n - M, + m = s - M, + T = c - M, + j = u - M, + w = e - l, + A = o - l, + F = f - l, + k = h - l, + q = d * m, + v = p * g, + z = q - v, + B = p * T, + C = y * m, + D = B - C, + E = y * j, + G = x * T, + H = E - G, + I = x * g, + J = d * j, + K = I - J, + L = d * T, + N = y * g, + O = L - N, + P = p * j, + Q = x * m, + R = P - Q, + S = d * d + g * g + w * w, + U = p * p + m * m + A * A, + V = y * y + T * T + F * F, + W = x * x + j * j + k * k, + X = V * (k * z + w * R + A * K) - W * (w * D - A * O + F * z) + (S * (A * H - F * R + k * D) - U * (F * K + k * O + w * H)), + Y = Math.abs(w), + Z = Math.abs(A), + $ = Math.abs(F), + _ = Math.abs(k), + tt = Math.abs(q) + Math.abs(v), + nt = Math.abs(B) + Math.abs(C), + et = Math.abs(E) + Math.abs(G), + rt = Math.abs(I) + Math.abs(J), + st = Math.abs(L) + Math.abs(N), + ot = Math.abs(P) + Math.abs(Q), + at = (et * Z + ot * $ + nt * _) * S + (rt * $ + st * _ + et * Y) * U + (tt * _ + ot * Y + rt * Z) * V + (nt * Y + st * Z + tt * $) * W, + ct = 17763568394002532e-31 * at; + return X > ct || -X > ct ? X : -xn(t, n, e, r, s, o, a, c, f, i, u, h, b, M, l, at); + }, t.inspherefast = function (t, n, e, r, s, o, a, c, f, i, u, h, b, M, l) { + const d = t - b, + p = r - b, + y = a - b, + x = i - b, + g = n - M, + m = s - M, + T = c - M, + j = u - M, + w = e - l, + A = o - l, + F = f - l, + k = h - l, + q = d * m - p * g, + v = p * T - y * m, + z = y * j - x * T, + B = x * g - d * j, + C = d * T - y * g, + D = p * j - x * m; + return (y * y + T * T + F * F) * (k * q + w * D + A * B) - (x * x + j * j + k * k) * (w * v - A * C + F * q) + ((d * d + g * g + w * w) * (A * z - F * D + k * v) - (p * p + m * m + A * A) * (F * B + k * C + w * z)); + }, t.orient2d = function (t, n, o, a, c, i) { + const y = (n - i) * (o - c), + x = (t - c) * (a - i), + g = y - x, + m = Math.abs(y + x); + return Math.abs(g) >= 33306690738754716e-32 * m ? g : -function (t, n, o, a, c, i, y) { + let x, g, m, T, j, w, A, F, k, q, v, z, B, C, D, E, G, H; + const I = t - c, + J = o - c, + K = n - i, + L = a - i; + C = I * L, w = e * I, A = w - (w - I), F = I - A, w = e * L, k = w - (w - L), q = L - k, D = F * q - (C - A * k - F * k - A * q), E = K * J, w = e * K, A = w - (w - K), F = K - A, w = e * J, k = w - (w - J), q = J - k, G = F * q - (E - A * k - F * k - A * q), v = D - G, j = D - v, b[0] = D - (v + j) + (j - G), z = C + v, j = z - C, B = C - (z - j) + (v - j), v = B - E, j = B - v, b[1] = B - (v + j) + (j - E), H = z + v, j = H - z, b[2] = z - (H - j) + (v - j), b[3] = H; + let N = f(4, b), + O = u * y; + if (N >= O || -N >= O) return N; + if (j = t - I, x = t - (I + j) + (j - c), j = o - J, m = o - (J + j) + (j - c), j = n - K, g = n - (K + j) + (j - i), j = a - L, T = a - (L + j) + (j - i), 0 === x && 0 === g && 0 === m && 0 === T) return N; + if (O = h * y + r * Math.abs(N), N += I * T + L * x - (K * m + J * g), N >= O || -N >= O) return N; + C = x * L, w = e * x, A = w - (w - x), F = x - A, w = e * L, k = w - (w - L), q = L - k, D = F * q - (C - A * k - F * k - A * q), E = g * J, w = e * g, A = w - (w - g), F = g - A, w = e * J, k = w - (w - J), q = J - k, G = F * q - (E - A * k - F * k - A * q), v = D - G, j = D - v, p[0] = D - (v + j) + (j - G), z = C + v, j = z - C, B = C - (z - j) + (v - j), v = B - E, j = B - v, p[1] = B - (v + j) + (j - E), H = z + v, j = H - z, p[2] = z - (H - j) + (v - j), p[3] = H; + const P = s(4, b, 4, p, M); + C = I * T, w = e * I, A = w - (w - I), F = I - A, w = e * T, k = w - (w - T), q = T - k, D = F * q - (C - A * k - F * k - A * q), E = K * m, w = e * K, A = w - (w - K), F = K - A, w = e * m, k = w - (w - m), q = m - k, G = F * q - (E - A * k - F * k - A * q), v = D - G, j = D - v, p[0] = D - (v + j) + (j - G), z = C + v, j = z - C, B = C - (z - j) + (v - j), v = B - E, j = B - v, p[1] = B - (v + j) + (j - E), H = z + v, j = H - z, p[2] = z - (H - j) + (v - j), p[3] = H; + const Q = s(P, M, 4, p, l); + C = x * T, w = e * x, A = w - (w - x), F = x - A, w = e * T, k = w - (w - T), q = T - k, D = F * q - (C - A * k - F * k - A * q), E = g * m, w = e * g, A = w - (w - g), F = g - A, w = e * m, k = w - (w - m), q = m - k, G = F * q - (E - A * k - F * k - A * q), v = D - G, j = D - v, p[0] = D - (v + j) + (j - G), z = C + v, j = z - C, B = C - (z - j) + (v - j), v = B - E, j = B - v, p[1] = B - (v + j) + (j - E), H = z + v, j = H - z, p[2] = z - (H - j) + (v - j), p[3] = H; + const R = s(Q, l, 4, p, d); + return d[R - 1]; + }(t, n, o, a, c, i, m); + }, t.orient2dfast = function (t, n, e, r, s, o) { + return (n - o) * (e - s) - (t - s) * (r - o); + }, t.orient3d = function (t, n, o, c, i, u, h, b, M, l, d, p) { + const C = t - l, + J = c - l, + O = h - l, + P = n - d, + Q = i - d, + R = b - d, + S = o - p, + U = u - p, + V = M - p, + W = J * R, + X = O * Q, + Y = O * P, + Z = C * R, + $ = C * Q, + _ = J * P, + tt = S * (W - X) + U * (Y - Z) + V * ($ - _), + nt = (Math.abs(W) + Math.abs(X)) * Math.abs(S) + (Math.abs(Y) + Math.abs(Z)) * Math.abs(U) + (Math.abs($) + Math.abs(_)) * Math.abs(V), + et = 7771561172376103e-31 * nt; + return tt > et || -tt > et ? tt : function (t, n, o, c, i, u, h, b, M, l, d, p, C) { + let J, O, P, Q, R, S, U, V, W, X, Y, Z, $, _, tt, nt, et, rt, st, ot, at, ct, ft, it; + const ut = t - l, + ht = c - l, + bt = h - l, + Mt = n - d, + lt = i - d, + dt = b - d, + pt = o - p, + yt = u - p, + xt = M - p; + ot = ht * dt, Z = e * ht, $ = Z - (Z - ht), _ = ht - $, Z = e * dt, tt = Z - (Z - dt), nt = dt - tt, at = _ * nt - (ot - $ * tt - _ * tt - $ * nt), ct = bt * lt, Z = e * bt, $ = Z - (Z - bt), _ = bt - $, Z = e * lt, tt = Z - (Z - lt), nt = lt - tt, ft = _ * nt - (ct - $ * tt - _ * tt - $ * nt), et = at - ft, Y = at - et, g[0] = at - (et + Y) + (Y - ft), rt = ot + et, Y = rt - ot, st = ot - (rt - Y) + (et - Y), et = st - ct, Y = st - et, g[1] = st - (et + Y) + (Y - ct), it = rt + et, Y = it - rt, g[2] = rt - (it - Y) + (et - Y), g[3] = it, ot = bt * Mt, Z = e * bt, $ = Z - (Z - bt), _ = bt - $, Z = e * Mt, tt = Z - (Z - Mt), nt = Mt - tt, at = _ * nt - (ot - $ * tt - _ * tt - $ * nt), ct = ut * dt, Z = e * ut, $ = Z - (Z - ut), _ = ut - $, Z = e * dt, tt = Z - (Z - dt), nt = dt - tt, ft = _ * nt - (ct - $ * tt - _ * tt - $ * nt), et = at - ft, Y = at - et, m[0] = at - (et + Y) + (Y - ft), rt = ot + et, Y = rt - ot, st = ot - (rt - Y) + (et - Y), et = st - ct, Y = st - et, m[1] = st - (et + Y) + (Y - ct), it = rt + et, Y = it - rt, m[2] = rt - (it - Y) + (et - Y), m[3] = it, ot = ut * lt, Z = e * ut, $ = Z - (Z - ut), _ = ut - $, Z = e * lt, tt = Z - (Z - lt), nt = lt - tt, at = _ * nt - (ot - $ * tt - _ * tt - $ * nt), ct = ht * Mt, Z = e * ht, $ = Z - (Z - ht), _ = ht - $, Z = e * Mt, tt = Z - (Z - Mt), nt = Mt - tt, ft = _ * nt - (ct - $ * tt - _ * tt - $ * nt), et = at - ft, Y = at - et, T[0] = at - (et + Y) + (Y - ft), rt = ot + et, Y = rt - ot, st = ot - (rt - Y) + (et - Y), et = st - ct, Y = st - et, T[1] = st - (et + Y) + (Y - ct), it = rt + et, Y = it - rt, T[2] = rt - (it - Y) + (et - Y), T[3] = it, J = s(s(a(4, g, pt, D), D, a(4, m, yt, E), E, G), G, a(4, T, xt, D), D, I); + let gt = f(J, I), + mt = y * C; + if (gt >= mt || -gt >= mt) return gt; + if (Y = t - ut, O = t - (ut + Y) + (Y - l), Y = c - ht, P = c - (ht + Y) + (Y - l), Y = h - bt, Q = h - (bt + Y) + (Y - l), Y = n - Mt, R = n - (Mt + Y) + (Y - d), Y = i - lt, S = i - (lt + Y) + (Y - d), Y = b - dt, U = b - (dt + Y) + (Y - d), Y = o - pt, V = o - (pt + Y) + (Y - p), Y = u - yt, W = u - (yt + Y) + (Y - p), Y = M - xt, X = M - (xt + Y) + (Y - p), 0 === O && 0 === P && 0 === Q && 0 === R && 0 === S && 0 === U && 0 === V && 0 === W && 0 === X) return gt; + if (mt = x * C + r * Math.abs(gt), gt += pt * (ht * U + dt * P - (lt * Q + bt * S)) + V * (ht * dt - lt * bt) + yt * (bt * R + Mt * Q - (dt * O + ut * U)) + W * (bt * Mt - dt * ut) + xt * (ut * S + lt * O - (Mt * P + ht * R)) + X * (ut * lt - Mt * ht), gt >= mt || -gt >= mt) return gt; + const Tt = L(O, R, ht, lt, bt, dt, j, w), + jt = L(P, S, bt, dt, ut, Mt, A, F), + wt = L(Q, U, ut, Mt, ht, lt, k, q), + At = s(jt, A, wt, q, v); + J = K(J, a(At, v, pt, G), G); + const Ft = s(wt, k, Tt, w, z); + J = K(J, a(Ft, z, yt, G), G); + const kt = s(Tt, j, jt, F, B); + return J = K(J, a(kt, B, xt, G), G), 0 !== V && (J = K(J, a(4, g, V, H), H), J = K(J, a(At, v, V, G), G)), 0 !== W && (J = K(J, a(4, m, W, H), H), J = K(J, a(Ft, z, W, G), G)), 0 !== X && (J = K(J, a(4, T, X, H), H), J = K(J, a(kt, B, X, G), G)), 0 !== O && (0 !== S && (J = N(J, O, S, xt, X)), 0 !== U && (J = N(J, -O, U, yt, W))), 0 !== P && (0 !== U && (J = N(J, P, U, pt, V)), 0 !== R && (J = N(J, -P, R, xt, X))), 0 !== Q && (0 !== R && (J = N(J, Q, R, yt, W)), 0 !== S && (J = N(J, -Q, S, pt, V))), I[J - 1]; + }(t, n, o, c, i, u, h, b, M, l, d, p, nt); + }, t.orient3dfast = function (t, n, e, r, s, o, a, c, f, i, u, h) { + const b = n - u, + M = s - u, + l = c - u, + d = e - h, + p = o - h, + y = f - h; + return (t - i) * (M * y - p * l) + (r - i) * (l * d - y * b) + (a - i) * (b * p - d * M); + }; +}); \ No newline at end of file diff --git a/packages/x-charts-vendor/lib/d3-array.js b/packages/x-charts-vendor/lib/d3-array.js new file mode 100644 index 000000000000..4b59539e0ec5 --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-array.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-array` (CommonJS) +// See upstream license: https://github.com/d3/d3-array/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-array` +module.exports = require("../lib-vendor/d3-array/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-color.js b/packages/x-charts-vendor/lib/d3-color.js new file mode 100644 index 000000000000..8b26c5d76a5e --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-color.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-color` (CommonJS) +// See upstream license: https://github.com/d3/d3-color/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-color` +module.exports = require("../lib-vendor/d3-color/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-delaunay.js b/packages/x-charts-vendor/lib/d3-delaunay.js new file mode 100644 index 000000000000..1ef27fe5c75d --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-delaunay.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-delaunay` (CommonJS) +// See upstream license: https://github.com/d3/d3-delaunay/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-delaunay` +module.exports = require("../lib-vendor/d3-delaunay/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-format.js b/packages/x-charts-vendor/lib/d3-format.js new file mode 100644 index 000000000000..c2b1a217e4e3 --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-format.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-format` (CommonJS) +// See upstream license: https://github.com/d3/d3-format/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-format` +module.exports = require("../lib-vendor/d3-format/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-interpolate.js b/packages/x-charts-vendor/lib/d3-interpolate.js new file mode 100644 index 000000000000..01c9066cc1f3 --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-interpolate.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-interpolate` (CommonJS) +// See upstream license: https://github.com/d3/d3-interpolate/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-interpolate` +module.exports = require("../lib-vendor/d3-interpolate/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-path.js b/packages/x-charts-vendor/lib/d3-path.js new file mode 100644 index 000000000000..ad74635ca0b6 --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-path.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-path` (CommonJS) +// See upstream license: https://github.com/d3/d3-path/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-path` +module.exports = require("../lib-vendor/d3-path/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-scale.js b/packages/x-charts-vendor/lib/d3-scale.js new file mode 100644 index 000000000000..366e8023abaf --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-scale.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-scale` (CommonJS) +// See upstream license: https://github.com/d3/d3-scale/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-scale` +module.exports = require("../lib-vendor/d3-scale/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-shape.js b/packages/x-charts-vendor/lib/d3-shape.js new file mode 100644 index 000000000000..3bd68e9fc4b4 --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-shape.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-shape` (CommonJS) +// See upstream license: https://github.com/d3/d3-shape/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-shape` +module.exports = require("../lib-vendor/d3-shape/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-time-format.js b/packages/x-charts-vendor/lib/d3-time-format.js new file mode 100644 index 000000000000..23b857c93aac --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-time-format.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-time-format` (CommonJS) +// See upstream license: https://github.com/d3/d3-time-format/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-time-format` +module.exports = require("../lib-vendor/d3-time-format/src/index.js"); diff --git a/packages/x-charts-vendor/lib/d3-time.js b/packages/x-charts-vendor/lib/d3-time.js new file mode 100644 index 000000000000..49c7bafd5154 --- /dev/null +++ b/packages/x-charts-vendor/lib/d3-time.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/d3-time` (CommonJS) +// See upstream license: https://github.com/d3/d3-time/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/d3-time` +module.exports = require("../lib-vendor/d3-time/src/index.js"); diff --git a/packages/x-charts-vendor/lib/delaunator.js b/packages/x-charts-vendor/lib/delaunator.js new file mode 100644 index 000000000000..4e2803555cd8 --- /dev/null +++ b/packages/x-charts-vendor/lib/delaunator.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/delaunator` (CommonJS) +// See upstream license: https://github.com/mapbox/delaunator/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/delaunator` +module.exports = require("../lib-vendor/delaunator/src/index.js"); diff --git a/packages/x-charts-vendor/lib/internmap.js b/packages/x-charts-vendor/lib/internmap.js new file mode 100644 index 000000000000..b993414f8a02 --- /dev/null +++ b/packages/x-charts-vendor/lib/internmap.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/internmap` (CommonJS) +// See upstream license: https://github.com/mbostock/internmap/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/internmap` +module.exports = require("../lib-vendor/internmap/src/index.js"); diff --git a/packages/x-charts-vendor/lib/robust-predicates.js b/packages/x-charts-vendor/lib/robust-predicates.js new file mode 100644 index 000000000000..b32baa17f01b --- /dev/null +++ b/packages/x-charts-vendor/lib/robust-predicates.js @@ -0,0 +1,6 @@ + +// `x-charts-vendor/robust-predicates` (CommonJS) +// See upstream license: https://github.com/mourner/robust-predicates/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in `lib-vendor/robust-predicates` +module.exports = require("../lib-vendor/robust-predicates/src/index.js"); diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json new file mode 100644 index 000000000000..74c67251ddc7 --- /dev/null +++ b/packages/x-charts-vendor/package.json @@ -0,0 +1,63 @@ +{ + "name": "@mui/x-charts-vendor", + "version": "7.8.0", + "description": "Vendored dependencies for MUI X Charts", + "author": "MUI Team", + "main": "./index.js", + "keywords": [ + "data visualization", + "React", + "d3", + "charting" + ], + "repository": { + "type": "git", + "url": "https://github.com/mui/mui-x" + }, + "license": "MIT AND ISC", + "exports": { + "./package.json": "./package.json", + "./*": { + "types": "./*.d.ts", + "import": "./es/*.js", + "default": "./lib/*.js" + } + }, + "dependencies": { + "@babel/runtime": "^7.24.8", + "d3-color": "^3.1.0", + "d3-delaunay": "^6.0.4", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.2.0", + "d3-time": "^3.1.0", + "@types/d3-color": "^3.1.3", + "@types/d3-delaunay": "^6.0.4", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-scale": "^4.0.8", + "@types/d3-shape": "^3.1.6", + "@types/d3-time": "^3.0.3", + "robust-predicates": "^3.0.2", + "delaunator": "^5.0.1" + }, + "devDependencies": { + "d3-format": "^3.1.0", + "d3-time-format": "^4.1.0", + "d3-path": "^3.0.1", + "d3-array": "^3.1.6", + "@types/d3-format": "^3.0.4", + "@types/d3-time-format": "^4.0.3", + "@types/d3-path": "^3.0.1", + "@types/d3-array": "^3.0.3", + "internmap": "^2.0.3", + "execa": "^9.3.0", + "rimraf": "^5.0.8", + "@babel/plugin-transform-runtime": "^7.24.7" + }, + "publishConfig": { + "provenance": true + }, + "scripts": { + "build": "node ./scripts/build.js" + } +} diff --git a/packages/x-charts-vendor/robust-predicates.d.ts b/packages/x-charts-vendor/robust-predicates.d.ts new file mode 100644 index 000000000000..fcc94a14628c --- /dev/null +++ b/packages/x-charts-vendor/robust-predicates.d.ts @@ -0,0 +1,5 @@ + +// `x-charts-vendor/robust-predicates` (TypeScript) +// +// Export the type definitions for this package: +export * from "robust-predicates"; diff --git a/packages/x-charts-vendor/robust-predicates.js b/packages/x-charts-vendor/robust-predicates.js new file mode 100644 index 000000000000..8bfbb3d6ae38 --- /dev/null +++ b/packages/x-charts-vendor/robust-predicates.js @@ -0,0 +1,7 @@ + +// `x-charts-vendor/robust-predicates` (CommonJS) +// See upstream license: https://github.com/mourner/robust-predicates/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/robust-predicates"); diff --git a/packages/x-charts-vendor/scripts/build.js b/packages/x-charts-vendor/scripts/build.js new file mode 100644 index 000000000000..169e75aee51c --- /dev/null +++ b/packages/x-charts-vendor/scripts/build.js @@ -0,0 +1,148 @@ +/* global __dirname:false */ +/** + * Build d3 vendor libraries from `node_modules`. + * + * **Note - transitive dependencies**: Because pnpm lacks a `nohoist` option, + * if you have a `d3-*` dependency that has a transitive dependency on another + * module (e.g., `d3-interpolate` depends on `d3-color`) you need to add a + * compatible version to `package.json:devDependencies` here to make sure we + * get the library in our `node_modules` and appropriately build it. + */ +const fs = require('fs').promises; +const path = require('path'); + +const { rimraf } = require('rimraf'); + +const vendorPkg = require('../package.json'); +const VENDOR_PKGS = new Set(Object.keys(vendorPkg.dependencies)); + +const { log, error } = console; // eslint-disable-line no-undef + +// Templates. +const getEsmIndex = (pkg) => ` +// \`x-charts-vendor/${pkg.name}\` (ESM) +// See upstream license: ${pkg.repository.url.replace(/\.git$/, '')}/blob/main/LICENSE +// +// Our ESM package uses the underlying installed dependencies of \`node_modules/${pkg.name}\` +export * from "${pkg.name}"; +`; + +const getCjsIndex = (pkg) => ` +// \`x-charts-vendor/${pkg.name}\` (CommonJS) +// See upstream license: ${pkg.repository.url.replace(/\.git$/, '')}/blob/main/LICENSE +// +// Our CommonJS package relies on transpiled vendor files in \`lib-vendor/${pkg.name}\` +module.exports = require("../lib-vendor/${pkg.name}/src/index.js"); +`; + +const getCjsRootIndex = (pkg) => ` +// \`x-charts-vendor/${pkg.name}\` (CommonJS) +// See upstream license: ${pkg.repository.url.replace(/\.git$/, '')}/blob/main/LICENSE +// +// This file only exists for tooling that doesn't work yet with package.json:exports +// by proxying through the CommonJS version. +module.exports = require("./lib/${pkg.name}"); +`; + +const getTypeDefinitionFile = (pkg) => ` +// \`x-charts-vendor/${pkg.name}\` (TypeScript) +// +// Export the type definitions for this package: +export * from "${pkg.name}"; +`; + +// Main. +const main = async () => { + // Lazy ESM imports. + const { execa } = await import('execa'); + + // Get d3-related packages we want to vendor. + const pkgs = (await fs.readdir(path.resolve(__dirname, '../node_modules/'))).filter((name) => + /^(d3-|internmap|delaunator|robust-predicates)/.test(name), + ); + + // Safety check: we assume that **all** are flattened to root level of this + // package, and want to make sure there are no nested dependencies. + for (const pkgName of pkgs) { + const pkgModsPath = path.resolve(__dirname, `../node_modules/git${pkgName}/node_modules`); + const stat = await fs.lstat(pkgModsPath).catch(() => null); + if (stat) { + throw new Error(`Found nested modules: ${pkgModsPath}`); + } + } + + // Clean out and ensure base library paths exist + const EsmBasePath = path.resolve(__dirname, `../es`); + const CjsBasePath = path.resolve(__dirname, `../lib`); + const VendorBasePath = path.resolve(__dirname, `../lib-vendor`); + const baseDirs = [EsmBasePath, CjsBasePath, VendorBasePath]; + const cleanGlobs = [].concat( + baseDirs, + path.resolve(__dirname, '../d3-*'), + path.resolve(__dirname, '../internmap'), + path.resolve(__dirname, '../delaunator'), + path.resolve(__dirname, '../robust-predicates'), + ); + + log('Cleaning old vendor directories.'); + await Promise.all(cleanGlobs.map((glob) => rimraf(glob))); + log('Creating empty vendor directories.'); + await Promise.all(baseDirs.map((libPath) => fs.mkdir(libPath, { recursive: true }))); + + // Transpile. + log('Transpiling vendor sources.'); + await execa( + 'pnpm', + [ + 'babel', + '--config-file', + path.resolve(__dirname, '../.babelrc.js'), + '-d', + path.resolve(__dirname, '../lib-vendor'), + path.resolve(__dirname, '../node_modules'), + ], + { + stdio: 'inherit', + }, + ); + + // Iterate and generate index files. + log('Copying licenses and generating indexes.'); + for (const pkgName of pkgs) { + log(`- ${pkgName}`); + + const pkgBase = path.resolve(__dirname, `../node_modules/${pkgName}`); + const pkgPath = path.join(pkgBase, `package.json`); + const pkg = await fs.readFile(pkgPath).then((buf) => JSON.parse(buf.toString())); + const libVendorPath = path.resolve(__dirname, `../lib-vendor/${pkgName}`); + + // Create library indexes and copy licenses to `lib-vendor. + await Promise.all([ + fs.writeFile(path.join(EsmBasePath, `${pkgName}.js`), getEsmIndex(pkg)), + fs.writeFile(path.join(CjsBasePath, `${pkgName}.js`), getCjsIndex(pkg)), + fs + .copyFile(path.join(pkgBase, 'LICENSE'), path.join(libVendorPath, 'LICENSE')) + .catch((error) => { + // The package has no license file + }), + // Root hack file for non package.json:exports systems + VENDOR_PKGS.has(pkgName) && + fs.writeFile(path.resolve(__dirname, `../${pkgName}.js`), getCjsRootIndex(pkg)), + // Generate TypeScript definitions + VENDOR_PKGS.has(pkgName) && + fs.writeFile(path.resolve(__dirname, `../${pkgName}.d.ts`), getTypeDefinitionFile(pkg)), + ]); + } +}; + +if (require.main === module) { + main() + // eslint-disable-next-line promise/always-return + .then(() => { + log('Build finished.'); + }) + .catch((err) => { + error(err); + process.exit(-1); + }); +} diff --git a/packages/x-charts-vendor/tests/d3-interpolate.test.ts b/packages/x-charts-vendor/tests/d3-interpolate.test.ts new file mode 100644 index 000000000000..ca28b08af8d7 --- /dev/null +++ b/packages/x-charts-vendor/tests/d3-interpolate.test.ts @@ -0,0 +1,19 @@ +import { expect } from 'chai'; + +/* + * This test verifies that these modules and types are exported correctly + */ + +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { + // @ts-expect-error Make sure invalid imports fail: + INVALID_TYPE, + interpolate, + NumberArray, +} from '@mui/x-charts-vendor/d3-interpolate'; + +describe('d3-interpolate', () => { + it('exports valid functions', () => { + expect(interpolate).instanceOf(Function); + }); +}); diff --git a/packages/x-charts-vendor/tests/d3-scale.test.ts b/packages/x-charts-vendor/tests/d3-scale.test.ts new file mode 100644 index 000000000000..d27f29054c4e --- /dev/null +++ b/packages/x-charts-vendor/tests/d3-scale.test.ts @@ -0,0 +1,65 @@ +import { expect } from 'chai'; + +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { + // @ts-expect-error Make sure invalid imports fail: + INVALID_TYPE, + InterpolatorFactory, + NumberValue, + ScaleBand, + ScaleContinuousNumeric, + ScaleDiverging, + ScaleIdentity, + ScaleLinear, + ScaleLogarithmic, + ScaleOrdinal, + ScalePoint, + ScalePower, + ScaleQuantile, + ScaleQuantize, + ScaleRadial, + ScaleSequential, + ScaleSequentialBase, + ScaleSequentialQuantile, + ScaleSymLog, + ScaleThreshold, + ScaleTime, + UnknownReturnType, + scaleBand, + scaleDiverging, + scaleDivergingLog, + scaleDivergingPow, + scaleDivergingSqrt, + scaleDivergingSymlog, + scaleIdentity, + scaleImplicit, + scaleLinear, + scaleLog, + scaleOrdinal, + scalePoint, + scalePow, + scaleQuantile, + scaleQuantize, + scaleRadial, + scaleSequential, + scaleSequentialLog, + scaleSequentialPow, + scaleSequentialQuantile, + scaleSequentialSqrt, + scaleSequentialSymlog, + scaleSqrt, + scaleSymlog, + scaleThreshold, + scaleTime, + scaleUtc, + tickFormat, +} from '@mui/x-charts-vendor/d3-scale'; + +describe('d3-scale', () => { + it('exports valid functions', () => { + expect(scaleLinear).instanceOf(Function); + expect(scaleLog).instanceOf(Function); + expect(scalePow).instanceOf(Function); + expect(scaleSqrt).instanceOf(Function); + }); +}); diff --git a/packages/x-charts-vendor/tsconfig.json b/packages/x-charts-vendor/tsconfig.json new file mode 100644 index 000000000000..9b6eb7748db0 --- /dev/null +++ b/packages/x-charts-vendor/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["mocha", "node"] + }, + "exclude": ["es", "lib", "jest.config.ts"] +} diff --git a/packages/x-charts/.mocharc.js b/packages/x-charts/.mocharc.js deleted file mode 100644 index 8c6c28b43a26..000000000000 --- a/packages/x-charts/.mocharc.js +++ /dev/null @@ -1,34 +0,0 @@ -// We can't import the `.mocharc.js` of the monorepo, otherwise we trigger its `setupBabel`. -module.exports = { - extension: ['js', 'ts', 'tsx'], - ignore: [ - '**/build/**', - '**/node_modules/**', - // Mocha seems to ignore .next anyway (maybe because dotfiles?). - // We're leaving this to make sure. - 'docs/.next/**', - ], - recursive: true, - timeout: (process.env.CIRCLECI === 'true' ? 5 : 2) * 1000, // Circle CI has low-performance CPUs. - reporter: 'dot', - require: [ - require.resolve('../../test/utils/setupBabel'), - // Not strictly necessary, but just to keep the babel plugins in the loop for the tests - // For compiling pure ESM modules that @babel/register can't handle. - // See https://babeljs.io/docs/babel-register#experimental-babel-8-implementation - // Note: @babel/register does not support compiling native Node.js ES modules on the fly, - // since currently there is no stable API for intercepting ES modules loading. - require.resolve('tsx/cjs'), - require.resolve('../../test/utils/setupJSDOM'), - ], - 'watch-ignore': [ - // default - '.git', - // node_modules can be nested with workspaces - '**/node_modules/**', - // Unrelated directories with a large number of files - '**/build/**', - 'docs/.next/**', - ], - spec: ['packages/x-charts{,-pro,-premium}/**/*.test.{js,ts,tsx}'], -}; diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index ce03363251a7..f1ab0b220ce1 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -46,12 +46,8 @@ "@react-spring/rafz": "^9.7.3", "@react-spring/web": "^9.7.3", "clsx": "^2.1.1", - "d3-color": "^3.1.0", - "d3-delaunay": "^6.0.4", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0", - "prop-types": "^15.8.1" + "prop-types": "^15.8.1", + "@mui/x-charts-vendor": "workspace:*" }, "peerDependencies": { "@emotion/react": "^11.9.0", @@ -72,27 +68,10 @@ "@mui/internal-test-utils": "^1.0.5", "@react-spring/core": "^9.7.3", "@react-spring/shared": "^9.7.3", - "@types/d3-color": "^3.1.3", - "@types/d3-delaunay": "^6.0.4", - "@types/d3-interpolate": "^3.0.4", - "@types/d3-scale": "^4.0.8", - "@types/d3-shape": "^3.1.6", "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", "rimraf": "^5.0.9" }, - "exports": { - ".": { - "types": "./index.d.ts", - "import": "./esm/index.js", - "default": "./esm/index.js" - }, - "./*": { - "types": "./*/index.d.ts", - "import": "./esm/*/index.js", - "default": "./esm/*/index.js" - } - }, "engines": { "node": ">=14.0.0" } diff --git a/packages/x-charts/src/BarChart/BarElement.tsx b/packages/x-charts/src/BarChart/BarElement.tsx index 183b4f79ab06..c99ee449de45 100644 --- a/packages/x-charts/src/BarChart/BarElement.tsx +++ b/packages/x-charts/src/BarChart/BarElement.tsx @@ -4,8 +4,8 @@ import composeClasses from '@mui/utils/composeClasses'; import { useSlotProps } from '@mui/base/utils'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import { styled } from '@mui/material/styles'; -import { color as d3Color } from 'd3-color'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; +import { color as d3Color } from '@mui/x-charts-vendor/d3-color'; import { AnimatedProps, animated } from '@react-spring/web'; import { SlotComponentPropsFromProps } from '../internals/SlotComponentPropsFromProps'; import { useInteractionItemProps } from '../hooks/useInteractionItemProps'; diff --git a/packages/x-charts/src/BarChart/formatter.ts b/packages/x-charts/src/BarChart/formatter.ts index 2bc0ce692b15..3fd9f07ae17c 100644 --- a/packages/x-charts/src/BarChart/formatter.ts +++ b/packages/x-charts/src/BarChart/formatter.ts @@ -1,4 +1,4 @@ -import { stack as d3Stack } from 'd3-shape'; +import { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape'; import { getStackingGroups } from '../internals/stackSeries'; import { ChartSeries, diff --git a/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx b/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx index 0aecec2fbbdc..d331e317f945 100644 --- a/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { ScaleSequential } from 'd3-scale'; +import { ScaleSequential } from '@mui/x-charts-vendor/d3-scale'; import { useTheme } from '@mui/material/styles'; import ChartsContinuousGradient from '../internals/components/ChartsAxesGradients/ChartsContinuousGradient'; import { AxisDefaultized, ContinuousScaleName } from '../models/axis'; diff --git a/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx b/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx index b194fae4b595..d0b0f161e60c 100644 --- a/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx +++ b/packages/x-charts/src/ChartsVoronoiHandler/ChartsVoronoiHandler.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { Delaunay } from 'd3-delaunay'; +import { Delaunay } from '@mui/x-charts-vendor/d3-delaunay'; import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { InteractionContext } from '../context/InteractionProvider'; import { useCartesianContext } from '../context/CartesianProvider'; diff --git a/packages/x-charts/src/Gauge/GaugeReferenceArc.tsx b/packages/x-charts/src/Gauge/GaugeReferenceArc.tsx index 55a0308362cc..ee5a9ec76cf4 100644 --- a/packages/x-charts/src/Gauge/GaugeReferenceArc.tsx +++ b/packages/x-charts/src/Gauge/GaugeReferenceArc.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { arc as d3Arc } from 'd3-shape'; +import { arc as d3Arc } from '@mui/x-charts-vendor/d3-shape'; import { styled } from '@mui/material/styles'; import { useGaugeState } from './GaugeProvider'; diff --git a/packages/x-charts/src/Gauge/GaugeValueArc.tsx b/packages/x-charts/src/Gauge/GaugeValueArc.tsx index 3c8bb81a5c6f..a40901048217 100644 --- a/packages/x-charts/src/Gauge/GaugeValueArc.tsx +++ b/packages/x-charts/src/Gauge/GaugeValueArc.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { arc as d3Arc } from 'd3-shape'; +import { arc as d3Arc } from '@mui/x-charts-vendor/d3-shape'; import { styled } from '@mui/material/styles'; import { useGaugeState } from './GaugeProvider'; diff --git a/packages/x-charts/src/LineChart/AnimatedArea.tsx b/packages/x-charts/src/LineChart/AnimatedArea.tsx index 88bd4c71b96e..adebfc0ac866 100644 --- a/packages/x-charts/src/LineChart/AnimatedArea.tsx +++ b/packages/x-charts/src/LineChart/AnimatedArea.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { styled } from '@mui/material/styles'; -import { color as d3Color } from 'd3-color'; import { animated, useSpring } from '@react-spring/web'; +import { color as d3Color } from '@mui/x-charts-vendor/d3-color'; import { useAnimatedPath } from '../internals/useAnimatedPath'; import { cleanId } from '../internals/cleanId'; import type { AreaElementOwnerState } from './AreaElement'; diff --git a/packages/x-charts/src/LineChart/AnimatedLine.tsx b/packages/x-charts/src/LineChart/AnimatedLine.tsx index d8528df48329..968f44652d01 100644 --- a/packages/x-charts/src/LineChart/AnimatedLine.tsx +++ b/packages/x-charts/src/LineChart/AnimatedLine.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { animated, useSpring } from '@react-spring/web'; -import { color as d3Color } from 'd3-color'; +import { color as d3Color } from '@mui/x-charts-vendor/d3-color'; import { styled } from '@mui/material/styles'; import { useAnimatedPath } from '../internals/useAnimatedPath'; import { cleanId } from '../internals/cleanId'; diff --git a/packages/x-charts/src/LineChart/AreaPlot.tsx b/packages/x-charts/src/LineChart/AreaPlot.tsx index 4c9c4e177314..79412e5211e6 100644 --- a/packages/x-charts/src/LineChart/AreaPlot.tsx +++ b/packages/x-charts/src/LineChart/AreaPlot.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { area as d3Area } from 'd3-shape'; +import { area as d3Area } from '@mui/x-charts-vendor/d3-shape'; import { useCartesianContext } from '../context/CartesianProvider'; import { AreaElement, diff --git a/packages/x-charts/src/LineChart/LinePlot.tsx b/packages/x-charts/src/LineChart/LinePlot.tsx index f180e8c49db1..96603b232d98 100644 --- a/packages/x-charts/src/LineChart/LinePlot.tsx +++ b/packages/x-charts/src/LineChart/LinePlot.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { line as d3Line } from 'd3-shape'; +import { line as d3Line } from '@mui/x-charts-vendor/d3-shape'; import { useCartesianContext } from '../context/CartesianProvider'; import { LineElement, diff --git a/packages/x-charts/src/LineChart/MarkElement.tsx b/packages/x-charts/src/LineChart/MarkElement.tsx index f9420ba24bd5..137f44f252b7 100644 --- a/packages/x-charts/src/LineChart/MarkElement.tsx +++ b/packages/x-charts/src/LineChart/MarkElement.tsx @@ -4,7 +4,7 @@ import composeClasses from '@mui/utils/composeClasses'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import { styled } from '@mui/material/styles'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; -import { symbol as d3Symbol, symbolsFill as d3SymbolsFill } from 'd3-shape'; +import { symbol as d3Symbol, symbolsFill as d3SymbolsFill } from '@mui/x-charts-vendor/d3-shape'; import { animated, to, useSpring } from '@react-spring/web'; import { getSymbol } from '../internals/getSymbol'; import { InteractionContext } from '../context/InteractionProvider'; diff --git a/packages/x-charts/src/LineChart/formatter.ts b/packages/x-charts/src/LineChart/formatter.ts index 168eb29c0a8d..32196d2e47e1 100644 --- a/packages/x-charts/src/LineChart/formatter.ts +++ b/packages/x-charts/src/LineChart/formatter.ts @@ -1,4 +1,4 @@ -import { stack as d3Stack } from 'd3-shape'; +import { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape'; import { getStackingGroups } from '../internals/stackSeries'; import { ChartSeries, diff --git a/packages/x-charts/src/PieChart/PieArc.tsx b/packages/x-charts/src/PieChart/PieArc.tsx index 1296776e3323..a7c8875b82a4 100644 --- a/packages/x-charts/src/PieChart/PieArc.tsx +++ b/packages/x-charts/src/PieChart/PieArc.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { arc as d3Arc } from 'd3-shape'; +import { arc as d3Arc } from '@mui/x-charts-vendor/d3-shape'; import { animated, SpringValue, to } from '@react-spring/web'; import composeClasses from '@mui/utils/composeClasses'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; diff --git a/packages/x-charts/src/PieChart/PieArcLabel.tsx b/packages/x-charts/src/PieChart/PieArcLabel.tsx index 90164f32dbc2..80c94367618b 100644 --- a/packages/x-charts/src/PieChart/PieArcLabel.tsx +++ b/packages/x-charts/src/PieChart/PieArcLabel.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { animated, SpringValue, to } from '@react-spring/web'; -import { arc as d3Arc } from 'd3-shape'; +import { arc as d3Arc } from '@mui/x-charts-vendor/d3-shape'; import composeClasses from '@mui/utils/composeClasses'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import { styled } from '@mui/material/styles'; diff --git a/packages/x-charts/src/PieChart/formatter.ts b/packages/x-charts/src/PieChart/formatter.ts index 2364cc16a0c2..5e7467c56b0c 100644 --- a/packages/x-charts/src/PieChart/formatter.ts +++ b/packages/x-charts/src/PieChart/formatter.ts @@ -1,4 +1,4 @@ -import { pie as d3Pie } from 'd3-shape'; +import { pie as d3Pie } from '@mui/x-charts-vendor/d3-shape'; import { ChartSeriesDefaultized, Formatter } from '../models/seriesType/config'; import { ChartsPieSorting, PieValueType } from '../models/seriesType/pie'; import { SeriesId } from '../models/seriesType/common'; diff --git a/packages/x-charts/src/context/CartesianProvider/computeValue.ts b/packages/x-charts/src/context/CartesianProvider/computeValue.ts index fd8505378db6..189355e684f2 100644 --- a/packages/x-charts/src/context/CartesianProvider/computeValue.ts +++ b/packages/x-charts/src/context/CartesianProvider/computeValue.ts @@ -1,4 +1,4 @@ -import { scaleBand, scalePoint, scaleTime } from 'd3-scale'; +import { scaleBand, scalePoint, scaleTime } from '@mui/x-charts-vendor/d3-scale'; import { AxisConfig, ScaleName } from '../../models'; import { ChartsXAxisProps, diff --git a/packages/x-charts/src/internals/colorScale.ts b/packages/x-charts/src/internals/colorScale.ts index a0c2807e9dfd..be5792fceb85 100644 --- a/packages/x-charts/src/internals/colorScale.ts +++ b/packages/x-charts/src/internals/colorScale.ts @@ -1,4 +1,9 @@ -import { scaleOrdinal, scaleThreshold, scaleSequential, ScaleOrdinal } from 'd3-scale'; +import { + scaleOrdinal, + scaleThreshold, + scaleSequential, + ScaleOrdinal, +} from '@mui/x-charts-vendor/d3-scale'; import { ContinuousColorConfig, PiecewiseColorConfig, diff --git a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx index 271229c0d5a0..f78518a478c5 100644 --- a/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx +++ b/packages/x-charts/src/internals/components/ChartsAxesGradients/ChartsContinuousGradient.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { interpolateDate, interpolateNumber } from 'd3-interpolate'; +import { interpolateDate, interpolateNumber } from '@mui/x-charts-vendor/d3-interpolate'; import { ContinuousColorConfig } from '../../../models/colorMapping'; const PX_PRECISION = 10; diff --git a/packages/x-charts/src/internals/getCurve.ts b/packages/x-charts/src/internals/getCurve.ts index f07de1b0e561..73691782fb75 100644 --- a/packages/x-charts/src/internals/getCurve.ts +++ b/packages/x-charts/src/internals/getCurve.ts @@ -7,7 +7,7 @@ import { curveStep, curveStepAfter, curveStepBefore, -} from 'd3-shape'; +} from '@mui/x-charts-vendor/d3-shape'; import { CurveType } from '../models/seriesType/line'; export default function getCurveFactory(curveType?: CurveType) { diff --git a/packages/x-charts/src/internals/getScale.ts b/packages/x-charts/src/internals/getScale.ts index 68ab1d5e4fbc..c3d70478cf77 100644 --- a/packages/x-charts/src/internals/getScale.ts +++ b/packages/x-charts/src/internals/getScale.ts @@ -1,4 +1,11 @@ -import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from 'd3-scale'; +import { + scaleLog, + scalePow, + scaleSqrt, + scaleTime, + scaleUtc, + scaleLinear, +} from '@mui/x-charts-vendor/d3-scale'; import { ContinuousScaleName, D3ContinuousScale } from '../models/axis'; export function getScale( diff --git a/packages/x-charts/src/internals/isBandScale.ts b/packages/x-charts/src/internals/isBandScale.ts index 0479662fd607..274598d6eeb5 100644 --- a/packages/x-charts/src/internals/isBandScale.ts +++ b/packages/x-charts/src/internals/isBandScale.ts @@ -1,4 +1,4 @@ -import type { ScaleBand, ScalePoint } from 'd3-scale'; +import type { ScaleBand, ScalePoint } from '@mui/x-charts-vendor/d3-scale'; import { D3Scale } from '../models/axis'; export function isBandScale( diff --git a/packages/x-charts/src/internals/stackSeries.ts b/packages/x-charts/src/internals/stackSeries.ts index 84a49749808d..597975768740 100644 --- a/packages/x-charts/src/internals/stackSeries.ts +++ b/packages/x-charts/src/internals/stackSeries.ts @@ -11,7 +11,7 @@ import { stackOffsetSilhouette as d3StackOffsetSilhouette, stackOffsetWiggle as d3StackOffsetWiggle, Series, -} from 'd3-shape'; +} from '@mui/x-charts-vendor/d3-shape'; import type { BarSeriesType, LineSeriesType } from '../models/seriesType'; import type { StackOffsetType, StackOrderType } from '../models/stacking'; import { SeriesId } from '../models/seriesType/common'; diff --git a/packages/x-charts/src/internals/useAnimatedPath.ts b/packages/x-charts/src/internals/useAnimatedPath.ts index 034302c08f7b..9f29447fe138 100644 --- a/packages/x-charts/src/internals/useAnimatedPath.ts +++ b/packages/x-charts/src/internals/useAnimatedPath.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { interpolateString } from 'd3-interpolate'; +import { interpolateString } from '@mui/x-charts-vendor/d3-interpolate'; import { useSpring, to } from '@react-spring/web'; function usePrevious(value: T) { diff --git a/packages/x-charts/src/models/axis.ts b/packages/x-charts/src/models/axis.ts index 53e6175f58f5..28d946f43b3c 100644 --- a/packages/x-charts/src/models/axis.ts +++ b/packages/x-charts/src/models/axis.ts @@ -8,7 +8,7 @@ import type { ScaleOrdinal, ScaleSequential, ScaleThreshold, -} from 'd3-scale'; +} from '@mui/x-charts-vendor/d3-scale'; import { ChartsAxisClasses } from '../ChartsAxis/axisClasses'; import type { TickParams } from '../hooks/useTicks'; import { ChartsTextProps } from '../ChartsText'; diff --git a/packages/x-charts/src/models/seriesType/pie.ts b/packages/x-charts/src/models/seriesType/pie.ts index 5dc86e2bf042..bf87340066cb 100644 --- a/packages/x-charts/src/models/seriesType/pie.ts +++ b/packages/x-charts/src/models/seriesType/pie.ts @@ -1,4 +1,4 @@ -import { PieArcDatum as D3PieArcDatum } from 'd3-shape'; +import { PieArcDatum as D3PieArcDatum } from '@mui/x-charts-vendor/d3-shape'; import { DefaultizedProps } from '../helpers'; import { CommonDefaultizedProps, CommonSeriesType, SeriesId } from './common'; diff --git a/packages/x-charts/src/models/z-axis.ts b/packages/x-charts/src/models/z-axis.ts index 194622049534..15ce09b5cc38 100644 --- a/packages/x-charts/src/models/z-axis.ts +++ b/packages/x-charts/src/models/z-axis.ts @@ -1,4 +1,4 @@ -import type { ScaleOrdinal, ScaleSequential, ScaleThreshold } from 'd3-scale'; +import type { ScaleOrdinal, ScaleSequential, ScaleThreshold } from '@mui/x-charts-vendor/d3-scale'; import { ContinuousColorConfig, OrdinalColorConfig, PiecewiseColorConfig } from './colorMapping'; export interface ZAxisConfig { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 213ef118822d..2c337159184e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -455,6 +455,9 @@ importers: '@mui/x-charts': specifier: workspace:* version: link:../packages/x-charts/build + '@mui/x-charts-vendor': + specifier: workspace:* + version: link:../packages/x-charts-vendor '@mui/x-data-grid': specifier: workspace:* version: link:../packages/x-data-grid/build @@ -723,6 +726,9 @@ importers: '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/x-charts-vendor': + specifier: workspace:* + version: link:../x-charts-vendor '@react-spring/rafz': specifier: ^9.7.3 version: 9.7.3 @@ -732,21 +738,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - d3-color: - specifier: ^3.1.0 - version: 3.1.0 - d3-delaunay: - specifier: ^6.0.4 - version: 6.0.4 - d3-interpolate: - specifier: ^3.0.1 - version: 3.0.1 - d3-scale: - specifier: ^4.0.2 - version: 4.0.2 - d3-shape: - specifier: ^3.2.0 - version: 3.2.0 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -766,21 +757,6 @@ importers: '@react-spring/shared': specifier: ^9.7.3 version: 9.7.3(react@18.3.1) - '@types/d3-color': - specifier: ^3.1.3 - version: 3.1.3 - '@types/d3-delaunay': - specifier: ^6.0.4 - version: 6.0.4 - '@types/d3-interpolate': - specifier: ^3.0.4 - version: 3.0.4 - '@types/d3-scale': - specifier: ^4.0.8 - version: 4.0.8 - '@types/d3-shape': - specifier: ^3.1.6 - version: 3.1.6 '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -818,6 +794,9 @@ importers: '@mui/x-charts': specifier: workspace:* version: link:../x-charts/build + '@mui/x-charts-vendor': + specifier: workspace:* + version: link:../x-charts-vendor '@mui/x-license': specifier: workspace:* version: link:../x-license/build @@ -830,21 +809,6 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - d3-color: - specifier: ^3.1.0 - version: 3.1.0 - d3-delaunay: - specifier: ^6.0.4 - version: 6.0.4 - d3-interpolate: - specifier: ^3.0.1 - version: 3.0.1 - d3-scale: - specifier: ^4.0.2 - version: 4.0.2 - d3-shape: - specifier: ^3.2.0 - version: 3.2.0 prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -861,6 +825,22 @@ importers: '@react-spring/shared': specifier: ^9.7.3 version: 9.7.3(react@18.3.1) + '@types/prop-types': + specifier: ^15.7.12 + version: 15.7.12 + csstype: + specifier: ^3.1.3 + version: 3.1.3 + rimraf: + specifier: ^5.0.9 + version: 5.0.9 + publishDirectory: build + + packages/x-charts-vendor: + dependencies: + '@babel/runtime': + specifier: ^7.24.8 + version: 7.24.8 '@types/d3-color': specifier: ^3.1.3 version: 3.1.3 @@ -876,16 +856,70 @@ importers: '@types/d3-shape': specifier: ^3.1.6 version: 3.1.6 - '@types/prop-types': - specifier: ^15.7.12 - version: 15.7.12 - csstype: - specifier: ^3.1.3 - version: 3.1.3 + '@types/d3-time': + specifier: ^3.0.3 + version: 3.0.3 + d3-color: + specifier: ^3.1.0 + version: 3.1.0 + d3-delaunay: + specifier: ^6.0.4 + version: 6.0.4 + d3-interpolate: + specifier: ^3.0.1 + version: 3.0.1 + d3-scale: + specifier: ^4.0.2 + version: 4.0.2 + d3-shape: + specifier: ^3.2.0 + version: 3.2.0 + d3-time: + specifier: ^3.1.0 + version: 3.1.0 + delaunator: + specifier: ^5.0.1 + version: 5.0.1 + robust-predicates: + specifier: ^3.0.2 + version: 3.0.2 + devDependencies: + '@babel/plugin-transform-runtime': + specifier: ^7.24.7 + version: 7.24.7(@babel/core@7.24.9) + '@types/d3-array': + specifier: ^3.0.3 + version: 3.2.1 + '@types/d3-format': + specifier: ^3.0.4 + version: 3.0.4 + '@types/d3-path': + specifier: ^3.0.1 + version: 3.1.0 + '@types/d3-time-format': + specifier: ^4.0.3 + version: 4.0.3 + d3-array: + specifier: ^3.1.6 + version: 3.2.4 + d3-format: + specifier: ^3.1.0 + version: 3.1.0 + d3-path: + specifier: ^3.0.1 + version: 3.1.0 + d3-time-format: + specifier: ^4.1.0 + version: 4.1.0 + execa: + specifier: ^9.3.0 + version: 9.3.0 + internmap: + specifier: ^2.0.3 + version: 2.0.3 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.8 version: 5.0.9 - publishDirectory: build packages/x-codemod: dependencies: @@ -1456,6 +1490,15 @@ importers: '@mui/material': specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/x-charts': + specifier: workspace:* + version: link:../packages/x-charts/build + '@mui/x-charts-pro': + specifier: workspace:* + version: link:../packages/x-charts-pro/build + '@mui/x-charts-vendor': + specifier: workspace:* + version: link:../packages/x-charts-vendor '@mui/x-data-grid': specifier: workspace:* version: link:../packages/x-data-grid/build @@ -3618,12 +3661,18 @@ packages: '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + '@types/d3-color@3.1.3': resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} '@types/d3-delaunay@6.0.4': resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + '@types/d3-interpolate@3.0.4': resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} @@ -3639,6 +3688,9 @@ packages: '@types/d3-shape@3.1.6': resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + '@types/d3-time@3.0.3': resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} @@ -12083,10 +12135,14 @@ snapshots: dependencies: '@types/node': 18.19.42 + '@types/d3-array@3.2.1': {} + '@types/d3-color@3.1.3': {} '@types/d3-delaunay@6.0.4': {} + '@types/d3-format@3.0.4': {} + '@types/d3-interpolate@3.0.4': dependencies: '@types/d3-color': 3.1.3 @@ -12103,6 +12159,8 @@ snapshots: dependencies: '@types/d3-path': 3.1.0 + '@types/d3-time-format@4.0.3': {} + '@types/d3-time@3.0.3': {} '@types/doctrine@0.0.9': {} diff --git a/test/package.json b/test/package.json index 4529dc22e245..3c515b519884 100644 --- a/test/package.json +++ b/test/package.json @@ -14,6 +14,9 @@ "@mui/x-data-grid-pro": "workspace:*", "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", + "@mui/x-charts": "workspace:*", + "@mui/x-charts-pro": "workspace:*", + "@mui/x-charts-vendor": "workspace:*", "@mui/x-license": "workspace:*", "@playwright/test": "^1.44.1", "@react-spring/web": "^9.7.3", diff --git a/tsconfig.json b/tsconfig.json index 6a9b26ef2fdf..f0ae11e4e147 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,6 +25,8 @@ "@mui/x-charts/*": ["./packages/x-charts/src/*"], "@mui/x-charts-pro": ["./packages/x-charts-pro/src"], "@mui/x-charts-pro/*": ["./packages/x-charts-pro/src/*"], + "@mui/x-charts-vendor": ["./packages/x-charts-vendor"], + "@mui/x-charts-vendor/*": ["./packages/x-charts-vendor/*"], "@mui/x-tree-view": ["./packages/x-tree-view/src"], "@mui/x-tree-view/*": ["./packages/x-tree-view/src/*"], "@mui/x-tree-view-pro": ["./packages/x-tree-view-pro/src"], diff --git a/webpackBaseConfig.js b/webpackBaseConfig.js index 22dddfcfed4f..2ada3fe5f14a 100644 --- a/webpackBaseConfig.js +++ b/webpackBaseConfig.js @@ -16,6 +16,7 @@ module.exports = { '@mui/x-date-pickers-pro': path.resolve(__dirname, './packages/x-date-pickers-pro/src'), '@mui/x-charts': path.resolve(__dirname, './packages/x-charts/src'), '@mui/x-charts-pro': path.resolve(__dirname, './packages/x-charts-pro/src'), + '@mui/x-charts-vendor': path.resolve(__dirname, './packages/x-charts-vendor'), '@mui/x-tree-view': path.resolve(__dirname, './packages/x-tree-view/src'), '@mui/x-tree-view-pro': path.resolve(__dirname, './packages/x-tree-view-pro/src'), '@mui/x-license': path.resolve(__dirname, './packages/x-license/src'), From 4df13731e007c0504374da6007b35172ab030837 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Tue, 30 Jul 2024 01:26:43 +0200 Subject: [PATCH 687/912] [DataGrid] Fix crash when updating columns immediately after scrolling (#13781) --- .../virtualization/useGridVirtualScroller.tsx | 2 + .../src/tests/columns.DataGrid.test.tsx | 44 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx index 7d1669e6e0b7..be589c077003 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx @@ -278,6 +278,8 @@ export const useGridVirtualScroller = () => { const forceUpdateRenderContext = () => { const inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns); const nextRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache); + // Reset the frozen context when the render context changes, see the illustration in https://github.com/mui/mui-x/pull/12353 + frozenContext.current = undefined; updateRenderContext(nextRenderContext); }; diff --git a/packages/x-data-grid/src/tests/columns.DataGrid.test.tsx b/packages/x-data-grid/src/tests/columns.DataGrid.test.tsx index 528bb11fc88b..652d3e9bf153 100644 --- a/packages/x-data-grid/src/tests/columns.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/columns.DataGrid.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; -import { createRenderer } from '@mui/internal-test-utils'; -import { DataGrid, DataGridProps, GridRowsProp, GridColDef } from '@mui/x-data-grid'; +import { createRenderer, fireEvent, screen } from '@mui/internal-test-utils'; +import { DataGrid, DataGridProps, GridRowsProp, GridColDef, gridClasses } from '@mui/x-data-grid'; import { getCell, getColumnHeaderCell, getColumnHeadersTextContent } from 'test/utils/helperFn'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -121,4 +121,44 @@ describe(' - Columns', () => { // should not override valueFormatter with the default numeric one expect(getCell(0, 0).textContent).to.equal('formatted: 1'); }); + + // https://github.com/mui/mui-x/issues/13719 + it('should not crash when updating columns immediately after scrolling', function test() { + if (isJSDOM) { + this.skip(); // Needs layout + } + + const data = [ + { id: 1, value: 'A' }, + { id: 2, value: 'B' }, + { id: 3, value: 'C' }, + { id: 4, value: 'D' }, + { id: 5, value: 'E' }, + { id: 6, value: 'E' }, + { id: 7, value: 'F' }, + { id: 8, value: 'G' }, + { id: 9, value: 'H' }, + ]; + + function DynamicVirtualizationRange() { + const [cols, setCols] = React.useState([{ field: 'id' }, { field: 'value' }]); + + return ( +
    + +
    + +
    +
    + ); + } + + render(); + + const virtualScroller = document.querySelector(`.${gridClasses.virtualScroller}`)!; + virtualScroller.scrollTop = 1_000; + virtualScroller.dispatchEvent(new Event('scroll')); + + fireEvent.click(screen.getByText('Update columns')); + }); }); From 0dccae5e86d4bfdffe9067e3f21aee253a158ab9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 12:19:50 +0300 Subject: [PATCH 688/912] Bump @types/eslint to ^8.56.11 (#14001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../eslint-plugin-material-ui/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index 1e904f52567b..c5f013fb9f82 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -5,7 +5,7 @@ "description": "Custom eslint rules for MUI X.", "main": "src/index.js", "devDependencies": { - "@types/eslint": "^8.56.10", + "@types/eslint": "^8.56.11", "@typescript-eslint/utils": "^7.16.1", "@typescript-eslint/parser": "^7.16.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c337159184e..9359bcb66690 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: version: 10.4.3(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) + version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) eslint-plugin-react: specifier: ^7.34.4 version: 7.34.4(eslint@8.57.0) @@ -694,8 +694,8 @@ importers: packages/eslint-plugin-material-ui: devDependencies: '@types/eslint': - specifier: ^8.56.10 - version: 8.56.10 + specifier: ^8.56.11 + version: 8.56.11 '@typescript-eslint/parser': specifier: ^7.16.1 version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) @@ -3700,8 +3700,8 @@ packages: '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@8.56.10': - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + '@types/eslint@8.56.11': + resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -12167,10 +12167,10 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 8.56.10 + '@types/eslint': 8.56.11 '@types/estree': 1.0.5 - '@types/eslint@8.56.10': + '@types/eslint@8.56.11': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -14335,14 +14335,14 @@ snapshots: globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-prettier@5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): dependencies: eslint: 8.57.0 prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: - '@types/eslint': 8.56.10 + '@types/eslint': 8.56.11 eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-plugin-react-compiler@0.0.0-experimental-51a85ea-20240601(eslint@8.57.0): From 6b674b81ffeb90135bb2efba6c11af143516c1c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:45:36 +0300 Subject: [PATCH 689/912] Bump react-spring to ^9.7.4 (#14007) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/x-charts-pro/package.json | 8 +-- packages/x-charts/package.json | 8 +-- pnpm-lock.yaml | 97 +++++++++++++++--------------- test/package.json | 2 +- 5 files changed, 59 insertions(+), 58 deletions(-) diff --git a/docs/package.json b/docs/package.json index 24bee9f72af5..441bcc7dabde 100644 --- a/docs/package.json +++ b/docs/package.json @@ -46,7 +46,7 @@ "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", "@mui/x-tree-view": "workspace:*", - "@react-spring/web": "^9.7.3", + "@react-spring/web": "^9.7.4", "@tanstack/query-core": "^5.50.1", "ast-types": "^0.14.2", "autoprefixer": "^10.4.19", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index fece5fb5bbe3..c64af366bdf4 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -47,8 +47,8 @@ "@mui/x-charts": "workspace:*", "@mui/x-license": "workspace:*", "@mui/x-charts-vendor": "workspace:*", - "@react-spring/rafz": "^9.7.3", - "@react-spring/web": "^9.7.3", + "@react-spring/rafz": "^9.7.4", + "@react-spring/web": "^9.7.4", "clsx": "^2.1.1", "prop-types": "^15.8.1" }, @@ -68,8 +68,8 @@ } }, "devDependencies": { - "@react-spring/core": "^9.7.3", - "@react-spring/shared": "^9.7.3", + "@react-spring/core": "^9.7.4", + "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", "rimraf": "^5.0.9" diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index f1ab0b220ce1..b72cf72cf635 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -43,8 +43,8 @@ "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", - "@react-spring/rafz": "^9.7.3", - "@react-spring/web": "^9.7.3", + "@react-spring/rafz": "^9.7.4", + "@react-spring/web": "^9.7.4", "clsx": "^2.1.1", "prop-types": "^15.8.1", "@mui/x-charts-vendor": "workspace:*" @@ -66,8 +66,8 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", - "@react-spring/core": "^9.7.3", - "@react-spring/shared": "^9.7.3", + "@react-spring/core": "^9.7.4", + "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", "rimraf": "^5.0.9" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9359bcb66690..47bee90f6dc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -480,8 +480,8 @@ importers: specifier: workspace:* version: link:../packages/x-tree-view/build '@react-spring/web': - specifier: ^9.7.3 - version: 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/query-core': specifier: ^5.50.1 version: 5.50.1 @@ -730,11 +730,11 @@ importers: specifier: workspace:* version: link:../x-charts-vendor '@react-spring/rafz': - specifier: ^9.7.3 - version: 9.7.3 + specifier: ^9.7.4 + version: 9.7.4 '@react-spring/web': - specifier: ^9.7.3 - version: 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -752,11 +752,11 @@ importers: specifier: ^1.0.5 version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': - specifier: ^9.7.3 - version: 9.7.3(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react@18.3.1) '@react-spring/shared': - specifier: ^9.7.3 - version: 9.7.3(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -801,11 +801,11 @@ importers: specifier: workspace:* version: link:../x-license/build '@react-spring/rafz': - specifier: ^9.7.3 - version: 9.7.3 + specifier: ^9.7.4 + version: 9.7.4 '@react-spring/web': - specifier: ^9.7.3 - version: 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -820,11 +820,11 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@react-spring/core': - specifier: ^9.7.3 - version: 9.7.3(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react@18.3.1) '@react-spring/shared': - specifier: ^9.7.3 - version: 9.7.3(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1518,8 +1518,8 @@ importers: specifier: ^1.44.1 version: 1.44.1 '@react-spring/web': - specifier: ^9.7.3 - version: 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^9.7.4 + version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/chai': specifier: ^4.3.16 version: 4.3.16 @@ -3461,29 +3461,29 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@react-spring/animated@9.7.3': - resolution: {integrity: sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==} + '@react-spring/animated@9.7.4': + resolution: {integrity: sha512-7As+8Pty2QlemJ9O5ecsuPKjmO0NKvmVkRR1n6mEotFgWar8FKuQt2xgxz3RTgxcccghpx1YdS1FCdElQNexmQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@react-spring/core@9.7.3': - resolution: {integrity: sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==} + '@react-spring/core@9.7.4': + resolution: {integrity: sha512-GzjA44niEJBFUe9jN3zubRDDDP2E4tBlhNlSIkTChiNf9p4ZQlgXBg50qbXfSXHQPHak/ExYxwhipKVsQ/sUTw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@react-spring/rafz@9.7.3': - resolution: {integrity: sha512-9vzW1zJPcC4nS3aCV+GgcsK/WLaB520Iyvm55ARHfM5AuyBqycjvh1wbmWmgCyJuX4VPoWigzemq1CaaeRSHhQ==} + '@react-spring/rafz@9.7.4': + resolution: {integrity: sha512-mqDI6rW0Ca8IdryOMiXRhMtVGiEGLIO89vIOyFQXRIwwIMX30HLya24g9z4olDvFyeDW3+kibiKwtZnA4xhldA==} - '@react-spring/shared@9.7.3': - resolution: {integrity: sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==} + '@react-spring/shared@9.7.4': + resolution: {integrity: sha512-bEPI7cQp94dOtCFSEYpxvLxj0+xQfB5r9Ru1h8OMycsIq7zFZon1G0sHrBLaLQIWeMCllc4tVDYRTLIRv70C8w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@react-spring/types@9.7.3': - resolution: {integrity: sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==} + '@react-spring/types@9.7.4': + resolution: {integrity: sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==} - '@react-spring/web@9.7.3': - resolution: {integrity: sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==} + '@react-spring/web@9.7.4': + resolution: {integrity: sha512-UMvCZp7I5HCVIleSa4BwbNxynqvj+mJjG2m20VO2yPoi2pnCYANy58flvz9v/YcXTAvsmL655FV3pm5fbr6akA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -11872,34 +11872,35 @@ snapshots: '@popperjs/core@2.11.8': {} - '@react-spring/animated@9.7.3(react@18.3.1)': + '@react-spring/animated@9.7.4(react@18.3.1)': dependencies: - '@react-spring/shared': 9.7.3(react@18.3.1) - '@react-spring/types': 9.7.3 + '@react-spring/shared': 9.7.4(react@18.3.1) + '@react-spring/types': 9.7.4 react: 18.3.1 - '@react-spring/core@9.7.3(react@18.3.1)': + '@react-spring/core@9.7.4(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.3.1) - '@react-spring/shared': 9.7.3(react@18.3.1) - '@react-spring/types': 9.7.3 + '@react-spring/animated': 9.7.4(react@18.3.1) + '@react-spring/shared': 9.7.4(react@18.3.1) + '@react-spring/types': 9.7.4 react: 18.3.1 - '@react-spring/rafz@9.7.3': {} + '@react-spring/rafz@9.7.4': {} - '@react-spring/shared@9.7.3(react@18.3.1)': + '@react-spring/shared@9.7.4(react@18.3.1)': dependencies: - '@react-spring/types': 9.7.3 + '@react-spring/rafz': 9.7.4 + '@react-spring/types': 9.7.4 react: 18.3.1 - '@react-spring/types@9.7.3': {} + '@react-spring/types@9.7.4': {} - '@react-spring/web@9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@react-spring/web@9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@react-spring/animated': 9.7.3(react@18.3.1) - '@react-spring/core': 9.7.3(react@18.3.1) - '@react-spring/shared': 9.7.3(react@18.3.1) - '@react-spring/types': 9.7.3 + '@react-spring/animated': 9.7.4(react@18.3.1) + '@react-spring/core': 9.7.4(react@18.3.1) + '@react-spring/shared': 9.7.4(react@18.3.1) + '@react-spring/types': 9.7.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) diff --git a/test/package.json b/test/package.json index 3c515b519884..fe2afcac7890 100644 --- a/test/package.json +++ b/test/package.json @@ -19,7 +19,7 @@ "@mui/x-charts-vendor": "workspace:*", "@mui/x-license": "workspace:*", "@playwright/test": "^1.44.1", - "@react-spring/web": "^9.7.3", + "@react-spring/web": "^9.7.4", "@types/chai": "^4.3.16", "@types/karma": "^6.3.8", "@types/moment-jalaali": "^0.7.9", From 22e754cd24588618fd63181356046a367027de7f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:48:57 +0300 Subject: [PATCH 690/912] Bump babel (#14009) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 8 +- package.json | 12 +- packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 6 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 1306 ++++++++++--------- test/package.json | 2 +- 18 files changed, 688 insertions(+), 672 deletions(-) diff --git a/docs/package.json b/docs/package.json index 441bcc7dabde..625be5e1469d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -19,9 +19,9 @@ "populate:demos": "tsx scripts/populatePickersDemos" }, "dependencies": { - "@babel/core": "^7.24.9", - "@babel/runtime": "^7.24.8", - "@babel/runtime-corejs2": "^7.24.8", + "@babel/core": "^7.25.2", + "@babel/runtime": "^7.25.0", + "@babel/runtime-corejs2": "^7.25.0", "@docsearch/react": "^3.6.1", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.0", @@ -101,7 +101,7 @@ "webpack-bundle-analyzer": "^4.10.2" }, "devDependencies": { - "@babel/plugin-transform-react-constant-elements": "^7.24.7", + "@babel/plugin-transform-react-constant-elements": "^7.25.1", "@babel/preset-typescript": "^7.24.7", "@mui/internal-docs-utils": "^1.0.8", "@mui/internal-scripts": "^1.0.13", diff --git a/package.json b/package.json index f434c17a2215..aafbd3039c33 100644 --- a/package.json +++ b/package.json @@ -71,20 +71,20 @@ "@actions/github": "^6.0.0", "@argos-ci/core": "^2.4.0", "@babel/cli": "^7.24.8", - "@babel/core": "^7.24.9", - "@babel/node": "^7.24.8", + "@babel/core": "^7.25.2", + "@babel/node": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-constant-elements": "^7.24.7", + "@babel/plugin-transform-react-constant-elements": "^7.25.1", "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-env": "^7.24.8", + "@babel/preset-env": "^7.25.2", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "@babel/register": "^7.24.6", - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.9", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index c64af366bdf4..2c05e1572a66 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -40,7 +40,7 @@ "directory": "packages/x-charts-pro" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 74c67251ddc7..92e890da5ca1 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -24,7 +24,7 @@ } }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "d3-color": "^3.1.0", "d3-delaunay": "^6.0.4", "d3-interpolate": "^3.0.1", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index b72cf72cf635..42b556b7840c 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -39,7 +39,7 @@ "directory": "packages/x-charts" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index af3094189ea1..6bd85dc1f6d6 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -32,9 +32,9 @@ "url": "https://opencollective.com/mui-org" }, "dependencies": { - "@babel/core": "^7.24.9", - "@babel/runtime": "^7.24.8", - "@babel/traverse": "^7.24.8", + "@babel/core": "^7.25.2", + "@babel/runtime": "^7.25.0", + "@babel/traverse": "^7.25.2", "jscodeshift": "0.16.1", "yargs": "^17.7.2" }, diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 90fb5aecf20d..6d5c032b0733 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -33,7 +33,7 @@ "directory": "packages/x-data-grid-generator" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.12", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index d7dc59954466..9b1c244c808f 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-data-grid-premium" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-data-grid": "workspace:*", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 48c4188033b6..4ab27308d3cc 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-data-grid-pro" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-data-grid": "workspace:*", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 410fcbf284bc..a4eda7b280c3 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -47,7 +47,7 @@ "directory": "packages/x-data-grid" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-internals": "workspace:*", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 72297e8cc398..9f8774100d36 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -42,7 +42,7 @@ "directory": "packages/x-date-pickers-pro" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 8d7a8aedbe20..c56e2deddbcc 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -45,7 +45,7 @@ "directory": "packages/x-date-pickers" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 7d26a38ad51c..ce017cd12f5b 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -41,7 +41,7 @@ "directory": "packages/x-internals" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/utils": "^5.16.5" }, "peerDependencies": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 713c8aff86ce..9fe318b3ffef 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -34,7 +34,7 @@ "directory": "packages/x-license" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/utils": "^5.16.5" }, "peerDependencies": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index ba1ebba6f939..ed120d233412 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-tree-view-pro" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index e44805211737..17b7603b7d62 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-tree-view" }, "dependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 47bee90f6dc9..8adeb7af773e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,49 +31,49 @@ importers: version: 2.4.0 '@babel/cli': specifier: ^7.24.8 - version: 7.24.8(@babel/core@7.24.9) + version: 7.24.8(@babel/core@7.25.2) '@babel/core': - specifier: ^7.24.9 - version: 7.24.9 + specifier: ^7.25.2 + version: 7.25.2 '@babel/node': - specifier: ^7.24.8 - version: 7.24.8(@babel/core@7.24.9) + specifier: ^7.25.0 + version: 7.25.0(@babel/core@7.25.2) '@babel/plugin-transform-class-properties': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-object-rest-spread': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-private-methods': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-private-property-in-object': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-constant-elements': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + specifier: ^7.25.1 + version: 7.25.1(@babel/core@7.25.2) '@babel/plugin-transform-runtime': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/preset-env': - specifier: ^7.24.8 - version: 7.24.8(@babel/core@7.24.9) + specifier: ^7.25.2 + version: 7.25.2(@babel/core@7.25.2) '@babel/preset-react': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/preset-typescript': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@babel/register': specifier: ^7.24.6 - version: 7.24.6(@babel/core@7.24.9) + version: 7.24.6(@babel/core@7.25.2) '@babel/traverse': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.2 + version: 7.25.2 '@babel/types': - specifier: ^7.24.9 - version: 7.24.9 + specifier: ^7.25.2 + version: 7.25.2 '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 @@ -91,7 +91,7 @@ importers: version: 1.0.8 '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -172,7 +172,7 @@ importers: version: 4.9.1 babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.24.9)(webpack@5.92.1(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(webpack-cli@5.1.4)) babel-plugin-istanbul: specifier: ^7.0.0 version: 7.0.0 @@ -399,14 +399,14 @@ importers: docs: dependencies: '@babel/core': - specifier: ^7.24.9 - version: 7.24.9 + specifier: ^7.25.2 + version: 7.25.2 '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@babel/runtime-corejs2': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@docsearch/react': specifier: ^3.6.1 version: 3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) @@ -427,7 +427,7 @@ importers: version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(3ea4brgn3rccsf7hpkxdzioc4a) + version: 6.0.0-beta.2(bfbg3yv4gnxt7j4iquhjyypkpe) '@mui/icons-material': specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -442,7 +442,7 @@ importers: version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.4 - version: 5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -547,7 +547,7 @@ importers: version: 3.1.0 jscodeshift: specifier: 0.16.1 - version: 0.16.1(@babel/preset-env@7.24.8(@babel/core@7.24.9)) + version: 0.16.1(@babel/preset-env@7.25.2(@babel/core@7.25.2)) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -574,7 +574,7 @@ importers: version: 0.5.45 next: specifier: ^14.2.5 - version: 14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: specifier: ^0.2.0 version: 0.2.0 @@ -637,11 +637,11 @@ importers: version: 4.10.2 devDependencies: '@babel/plugin-transform-react-constant-elements': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + specifier: ^7.25.1 + version: 7.25.1(@babel/core@7.25.2) '@babel/preset-typescript': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@mui/internal-docs-utils': specifier: ^1.0.8 version: 1.0.8 @@ -706,8 +706,8 @@ importers: packages/x-charts: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/react': specifier: ^11.9.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -750,7 +750,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -771,8 +771,8 @@ importers: packages/x-charts-pro: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/react': specifier: ^11.9.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -839,8 +839,8 @@ importers: packages/x-charts-vendor: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@types/d3-color': specifier: ^3.1.3 version: 3.1.3 @@ -886,7 +886,7 @@ importers: devDependencies: '@babel/plugin-transform-runtime': specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.24.9) + version: 7.24.7(@babel/core@7.25.2) '@types/d3-array': specifier: ^3.0.3 version: 3.2.1 @@ -924,17 +924,17 @@ importers: packages/x-codemod: dependencies: '@babel/core': - specifier: ^7.24.9 - version: 7.24.9 + specifier: ^7.25.2 + version: 7.25.2 '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@babel/traverse': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.2 + version: 7.25.2 jscodeshift: specifier: 0.16.1 - version: 0.16.1(@babel/preset-env@7.24.8(@babel/core@7.24.9)) + version: 0.16.1(@babel/preset-env@7.25.2(@babel/core@7.25.2)) yargs: specifier: ^17.7.2 version: 17.7.2 @@ -956,8 +956,8 @@ importers: packages/x-data-grid: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -988,7 +988,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1006,8 +1006,8 @@ importers: packages/x-data-grid-generator: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@mui/base': specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1044,8 +1044,8 @@ importers: packages/x-data-grid-premium: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1091,7 +1091,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1106,8 +1106,8 @@ importers: packages/x-data-grid-pro: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1147,7 +1147,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1159,8 +1159,8 @@ importers: packages/x-date-pickers: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/react': specifier: ^11.9.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -1200,7 +1200,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1245,8 +1245,8 @@ importers: packages/x-date-pickers-pro: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/react': specifier: ^11.9.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -1295,7 +1295,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1325,8 +1325,8 @@ importers: packages/x-internals: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1336,7 +1336,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 version: 5.0.9 @@ -1345,8 +1345,8 @@ importers: packages/x-license: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -1356,7 +1356,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 version: 5.0.9 @@ -1365,8 +1365,8 @@ importers: packages/x-tree-view: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/react': specifier: ^11.9.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -1409,7 +1409,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1421,8 +1421,8 @@ importers: packages/x-tree-view-pro: dependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/react': specifier: ^11.9.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -1471,7 +1471,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 version: 5.0.9 @@ -1479,8 +1479,8 @@ importers: test: devDependencies: '@babel/runtime': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.25.0 + version: 7.25.0 '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 @@ -1666,16 +1666,16 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.8': - resolution: {integrity: sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==} + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.9': - resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.10': - resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': @@ -1686,8 +1686,8 @@ packages: resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.24.8': - resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.24.7': @@ -1696,8 +1696,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.24.7': - resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} + '@babel/helper-create-regexp-features-plugin@7.25.2': + resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1715,20 +1715,16 @@ packages: resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.24.7': - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.24.7': - resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.24.9': - resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1741,14 +1737,14 @@ packages: resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.24.7': - resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} + '@babel/helper-remap-async-to-generator@7.25.0': + resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.24.7': - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1777,38 +1773,44 @@ packages: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.24.7': - resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} + '@babel/helper-wrap-function@7.25.0': + resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.8': - resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/node@7.24.8': - resolution: {integrity: sha512-4JgQZJOVDrMCe2OwP7g4nBEvv0kbTkWYVvkEhFdq8JdEhsy9J5E5ChibbIchTrntKB62lx2I7fVTdM+Se7KVFg==} + '@babel/node@7.25.0': + resolution: {integrity: sha512-fgdlIcf1vLeZ6gUHcl799Wbk6no5tnkGi6t1gpAb1a97ZB+KCRp8Sgb7acGTjnFhOzqzcsbJ4+wzewqb6JM0tA==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/parser@7.24.8': - resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + '@babel/parser@7.25.0': + resolution: {integrity: sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': - resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.0': + resolution: {integrity: sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': - resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': + resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': + resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1819,8 +1821,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': - resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': + resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1958,8 +1960,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.24.7': - resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} + '@babel/plugin-transform-async-generator-functions@7.25.0': + resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1976,8 +1978,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.24.7': - resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} + '@babel/plugin-transform-block-scoping@7.25.0': + resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1994,8 +1996,8 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.24.8': - resolution: {integrity: sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==} + '@babel/plugin-transform-classes@7.25.0': + resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2024,6 +2026,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': + resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/plugin-transform-dynamic-import@7.24.7': resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} @@ -2054,8 +2062,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.24.7': - resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} + '@babel/plugin-transform-function-name@7.25.1': + resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2066,8 +2074,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.24.7': - resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} + '@babel/plugin-transform-literals@7.25.2': + resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2096,8 +2104,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.24.7': - resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} + '@babel/plugin-transform-modules-systemjs@7.25.0': + resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2180,8 +2188,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-constant-elements@7.24.7': - resolution: {integrity: sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==} + '@babel/plugin-transform-react-constant-elements@7.25.1': + resolution: {integrity: sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2288,8 +2296,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.8': - resolution: {integrity: sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==} + '@babel/preset-env@7.25.2': + resolution: {integrity: sha512-Y2Vkwy3ITW4id9c6KXshVV/x5yCGK7VdJmKkzOzNsDZMojRKfSA/033rRbLqlRozmhRXCejxWHLSJOg/wUHfzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2326,24 +2334,24 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime-corejs2@7.24.8': - resolution: {integrity: sha512-vGYjT6h/MNSJ74UXgcgmoRNrMiSwMCgSy/HXMM0jTQJ811YfpBxvxidMPRdJnTaUjDpqwWI2XC6bkz0vnWpjfQ==} + '@babel/runtime-corejs2@7.25.0': + resolution: {integrity: sha512-aoYVE3tm+vgAoezmXFWmVcp+NlSdsUqQMPL7c6zRxq8KDHCf570pamC7005Q/UkSlTuoL6oeE16zIw/9J3YFyw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.24.8': - resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.7': - resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.8': - resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + '@babel/traverse@7.25.2': + resolution: {integrity: sha512-s4/r+a7xTnny2O6FcZzqgT6nE4/GHEdcqj4qAeglbUOh0TeglEfmNJFAd/OLoVtGd6ZhAO8GCVvCNUO5t/VJVQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.9': - resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -9651,9 +9659,9 @@ snapshots: '@argos-ci/util@2.1.0': {} - '@babel/cli@7.24.8(@babel/core@7.24.9)': + '@babel/cli@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@jridgewell/trace-mapping': 0.3.25 commander: 6.2.1 convert-source-map: 2.0.0 @@ -9670,20 +9678,20 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.24.8': {} + '@babel/compat-data@7.25.2': {} - '@babel/core@7.24.9': + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.10 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) - '@babel/helpers': 7.24.8 - '@babel/parser': 7.24.8 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.0 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 convert-source-map: 2.0.0 debug: 4.3.5(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -9692,58 +9700,58 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.24.10': + '@babel/generator@7.25.0': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-compilation-targets@7.24.8': + '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.24.8 + '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.9)': + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-function-name': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.9)': + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.9)': + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-compilation-targets': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 debug: 4.3.5(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -9753,83 +9761,78 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@babel/helper-function-name@7.24.7': dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.9 - - '@babel/helper-hoist-variables@7.24.7': - dependencies: - '@babel/types': 7.24.9 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 - '@babel/helper-member-expression-to-functions@7.24.7': + '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.9)': + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-wrap-function': 7.24.7 + '@babel/helper-wrap-function': 7.25.0 + '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9)': + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@babel/helper-string-parser@7.24.8': {} @@ -9837,19 +9840,18 @@ snapshots: '@babel/helper-validator-option@7.24.8': {} - '@babel/helper-wrap-function@7.24.7': + '@babel/helper-wrap-function@7.25.0': dependencies: - '@babel/helper-function-name': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/helpers@7.24.8': + '@babel/helpers@7.25.0': dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.9 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@babel/highlight@7.24.7': dependencies: @@ -9858,676 +9860,693 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/node@7.24.8(@babel/core@7.24.9)': + '@babel/node@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/register': 7.24.6(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/register': 7.24.6(@babel/core@7.25.2) commander: 6.2.1 core-js: 3.35.1 node-environment-flags: 1.0.6 regenerator-runtime: 0.14.1 v8flags: 3.2.0 - '@babel/parser@7.24.8': + '@babel/parser@7.25.0': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.2 + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.9)': + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.9)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.9)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.9)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.9)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.9)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.9)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.9)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.9)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.9)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.9)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.9)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.9) + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.24.8(@babel/core@7.24.9)': + '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) - '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/traverse': 7.25.2 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.24.7 + '@babel/template': 7.25.0 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.9)': + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-function-name': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.2 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.9)': + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-compilation-targets': 7.24.8 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.9)': + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-constant-elements@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-react-constant-elements@7.25.1(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/types': 7.24.9 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.9) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.9) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.9) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.9)': + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.9)': + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 - '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/preset-env@7.24.8(@babel/core@7.24.9)': + '@babel/preset-env@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.24.8 - '@babel/core': 7.24.9 - '@babel/helper-compilation-targets': 7.24.8 + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.9) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-classes': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.9) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.9) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.9) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.9) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.2) core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.24.7(@babel/core@7.24.9)': + '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.25.2) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.9)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 esutils: 2.0.3 - '@babel/preset-react@7.24.7(@babel/core@7.24.9)': + '@babel/preset-react@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.24.7(@babel/core@7.24.9)': + '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/register@7.24.6(@babel/core@7.24.9)': + '@babel/register@7.24.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -10536,37 +10555,34 @@ snapshots: '@babel/regjsgen@0.8.0': {} - '@babel/runtime-corejs2@7.24.8': + '@babel/runtime-corejs2@7.25.0': dependencies: core-js: 2.6.12 regenerator-runtime: 0.14.1 - '@babel/runtime@7.24.8': + '@babel/runtime@7.25.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.7': + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/parser': 7.25.0 + '@babel/types': 7.25.2 - '@babel/traverse@7.24.8': + '@babel/traverse@7.25.2': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.10 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.0 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 debug: 4.3.5(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.9': + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -10602,7 +10618,7 @@ snapshots: '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.0 @@ -10639,7 +10655,7 @@ snapshots: '@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.0 @@ -10672,7 +10688,7 @@ snapshots: '@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -11076,7 +11092,7 @@ snapshots: '@mui/base@5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -11090,9 +11106,9 @@ snapshots: '@mui/core-downloads-tracker@5.16.5': {} - '@mui/docs@6.0.0-beta.2(3ea4brgn3rccsf7hpkxdzioc4a)': + '@mui/docs@6.0.0-beta.2(bfbg3yv4gnxt7j4iquhjyypkpe)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': 1.0.8 @@ -11101,7 +11117,7 @@ snapshots: chai: 4.4.1 clipboard-copy: 4.0.1 clsx: 2.1.1 - next: 14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: 0.2.0 prop-types: 15.8.1 react: 18.3.1 @@ -11110,7 +11126,7 @@ snapshots: '@mui/icons-material@5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: @@ -11123,18 +11139,18 @@ snapshots: '@mui/internal-markdown@1.0.8': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 lodash: 4.17.21 marked: 13.0.2 prismjs: 1.29.0 '@mui/internal-scripts@1.0.13': dependencies: - '@babel/core': 7.24.9 - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) - '@babel/types': 7.24.9 + '@babel/core': 7.25.2 + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/types': 7.25.2 '@mui/internal-docs-utils': 1.0.8 doctrine: 3.0.0 lodash: 4.17.21 @@ -11143,12 +11159,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.5(@babel/core@7.24.9)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) - '@babel/register': 7.24.6(@babel/core@7.24.9) - '@babel/runtime': 7.24.8 + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/register': 7.24.6(@babel/core@7.25.2) + '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) '@testing-library/dom': 10.3.1 @@ -11178,7 +11194,7 @@ snapshots: '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/core-downloads-tracker': 5.16.5 '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -11195,7 +11211,7 @@ snapshots: '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -11210,11 +11226,11 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/material-nextjs@5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next: 14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@emotion/cache': 11.13.1 @@ -11223,7 +11239,7 @@ snapshots: '@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/core-downloads-tracker': 5.16.5 '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) @@ -11258,7 +11274,7 @@ snapshots: '@mui/private-theming@5.16.5(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 @@ -11267,7 +11283,7 @@ snapshots: '@mui/styled-engine@5.16.4(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -11278,7 +11294,7 @@ snapshots: '@mui/styles@5.16.5(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@emotion/hash': 0.9.2 '@mui/private-theming': 5.16.5(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) @@ -11301,7 +11317,7 @@ snapshots: '@mui/system@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/private-theming': 5.16.5(@types/react@18.3.3)(react@18.3.1) '@mui/styled-engine': 5.16.4(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) @@ -11321,7 +11337,7 @@ snapshots: '@mui/utils@5.16.5(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@mui/types': 7.2.15(@types/react@18.3.3) '@types/prop-types': 15.7.12 clsx: 2.1.1 @@ -12059,7 +12075,7 @@ snapshots: '@testing-library/dom@10.3.1': dependencies: '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -12069,7 +12085,7 @@ snapshots: '@testing-library/react@16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@testing-library/dom': 10.3.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -12094,24 +12110,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/parser': 7.25.0 + '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@babel/parser': 7.25.0 + '@babel/types': 7.25.2 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.24.9 + '@babel/types': 7.25.2 '@types/body-parser@1.19.5': dependencies: @@ -12906,9 +12922,9 @@ snapshots: dependencies: deep-equal: 2.2.3 - babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.92.1(webpack-cli@5.1.4)): + babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.92.1(webpack-cli@5.1.4)): dependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.92.1(webpack-cli@5.1.4) @@ -12925,7 +12941,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 cosmiconfig: 7.1.0 resolve: 1.22.8 @@ -12939,40 +12955,40 @@ snapshots: babel-plugin-optimize-clsx@2.6.2: dependencies: - '@babel/generator': 7.24.10 - '@babel/template': 7.24.7 - '@babel/types': 7.24.9 + '@babel/generator': 7.25.0 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 find-cache-dir: 3.3.2 lodash: 4.17.21 object-hash: 2.2.0 - babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.9): + babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.25.2): dependencies: - '@babel/compat-data': 7.24.8 - '@babel/core': 7.24.9 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.9) + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.9): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): dependencies: - '@babel/core': 7.24.9 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.2) core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.9): + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.25.2): dependencies: - '@babel/core': 7.24.9 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.2) transitivePeerDependencies: - supports-color babel-plugin-preval@5.1.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 '@types/babel__core': 7.20.5 babel-plugin-macros: 3.1.0 require-from-string: 2.0.2 @@ -13629,7 +13645,7 @@ snapshots: css-vendor@2.0.8: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 is-in-browser: 1.1.3 css-what@6.1.0: {} @@ -13761,13 +13777,13 @@ snapshots: date-fns-jalali@2.30.0-0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 date-fns-jalali@3.6.0-1: {} date-fns@2.30.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 date-fns@3.6.0: {} @@ -13905,7 +13921,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 csstype: 3.1.3 dom-serialize@2.2.1: @@ -14348,9 +14364,9 @@ snapshots: eslint-plugin-react-compiler@0.0.0-experimental-51a85ea-20240601(eslint@8.57.0): dependencies: - '@babel/core': 7.24.9 - '@babel/parser': 7.24.8 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.9) + '@babel/core': 7.25.2 + '@babel/parser': 7.25.0 + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.25.2) eslint: 8.57.0 hermes-parser: 0.20.1 zod: 3.23.8 @@ -14473,8 +14489,8 @@ snapshots: estree-to-babel@3.2.1: dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@babel/traverse': 7.25.2 + '@babel/types': 7.25.2 c8: 7.14.0 transitivePeerDependencies: - supports-color @@ -15532,8 +15548,8 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.24.9 - '@babel/parser': 7.24.8 + '@babel/core': 7.25.2 + '@babel/parser': 7.25.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -15641,18 +15657,18 @@ snapshots: dependencies: argparse: 2.0.1 - jscodeshift@0.16.1(@babel/preset-env@7.24.8(@babel/core@7.24.9)): - dependencies: - '@babel/core': 7.24.9 - '@babel/parser': 7.24.8 - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.9) - '@babel/preset-flow': 7.24.7(@babel/core@7.24.9) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) - '@babel/register': 7.24.6(@babel/core@7.24.9) + jscodeshift@0.16.1(@babel/preset-env@7.25.2(@babel/core@7.25.2)): + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.25.0 + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/register': 7.24.6(@babel/core@7.25.2) chalk: 4.1.2 flow-parser: 0.227.0 graceful-fs: 4.2.11 @@ -15663,7 +15679,7 @@ snapshots: temp: 0.9.4 write-file-atomic: 5.0.1 optionalDependencies: - '@babel/preset-env': 7.24.8(@babel/core@7.24.9) + '@babel/preset-env': 7.25.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -15762,46 +15778,46 @@ snapshots: jss-plugin-camel-case@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 hyphenate-style-name: 1.0.4 jss: 10.10.0 jss-plugin-default-unit@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 jss: 10.10.0 jss-plugin-global@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 jss: 10.10.0 jss-plugin-nested@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-props-sort@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 jss: 10.10.0 jss-plugin-rule-value-function@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-template@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-vendor-prefixer@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 css-vendor: 2.0.8 jss: 10.10.0 @@ -15812,7 +15828,7 @@ snapshots: jss@10.10.0: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 csstype: 3.1.3 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -16559,7 +16575,7 @@ snapshots: nested-error-stacks@2.1.1: {} - next@14.2.5(@babel/core@7.24.9)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@next/env': 14.2.5 '@swc/helpers': 0.5.5 @@ -16569,7 +16585,7 @@ snapshots: postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.24.9)(babel-plugin-macros@3.1.0)(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.25.2)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.2.5 '@next/swc-darwin-x64': 14.2.5 @@ -17426,9 +17442,9 @@ snapshots: react-docgen@5.4.3: dependencies: - '@babel/core': 7.24.9 - '@babel/generator': 7.24.10 - '@babel/runtime': 7.24.8 + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/runtime': 7.25.0 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -17476,7 +17492,7 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -17604,7 +17620,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 regexp.prototype.flags@1.5.2: dependencies: @@ -17744,7 +17760,7 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 run-async@2.4.1: {} @@ -18231,12 +18247,12 @@ snapshots: stylis: 4.3.2 tslib: 2.6.2 - styled-jsx@5.1.1(@babel/core@7.24.9)(babel-plugin-macros@3.1.0)(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.25.2)(babel-plugin-macros@3.1.0)(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 optionalDependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.25.2 babel-plugin-macros: 3.1.0 stylis-plugin-rtl@2.1.1(stylis@4.3.2): diff --git a/test/package.json b/test/package.json index fe2afcac7890..78edd30c4204 100644 --- a/test/package.json +++ b/test/package.json @@ -6,7 +6,7 @@ "typescript": "tsc -p tsconfig.json" }, "devDependencies": { - "@babel/runtime": "^7.24.8", + "@babel/runtime": "^7.25.0", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.0", "@mui/material": "^5.16.5", From fcd20fce953a4aad44323abae581aa68e87fde04 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:49:33 +0300 Subject: [PATCH 691/912] Bump mocha to ^10.7.0 (#14013) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index aafbd3039c33..60db4f2bb9e5 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,7 @@ "lerna": "^8.1.6", "lodash": "^4.17.21", "markdownlint-cli2": "^0.13.0", - "mocha": "^10.6.0", + "mocha": "^10.7.0", "moment": "^2.30.1", "moment-timezone": "^0.5.45", "nyc": "^17.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8adeb7af773e..a31f851486e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -324,8 +324,8 @@ importers: specifier: ^0.13.0 version: 0.13.0 mocha: - specifier: ^10.6.0 - version: 10.6.0 + specifier: ^10.7.0 + version: 10.7.0 moment: specifier: ^2.30.1 version: 2.30.1 @@ -7272,8 +7272,8 @@ packages: engines: {node: '>=10'} hasBin: true - mocha@10.6.0: - resolution: {integrity: sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==} + mocha@10.7.0: + resolution: {integrity: sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==} engines: {node: '>= 14.0.0'} hasBin: true @@ -11177,7 +11177,7 @@ snapshots: fs-extra: 11.2.0 jsdom: 24.1.0 lodash: 4.17.21 - mocha: 10.6.0 + mocha: 10.7.0 playwright: 1.45.1 prop-types: 15.8.1 react: 18.3.1 @@ -16490,7 +16490,7 @@ snapshots: mkdirp@1.0.4: {} - mocha@10.6.0: + mocha@10.7.0: dependencies: ansi-colors: 4.1.3 browser-stdout: 1.3.1 From 72971419245ce6253691ace757df41dad1bc17c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:55:48 +0300 Subject: [PATCH 692/912] Bump lerna to ^8.1.7 (#14005) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 60db4f2bb9e5..c68a0a136393 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "karma-parallel": "^0.3.1", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.1", - "lerna": "^8.1.6", + "lerna": "^8.1.7", "lodash": "^4.17.21", "markdownlint-cli2": "^0.13.0", "mocha": "^10.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a31f851486e7..a7845f124ec6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -315,8 +315,8 @@ importers: specifier: ^5.0.1 version: 5.0.1(webpack@5.92.1(webpack-cli@5.1.4)) lerna: - specifier: ^8.1.6 - version: 8.1.6(babel-plugin-macros@3.1.0)(encoding@0.1.13) + specifier: ^8.1.7 + version: 8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -2830,8 +2830,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@lerna/create@8.1.6': - resolution: {integrity: sha512-z7CjDSWFKS6cqydxP2XDrnmp1MYavSk2sU70ku1uo/38SZvFeUlEAkV6evxc2QJOqWQFsGKOO26zX2DBnQ45YQ==} + '@lerna/create@8.1.7': + resolution: {integrity: sha512-ch81CgU5pBNOiUCQx44F/ZtN4DxxJjUQtuytYRBFWJSHAJ+XPJtiC/yQ9zjr1I1yaUlmNYYblkopoOyziOdJ1w==} engines: {node: '>=18.0.0'} '@mui/base@5.0.0-beta.40': @@ -6820,8 +6820,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - lerna@8.1.6: - resolution: {integrity: sha512-O3zSX/dmchMVy9m37DD1BCx7X68nS5lZFECjqG7Siiv3+KgqKXHnF4JQPJUDD/vG2qBQv5StpXCyqGxR0XJVAQ==} + lerna@8.1.7: + resolution: {integrity: sha512-v2kkBn8Vqtroo30Pr5/JQ9MygRhnCsoI1jSOf3DxWmcTbkpC5U7c6rGr+7NPK6QrxKbC0/Cj4kuIBMb/7f79sQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -11008,7 +11008,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@lerna/create@8.1.6(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.3)': + '@lerna/create@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.3)': dependencies: '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 @@ -11068,6 +11068,7 @@ snapshots: slash: 3.0.0 ssri: 10.0.6 string-width: 4.2.3 + strip-ansi: 6.0.1 strong-log-transformer: 2.1.0 tar: 6.2.1 temp-dir: 1.0.0 @@ -15950,9 +15951,9 @@ snapshots: dependencies: readable-stream: 2.3.8 - lerna@8.1.6(babel-plugin-macros@3.1.0)(encoding@0.1.13): + lerna@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.6(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.3) + '@lerna/create': 8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.3) '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 @@ -16019,6 +16020,7 @@ snapshots: slash: 3.0.0 ssri: 10.0.6 string-width: 4.2.3 + strip-ansi: 6.0.1 strong-log-transformer: 2.1.0 tar: 6.2.1 temp-dir: 1.0.0 From cd1fa11e04c667b96defccbc4e47274440f64fcc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:56:47 +0300 Subject: [PATCH 693/912] Bump postcss to ^8.4.40 (#14006) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/package.json b/docs/package.json index 625be5e1469d..386dd02f5166 100644 --- a/docs/package.json +++ b/docs/package.json @@ -80,7 +80,7 @@ "moment-timezone": "^0.5.45", "next": "^14.2.5", "nprogress": "^0.2.0", - "postcss": "^8.4.39", + "postcss": "^8.4.40", "prismjs": "^1.29.0", "prop-types": "^15.8.1", "react": "^18.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a7845f124ec6..de2d1c74c4b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,7 +166,7 @@ importers: version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.39) + version: 10.4.19(postcss@8.4.40) axe-core: specifier: 4.9.1 version: 4.9.1 @@ -490,7 +490,7 @@ importers: version: 0.14.2 autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.39) + version: 10.4.19(postcss@8.4.40) babel-plugin-module-resolver: specifier: ^5.0.2 version: 5.0.2 @@ -579,8 +579,8 @@ importers: specifier: ^0.2.0 version: 0.2.0 postcss: - specifier: ^8.4.39 - version: 8.4.39 + specifier: ^8.4.40 + version: 8.4.40 prismjs: specifier: ^1.29.0 version: 1.29.0 @@ -7936,8 +7936,8 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.1.2: @@ -12895,14 +12895,14 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.19(postcss@8.4.39): + autoprefixer@10.4.19(postcss@8.4.40): dependencies: browserslist: 4.23.2 caniuse-lite: 1.0.30001642 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.39 + postcss: 8.4.40 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -17277,7 +17277,7 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 - postcss@8.4.39: + postcss@8.4.40: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 From 3782074a1fa2be00a57ded5e4f95a305878429c7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:58:35 +0300 Subject: [PATCH 694/912] Bump eslint-plugin-react to ^7.35.0 (#14011) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 29 +++++++++-------------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index c68a0a136393..27de298b18f7 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,7 @@ "eslint-plugin-material-ui": "workspace:^", "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.34.4", + "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-compiler": "0.0.0-experimental-51a85ea-20240601", "eslint-plugin-react-hooks": "^4.6.2", "fast-glob": "^3.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de2d1c74c4b4..92ba59a4c8f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,7 +226,7 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.4(eslint@8.57.0))(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 version: 18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) @@ -258,8 +258,8 @@ importers: specifier: ^5.2.1 version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) eslint-plugin-react: - specifier: ^7.34.4 - version: 7.34.4(eslint@8.57.0) + specifier: ^7.35.0 + version: 7.35.0(eslint@8.57.0) eslint-plugin-react-compiler: specifier: 0.0.0-experimental-51a85ea-20240601 version: 0.0.0-experimental-51a85ea-20240601(eslint@8.57.0) @@ -4252,9 +4252,6 @@ packages: resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} engines: {node: '>= 0.4'} - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - array.prototype.tosorted@1.1.4: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} @@ -5523,11 +5520,11 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.34.4: - resolution: {integrity: sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==} + eslint-plugin-react@7.35.0: + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} @@ -12841,13 +12838,6 @@ snapshots: es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 @@ -14223,13 +14213,13 @@ snapshots: transitivePeerDependencies: - eslint-plugin-import - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.34.4(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) - eslint-plugin-react: 7.34.4(eslint@8.57.0) + eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 @@ -14379,12 +14369,11 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-react@7.34.4(eslint@8.57.0): + eslint-plugin-react@7.35.0(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 From 3cbba9954bb1c41592eb9a54ff9c49ed873ed2f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:31:43 +0300 Subject: [PATCH 695/912] Bump jsdom to 24.1.1 (#14004) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 27de298b18f7..72f26dd481ea 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "glob-gitignore": "^1.0.14", "globby": "^14.0.1", "html-webpack-plugin": "^5.6.0", - "jsdom": "24.1.0", + "jsdom": "24.1.1", "jss": "^10.10.0", "jss-plugin-template": "^10.10.0", "jss-rtl": "^0.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 92ba59a4c8f6..12b810bdceef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -285,8 +285,8 @@ importers: specifier: ^5.6.0 version: 5.6.0(webpack@5.92.1(webpack-cli@5.1.4)) jsdom: - specifier: 24.1.0 - version: 24.1.0 + specifier: 24.1.1 + version: 24.1.1 jss: specifier: ^10.10.0 version: 10.10.0 @@ -6178,8 +6178,8 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} human-signals@2.1.0: @@ -6627,8 +6627,8 @@ packages: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} - jsdom@24.1.0: - resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} + jsdom@24.1.1: + resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -7479,8 +7479,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.10: - resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + nwsapi@2.2.12: + resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} nx@17.3.0: resolution: {integrity: sha512-CoY0qUrO8xErbA/v/bbfDGs+KaD9MCO7PReqmIeyrtDNwFl6vnb+U2MpBxCsRP+YH2Oa8hI8Lu+kcnPktx2v6A==} @@ -8390,8 +8390,8 @@ packages: rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - rrweb-cssom@0.7.0: - resolution: {integrity: sha512-KlSv0pm9kgQSRxXEMgtivPJ4h826YHsuob8pSHcfSZsSXGtvpEAie8S0AnXuObEJ7nhikOb4ahwxDm0H2yW17g==} + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} @@ -9420,8 +9420,8 @@ packages: utf-8-validate: optional: true - ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -11173,7 +11173,7 @@ snapshots: dom-accessibility-api: 0.6.3 format-util: 1.0.5 fs-extra: 11.2.0 - jsdom: 24.1.0 + jsdom: 24.1.1 lodash: 4.17.21 mocha: 10.7.0 playwright: 1.45.1 @@ -11408,7 +11408,7 @@ snapshots: dependencies: agent-base: 7.1.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 lru-cache: 10.3.0 socks-proxy-agent: 8.0.2 transitivePeerDependencies: @@ -14835,7 +14835,7 @@ snapshots: gaxios@6.1.1(encoding@0.1.13): dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 is-stream: 2.0.1 node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: @@ -15230,7 +15230,7 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.4: + https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.0 debug: 4.3.5(supports-color@8.1.1) @@ -15675,7 +15675,7 @@ snapshots: jsdoc-type-pratt-parser@4.0.0: {} - jsdom@24.1.0: + jsdom@24.1.1: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -15683,11 +15683,11 @@ snapshots: form-data: 4.0.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 + nwsapi: 2.2.12 parse5: 7.1.2 - rrweb-cssom: 0.7.0 + rrweb-cssom: 0.7.1 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 @@ -15696,7 +15696,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.17.0 + ws: 8.18.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -16739,7 +16739,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.10: {} + nwsapi@2.2.12: {} nx@17.3.0: dependencies: @@ -17747,7 +17747,7 @@ snapshots: rrweb-cssom@0.6.0: {} - rrweb-cssom@0.7.0: {} + rrweb-cssom@0.7.1: {} rtl-css-js@1.16.1: dependencies: @@ -18979,7 +18979,7 @@ snapshots: ws@8.11.0: {} - ws@8.17.0: {} + ws@8.18.0: {} xcase@2.0.1: {} From db25def5f51e53a2fc41f9965445792765269100 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:40:52 +0300 Subject: [PATCH 696/912] Bump pnpm to 9.6.0 (#14015) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 72f26dd481ea..1c44e00912b9 100644 --- a/package.json +++ b/package.json @@ -197,9 +197,9 @@ "react-is": "^18.3.1", "@types/node": "^18.19.42" }, - "packageManager": "pnpm@9.5.0", + "packageManager": "pnpm@9.6.0", "engines": { - "pnpm": "9.5.0" + "pnpm": "9.6.0" }, "pnpm": { "patchedDependencies": { From a1ebb048f95940cd8eaa9bee6d9d7030f77ebad4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:41:24 +0300 Subject: [PATCH 697/912] Bump typescript to ^5.5.4 (#14008) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 114 ++++++++++++++++++++++++------------------------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index 1c44e00912b9..90594ef3d74b 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "string-replace-loader": "^3.1.0", "terser-webpack-plugin": "^5.3.10", "tsx": "^4.16.2", - "typescript": "^5.5.3", + "typescript": "^5.5.4", "unist-util-visit": "^2.0.3", "util": "^0.12.5", "webpack": "^5.92.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12b810bdceef..f8860a695d0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -160,10 +160,10 @@ importers: version: 17.0.32 '@typescript-eslint/eslint-plugin': specifier: ^7.16.1 - version: 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) + version: 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/parser': specifier: ^7.16.1 - version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) + version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.40) @@ -226,10 +226,10 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -241,7 +241,7 @@ importers: version: 1.3.2(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsdoc: specifier: ^48.8.3 version: 48.8.3(eslint@8.57.0) @@ -375,8 +375,8 @@ importers: specifier: ^4.16.2 version: 4.16.2 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.5.4 + version: 5.5.4 unist-util-visit: specifier: ^2.0.3 version: 2.0.3 @@ -698,10 +698,10 @@ importers: version: 8.56.11 '@typescript-eslint/parser': specifier: ^7.16.1 - version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) + version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/utils': specifier: ^7.16.1 - version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) + version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) packages/x-charts: dependencies: @@ -9056,8 +9056,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript@5.5.3: - resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} hasBin: true @@ -11005,7 +11005,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@lerna/create@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.3)': + '@lerna/create@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': dependencies: '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 @@ -11023,7 +11023,7 @@ snapshots: console-control-strings: 1.1.0 conventional-changelog-core: 5.0.1 conventional-recommended-bump: 7.0.1 - cosmiconfig: 8.3.6(typescript@5.5.3) + cosmiconfig: 8.3.6(typescript@5.5.4) dedent: 1.5.3(babel-plugin-macros@3.1.0) execa: 5.0.0 fs-extra: 11.2.0 @@ -11133,7 +11133,7 @@ snapshots: '@mui/internal-docs-utils@1.0.8': dependencies: rimraf: 5.0.9 - typescript: 5.5.3 + typescript: 5.5.4 '@mui/internal-markdown@1.0.8': dependencies: @@ -11152,7 +11152,7 @@ snapshots: '@mui/internal-docs-utils': 1.0.8 doctrine: 3.0.0 lodash: 4.17.21 - typescript: 5.5.3 + typescript: 5.5.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -12371,34 +12371,34 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 7.16.1 - '@typescript-eslint/type-utils': 7.16.1(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/type-utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.16.1 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 7.16.1 '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.16.1 debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -12407,21 +12407,21 @@ snapshots: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/visitor-keys': 7.16.1 - '@typescript-eslint/type-utils@7.16.1(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/type-utils@7.16.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) - '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) + '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color '@typescript-eslint/types@7.16.1': {} - '@typescript-eslint/typescript-estree@7.16.1(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@7.16.1(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/visitor-keys': 7.16.1 @@ -12430,18 +12430,18 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.16.1(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/utils@7.16.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.16.1 '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) eslint: 8.57.0 transitivePeerDependencies: - supports-color @@ -13565,14 +13565,14 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.5.3): + cosmiconfig@8.3.6(typescript@5.5.4): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 cp-file@10.0.0: dependencies: @@ -14195,29 +14195,29 @@ snapshots: optionalDependencies: source-map: 0.2.0 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) @@ -14241,7 +14241,7 @@ snapshots: array.prototype.find: 2.2.2 debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -14254,11 +14254,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)) @@ -14273,7 +14273,7 @@ snapshots: lodash.snakecase: 4.1.1 lodash.upperfirst: 4.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.3 @@ -14283,7 +14283,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -14294,7 +14294,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15942,7 +15942,7 @@ snapshots: lerna@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.3) + '@lerna/create': 8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 @@ -15960,7 +15960,7 @@ snapshots: conventional-changelog-angular: 7.0.0 conventional-changelog-core: 5.0.1 conventional-recommended-bump: 7.0.1 - cosmiconfig: 8.3.6(typescript@5.5.3) + cosmiconfig: 8.3.6(typescript@5.5.4) dedent: 1.5.3(babel-plugin-macros@3.1.0) envinfo: 7.13.0 execa: 5.0.0 @@ -16013,7 +16013,7 @@ snapshots: strong-log-transformer: 2.1.0 tar: 6.2.1 temp-dir: 1.0.0 - typescript: 5.5.3 + typescript: 5.5.4 upath: 2.0.1 uuid: 10.0.0 validate-npm-package-license: 3.0.4 @@ -18421,9 +18421,9 @@ snapshots: trough@1.0.5: {} - ts-api-utils@1.3.0(typescript@5.5.3): + ts-api-utils@1.3.0(typescript@5.5.4): dependencies: - typescript: 5.5.3 + typescript: 5.5.4 ts-interface-checker@0.1.13: {} @@ -18528,7 +18528,7 @@ snapshots: typedarray@0.0.6: {} - typescript@5.5.3: {} + typescript@5.5.4: {} ua-parser-js@0.7.37: {} From 4fb52d97d1c4c0e286e05288887a69a0c09b7ff7 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:42:05 +0200 Subject: [PATCH 698/912] [infra] Consolidate issue cleanup and support labeling action (#14031) --- .github/workflows/issue-cleanup.yml | 74 +++++------------ .github/workflows/order-id-validator.yml | 29 ------- scripts/githubActions/issueBodyCleanup.js | 80 +++++++++++++++++++ .../{ => githubActions}/orderIdValidation.js | 11 +-- 4 files changed, 102 insertions(+), 92 deletions(-) delete mode 100644 .github/workflows/order-id-validator.yml create mode 100644 scripts/githubActions/issueBodyCleanup.js rename scripts/{ => githubActions}/orderIdValidation.js (84%) diff --git a/.github/workflows/issue-cleanup.yml b/.github/workflows/issue-cleanup.yml index 1db6e63df3ef..32815b98154c 100644 --- a/.github/workflows/issue-cleanup.yml +++ b/.github/workflows/issue-cleanup.yml @@ -1,4 +1,4 @@ -name: Cleanup issue comment +name: Cleanup issue on: issues: @@ -10,62 +10,26 @@ permissions: {} jobs: issue_cleanup: runs-on: ubuntu-latest + name: Clean issue body permissions: issues: write steps: - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - name: Cleanup issue body + id: cleanup + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | - const issue = await github.rest.issues.get({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - }) - - const lines = issue.data.body.split('\n') - - const _ = extractInputSection(lines, 'Latest version') - const searchKeywords = extractInputSection(lines, 'Search keywords') - const orderID = extractInputSection(lines, 'Order ID or Support key') - const products = extractInputSection(lines, 'Affected products') - - lines.push('') - lines.push('**Search keywords**: ' + searchKeywords) - if (orderID !== '' && orderID !== '_No response_') { - lines.push('**Order ID**: ' + orderID) - } - - const body = lines.join('\n') - - const labels = issue.data.labels.map(label => label.name) - - const productMap = { - 'Data Grid': 'data grid', - 'Date and Time Pickers': 'pickers', - 'Charts': 'charts', - 'Tree View': 'tree view', - } - - if (products !== '') { - products.split(',').forEach(product => { - if (productMap[product.trim()]) { - labels.push(`component: ${productMap[product.trim()]}`) - } - }) - } - - await github.rest.issues.update({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body, - labels, - }) - - function extractInputSection(lines, title) { - const index = lines.findIndex(line => line.startsWith('###') && line.includes(title)) - if (index === -1) { - return '' - } - return lines.splice(index, 4)[2].trim() - } + const script = require('./scripts/githubActions/issueBodyCleanup.js') + await script({core, github, context}) + - name: Add support label + if: steps.cleanup.outputs.ORDER_ID != '' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const script = require('./scripts/githubActions/orderIdValidation.js') + await script({core, github, context}) + env: + ORDER_API_TOKEN: ${{ secrets.SHOP_AUTH_TOKEN }} + ORDER_ID: ${{ steps.cleanup.outputs.ORDER_ID }} diff --git a/.github/workflows/order-id-validator.yml b/.github/workflows/order-id-validator.yml deleted file mode 100644 index 212d6c5f8eed..000000000000 --- a/.github/workflows/order-id-validator.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Order ID validation - -on: - workflow_run: - workflows: - - Cleanup issue comment - types: - - completed - -permissions: {} - -jobs: - validate-order-id: - runs-on: ubuntu-latest - name: Label issue based on order ID - permissions: - actions: read - contents: read - issues: write - steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Label issue - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 - with: - script: | - const script = require('./scripts/orderIdValidation.js') - await script({core, github, context}) - env: - ORDER_API_TOKEN: ${{ secrets.SHOP_AUTH_TOKEN }} diff --git a/scripts/githubActions/issueBodyCleanup.js b/scripts/githubActions/issueBodyCleanup.js new file mode 100644 index 000000000000..81e18cfba21f --- /dev/null +++ b/scripts/githubActions/issueBodyCleanup.js @@ -0,0 +1,80 @@ +function extractInputSection(lines, title) { + const index = lines.findIndex((line) => line.startsWith('###') && line.includes(title)); + if (index === -1) { + return ''; + } + return lines.splice(index, 4)[2].trim(); +} + +/** + * @param {Object} params + * @param {import("@actions/core")} params.core + * @param {ReturnType} params.github + * @param {import("@actions/github").context} params.context + */ +module.exports = async ({ core, context, github }) => { + try { + const owner = context.repo.owner; + const repo = context.repo.repo; + const issueNumber = context.issue.number; + + const issue = await github.rest.issues.get({ + owner, + repo, + issue_number: issueNumber, + }); + + const lines = issue.data.body.split('\n'); + + const searchKeywords = extractInputSection(lines, 'Search keywords'); + + // get the order id and set it as an output for the support label step + const orderID = extractInputSection(lines, 'Order ID or Support key'); + core.setOutput('ORDER_ID', orderID); + + const products = extractInputSection(lines, 'Affected products'); + + // debug log all values + core.debug(`>>> Search Keywords: ${searchKeywords}`); + core.debug(`>>> Order ID: ${orderID}`); + core.debug(`>>> Affected Products: ${products}`); + + lines.push(''); + lines.push(`**Search keywords**: ${searchKeywords}`); + if (orderID !== '' && orderID !== '_No response_') { + lines.push(`**Order ID**: ${orderID}`); + } + + const body = lines.join('\n'); + core.debug(`>>> Cleaned issue body: ${body}`); + + const labels = issue.data.labels.map((label) => label.name); + + const productMap = { + 'Data Grid': 'data grid', + 'Date and Time Pickers': 'pickers', + Charts: 'charts', + 'Tree View': 'tree view', + }; + + if (products !== '') { + products.split(',').forEach((product) => { + if (productMap[product.trim()]) { + labels.push(`component: ${productMap[product.trim()]}`); + } + }); + } + + core.debug(`>>> Labels: ${labels.join(',')}`); + + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body, + labels, + }); + } catch (error) { + core.setFailed(error.message); + } +}; diff --git a/scripts/orderIdValidation.js b/scripts/githubActions/orderIdValidation.js similarity index 84% rename from scripts/orderIdValidation.js rename to scripts/githubActions/orderIdValidation.js index 75818017e586..21a0ca3c609e 100644 --- a/scripts/orderIdValidation.js +++ b/scripts/githubActions/orderIdValidation.js @@ -10,7 +10,9 @@ module.exports = async ({ core, context, github }) => { const repo = context.repo.repo; const issueNumber = context.issue.number; + const orderId = process.env.ORDER_ID; const orderApiToken = process.env.ORDER_API_TOKEN; + const orderApi = 'https://store-wp.mui.com/wp-json/wc/v3/orders/'; const issue = await github.rest.issues.get({ @@ -19,17 +21,10 @@ module.exports = async ({ core, context, github }) => { issue_number: issueNumber, }); - core.debug(`>>> Issue Body: ${issue.data.body}`); - - // add to this regex the possibility that the ORDER ID is wrapped in ** or __ - const orderIdRegex = /(?:\*|_){0,2}?Order ID(?:\*|_){0,2}?: (\d+)/; - const orderIdMatch = issue.data.body.match(orderIdRegex); - const orderId = orderIdMatch ? orderIdMatch[1] : null; - core.debug(`>>> Order ID: ${orderId}`); if (!orderId) { - core.info('No Order ID found in issue body'); + core.info('No Order ID'); } else { const order = await fetch(`${orderApi}${orderId}`, { headers: { From a5ac75f6a25057003381d92832b4493474ee973d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:43:12 +0300 Subject: [PATCH 699/912] Bump chai to ^4.5.0 (#14010) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 42 ++++++++++++++++++++++++------------------ test/package.json | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 90594ef3d74b..72d0b7b6c985 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "babel-plugin-replace-imports": "^1.0.2", "babel-plugin-search-and-replace": "^1.1.1", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "chai": "^4.4.1", + "chai": "^4.5.0", "chai-dom": "^1.12.0", "compression-webpack-plugin": "^11.1.0", "concurrently": "^8.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8860a695d0a..1466803e3db9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -195,11 +195,11 @@ importers: specifier: ^0.4.24 version: 0.4.24 chai: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.5.0 + version: 4.5.0 chai-dom: specifier: ^1.12.0 - version: 1.12.0(chai@4.4.1) + version: 1.12.0(chai@4.5.0) compression-webpack-plugin: specifier: ^11.1.0 version: 11.1.0(webpack@5.92.1(webpack-cli@5.1.4)) @@ -427,7 +427,7 @@ importers: version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(bfbg3yv4gnxt7j4iquhjyypkpe) + version: 6.0.0-beta.2(7zkky2o3rrn4kau6zvbmzfd264) '@mui/icons-material': specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -1536,8 +1536,8 @@ importers: specifier: ^18.3.3 version: 18.3.3 chai: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.5.0 + version: 4.5.0 dayjs: specifier: ^1.11.11 version: 1.11.11 @@ -4544,8 +4544,8 @@ packages: peerDependencies: chai: '>= 3' - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} chainsaw@0.1.0: @@ -9002,6 +9002,10 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -11104,7 +11108,7 @@ snapshots: '@mui/core-downloads-tracker@5.16.5': {} - '@mui/docs@6.0.0-beta.2(bfbg3yv4gnxt7j4iquhjyypkpe)': + '@mui/docs@6.0.0-beta.2(7zkky2o3rrn4kau6zvbmzfd264)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11112,7 +11116,7 @@ snapshots: '@mui/internal-markdown': 1.0.8 '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - chai: 4.4.1 + chai: 4.5.0 clipboard-copy: 4.0.1 clsx: 2.1.1 next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11168,8 +11172,8 @@ snapshots: '@testing-library/dom': 10.3.1 '@testing-library/react': 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) - chai: 4.4.1 - chai-dom: 1.12.0(chai@4.4.1) + chai: 4.5.0 + chai-dom: 1.12.0(chai@4.5.0) dom-accessibility-api: 0.6.3 format-util: 1.0.5 fs-extra: 11.2.0 @@ -11978,7 +11982,7 @@ snapshots: dependencies: '@sinonjs/commons': 2.0.0 lodash.get: 4.4.2 - type-detect: 4.0.8 + type-detect: 4.1.0 '@sinonjs/text-encoding@0.7.2': {} @@ -13204,11 +13208,11 @@ snapshots: caniuse-lite@1.0.30001642: {} - chai-dom@1.12.0(chai@4.4.1): + chai-dom@1.12.0(chai@4.5.0): dependencies: - chai: 4.4.1 + chai: 4.5.0 - chai@4.4.1: + chai@4.5.0: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -13216,7 +13220,7 @@ snapshots: get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 - type-detect: 4.0.8 + type-detect: 4.1.0 chainsaw@0.1.0: dependencies: @@ -13817,7 +13821,7 @@ snapshots: deep-eql@4.1.3: dependencies: - type-detect: 4.0.8 + type-detect: 4.1.0 deep-equal@2.2.3: dependencies: @@ -18471,6 +18475,8 @@ snapshots: type-detect@4.0.8: {} + type-detect@4.1.0: {} + type-fest@0.18.1: {} type-fest@0.20.2: {} diff --git a/test/package.json b/test/package.json index 78edd30c4204..8ea4fd7beb8d 100644 --- a/test/package.json +++ b/test/package.json @@ -25,7 +25,7 @@ "@types/moment-jalaali": "^0.7.9", "@types/prop-types": "^15.7.12", "@types/react": "^18.3.3", - "chai": "^4.4.1", + "chai": "^4.5.0", "dayjs": "^1.11.11", "moment": "^2.30.1", "moment-jalaali": "^0.10.1", From b84c080f75223208187ead59b43edb87c90485da Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 30 Jul 2024 13:44:34 +0200 Subject: [PATCH 700/912] [charts] Divide the SeriesProvider to use in filtering (#14026) --- .../ChartContainerPro/ChartContainerPro.tsx | 8 +- .../useChartContainerProProps.ts | 4 +- .../src/ChartContainer/ChartContainer.tsx | 13 +- .../ChartContainer/useChartContainerProps.ts | 6 +- .../src/ChartContainer/usePluginsMerge.ts | 2 +- .../src/ChartsLegend/DefaultChartsLegend.tsx | 2 +- packages/x-charts/src/ChartsLegend/utils.ts | 2 +- .../context/CartesianProvider/computeValue.ts | 2 +- .../CartesianProvider/getAxisExtremum.ts | 2 +- .../useHighlighted.test.tsx | 6 +- .../src/context/SeriesContextProvider.tsx | 122 ------------------ .../context/SeriesProvider/Series.types.ts | 42 ++++++ .../context/SeriesProvider/SeriesContext.ts | 12 ++ .../context/SeriesProvider/SeriesProvider.tsx | 30 +++++ .../src/context/SeriesProvider/index.ts | 11 ++ .../context/SeriesProvider/processSeries.ts | 54 ++++++++ .../x-charts/src/hooks/useSeries.test.tsx | 6 +- packages/x-charts/src/hooks/useSeries.ts | 2 +- packages/x-charts/src/hooks/useTicks.ts | 2 +- packages/x-charts/src/internals/index.ts | 2 +- 20 files changed, 177 insertions(+), 153 deletions(-) delete mode 100644 packages/x-charts/src/context/SeriesContextProvider.tsx create mode 100644 packages/x-charts/src/context/SeriesProvider/Series.types.ts create mode 100644 packages/x-charts/src/context/SeriesProvider/SeriesContext.ts create mode 100644 packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx create mode 100644 packages/x-charts/src/context/SeriesProvider/index.ts create mode 100644 packages/x-charts/src/context/SeriesProvider/processSeries.ts diff --git a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx index 5944c37faf9f..2daf4a098657 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx +++ b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx @@ -8,7 +8,7 @@ import { ColorProvider, DrawingProvider, InteractionProvider, - SeriesContextProvider, + SeriesProvider, } from '@mui/x-charts/internals'; import { useLicenseVerifier } from '@mui/x-license/useLicenseVerifier'; import { getReleaseInfo } from '../internals/utils/releaseInfo'; @@ -28,7 +28,7 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( zoomProviderProps, drawingProviderProps, colorProviderProps, - seriesContextProps, + seriesProviderProps, zAxisContextProps, highlightedProviderProps, cartesianContextProps, @@ -41,7 +41,7 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( return ( - + @@ -56,7 +56,7 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( - + ); diff --git a/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts b/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts index fa2c8e6d0ba4..f0a17e423a6e 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts +++ b/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts @@ -12,7 +12,7 @@ export const useChartContainerProProps = ( children, drawingProviderProps, colorProviderProps, - seriesContextProps, + seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, @@ -33,7 +33,7 @@ export const useChartContainerProProps = ( children, drawingProviderProps, colorProviderProps, - seriesContextProps, + seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index eff1fda343d9..2d5555891a35 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -1,10 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { DrawingProvider, DrawingProviderProps } from '../context/DrawingProvider'; -import { - SeriesContextProvider, - SeriesContextProviderProps, -} from '../context/SeriesContextProvider'; +import { SeriesProvider, SeriesProviderProps } from '../context/SeriesProvider'; import { InteractionProvider } from '../context/InteractionProvider'; import { ColorProvider } from '../context/ColorProvider'; import { ChartsSurface, ChartsSurfaceProps } from '../ChartsSurface'; @@ -27,7 +24,7 @@ import { MakeOptional } from '../models/helpers'; export type ChartContainerProps = Omit< ChartsSurfaceProps & - Omit & + Omit & Omit & Pick & ZAxisContextProviderProps & @@ -59,7 +56,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont children, drawingProviderProps, colorProviderProps, - seriesContextProps, + seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, @@ -69,7 +66,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont return ( - + @@ -82,7 +79,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont - + ); diff --git a/packages/x-charts/src/ChartContainer/useChartContainerProps.ts b/packages/x-charts/src/ChartContainer/useChartContainerProps.ts index 2cf69e5c2a09..b25c480bebef 100644 --- a/packages/x-charts/src/ChartContainer/useChartContainerProps.ts +++ b/packages/x-charts/src/ChartContainer/useChartContainerProps.ts @@ -1,7 +1,7 @@ import type { DrawingProviderProps } from '../context/DrawingProvider'; import type { ColorProviderProps } from '../context/ColorProvider'; import type { CartesianContextProviderProps } from '../context/CartesianProvider'; -import type { SeriesContextProviderProps } from '../context/SeriesContextProvider'; +import type { SeriesProviderProps } from '../context/SeriesProvider'; import type { ZAxisContextProviderProps } from '../context/ZAxisContextProvider'; import type { ChartContainerProps } from './ChartContainer'; import { useChartContainerHooks } from './useChartContainerHooks'; @@ -56,7 +56,7 @@ export const useChartContainerProps = ( colorProcessors, }; - const seriesContextProps: Omit = { + const seriesProviderProps: Omit = { series, colors, dataset, @@ -96,7 +96,7 @@ export const useChartContainerProps = ( children, drawingProviderProps, colorProviderProps, - seriesContextProps, + seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, diff --git a/packages/x-charts/src/ChartContainer/usePluginsMerge.ts b/packages/x-charts/src/ChartContainer/usePluginsMerge.ts index b269bf79adfb..66d9034424b3 100644 --- a/packages/x-charts/src/ChartContainer/usePluginsMerge.ts +++ b/packages/x-charts/src/ChartContainer/usePluginsMerge.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { ChartsPluginType, ColorProcessorsConfig, ExtremumGettersConfig } from '../models'; import { ChartSeriesType } from '../models/seriesType/config'; -import { SeriesFormatterConfig } from '../context/SeriesContextProvider'; +import { SeriesFormatterConfig } from '../context/SeriesProvider'; import { defaultPlugins } from './defaultPlugins'; export function usePluginsMerge(plugins?: ChartsPluginType[]) { diff --git a/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx b/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx index a28178f1939b..2c485452fd04 100644 --- a/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { FormattedSeries } from '../context/SeriesContextProvider'; +import { FormattedSeries } from '../context/SeriesProvider'; import { LegendPerItem, LegendPerItemProps } from './LegendPerItem'; import { DrawingArea } from '../context/DrawingProvider'; diff --git a/packages/x-charts/src/ChartsLegend/utils.ts b/packages/x-charts/src/ChartsLegend/utils.ts index eec484649fa3..304831f9062a 100644 --- a/packages/x-charts/src/ChartsLegend/utils.ts +++ b/packages/x-charts/src/ChartsLegend/utils.ts @@ -1,4 +1,4 @@ -import { FormattedSeries } from '../context/SeriesContextProvider'; +import { FormattedSeries } from '../context/SeriesProvider'; import { ChartSeriesType, LegendGetter } from '../models/seriesType/config'; import getBarLegend from '../BarChart/legend'; import getScatterLegend from '../ScatterChart/legend'; diff --git a/packages/x-charts/src/context/CartesianProvider/computeValue.ts b/packages/x-charts/src/context/CartesianProvider/computeValue.ts index 189355e684f2..ab0ee067fbee 100644 --- a/packages/x-charts/src/context/CartesianProvider/computeValue.ts +++ b/packages/x-charts/src/context/CartesianProvider/computeValue.ts @@ -18,7 +18,7 @@ import { getColorScale, getOrdinalColorScale } from '../../internals/colorScale' import { getTickNumber } from '../../hooks/useTicks'; import { getScale } from '../../internals/getScale'; import { DrawingArea } from '../DrawingProvider'; -import { FormattedSeries } from '../SeriesContextProvider'; +import { FormattedSeries } from '../SeriesProvider'; import { getAxisExtremum } from './getAxisExtremum'; import { normalizeAxis } from './normalizeAxis'; diff --git a/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts b/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts index 43a16a657cd4..bcfcfb36cd7d 100644 --- a/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts +++ b/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts @@ -1,6 +1,6 @@ import { AxisConfig, ExtremumGettersConfig } from '../../models'; import { CartesianChartSeriesType, ExtremumGetterResult } from '../../models/seriesType/config'; -import { FormattedSeries } from '../SeriesContextProvider'; +import { FormattedSeries } from '../SeriesProvider'; const axisExtremumCallback = ( acc: ExtremumGetterResult, diff --git a/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx b/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx index 1ed200662456..3008b3a3801d 100644 --- a/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx +++ b/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx @@ -3,7 +3,7 @@ import { expect } from 'chai'; import { ErrorBoundary, createRenderer } from '@mui/internal-test-utils'; import { useHighlighted } from './useHighlighted'; import { HighlightedProvider } from './HighlightedProvider'; -import { SeriesContextProvider } from '../SeriesContextProvider'; +import { SeriesProvider } from '../SeriesProvider'; function UseHighlighted() { const { highlightedItem } = useHighlighted(); @@ -42,11 +42,11 @@ describe('useHighlighted', () => { it('should not throw an error when parent context is present', () => { const { getByText } = render( - + - , + , ); expect(getByText('test-id')).toBeVisible(); diff --git a/packages/x-charts/src/context/SeriesContextProvider.tsx b/packages/x-charts/src/context/SeriesContextProvider.tsx deleted file mode 100644 index 8b27ea3b155d..000000000000 --- a/packages/x-charts/src/context/SeriesContextProvider.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import * as React from 'react'; -import { useTheme } from '@mui/material/styles'; -import { AllSeriesType } from '../models/seriesType'; -import { defaultizeColor } from '../internals/defaultizeColor'; -import { - ChartSeriesType, - DatasetType, - FormatterParams, - FormatterResult, -} from '../models/seriesType/config'; -import { ChartsColorPalette, blueberryTwilightPalette } from '../colorPalettes'; -import { Initializable } from './context.types'; - -export type SeriesFormatterType = ( - series: AllSeriesType[], - colors: string[], - dataset?: DatasetType, -) => { [type in T]?: FormatterResult }; - -export type SeriesContextProviderProps = { - dataset?: DatasetType; - /** - * The array of series to display. - * Each type of series has its own specificity. - * Please refer to the appropriate docs page to learn more about it. - */ - series: AllSeriesType[]; - /** - * Color palette used to colorize multiple series. - * @default blueberryTwilightPalette - */ - colors?: ChartsColorPalette; - /** - * Preprocessors for each series types. - */ - seriesFormatters: SeriesFormatterConfig; - children: React.ReactNode; -}; - -export type FormattedSeries = { [type in ChartSeriesType]?: FormatterResult }; - -export const SeriesContext = React.createContext>({ - isInitialized: false, - data: {}, -}); - -if (process.env.NODE_ENV !== 'production') { - SeriesContext.displayName = 'SeriesContext'; -} - -export type SeriesFormatterConfig = { - // TODO replace the function type by Formatter - [K in T]?: (series: FormatterParams, dataset?: DatasetType) => any; -}; - -/** - * This methods is the interface between what the developer is providing and what components receives - * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified - * It also add defaultized values such as the ids, colors - * @param series The array of series provided by devs - * @param colors The color palette used to defaultize series colors - * @returns An object structuring all the series by type. - */ -const preprocessSeries = ( - series: AllSeriesType[], - colors: string[], - seriesFormatters: SeriesFormatterConfig, - dataset?: DatasetType, -) => { - // Group series by type - const seriesGroups: { [type in ChartSeriesType]?: FormatterParams } = {}; - series.forEach((seriesData, seriesIndex: number) => { - const { id = `auto-generated-id-${seriesIndex}`, type } = seriesData; - - if (seriesGroups[type] === undefined) { - seriesGroups[type] = { series: {}, seriesOrder: [] }; - } - if (seriesGroups[type]?.series[id] !== undefined) { - throw new Error(`MUI X: series' id "${id}" is not unique.`); - } - - seriesGroups[type]!.series[id] = { - id, - ...defaultizeColor(seriesData, seriesIndex, colors), - }; - seriesGroups[type]!.seriesOrder.push(id); - }); - - const formattedSeries: FormattedSeries = {}; - // Apply formatter on a type group - (Object.keys(seriesFormatters) as T[]).forEach((type) => { - const group = seriesGroups[type]; - if (group !== undefined) { - formattedSeries[type] = seriesFormatters[type]?.(group, dataset) ?? seriesGroups[type]; - } - }); - - return formattedSeries; -}; - -function SeriesContextProvider(props: SeriesContextProviderProps) { - const { series, dataset, colors = blueberryTwilightPalette, seriesFormatters, children } = props; - - const theme = useTheme(); - - const formattedSeries = React.useMemo( - () => ({ - isInitialized: true, - data: preprocessSeries( - series, - typeof colors === 'function' ? colors(theme.palette.mode) : colors, - seriesFormatters, - dataset as DatasetType, - ), - }), - [series, colors, theme.palette.mode, seriesFormatters, dataset], - ); - - return {children}; -} - -export { SeriesContextProvider }; diff --git a/packages/x-charts/src/context/SeriesProvider/Series.types.ts b/packages/x-charts/src/context/SeriesProvider/Series.types.ts new file mode 100644 index 000000000000..ce863244ab65 --- /dev/null +++ b/packages/x-charts/src/context/SeriesProvider/Series.types.ts @@ -0,0 +1,42 @@ +import * as React from 'react'; +import { AllSeriesType } from '../../models/seriesType'; +import { + ChartSeriesType, + DatasetType, + FormatterParams, + FormatterResult, +} from '../../models/seriesType/config'; +import { ChartsColorPalette } from '../../colorPalettes'; + +export type SeriesFormatterType = ( + series: AllSeriesType[], + colors: string[], + dataset?: DatasetType, +) => { [type in T]?: FormatterResult }; + +export type SeriesProviderProps = { + dataset?: DatasetType; + /** + * The array of series to display. + * Each type of series has its own specificity. + * Please refer to the appropriate docs page to learn more about it. + */ + series: AllSeriesType[]; + /** + * Color palette used to colorize multiple series. + * @default blueberryTwilightPalette + */ + colors?: ChartsColorPalette; + /** + * Preprocessors for each series types. + */ + seriesFormatters: SeriesFormatterConfig; + children: React.ReactNode; +}; + +export type FormattedSeries = { [type in ChartSeriesType]?: FormatterResult }; + +export type SeriesFormatterConfig = { + // TODO replace the function type by Formatter + [K in T]?: (series: FormatterParams, dataset?: DatasetType) => any; +}; diff --git a/packages/x-charts/src/context/SeriesProvider/SeriesContext.ts b/packages/x-charts/src/context/SeriesProvider/SeriesContext.ts new file mode 100644 index 000000000000..712d5bdb6e0c --- /dev/null +++ b/packages/x-charts/src/context/SeriesProvider/SeriesContext.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { Initializable } from '../context.types'; +import { FormattedSeries } from './Series.types'; + +export const SeriesContext = React.createContext>({ + isInitialized: false, + data: {}, +}); + +if (process.env.NODE_ENV !== 'production') { + SeriesContext.displayName = 'SeriesContext'; +} diff --git a/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx b/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx new file mode 100644 index 000000000000..9925208933bc --- /dev/null +++ b/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx @@ -0,0 +1,30 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import { ChartSeriesType, DatasetType } from '../../models/seriesType/config'; +import { blueberryTwilightPalette } from '../../colorPalettes'; +import { SeriesProviderProps } from './Series.types'; +import { SeriesContext } from './SeriesContext'; +import { preprocessSeries } from './processSeries'; + +function SeriesProvider(props: SeriesProviderProps) { + const { series, dataset, colors = blueberryTwilightPalette, seriesFormatters, children } = props; + + const theme = useTheme(); + + const formattedSeries = React.useMemo( + () => ({ + isInitialized: true, + data: preprocessSeries({ + series, + colors: typeof colors === 'function' ? colors(theme.palette.mode) : colors, + seriesFormatters, + dataset: dataset as DatasetType, + }), + }), + [series, colors, theme.palette.mode, seriesFormatters, dataset], + ); + + return {children}; +} + +export { SeriesProvider }; diff --git a/packages/x-charts/src/context/SeriesProvider/index.ts b/packages/x-charts/src/context/SeriesProvider/index.ts new file mode 100644 index 000000000000..852fb6928868 --- /dev/null +++ b/packages/x-charts/src/context/SeriesProvider/index.ts @@ -0,0 +1,11 @@ +import { preprocessSeries } from './processSeries'; + +export * from './SeriesProvider'; +export * from './SeriesContext'; +export * from './Series.types'; + +const seriesProviderUtils = { + preprocessSeries, +}; + +export { seriesProviderUtils }; diff --git a/packages/x-charts/src/context/SeriesProvider/processSeries.ts b/packages/x-charts/src/context/SeriesProvider/processSeries.ts new file mode 100644 index 000000000000..7f00c1e0b229 --- /dev/null +++ b/packages/x-charts/src/context/SeriesProvider/processSeries.ts @@ -0,0 +1,54 @@ +import { AllSeriesType } from '../../models/seriesType'; +import { defaultizeColor } from '../../internals/defaultizeColor'; +import { ChartSeriesType, DatasetType, FormatterParams } from '../../models/seriesType/config'; +import { FormattedSeries, SeriesFormatterConfig } from './Series.types'; + +/** + * This methods is the interface between what the developer is providing and what components receives + * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified + * It also add defaultized values such as the ids, colors + * @param series The array of series provided by the developer + * @param colors The color palette used to defaultize series colors + * @returns An object structuring all the series by type. + */ +export const preprocessSeries = ({ + series, + colors, + seriesFormatters, + dataset, +}: { + series: AllSeriesType[]; + colors: string[]; + seriesFormatters: SeriesFormatterConfig; + dataset?: DatasetType; +}) => { + // Group series by type + const seriesGroups: { [type in ChartSeriesType]?: FormatterParams } = {}; + series.forEach((seriesData, seriesIndex: number) => { + const { id = `auto-generated-id-${seriesIndex}`, type } = seriesData; + + if (seriesGroups[type] === undefined) { + seriesGroups[type] = { series: {}, seriesOrder: [] }; + } + if (seriesGroups[type]?.series[id] !== undefined) { + throw new Error(`MUI X: series' id "${id}" is not unique.`); + } + + seriesGroups[type]!.series[id] = { + id, + ...defaultizeColor(seriesData, seriesIndex, colors), + }; + seriesGroups[type]!.seriesOrder.push(id); + }); + + const formattedSeries: FormattedSeries = {}; + // Apply formatter on a type group + (Object.keys(seriesFormatters) as T[]).forEach((type) => { + const group = seriesGroups[type]; + if (group !== undefined) { + formattedSeries[type] = seriesFormatters[type]?.(group, dataset) ?? seriesGroups[type]; + } + }); + + return formattedSeries; +}; diff --git a/packages/x-charts/src/hooks/useSeries.test.tsx b/packages/x-charts/src/hooks/useSeries.test.tsx index 0e2d247a0b40..d4def2d8df7c 100644 --- a/packages/x-charts/src/hooks/useSeries.test.tsx +++ b/packages/x-charts/src/hooks/useSeries.test.tsx @@ -3,7 +3,7 @@ import { expect } from 'chai'; import { ErrorBoundary, createRenderer } from '@mui/internal-test-utils'; import { useSeries } from './useSeries'; import barFormatter from '../BarChart/formatter'; -import { SeriesContextProvider } from '../context/SeriesContextProvider'; +import { SeriesProvider } from '../context/SeriesProvider'; function UseSeries() { const { bar } = useSeries(); @@ -42,12 +42,12 @@ describe('useSeries', () => { it('should not throw an error when parent context is present', () => { const { getByText } = render( - - , + , ); expect(getByText('test-id')).toBeVisible(); diff --git a/packages/x-charts/src/hooks/useSeries.ts b/packages/x-charts/src/hooks/useSeries.ts index 4b4d7fa6e079..ab771ed1bca2 100644 --- a/packages/x-charts/src/hooks/useSeries.ts +++ b/packages/x-charts/src/hooks/useSeries.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { FormattedSeries, SeriesContext } from '../context/SeriesContextProvider'; +import { FormattedSeries, SeriesContext } from '../context/SeriesProvider'; /** * Get access to the internal state of series. diff --git a/packages/x-charts/src/hooks/useTicks.ts b/packages/x-charts/src/hooks/useTicks.ts index ecc42b5727fe..4b41fe74eeab 100644 --- a/packages/x-charts/src/hooks/useTicks.ts +++ b/packages/x-charts/src/hooks/useTicks.ts @@ -46,7 +46,7 @@ export interface TickParams { export function getTickNumber( params: TickParams & { - range: any[]; + range: number[]; domain: any[]; }, ) { diff --git a/packages/x-charts/src/internals/index.ts b/packages/x-charts/src/internals/index.ts index 9a2d7f7ae017..193cc1769bb5 100644 --- a/packages/x-charts/src/internals/index.ts +++ b/packages/x-charts/src/internals/index.ts @@ -28,7 +28,7 @@ export * from '../context/CartesianProvider'; export * from '../context/DrawingProvider'; export * from '../context/ColorProvider'; export * from '../context/InteractionProvider'; -export * from '../context/SeriesContextProvider'; +export * from '../context/SeriesProvider'; export * from '../context/ZAxisContextProvider'; export type * from '../context/context.types'; From acfcb3b90fedad413dc15ec4cdbb8fdd83b35f27 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Tue, 30 Jul 2024 13:53:30 +0200 Subject: [PATCH 701/912] [TreeView] Add new prop `onItemClick` on the Tree View components (#14018) --- .../rich-tree-view/items/OnItemClick.js | 56 +++++++++++++++++++ .../rich-tree-view/items/OnItemClick.tsx | 56 +++++++++++++++++++ .../items/OnItemClick.tsx.preview | 11 ++++ .../tree-view/rich-tree-view/items/items.md | 6 ++ .../selection/TrackItemSelectionToggle.js | 3 +- .../selection/TrackItemSelectionToggle.tsx | 2 +- .../simple-tree-view/items/OnItemClick.js | 39 +++++++++++++ .../simple-tree-view/items/OnItemClick.tsx | 39 +++++++++++++ .../tree-view/simple-tree-view/items/items.md | 6 ++ .../selection/TrackItemSelectionToggle.js | 2 +- .../selection/TrackItemSelectionToggle.tsx | 2 +- .../pages/x/api/tree-view/rich-tree-view.json | 11 +++- .../x/api/tree-view/simple-tree-view.json | 11 +++- docs/pages/x/api/tree-view/tree-view.json | 11 +++- .../rich-tree-view/rich-tree-view.json | 12 +++- .../simple-tree-view/simple-tree-view.json | 12 +++- .../tree-view/tree-view/tree-view.json | 12 +++- .../src/RichTreeView/RichTreeView.tsx | 11 +++- .../src/SimpleTreeView/SimpleTreeView.tsx | 11 +++- .../x-tree-view/src/TreeItem/TreeItem.tsx | 3 +- .../src/TreeItem/TreeItemContent.tsx | 3 + .../src/TreeItem/useTreeItemState.ts | 2 + .../x-tree-view/src/TreeView/TreeView.tsx | 11 +++- .../useTreeViewFocus.types.ts | 5 +- .../useTreeViewItems.test.tsx | 29 ++++++++++ .../useTreeViewItems/useTreeViewItems.tsx | 8 ++- .../useTreeViewItems.types.ts | 17 +++++- .../src/useTreeItem2/useTreeItem2.ts | 5 +- test/utils/tree-view/fakeContextValue.ts | 6 +- 29 files changed, 359 insertions(+), 43 deletions(-) create mode 100644 docs/data/tree-view/rich-tree-view/items/OnItemClick.js create mode 100644 docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx create mode 100644 docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx.preview create mode 100644 docs/data/tree-view/simple-tree-view/items/OnItemClick.js create mode 100644 docs/data/tree-view/simple-tree-view/items/OnItemClick.tsx diff --git a/docs/data/tree-view/rich-tree-view/items/OnItemClick.js b/docs/data/tree-view/rich-tree-view/items/OnItemClick.js new file mode 100644 index 000000000000..4d89a64feb0e --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/items/OnItemClick.js @@ -0,0 +1,56 @@ +import * as React from 'react'; +import Stack from '@mui/material/Stack'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnItemClick() { + const [lastClickedItem, setLastClickedItem] = React.useState(null); + + return ( + + + {lastClickedItem == null + ? 'No item click recorded' + : `Last clicked item: ${lastClickedItem}`} + + + setLastClickedItem(itemId)} + /> + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx b/docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx new file mode 100644 index 000000000000..108b3c6a67a1 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx @@ -0,0 +1,56 @@ +import * as React from 'react'; +import Stack from '@mui/material/Stack'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnItemClick() { + const [lastClickedItem, setLastClickedItem] = React.useState(null); + + return ( + + + {lastClickedItem == null + ? 'No item click recorded' + : `Last clicked item: ${lastClickedItem}`} + + + setLastClickedItem(itemId)} + /> + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx.preview b/docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx.preview new file mode 100644 index 000000000000..d63a90f87356 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/items/OnItemClick.tsx.preview @@ -0,0 +1,11 @@ + + {lastClickedItem == null + ? 'No item click recorded' + : `Last clicked item: ${lastClickedItem}`} + + + setLastClickedItem(itemId)} + /> + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/items/items.md b/docs/data/tree-view/rich-tree-view/items/items.md index 6180d5f9f074..604336992c08 100644 --- a/docs/data/tree-view/rich-tree-view/items/items.md +++ b/docs/data/tree-view/rich-tree-view/items/items.md @@ -143,6 +143,12 @@ When it's set to true: {{"demo": "DisabledItemsFocusable.js", "defaultCodeOpen": false}} +## Track item clicks + +Use the `onItemClick` prop to track the clicked item: + +{{"demo": "OnItemClick.js"}} + ## Imperative API ### Get an item by ID diff --git a/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.js b/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.js index 9d310064592c..4a527ce73b8e 100644 --- a/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.js +++ b/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.js @@ -1,9 +1,8 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; -import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; - import Typography from '@mui/material/Typography'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; const MUI_X_PRODUCTS = [ { diff --git a/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.tsx b/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.tsx index 50893614cde5..987cfbc9ed44 100644 --- a/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.tsx +++ b/docs/data/tree-view/rich-tree-view/selection/TrackItemSelectionToggle.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import { TreeViewBaseItem } from '@mui/x-tree-view/models'; -import Typography from '@mui/material/Typography'; const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ { diff --git a/docs/data/tree-view/simple-tree-view/items/OnItemClick.js b/docs/data/tree-view/simple-tree-view/items/OnItemClick.js new file mode 100644 index 000000000000..6554729941dc --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/items/OnItemClick.js @@ -0,0 +1,39 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function OnItemClick() { + const [lastClickedItem, setLastClickedItem] = React.useState(null); + + return ( + + + {lastClickedItem == null + ? 'No item click recorded' + : `Last clicked item: ${lastClickedItem}`} + + + setLastClickedItem(itemId)}> + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/items/OnItemClick.tsx b/docs/data/tree-view/simple-tree-view/items/OnItemClick.tsx new file mode 100644 index 000000000000..1340a787f1a9 --- /dev/null +++ b/docs/data/tree-view/simple-tree-view/items/OnItemClick.tsx @@ -0,0 +1,39 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; +import { TreeItem } from '@mui/x-tree-view/TreeItem'; + +export default function OnItemClick() { + const [lastClickedItem, setLastClickedItem] = React.useState(null); + + return ( + + + {lastClickedItem == null + ? 'No item click recorded' + : `Last clicked item: ${lastClickedItem}`} + + + setLastClickedItem(itemId)}> + + + + + + + + + + + + + + + + + + + ); +} diff --git a/docs/data/tree-view/simple-tree-view/items/items.md b/docs/data/tree-view/simple-tree-view/items/items.md index efffddcf5574..755b162c915d 100644 --- a/docs/data/tree-view/simple-tree-view/items/items.md +++ b/docs/data/tree-view/simple-tree-view/items/items.md @@ -74,6 +74,12 @@ When it's set to true: {{"demo": "DisabledItemsFocusable.js", "defaultCodeOpen": false}} +## Track item clicks + +Use the `onItemClick` prop to track the clicked item: + +{{"demo": "OnItemClick.js"}} + ## Imperative API ### Get an item's DOM element by ID diff --git a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js index a42fbf9f74a7..32a2df8674ce 100644 --- a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js +++ b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.js @@ -1,9 +1,9 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem } from '@mui/x-tree-view/TreeItem'; -import Typography from '@mui/material/Typography'; export default function TrackItemSelectionToggle() { const [lastSelectedItem, setLastSelectedItem] = React.useState(null); diff --git a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx index 665c44a496fc..e13f86336676 100644 --- a/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx +++ b/docs/data/tree-view/simple-tree-view/selection/TrackItemSelectionToggle.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem } from '@mui/x-tree-view/TreeItem'; -import Typography from '@mui/material/Typography'; export default function TrackItemSelectionToggle() { const [lastSelectedItem, setLastSelectedItem] = React.useState( diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 1ddd92846779..7857c5c370ba 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -62,6 +62,13 @@ "describedArgs": ["event", "itemIds"] } }, + "onItemClick": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.MouseEvent, itemId: string) => void", + "describedArgs": ["event", "itemId"] + } + }, "onItemExpansionToggle": { "type": { "name": "func" }, "signature": { @@ -72,8 +79,8 @@ "onItemFocus": { "type": { "name": "func" }, "signature": { - "type": "function(event: React.SyntheticEvent, itemId: string, value: string) => void", - "describedArgs": ["event", "itemId", "value"] + "type": "function(event: React.SyntheticEvent | null, itemId: string) => void", + "describedArgs": ["event", "itemId"] } }, "onItemSelectionToggle": { diff --git a/docs/pages/x/api/tree-view/simple-tree-view.json b/docs/pages/x/api/tree-view/simple-tree-view.json index 77f288c32b52..8089af6898d0 100644 --- a/docs/pages/x/api/tree-view/simple-tree-view.json +++ b/docs/pages/x/api/tree-view/simple-tree-view.json @@ -37,6 +37,13 @@ "describedArgs": ["event", "itemIds"] } }, + "onItemClick": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.MouseEvent, itemId: string) => void", + "describedArgs": ["event", "itemId"] + } + }, "onItemExpansionToggle": { "type": { "name": "func" }, "signature": { @@ -47,8 +54,8 @@ "onItemFocus": { "type": { "name": "func" }, "signature": { - "type": "function(event: React.SyntheticEvent, itemId: string, value: string) => void", - "describedArgs": ["event", "itemId", "value"] + "type": "function(event: React.SyntheticEvent | null, itemId: string) => void", + "describedArgs": ["event", "itemId"] } }, "onItemSelectionToggle": { diff --git a/docs/pages/x/api/tree-view/tree-view.json b/docs/pages/x/api/tree-view/tree-view.json index 97dbf8d7ac54..d75b315dc75b 100644 --- a/docs/pages/x/api/tree-view/tree-view.json +++ b/docs/pages/x/api/tree-view/tree-view.json @@ -37,6 +37,13 @@ "describedArgs": ["event", "itemIds"] } }, + "onItemClick": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.MouseEvent, itemId: string) => void", + "describedArgs": ["event", "itemId"] + } + }, "onItemExpansionToggle": { "type": { "name": "func" }, "signature": { @@ -47,8 +54,8 @@ "onItemFocus": { "type": { "name": "func" }, "signature": { - "type": "function(event: React.SyntheticEvent, itemId: string, value: string) => void", - "describedArgs": ["event", "itemId", "value"] + "type": "function(event: React.SyntheticEvent | null, itemId: string) => void", + "describedArgs": ["event", "itemId"] } }, "onItemSelectionToggle": { diff --git a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json index ea67296629a8..3b94a5f52442 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json @@ -58,6 +58,13 @@ "itemIds": "The ids of the expanded items." } }, + "onItemClick": { + "description": "Callback fired when the content slot of a given tree item is clicked.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemId": "The id of the focused item." + } + }, "onItemExpansionToggle": { "description": "Callback fired when a tree item is expanded or collapsed.", "typeDescriptions": { @@ -67,11 +74,10 @@ } }, "onItemFocus": { - "description": "Callback fired when tree items are focused.", + "description": "Callback fired when a given tree item is focused.", "typeDescriptions": { "event": "The DOM event that triggered the change. Warning: This is a generic event not a focus event.", - "itemId": "The id of the focused item.", - "value": "of the focused item." + "itemId": "The id of the focused item." } }, "onItemSelectionToggle": { diff --git a/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json b/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json index bd1994ea533b..a56fd8d2d75a 100644 --- a/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json +++ b/docs/translations/api-docs/tree-view/simple-tree-view/simple-tree-view.json @@ -44,6 +44,13 @@ "itemIds": "The ids of the expanded items." } }, + "onItemClick": { + "description": "Callback fired when the content slot of a given tree item is clicked.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemId": "The id of the focused item." + } + }, "onItemExpansionToggle": { "description": "Callback fired when a tree item is expanded or collapsed.", "typeDescriptions": { @@ -53,11 +60,10 @@ } }, "onItemFocus": { - "description": "Callback fired when tree items are focused.", + "description": "Callback fired when a given tree item is focused.", "typeDescriptions": { "event": "The DOM event that triggered the change. Warning: This is a generic event not a focus event.", - "itemId": "The id of the focused item.", - "value": "of the focused item." + "itemId": "The id of the focused item." } }, "onItemSelectionToggle": { diff --git a/docs/translations/api-docs/tree-view/tree-view/tree-view.json b/docs/translations/api-docs/tree-view/tree-view/tree-view.json index dde9a0faa577..765c53c0efd9 100644 --- a/docs/translations/api-docs/tree-view/tree-view/tree-view.json +++ b/docs/translations/api-docs/tree-view/tree-view/tree-view.json @@ -44,6 +44,13 @@ "itemIds": "The ids of the expanded items." } }, + "onItemClick": { + "description": "Callback fired when the content slot of a given tree item is clicked.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemId": "The id of the focused item." + } + }, "onItemExpansionToggle": { "description": "Callback fired when a tree item is expanded or collapsed.", "typeDescriptions": { @@ -53,11 +60,10 @@ } }, "onItemFocus": { - "description": "Callback fired when tree items are focused.", + "description": "Callback fired when a given tree item is focused.", "typeDescriptions": { "event": "The DOM event that triggered the change. Warning: This is a generic event not a focus event.", - "itemId": "The id of the focused item.", - "value": "of the focused item." + "itemId": "The id of the focused item." } }, "onItemSelectionToggle": { diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index 0736c5efa810..2c54294e6a71 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -254,6 +254,12 @@ RichTreeView.propTypes = { * @param {array} itemIds The ids of the expanded items. */ onExpandedItemsChange: PropTypes.func, + /** + * Callback fired when the `content` slot of a given tree item is clicked. + * @param {React.MouseEvent} event The DOM event that triggered the change. + * @param {string} itemId The id of the focused item. + */ + onItemClick: PropTypes.func, /** * Callback fired when a tree item is expanded or collapsed. * @param {React.SyntheticEvent} event The DOM event that triggered the change. @@ -262,10 +268,9 @@ RichTreeView.propTypes = { */ onItemExpansionToggle: PropTypes.func, /** - * Callback fired when tree items are focused. - * @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. + * Callback fired when a given tree item is focused. + * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. * @param {string} itemId The id of the focused item. - * @param {string} value of the focused item. */ onItemFocus: PropTypes.func, /** diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx index 2763dfc3e658..b00eced03286 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx @@ -191,6 +191,12 @@ SimpleTreeView.propTypes = { * @param {array} itemIds The ids of the expanded items. */ onExpandedItemsChange: PropTypes.func, + /** + * Callback fired when the `content` slot of a given tree item is clicked. + * @param {React.MouseEvent} event The DOM event that triggered the change. + * @param {string} itemId The id of the focused item. + */ + onItemClick: PropTypes.func, /** * Callback fired when a tree item is expanded or collapsed. * @param {React.SyntheticEvent} event The DOM event that triggered the change. @@ -199,10 +205,9 @@ SimpleTreeView.propTypes = { */ onItemExpansionToggle: PropTypes.func, /** - * Callback fired when tree items are focused. - * @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. + * Callback fired when a given tree item is focused. + * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. * @param {string} itemId The id of the focused item. - * @param {string} value of the focused item. */ onItemFocus: PropTypes.func, /** diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index b048be14f8dc..13883b1ac5b6 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -187,10 +187,9 @@ export const TreeItem = React.forwardRef(function TreeItem( const { icons: contextIcons, runItemPlugins, + items: { disabledItemsFocusable, indentationAtItemLevel }, selection: { multiSelect }, expansion: { expansionTrigger }, - disabledItemsFocusable, - indentationAtItemLevel, instance, } = useTreeViewContext(); const depthContext = React.useContext(TreeViewItemDepthContext); diff --git a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx index c04b65ed08ea..621acf067db1 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx @@ -81,6 +81,7 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( handleExpansion, handleSelection, handleCheckboxSelection, + handleContentClick, preventSelection, expansionTrigger, } = useTreeItemState(itemId); @@ -97,6 +98,8 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( }; const handleClick = (event: React.MouseEvent) => { + handleContentClick?.(event, itemId); + if (checkboxRef.current?.contains(event.target as HTMLElement)) { return; } diff --git a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts index 531f340b62c2..829c35ff696c 100644 --- a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts +++ b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts @@ -17,6 +17,7 @@ type UseTreeItemStateOptionalPlugins = readonly []; export function useTreeItemState(itemId: string) { const { instance, + items: { onItemClick }, selection: { multiSelect, checkboxSelection, disableSelection }, expansion: { expansionTrigger }, } = useTreeViewContext(); @@ -96,6 +97,7 @@ export function useTreeItemState(itemId: string) { handleExpansion, handleSelection, handleCheckboxSelection, + handleContentClick: onItemClick, preventSelection, expansionTrigger, }; diff --git a/packages/x-tree-view/src/TreeView/TreeView.tsx b/packages/x-tree-view/src/TreeView/TreeView.tsx index b5c09b361f67..ad40046fb705 100644 --- a/packages/x-tree-view/src/TreeView/TreeView.tsx +++ b/packages/x-tree-view/src/TreeView/TreeView.tsx @@ -178,6 +178,12 @@ TreeView.propTypes = { * @param {array} itemIds The ids of the expanded items. */ onExpandedItemsChange: PropTypes.func, + /** + * Callback fired when the `content` slot of a given tree item is clicked. + * @param {React.MouseEvent} event The DOM event that triggered the change. + * @param {string} itemId The id of the focused item. + */ + onItemClick: PropTypes.func, /** * Callback fired when a tree item is expanded or collapsed. * @param {React.SyntheticEvent} event The DOM event that triggered the change. @@ -186,10 +192,9 @@ TreeView.propTypes = { */ onItemExpansionToggle: PropTypes.func, /** - * Callback fired when tree items are focused. - * @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. + * Callback fired when a given tree item is focused. + * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. * @param {string} itemId The id of the focused item. - * @param {string} value of the focused item. */ onItemFocus: PropTypes.func, /** diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts index ec7c9d9958a5..9fb3d1038316 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.ts @@ -40,10 +40,9 @@ export interface UseTreeViewFocusInstance extends UseTreeViewFocusPublicAPI { export interface UseTreeViewFocusParameters { /** - * Callback fired when tree items are focused. - * @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. + * Callback fired when a given tree item is focused. + * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. * @param {string} itemId The id of the focused item. - * @param {string} value of the focused item. */ onItemFocus?: (event: React.SyntheticEvent | null, itemId: string) => void; } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx index 0c4f938375f1..7c2a65c072f6 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx @@ -183,6 +183,35 @@ describeTreeView< }); }); + describe('onItemClick prop', () => { + it('should call onItemClick when clicking on the content of an item', () => { + const onItemClick = spy(); + + const response = render({ + items: [{ id: '1' }], + onItemClick, + }); + + fireEvent.click(response.getItemContent('1')); + expect(onItemClick.callCount).to.equal(1); + expect(onItemClick.lastCall.lastArg).to.equal('1'); + }); + + it('should not call onItemClick for the ancestors on the clicked item', () => { + const onItemClick = spy(); + + const response = render({ + items: [{ id: '1', children: [{ id: '1.1' }] }], + defaultExpandedItems: ['1'], + onItemClick, + }); + + fireEvent.click(response.getItemContent('1.1')); + expect(onItemClick.callCount).to.equal(1); + expect(onItemClick.lastCall.lastArg).to.equal('1.1'); + }); + }); + describe('API methods', () => { describe('getItem', () => { // This method is only usable with Rich Tree View components diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.tsx index e5488fdc03e3..01ac6d4de49c 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.tsx @@ -272,8 +272,11 @@ export const useTreeViewItems: TreeViewPlugin = ({ areItemUpdatesPrevented, }, contextValue: { - disabledItemsFocusable: params.disabledItemsFocusable, - indentationAtItemLevel: experimentalFeatures.indentationAtItemLevel ?? false, + items: { + onItemClick: params.onItemClick, + disabledItemsFocusable: params.disabledItemsFocusable, + indentationAtItemLevel: experimentalFeatures.indentationAtItemLevel ?? false, + }, }, }; }; @@ -307,5 +310,6 @@ useTreeViewItems.params = { isItemDisabled: true, getItemLabel: true, getItemId: true, + onItemClick: true, itemChildrenIndentation: true, }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 266c5b00de4f..24ce69a01b89 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -1,3 +1,4 @@ +import * as React from 'react'; import { TreeViewItemMeta, DefaultizedProps, TreeViewPluginSignature } from '../../models'; import { TreeViewBaseItem, TreeViewItemId } from '../../../models'; @@ -116,6 +117,12 @@ export interface UseTreeViewItemsParameters { * @default (item) => item.id */ getItemId?: (item: R) => TreeViewItemId; + /** + * Callback fired when the `content` slot of a given tree item is clicked. + * @param {React.MouseEvent} event The DOM event that triggered the change. + * @param {string} itemId The id of the focused item. + */ + onItemClick?: (event: React.MouseEvent, itemId: string) => void; /** * Horizontal indentation between an item and its children. * Examples: 24, "24px", "2rem", "2em". @@ -144,9 +151,13 @@ export interface UseTreeViewItemsState { }; } -interface UseTreeViewItemsContextValue - extends Pick, 'disabledItemsFocusable'> { - indentationAtItemLevel: boolean; +interface UseTreeViewItemsContextValue { + items: Pick< + UseTreeViewItemsDefaultizedParameters, + 'disabledItemsFocusable' | 'onItemClick' + > & { + indentationAtItemLevel: boolean; + }; } export type UseTreeViewItemsSignature = TreeViewPluginSignature<{ diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index 904a6706dcc5..1d9e53e82e91 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -26,10 +26,9 @@ export const useTreeItem2 = < ): UseTreeItem2ReturnValue => { const { runItemPlugins, + items: { onItemClick, disabledItemsFocusable, indentationAtItemLevel }, selection: { multiSelect, disableSelection, checkboxSelection }, expansion: { expansionTrigger }, - disabledItemsFocusable, - indentationAtItemLevel, instance, publicAPI, } = useTreeViewContext(); @@ -82,6 +81,8 @@ export const useTreeItem2 = < const createContentHandleClick = (otherHandlers: EventHandlers) => (event: React.MouseEvent & MuiCancellableEvent) => { otherHandlers.onClick?.(event); + onItemClick?.(event, itemId); + if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target as HTMLElement)) { return; } diff --git a/test/utils/tree-view/fakeContextValue.ts b/test/utils/tree-view/fakeContextValue.ts index 7059f519c205..058ba59ec240 100644 --- a/test/utils/tree-view/fakeContextValue.ts +++ b/test/utils/tree-view/fakeContextValue.ts @@ -30,8 +30,10 @@ export const getFakeContextValue = ( }), wrapItem: ({ children }) => children, wrapRoot: ({ children }) => children, - disabledItemsFocusable: false, - indentationAtItemLevel: false, + items: { + disabledItemsFocusable: false, + indentationAtItemLevel: false, + }, icons: { slots: {}, slotProps: {}, From 9f89e31c65df16c6e19b3cfde705b32b04f6a040 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 30 Jul 2024 14:06:34 +0200 Subject: [PATCH 702/912] [core] Test `charts` performance with codspeed (#13952) --- .github/workflows/codspeed.yml | 53 + .gitignore | 1 + pnpm-lock.yaml | 1237 +++++++++++++++-- pnpm-workspace.yaml | 1 + test/performance-charts/package.json | 25 + .../tests/BarChart.bench.tsx | 47 + .../tests/LineChart.bench.tsx | 42 + .../tests/ScatterChart.bench.tsx | 42 + test/performance-charts/tsconfig.json | 5 + test/performance-charts/utils/options.ts | 9 + test/performance-charts/vitest.config.ts | 22 + 11 files changed, 1405 insertions(+), 79 deletions(-) create mode 100644 .github/workflows/codspeed.yml create mode 100644 test/performance-charts/package.json create mode 100644 test/performance-charts/tests/BarChart.bench.tsx create mode 100644 test/performance-charts/tests/LineChart.bench.tsx create mode 100644 test/performance-charts/tests/ScatterChart.bench.tsx create mode 100644 test/performance-charts/tsconfig.json create mode 100644 test/performance-charts/utils/options.ts create mode 100644 test/performance-charts/vitest.config.ts diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml new file mode 100644 index 000000000000..b6954350de98 --- /dev/null +++ b/.github/workflows/codspeed.yml @@ -0,0 +1,53 @@ +name: Benchmarks + +on: + push: + branches: + - 'master' + - 'next' + paths: + - 'packages/x-charts*/**' + pull_request: + types: + - labeled + - opened + - synchronize + - reopened + branches: + - 'master' + - 'next' + +jobs: + benchmarks: + name: Benchmarks Charts + runs-on: ubuntu-latest + # L1: Run the benchmarks for pushes to the master or next branch and if the changes are in the charts package based on on.push.paths + # L2: Run the benchmarks if we add the label 'component: charts' to the pull request + # L3: Run the benchmarks for pull requests with the label 'component: charts' + if: > + " + ${{ github.event_name == 'push' }} || + ${{ github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'component: charts' }} || + ${{ github.event_name == 'pull_request' && github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'component: charts')}} + " + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + with: + run_install: false + - name: Use Node.js 20.x + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + with: + node-version: 20 + cache: 'pnpm' # https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#caching-packages-dependencies + - run: pnpm install --frozen-lockfile + # Ensure we are running on the prod version of our libs + # Only charts and license are needed for the benchmarks + - run: pnpm --filter @mui/x-license build + - run: pnpm --filter @mui/x-charts build + - run: pnpm --filter @mui/x-charts-pro build + - name: Run benchmarks + uses: CodSpeedHQ/action@a58b84c0b61569a9cbb7cfb378cc849d65cf1ce5 + with: + run: pnpm --filter @mui-x-internal/performance-charts test:performance + token: ${{ secrets.CODSPEED_TOKEN }} diff --git a/.gitignore b/.gitignore index ca6bf0461cd6..c35b8143932a 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ performance-snapshot.json .github/styles/Google .github/styles/MUI .github/styles/.vale-config +test-results \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1466803e3db9..0f00f0e49401 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -172,7 +172,7 @@ importers: version: 4.9.1 babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) babel-plugin-istanbul: specifier: ^7.0.0 version: 7.0.0 @@ -202,7 +202,7 @@ importers: version: 1.12.0(chai@4.5.0) compression-webpack-plugin: specifier: ^11.1.0 - version: 11.1.0(webpack@5.92.1(webpack-cli@5.1.4)) + version: 11.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -235,7 +235,7 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-import-resolver-webpack: specifier: ^0.13.8 - version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)) + version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) eslint-plugin-filenames: specifier: ^1.3.2 version: 1.3.2(eslint@8.57.0) @@ -283,7 +283,7 @@ importers: version: 14.0.1 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(webpack@5.92.1(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) jsdom: specifier: 24.1.1 version: 24.1.1 @@ -313,10 +313,10 @@ importers: version: 0.4.0 karma-webpack: specifier: ^5.0.1 - version: 5.0.1(webpack@5.92.1(webpack-cli@5.1.4)) + version: 5.0.1(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) lerna: specifier: ^8.1.7 - version: 8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13) + version: 8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -367,10 +367,10 @@ importers: version: 3.0.0 string-replace-loader: specifier: ^3.1.0 - version: 3.1.0(webpack@5.92.1(webpack-cli@5.1.4)) + version: 3.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) terser-webpack-plugin: specifier: ^5.3.10 - version: 5.3.10(webpack@5.92.1(webpack-cli@5.1.4)) + version: 5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) tsx: specifier: ^4.16.2 version: 4.16.2 @@ -385,7 +385,7 @@ importers: version: 0.12.5 webpack: specifier: ^5.92.1 - version: 5.92.1(webpack-cli@5.1.4) + version: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2 @@ -427,7 +427,7 @@ importers: version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(7zkky2o3rrn4kau6zvbmzfd264) + version: 6.0.0-beta.2(2aynwhh2o77ide7mtb5em7e6t4) '@mui/icons-material': specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -683,7 +683,7 @@ importers: version: 4.2.6 '@types/webpack-bundle-analyzer': specifier: ^4.7.0 - version: 4.7.0(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + version: 4.7.0(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) gm: specifier: ^1.25.0 version: 1.25.0 @@ -1566,6 +1566,51 @@ importers: specifier: ^2.1.1 version: 2.1.1(stylis@4.3.2) + test/performance-charts: + devDependencies: + '@codspeed/vitest-plugin': + specifier: ^3.1.0 + version: 3.1.0(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0)) + '@emotion/react': + specifier: ^11.11.4 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@mui/x-charts': + specifier: workspace:* + version: link:../../packages/x-charts/build + '@mui/x-charts-pro': + specifier: workspace:* + version: link:../../packages/x-charts-pro/build + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0)) + '@testing-library/react': + specifier: ^16.0.0 + version: 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': + specifier: ^14.5.2 + version: 14.5.2(@testing-library/dom@10.3.1) + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0)) + '@vitejs/plugin-react-swc': + specifier: ^3.7.0 + version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0)) + '@vitest/ui': + specifier: 2.0.4 + version: 2.0.4(vitest@2.0.4) + jsdom: + specifier: ^24.1.1 + version: 24.1.1 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + vitest: + specifier: 2.0.4 + version: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + packages: '@aashutoshrathi/word-wrap@1.2.6': @@ -1581,6 +1626,9 @@ packages: '@actions/http-client@2.2.1': resolution: {integrity: sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw==} + '@adobe/css-tools@4.4.0': + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + '@algolia/autocomplete-core@1.9.3': resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} @@ -1643,8 +1691,8 @@ packages: '@algolia/transporter@4.22.1': resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} '@argos-ci/core@2.4.0': @@ -2206,6 +2254,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.24.7': resolution: {integrity: sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==} engines: {node: '>=6.9.0'} @@ -2357,6 +2417,21 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@bundled-es-modules/cookie@2.0.0': + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + + '@codspeed/core@3.1.0': + resolution: {integrity: sha512-oYd7X46QhnRkgRbZkqAoX9i3Fwm17FpunK4Ee5RdrvRYR0Xr93ewH8/O5g6uyTPDOOqDEv1v2KRYtWhVgN+2VQ==} + + '@codspeed/vitest-plugin@3.1.0': + resolution: {integrity: sha512-ms11tUytiQTgB+idxZRUuCUQfgz4LaKTDJCLYm5VTSpOCUU7D5+QWvJnA8X8B9glPfR5siIK8RxrnZP4yuysKQ==} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + vitest: '>=1.2.2' + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -2790,6 +2865,22 @@ packages: cpu: [x64] os: [win32] + '@inquirer/confirm@3.1.17': + resolution: {integrity: sha512-qCpt/AABzPynz8tr69VDvhcjwmzAryipWXtW8Vi6m651da4H/d0Bdn55LkxXD7Rp2gfgxvxzTdb66AhIA8gzBA==} + engines: {node: '>=18'} + + '@inquirer/core@9.0.5': + resolution: {integrity: sha512-QWG41I7vn62O9stYKg/juKXt1PEbr/4ZZCPb4KgXDQGwgA9M5NBTQ7FnOvT1ridbxkm/wTxLCNraUs7y47pIRQ==} + engines: {node: '>=18'} + + '@inquirer/figures@1.0.5': + resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==} + engines: {node: '>=18'} + + '@inquirer/type@1.5.1': + resolution: {integrity: sha512-m3YgGQlKNS0BM+8AFiJkCsTqHEFCWn6s/Rqye3mYwvqY6LdfUv12eSwbsgNzrYyrLXiy7IrrjDLPysaSBwEfhw==} + engines: {node: '>=18'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2834,6 +2925,14 @@ packages: resolution: {integrity: sha512-ch81CgU5pBNOiUCQx44F/ZtN4DxxJjUQtuytYRBFWJSHAJ+XPJtiC/yQ9zjr1I1yaUlmNYYblkopoOyziOdJ1w==} engines: {node: '>=18.0.0'} + '@mswjs/cookies@1.1.1': + resolution: {integrity: sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==} + engines: {node: '>=18'} + + '@mswjs/interceptors@0.29.1': + resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} + engines: {node: '>=18'} + '@mui/base@5.0.0-beta.40': resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} engines: {node: '>=12.0.0'} @@ -3446,6 +3545,15 @@ packages: '@octokit/types@9.3.2': resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + '@opentelemetry/api@1.8.0': resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} @@ -3500,6 +3608,86 @@ packages: resolution: {integrity: sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw==} engines: {node: '>=14.0.0'} + '@rollup/rollup-android-arm-eabi@4.18.1': + resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.1': + resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.1': + resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.1': + resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.1': + resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.1': + resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.1': + resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.1': + resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.1': + resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.1': + resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.1': + resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.1': + resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} + cpu: [x64] + os: [win32] + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -3587,12 +3775,84 @@ packages: '@socket.io/component-emitter@3.1.0': resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + '@swc/core-darwin-arm64@1.6.13': + resolution: {integrity: sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.6.13': + resolution: {integrity: sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.6.13': + resolution: {integrity: sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.6.13': + resolution: {integrity: sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.6.13': + resolution: {integrity: sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.6.13': + resolution: {integrity: sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.6.13': + resolution: {integrity: sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.6.13': + resolution: {integrity: sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.6.13': + resolution: {integrity: sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.6.13': + resolution: {integrity: sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.6.13': + resolution: {integrity: sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/types@0.1.9': + resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} + '@tanstack/query-core@5.50.1': resolution: {integrity: sha512-lpfhKPrJlyV2DSVcQb/HuozH3Av3kws4ge22agx+lNGpFkS4vLZ7St0l3GLwlAD+bqB+qXGex3JdRKUNtMviEQ==} @@ -3600,6 +3860,27 @@ packages: resolution: {integrity: sha512-q/WL+vlXMpC0uXDyfsMtc1rmotzLV8Y0gq6q1gfrrDjQeHoeLrqHbxdPvPNAh1i+xuJl7+BezywcXArz7vLqKQ==} engines: {node: '>=18'} + '@testing-library/jest-dom@6.4.6': + resolution: {integrity: sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + '@testing-library/react@16.0.0': resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} engines: {node: '>=18'} @@ -3666,6 +3947,9 @@ packages: '@types/cookie@0.4.1': resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} @@ -3789,6 +4073,9 @@ packages: '@types/moment-jalaali@0.7.9': resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + '@types/node@18.19.42': resolution: {integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg==} @@ -3849,6 +4136,9 @@ packages: '@types/sinonjs__fake-timers@8.1.5': resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + '@types/stylis@4.2.5': resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} @@ -3864,6 +4154,9 @@ packages: '@types/webpack-bundle-analyzer@4.7.0': resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + '@types/ws@7.4.7': resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} @@ -3934,6 +4227,55 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@vitejs/plugin-react-swc@3.7.0': + resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} + peerDependencies: + vite: ^4 || ^5 + + '@vitejs/plugin-react@4.3.1': + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vitest/browser@2.0.4': + resolution: {integrity: sha512-QsIkbqPqHsXvgxjCjjgKjuWKmrC0VJgpaDkuEmOy5gTnErhhifWIfp3HpH92K7cscfaIao+RlKv5f8nUMgjfmA==} + peerDependencies: + playwright: '*' + safaridriver: '*' + vitest: 2.0.4 + webdriverio: '*' + peerDependenciesMeta: + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + + '@vitest/expect@2.0.4': + resolution: {integrity: sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==} + + '@vitest/pretty-format@2.0.4': + resolution: {integrity: sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==} + + '@vitest/runner@2.0.4': + resolution: {integrity: sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==} + + '@vitest/snapshot@2.0.4': + resolution: {integrity: sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==} + + '@vitest/spy@2.0.4': + resolution: {integrity: sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==} + + '@vitest/ui@2.0.4': + resolution: {integrity: sha512-9SNE9ve3kgDkVTxJsY7BjqSwyqDVRJbq/AHVHZs+V0vmr/0cCX6yGT6nOahSXEsXFtKAsvRtBXKlTgr+5njzZQ==} + peerDependencies: + vitest: 2.0.4 + + '@vitest/utils@2.0.4': + resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} + '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -4275,6 +4617,10 @@ packages: assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -4497,6 +4843,10 @@ packages: engines: {node: '>=10.12.0'} hasBin: true + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + cacache@18.0.3: resolution: {integrity: sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==} engines: {node: ^16.14.0 || >=18.0.0} @@ -4548,6 +4898,10 @@ packages: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} + chainsaw@0.1.0: resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} @@ -4559,6 +4913,10 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.0: resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} engines: {node: '>=10'} @@ -4593,6 +4951,10 @@ packages: check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -4645,6 +5007,10 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -4944,6 +5310,9 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -5114,6 +5483,10 @@ packages: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-equal@2.2.3: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} @@ -5591,6 +5964,9 @@ packages: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} engines: {node: '>=8.3.0'} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -5621,6 +5997,10 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + execa@9.3.0: resolution: {integrity: sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==} engines: {node: ^18.19.0 || >=20.5.0} @@ -5680,6 +6060,9 @@ packages: fastq@1.17.0: resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + fg-loadcss@3.1.0: resolution: {integrity: sha512-UgtXKza8nBUO6UWW4c+MOprRL4W5WbIkzPJafnw6y6f5jhA3FiSZkWz8eXeAeX+mC4A/qq0ByDLiAk6erNARaQ==} engines: {node: '>= 11.9.0'} @@ -5760,8 +6143,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} flow-parser@0.227.0: resolution: {integrity: sha512-nOygtGKcX/siZK/lFzpfdHEfOkfGcTW7rNroR1Zsz6T/JxSahPALXVt5qVHq/fgvMJuv096BTKbgxN3PzVBaDA==} @@ -5914,6 +6297,10 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -6034,6 +6421,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + gtoken@7.0.1: resolution: {integrity: sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==} engines: {node: '>=14.0.0'} @@ -6100,6 +6491,9 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + hermes-estree@0.20.1: resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} @@ -6186,6 +6580,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + human-signals@7.0.0: resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} engines: {node: '>=18.18.0'} @@ -6393,6 +6791,9 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -6462,6 +6863,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -7016,6 +7421,9 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -7041,6 +7449,9 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + make-array@1.0.5: resolution: {integrity: sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA==} engines: {node: '>=0.10.0'} @@ -7187,6 +7598,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -7307,6 +7722,16 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + msw@2.3.2: + resolution: {integrity: sha512-vDn6d6a50vxPE+HnaKQfpmZ4SVXlOjF97yD5FJcUT3v2/uZ65qvTYNL25yOmnrfCNWZ4wtAS7EbtXxygMug2Tw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.7.x' + peerDependenciesMeta: + typescript: + optional: true + multimatch@5.0.0: resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} engines: {node: '>=10'} @@ -7394,6 +7819,10 @@ packages: encoding: optional: true + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + node-gyp@10.0.1: resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} engines: {node: ^16.14.0 || >=18.0.0} @@ -7563,6 +7992,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -7591,6 +8024,9 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + override-require@1.1.1: resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==} @@ -7838,9 +8274,16 @@ packages: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -8130,6 +8573,10 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + react-router-dom@6.25.1: resolution: {integrity: sha512-0tUDpbFvk35iv+N89dWNrJp+afLgd+y4VtorJZuOCXK0kkCWjEvb3vTJM++SYvMEpbVwXKf3FjeVveVEb6JpDQ==} engines: {node: '>=14.0.0'} @@ -8387,6 +8834,11 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@4.18.1: + resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} @@ -8528,6 +8980,9 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -8649,6 +9104,9 @@ packages: resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8657,6 +9115,9 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -8672,6 +9133,9 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + string-replace-loader@3.1.0: resolution: {integrity: sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ==} peerDependencies: @@ -8735,6 +9199,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + strip-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} @@ -8901,6 +9369,21 @@ packages: tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + + tinypool@1.0.0: + resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.0: + resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + engines: {node: '>=14.0.0'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -9034,6 +9517,10 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + type-fest@4.23.0: + resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -9233,6 +9720,64 @@ packages: vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + vite-node@2.0.4: + resolution: {integrity: sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.3.4: + resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.19.42 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@2.0.4: + resolution: {integrity: sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.19.42 + '@vitest/browser': 2.0.4 + '@vitest/ui': 2.0.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + void-elements@2.0.1: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} @@ -9347,6 +9892,11 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -9510,6 +10060,10 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + yoctocolors@2.0.2: resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} engines: {node: '>=18'} @@ -9551,6 +10105,8 @@ snapshots: tunnel: 0.0.6 undici: 5.28.4 + '@adobe/css-tools@4.4.0': {} + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0)': dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) @@ -9641,7 +10197,7 @@ snapshots: '@algolia/logger-common': 4.22.1 '@algolia/requester-common': 4.22.1 - '@ampproject/remapping@2.2.1': + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -9683,7 +10239,7 @@ snapshots: '@babel/core@7.25.2': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 '@babel/helper-compilation-targets': 7.25.2 @@ -10318,6 +10874,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -10583,13 +11149,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.25.2': + '@babel/types@7.25.2': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@bundled-es-modules/cookie@2.0.0': + dependencies: + cookie: 0.5.0 + optional: true + + '@bundled-es-modules/statuses@1.0.1': + dependencies: + statuses: 2.0.1 + optional: true + + '@codspeed/core@3.1.0': + dependencies: + axios: 1.7.2(debug@4.3.5) + find-up: 6.3.0 + form-data: 4.0.0 + node-gyp-build: 4.8.1 + transitivePeerDependencies: + - debug + + '@codspeed/vitest-plugin@3.1.0(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0))': dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@bcoe/v8-coverage@0.2.3': {} + '@codspeed/core': 3.1.0 + vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + transitivePeerDependencies: + - debug '@colors/colors@1.5.0': {} @@ -10962,6 +11555,37 @@ snapshots: '@img/sharp-win32-x64@0.33.4': optional: true + '@inquirer/confirm@3.1.17': + dependencies: + '@inquirer/core': 9.0.5 + '@inquirer/type': 1.5.1 + optional: true + + '@inquirer/core@9.0.5': + dependencies: + '@inquirer/figures': 1.0.5 + '@inquirer/type': 1.5.1 + '@types/mute-stream': 0.0.4 + '@types/node': 18.19.42 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-spinners: 2.9.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + optional: true + + '@inquirer/figures@1.0.5': + optional: true + + '@inquirer/type@1.5.1': + dependencies: + mute-stream: 1.0.0 + optional: true + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -11009,12 +11633,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@lerna/create@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': + '@lerna/create@8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': dependencies: '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 - '@nx/devkit': 17.3.0(nx@17.3.0) + '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 @@ -11053,7 +11677,7 @@ snapshots: npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 - nx: 17.3.0 + nx: 17.3.0(@swc/core@1.6.13) p-map: 4.0.0 p-map-series: 2.1.0 p-queue: 6.6.2 @@ -11092,6 +11716,19 @@ snapshots: - supports-color - typescript + '@mswjs/cookies@1.1.1': + optional: true + + '@mswjs/interceptors@0.29.1': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + optional: true + '@mui/base@5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 @@ -11108,7 +11745,7 @@ snapshots: '@mui/core-downloads-tracker@5.16.5': {} - '@mui/docs@6.0.0-beta.2(7zkky2o3rrn4kau6zvbmzfd264)': + '@mui/docs@6.0.0-beta.2(2aynwhh2o77ide7mtb5em7e6t4)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11116,7 +11753,7 @@ snapshots: '@mui/internal-markdown': 1.0.8 '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - chai: 4.5.0 + chai: 5.1.1 clipboard-copy: 4.0.1 clsx: 2.1.1 next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11537,28 +12174,28 @@ snapshots: - bluebird - supports-color - '@nrwl/devkit@17.3.0(nx@17.3.0)': + '@nrwl/devkit@17.3.0(nx@17.3.0(@swc/core@1.6.13))': dependencies: - '@nx/devkit': 17.3.0(nx@17.3.0) + '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) transitivePeerDependencies: - nx - '@nrwl/tao@17.3.0': + '@nrwl/tao@17.3.0(@swc/core@1.6.13)': dependencies: - nx: 17.3.0 + nx: 17.3.0(@swc/core@1.6.13) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug - '@nx/devkit@17.3.0(nx@17.3.0)': + '@nx/devkit@17.3.0(nx@17.3.0(@swc/core@1.6.13))': dependencies: - '@nrwl/devkit': 17.3.0(nx@17.3.0) + '@nrwl/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) ejs: 3.1.9 enquirer: 2.3.6 ignore: 5.3.1 - nx: 17.3.0 + nx: 17.3.0(@swc/core@1.6.13) semver: 7.5.3 tmp: 0.2.3 tslib: 2.6.2 @@ -11874,6 +12511,18 @@ snapshots: dependencies: '@octokit/openapi-types': 18.1.1 + '@open-draft/deferred-promise@2.2.0': + optional: true + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + optional: true + + '@open-draft/until@2.1.0': + optional: true + '@opentelemetry/api@1.8.0': optional: true @@ -11924,6 +12573,54 @@ snapshots: '@remix-run/router@1.18.0': {} + '@rollup/rollup-android-arm-eabi@4.18.1': + optional: true + + '@rollup/rollup-android-arm64@4.18.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.1': + optional: true + + '@rollup/rollup-darwin-x64@4.18.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.1': + optional: true + '@sec-ant/readable-stream@0.4.1': {} '@sigstore/bundle@2.1.1': @@ -12065,6 +12762,53 @@ snapshots: '@socket.io/component-emitter@3.1.0': {} + '@swc/core-darwin-arm64@1.6.13': + optional: true + + '@swc/core-darwin-x64@1.6.13': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.6.13': + optional: true + + '@swc/core-linux-arm64-gnu@1.6.13': + optional: true + + '@swc/core-linux-arm64-musl@1.6.13': + optional: true + + '@swc/core-linux-x64-gnu@1.6.13': + optional: true + + '@swc/core-linux-x64-musl@1.6.13': + optional: true + + '@swc/core-win32-arm64-msvc@1.6.13': + optional: true + + '@swc/core-win32-ia32-msvc@1.6.13': + optional: true + + '@swc/core-win32-x64-msvc@1.6.13': + optional: true + + '@swc/core@1.6.13(@swc/helpers@0.5.5)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.9 + optionalDependencies: + '@swc/core-darwin-arm64': 1.6.13 + '@swc/core-darwin-x64': 1.6.13 + '@swc/core-linux-arm-gnueabihf': 1.6.13 + '@swc/core-linux-arm64-gnu': 1.6.13 + '@swc/core-linux-arm64-musl': 1.6.13 + '@swc/core-linux-x64-gnu': 1.6.13 + '@swc/core-linux-x64-musl': 1.6.13 + '@swc/core-win32-arm64-msvc': 1.6.13 + '@swc/core-win32-ia32-msvc': 1.6.13 + '@swc/core-win32-x64-msvc': 1.6.13 + '@swc/helpers': 0.5.5 + '@swc/counter@0.1.3': {} '@swc/helpers@0.5.5': @@ -12072,6 +12816,10 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.6.2 + '@swc/types@0.1.9': + dependencies: + '@swc/counter': 0.1.3 + '@tanstack/query-core@5.50.1': {} '@testing-library/dom@10.3.1': @@ -12085,6 +12833,19 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 + '@testing-library/jest-dom@6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0))': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.25.0 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + '@testing-library/react@16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 @@ -12150,6 +12911,9 @@ snapshots: '@types/cookie@0.4.1': {} + '@types/cookie@0.6.0': + optional: true + '@types/cors@2.8.17': dependencies: '@types/node': 18.19.42 @@ -12279,6 +13043,11 @@ snapshots: dependencies: moment: 2.30.1 + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 18.19.42 + optional: true + '@types/node@18.19.42': dependencies: undici-types: 5.26.5 @@ -12346,6 +13115,9 @@ snapshots: '@types/sinonjs__fake-timers@8.1.5': {} + '@types/statuses@2.0.5': + optional: true + '@types/stylis@4.2.5': {} '@types/stylis@4.2.6': {} @@ -12354,17 +13126,20 @@ snapshots: '@types/unist@2.0.10': {} - '@types/webpack-bundle-analyzer@4.7.0(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))': + '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))': dependencies: '@types/node': 18.19.42 tapable: 2.2.1 - webpack: 5.92.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack-cli + '@types/wrap-ansi@3.0.0': + optional: true + '@types/ws@7.4.7': dependencies: '@types/node': 18.19.42 @@ -12458,6 +13233,84 @@ snapshots: '@ungap/structured-clone@1.2.0': {} + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))': + dependencies: + '@swc/core': 1.6.13(@swc/helpers@0.5.5) + vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) + transitivePeerDependencies: + - supports-color + + '@vitest/browser@2.0.4(typescript@5.5.4)(vitest@2.0.4)': + dependencies: + '@testing-library/dom': 10.3.1 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) + '@vitest/utils': 2.0.4 + magic-string: 0.30.10 + msw: 2.3.2(typescript@5.5.4) + sirv: 2.0.4 + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + optional: true + + '@vitest/expect@2.0.4': + dependencies: + '@vitest/spy': 2.0.4 + '@vitest/utils': 2.0.4 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.0.4': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.0.4': + dependencies: + '@vitest/utils': 2.0.4 + pathe: 1.1.2 + + '@vitest/snapshot@2.0.4': + dependencies: + '@vitest/pretty-format': 2.0.4 + magic-string: 0.30.10 + pathe: 1.1.2 + + '@vitest/spy@2.0.4': + dependencies: + tinyspy: 3.0.0 + + '@vitest/ui@2.0.4(vitest@2.0.4)': + dependencies: + '@vitest/utils': 2.0.4 + fast-glob: 3.3.2 + fflate: 0.8.2 + flatted: 3.3.1 + pathe: 1.1.2 + sirv: 2.0.4 + tinyrainbow: 1.2.0 + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + + '@vitest/utils@2.0.4': + dependencies: + '@vitest/pretty-format': 2.0.4 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + '@webassemblyjs/ast@1.12.1': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 @@ -12534,19 +13387,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) '@xtuc/ieee754@1.2.0': {} @@ -12869,6 +13722,8 @@ snapshots: assertion-error@1.1.0: {} + assertion-error@2.0.1: {} + ast-types-flow@0.0.8: {} ast-types@0.14.2: @@ -12917,12 +13772,12 @@ snapshots: dependencies: deep-equal: 2.2.3 - babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.92.1(webpack-cli@5.1.4)): + babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) babel-plugin-istanbul@7.0.0: dependencies: @@ -13155,6 +14010,8 @@ snapshots: yargs: 16.2.0 yargs-parser: 20.2.9 + cac@6.7.14: {} + cacache@18.0.3: dependencies: '@npmcli/fs': 3.1.1 @@ -13222,6 +14079,14 @@ snapshots: pathval: 1.1.1 type-detect: 4.1.0 + chai@5.1.1: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 + chainsaw@0.1.0: dependencies: traverse: 0.3.9 @@ -13236,6 +14101,11 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.0: dependencies: ansi-styles: 4.3.0 @@ -13264,6 +14134,8 @@ snapshots: dependencies: get-func-name: 2.0.2 + check-error@2.1.1: {} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 @@ -13306,6 +14178,9 @@ snapshots: cli-width@3.0.0: {} + cli-width@4.1.0: + optional: true + client-only@0.0.1: {} clipboard-copy@4.0.1: {} @@ -13419,11 +14294,11 @@ snapshots: dependencies: mime-db: 1.52.0 - compression-webpack-plugin@11.1.0(webpack@5.92.1(webpack-cli@5.1.4)): + compression-webpack-plugin@11.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) compression@1.7.4: dependencies: @@ -13645,6 +14520,8 @@ snapshots: css-what@6.1.0: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} cssjanus@2.1.0: {} @@ -13823,6 +14700,8 @@ snapshots: dependencies: type-detect: 4.1.0 + deep-eql@5.0.2: {} + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -14240,7 +15119,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)): + eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: array.prototype.find: 2.2.2 debug: 3.2.7 @@ -14254,18 +15133,18 @@ snapshots: lodash: 4.17.21 resolve: 2.0.0-next.5 semver: 5.7.2 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)) + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) transitivePeerDependencies: - supports-color @@ -14287,7 +15166,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(webpack-cli@5.1.4)))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -14489,6 +15368,10 @@ snapshots: transitivePeerDependencies: - supports-color + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + esutils@2.0.3: {} etag@1.8.1: {} @@ -14535,6 +15418,18 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + execa@9.3.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -14637,6 +15532,8 @@ snapshots: dependencies: reusify: 1.0.4 + fflate@0.8.2: {} + fg-loadcss@3.1.0: {} figures@3.2.0: @@ -14734,13 +15631,13 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 flat@5.0.2: {} - flatted@3.2.9: {} + flatted@3.3.1: {} flow-parser@0.227.0: {} @@ -14885,6 +15782,8 @@ snapshots: get-stream@6.0.1: {} + get-stream@8.0.1: {} + get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -15071,6 +15970,9 @@ snapshots: graphemer@1.4.0: {} + graphql@16.9.0: + optional: true + gtoken@7.0.1(encoding@0.1.13): dependencies: gaxios: 6.1.1(encoding@0.1.13) @@ -15129,6 +16031,9 @@ snapshots: he@1.2.0: {} + headers-polyfill@4.0.3: + optional: true + hermes-estree@0.20.1: {} hermes-parser@0.20.1: @@ -15177,7 +16082,7 @@ snapshots: readable-stream: 1.0.34 through2: 0.4.2 - html-webpack-plugin@5.6.0(webpack@5.92.1(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -15185,7 +16090,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -15243,6 +16148,8 @@ snapshots: human-signals@2.1.0: {} + human-signals@5.0.0: {} + human-signals@7.0.0: {} hyperlinker@1.0.0: {} @@ -15432,6 +16339,9 @@ snapshots: is-negative-zero@2.0.3: {} + is-node-process@1.2.0: + optional: true + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -15479,6 +16389,8 @@ snapshots: is-stream@2.0.1: {} + is-stream@3.0.0: {} + is-stream@4.0.1: {} is-string@1.0.7: @@ -15889,11 +16801,11 @@ snapshots: dependencies: graceful-fs: 4.2.11 - karma-webpack@5.0.1(webpack@5.92.1(webpack-cli@5.1.4)): + karma-webpack@5.0.1(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: glob: 7.2.3 minimatch: 9.0.4 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) webpack-merge: 4.2.2 karma@6.4.3: @@ -15944,13 +16856,13 @@ snapshots: dependencies: readable-stream: 2.3.8 - lerna@8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13): + lerna@8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.7(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) + '@lerna/create': 8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) '@npmcli/arborist': 7.5.3 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 - '@nx/devkit': 17.3.0(nx@17.3.0) + '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 @@ -15995,7 +16907,7 @@ snapshots: npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 - nx: 17.3.0 + nx: 17.3.0(@swc/core@1.6.13) p-map: 4.0.0 p-map-series: 2.1.0 p-pipe: 3.1.0 @@ -16205,7 +17117,7 @@ snapshots: dependencies: date-format: 4.0.14 debug: 4.3.5(supports-color@8.1.1) - flatted: 3.2.9 + flatted: 3.3.1 rfdc: 1.3.1 streamroller: 3.1.5 transitivePeerDependencies: @@ -16221,6 +17133,10 @@ snapshots: dependencies: get-func-name: 2.0.2 + loupe@3.1.1: + dependencies: + get-func-name: 2.0.2 + lower-case@2.0.2: dependencies: tslib: 2.6.2 @@ -16244,6 +17160,10 @@ snapshots: lz-string@1.5.0: {} + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + make-array@1.0.5: {} make-dir@2.1.0: @@ -16406,6 +17326,8 @@ snapshots: mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + min-indent@1.0.1: {} minimatch@3.0.5: @@ -16537,6 +17459,29 @@ snapshots: ms@2.1.3: {} + msw@2.3.2(typescript@5.5.4): + dependencies: + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/statuses': 1.0.1 + '@inquirer/confirm': 3.1.17 + '@mswjs/cookies': 1.1.1 + '@mswjs/interceptors': 0.29.1 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + chalk: 4.1.2 + graphql: 16.9.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.2.1 + strict-event-emitter: 0.5.1 + type-fest: 4.23.0 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.5.4 + optional: true + multimatch@5.0.0: dependencies: '@types/minimatch': 3.0.5 @@ -16633,6 +17578,8 @@ snapshots: optionalDependencies: encoding: 0.1.13 + node-gyp-build@4.8.1: {} + node-gyp@10.0.1: dependencies: env-paths: 2.2.1 @@ -16745,9 +17692,9 @@ snapshots: nwsapi@2.2.12: {} - nx@17.3.0: + nx@17.3.0(@swc/core@1.6.13): dependencies: - '@nrwl/tao': 17.3.0 + '@nrwl/tao': 17.3.0(@swc/core@1.6.13) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 @@ -16792,6 +17739,7 @@ snapshots: '@nx/nx-linux-x64-musl': 17.3.0 '@nx/nx-win32-arm64-msvc': 17.3.0 '@nx/nx-win32-x64-msvc': 17.3.0 + '@swc/core': 1.6.13(@swc/helpers@0.5.5) transitivePeerDependencies: - debug @@ -16901,6 +17849,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -16952,6 +17904,9 @@ snapshots: os-tmpdir@1.0.2: {} + outvariant@1.4.3: + optional: true + override-require@1.1.1: {} p-cancelable@1.1.0: {} @@ -17193,8 +18148,12 @@ snapshots: path-type@5.0.0: {} + pathe@1.1.2: {} + pathval@1.1.1: {} + pathval@2.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -17462,6 +18421,8 @@ snapshots: react-is@18.3.1: {} + react-refresh@0.14.2: {} + react-router-dom@6.25.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@remix-run/router': 1.18.0 @@ -17749,6 +18710,28 @@ snapshots: robust-predicates@3.0.2: {} + rollup@4.18.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.1 + '@rollup/rollup-android-arm64': 4.18.1 + '@rollup/rollup-darwin-arm64': 4.18.1 + '@rollup/rollup-darwin-x64': 4.18.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 + '@rollup/rollup-linux-arm-musleabihf': 4.18.1 + '@rollup/rollup-linux-arm64-gnu': 4.18.1 + '@rollup/rollup-linux-arm64-musl': 4.18.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 + '@rollup/rollup-linux-riscv64-gnu': 4.18.1 + '@rollup/rollup-linux-s390x-gnu': 4.18.1 + '@rollup/rollup-linux-x64-gnu': 4.18.1 + '@rollup/rollup-linux-x64-musl': 4.18.1 + '@rollup/rollup-win32-arm64-msvc': 4.18.1 + '@rollup/rollup-win32-ia32-msvc': 4.18.1 + '@rollup/rollup-win32-x64-msvc': 4.18.1 + fsevents: 2.3.3 + rrweb-cssom@0.6.0: {} rrweb-cssom@0.7.1: {} @@ -17952,6 +18935,8 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.1 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -18103,10 +19088,14 @@ snapshots: dependencies: minipass: 7.0.4 + stackback@0.0.2: {} + statuses@1.5.0: {} statuses@2.0.1: {} + std-env@3.7.0: {} + stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 @@ -18126,11 +19115,14 @@ snapshots: streamsearch@1.1.0: {} - string-replace-loader@3.1.0(webpack@5.92.1(webpack-cli@5.1.4)): + strict-event-emitter@0.5.1: + optional: true + + string-replace-loader@3.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) string-width@4.2.3: dependencies: @@ -18212,6 +19204,8 @@ snapshots: strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} strip-indent@3.0.0: @@ -18327,23 +19321,27 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.6.3 - terser-webpack-plugin@5.3.10(webpack@5.92.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))): + terser-webpack-plugin@5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + optionalDependencies: + '@swc/core': 1.6.13(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(webpack@5.92.1(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + optionalDependencies: + '@swc/core': 1.6.13(@swc/helpers@0.5.5) terser@5.27.0: dependencies: @@ -18386,6 +19384,14 @@ snapshots: tiny-warning@1.0.3: {} + tinybench@2.8.0: {} + + tinypool@1.0.0: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.0: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -18491,6 +19497,9 @@ snapshots: type-fest@2.19.0: {} + type-fest@4.23.0: + optional: true + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -18708,6 +19717,68 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 + vite-node@2.0.4(@types/node@18.19.42)(terser@5.27.0): + dependencies: + cac: 6.7.14 + debug: 4.3.5(supports-color@8.1.1) + pathe: 1.1.2 + tinyrainbow: 1.2.0 + vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite@5.3.4(@types/node@18.19.42)(terser@5.27.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.40 + rollup: 4.18.1 + optionalDependencies: + '@types/node': 18.19.42 + fsevents: 2.3.3 + terser: 5.27.0 + + vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0): + dependencies: + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.4 + '@vitest/pretty-format': 2.0.4 + '@vitest/runner': 2.0.4 + '@vitest/snapshot': 2.0.4 + '@vitest/spy': 2.0.4 + '@vitest/utils': 2.0.4 + chai: 5.1.1 + debug: 4.3.5(supports-color@8.1.1) + execa: 8.0.1 + magic-string: 0.30.10 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.8.0 + tinypool: 1.0.0 + tinyrainbow: 1.2.0 + vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) + vite-node: 2.0.4(@types/node@18.19.42)(terser@5.27.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 18.19.42 + '@vitest/browser': 2.0.4(typescript@5.5.4)(vitest@2.0.4) + '@vitest/ui': 2.0.4(vitest@2.0.4) + jsdom: 24.1.1 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + void-elements@2.0.1: {} w3c-xmlserializer@5.0.0: @@ -18750,9 +19821,9 @@ snapshots: webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -18761,7 +19832,7 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.92.1(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-bundle-analyzer: 4.10.2 @@ -18778,7 +19849,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.92.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)): + webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18801,7 +19872,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.92.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: @@ -18811,7 +19882,7 @@ snapshots: - esbuild - uglify-js - webpack@5.92.1(webpack-cli@5.1.4): + webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18834,7 +19905,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.92.1(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: @@ -18912,6 +19983,11 @@ snapshots: dependencies: isexe: 3.1.1 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wide-align@1.1.5: dependencies: string-width: 4.2.3 @@ -19065,6 +20141,9 @@ snapshots: yocto-queue@1.0.0: {} + yoctocolors-cjs@2.1.2: + optional: true + yoctocolors@2.0.2: {} zip-stream@4.1.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6e7e91713fc8..132ec1119136 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,3 +2,4 @@ packages: - 'packages/*' - 'docs' - 'test' + - 'test/performance-charts' diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json new file mode 100644 index 000000000000..cf2d27c5edd5 --- /dev/null +++ b/test/performance-charts/package.json @@ -0,0 +1,25 @@ +{ + "name": "@mui-x-internal/performance-charts", + "version": "7.8.0", + "private": true, + "type": "module", + "scripts": { + "test:performance": "vitest bench" + }, + "devDependencies": { + "@codspeed/vitest-plugin": "^3.1.0", + "@emotion/react": "^11.11.4", + "@mui/x-charts": "workspace:*", + "@mui/x-charts-pro": "workspace:*", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", + "@testing-library/user-event": "^14.5.2", + "@vitejs/plugin-react": "^4.3.1", + "@vitejs/plugin-react-swc": "^3.7.0", + "@vitest/ui": "2.0.4", + "jsdom": "^24.1.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "vitest": "2.0.4" + } +} diff --git a/test/performance-charts/tests/BarChart.bench.tsx b/test/performance-charts/tests/BarChart.bench.tsx new file mode 100644 index 000000000000..2b382867de7c --- /dev/null +++ b/test/performance-charts/tests/BarChart.bench.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; +// eslint-disable-next-line no-restricted-imports +import { render, cleanup } from '@testing-library/react'; +import { afterEach, bench, describe } from 'vitest'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { options } from '../utils/options'; + +describe('BarChart', () => { + afterEach(() => { + cleanup(); + }); + + const dataLength = 250; + const data = Array.from({ length: dataLength + 1 }).map((_, i) => ({ + x: i, + y: 50 + Math.sin(i / 5) * 25, + })); + + const xData = data.map((d) => d.x); + const yData = data.map((d) => d.y); + + bench( + 'BarChart with big data amount', + async () => { + const { findByText } = render( + , + ); + + await findByText(dataLength.toLocaleString(), { ignore: 'span' }); + }, + options, + ); +}); diff --git a/test/performance-charts/tests/LineChart.bench.tsx b/test/performance-charts/tests/LineChart.bench.tsx new file mode 100644 index 000000000000..0fb97433f1f2 --- /dev/null +++ b/test/performance-charts/tests/LineChart.bench.tsx @@ -0,0 +1,42 @@ +import * as React from 'react'; +// eslint-disable-next-line no-restricted-imports +import { render, cleanup } from '@testing-library/react'; +import { afterEach, bench, describe } from 'vitest'; +import { LineChart } from '@mui/x-charts/LineChart'; +import { options } from '../utils/options'; + +describe('LineChart', () => { + afterEach(() => { + cleanup(); + }); + + const dataLength = 600; + const data = Array.from({ length: dataLength }).map((_, i) => ({ + x: i, + y: 50 + Math.sin(i / 5) * 25, + })); + + const xData = data.map((d) => d.x); + const yData = data.map((d) => d.y); + + bench( + 'LineChart with big data amount', + async () => { + const { findByText } = render( + , + ); + + await findByText(dataLength.toLocaleString(), { ignore: 'span' }); + }, + options, + ); +}); diff --git a/test/performance-charts/tests/ScatterChart.bench.tsx b/test/performance-charts/tests/ScatterChart.bench.tsx new file mode 100644 index 000000000000..42063af167ae --- /dev/null +++ b/test/performance-charts/tests/ScatterChart.bench.tsx @@ -0,0 +1,42 @@ +import * as React from 'react'; +// eslint-disable-next-line no-restricted-imports +import { render, cleanup } from '@testing-library/react'; +import { afterEach, bench, describe } from 'vitest'; +import { ScatterChart } from '@mui/x-charts/ScatterChart'; +import { options } from '../utils/options'; + +describe('ScatterChart', () => { + afterEach(() => { + cleanup(); + }); + + const dataLength = 1_000; + const data = Array.from({ length: dataLength }).map((_, i) => ({ + id: i, + x: i, + y: 50 + Math.sin(i / 5) * 25, + })); + + const xData = data.map((d) => d.x); + + bench( + 'ScatterChart with big data amount', + async () => { + const { findByText } = render( + , + ); + + await findByText(dataLength.toLocaleString(), { ignore: 'span' }); + }, + options, + ); +}); diff --git a/test/performance-charts/tsconfig.json b/test/performance-charts/tsconfig.json new file mode 100644 index 000000000000..62629e3afbe6 --- /dev/null +++ b/test/performance-charts/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../tsconfig.json", + "include": ["tests/**/*", "utils/**/*"], + "exclude": ["node_modules"] +} diff --git a/test/performance-charts/utils/options.ts b/test/performance-charts/utils/options.ts new file mode 100644 index 000000000000..bebd108eb508 --- /dev/null +++ b/test/performance-charts/utils/options.ts @@ -0,0 +1,9 @@ +import { BenchOptions } from 'vitest'; + +const iterations = process.env.BENCHMARK_ITERATIONS + ? parseInt(process.env.BENCHMARK_ITERATIONS, 10) + : 1; + +export const options: BenchOptions = { + iterations, +}; diff --git a/test/performance-charts/vitest.config.ts b/test/performance-charts/vitest.config.ts new file mode 100644 index 000000000000..d3217a4508bb --- /dev/null +++ b/test/performance-charts/vitest.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'vitest/config'; +import codspeedPlugin from '@codspeed/vitest-plugin'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [codspeedPlugin(), react()], + test: { + environment: 'jsdom', + // testTimeout: 20000, + // benchmark: { + // outputJson: '../../test-results/benchmark-charts.json', + // }, + // browser: { + // enabled: true, + // name: 'chromium', + // provider: 'playwright', + // providerOptions: { + // timeout: 60000, + // }, + // }, + }, +}); From 0643f180006b2a84685f0057a97ebb1e7c849531 Mon Sep 17 00:00:00 2001 From: Tevfik Date: Tue, 30 Jul 2024 15:11:53 +0300 Subject: [PATCH 703/912] [l10n] Improve Turkish (tr-TR) locale (#13996) Co-authored-by: Kenan Yusuf --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/trTR.ts | 38 +++++++++++----------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 0cf3b38f7552..e1a780c91537 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -251,7 +251,7 @@ "languageTag": "tr-TR", "importName": "trTR", "localeName": "Turkish", - "missingKeysCount": 19, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/trTR.ts" }, diff --git a/packages/x-data-grid/src/locales/trTR.ts b/packages/x-data-grid/src/locales/trTR.ts index 559544cce2f0..fbbd318ff9ca 100644 --- a/packages/x-data-grid/src/locales/trTR.ts +++ b/packages/x-data-grid/src/locales/trTR.ts @@ -38,10 +38,10 @@ const trTRGrid: Partial = { toolbarExportExcel: 'Excel olarak aktar', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', - // columnsManagementReset: 'Reset', + columnsManagementSearchTitle: 'Arama', + columnsManagementNoColumns: 'Kolon yok', + columnsManagementShowHideAllText: 'Hepsini Göster/Gizle', + columnsManagementReset: 'Sıfırla', // Filter panel text filterPanelAddFilter: 'Filtre Ekle', @@ -81,21 +81,21 @@ const trTRGrid: Partial = { headerFilterOperatorEquals: 'Şuna eşittir', headerFilterOperatorStartsWith: 'Şununla başlar', headerFilterOperatorEndsWith: 'Şununla biter', - // headerFilterOperatorIs: 'Is', - // headerFilterOperatorNot: 'Is not', - // headerFilterOperatorAfter: 'Is after', - // headerFilterOperatorOnOrAfter: 'Is on or after', - // headerFilterOperatorBefore: 'Is before', - // headerFilterOperatorOnOrBefore: 'Is on or before', - // headerFilterOperatorIsEmpty: 'Is empty', - // headerFilterOperatorIsNotEmpty: 'Is not empty', - // headerFilterOperatorIsAnyOf: 'Is any of', - // 'headerFilterOperator=': 'Equals', - // 'headerFilterOperator!=': 'Not equals', - // 'headerFilterOperator>': 'Greater than', - // 'headerFilterOperator>=': 'Greater than or equal to', - // 'headerFilterOperator<': 'Less than', - // 'headerFilterOperator<=': 'Less than or equal to', + headerFilterOperatorIs: 'Eşittir', + headerFilterOperatorNot: 'Eşit değil', + headerFilterOperatorAfter: 'Sonra', + headerFilterOperatorOnOrAfter: 'Sonra veya eşit', + headerFilterOperatorBefore: 'Önce', + headerFilterOperatorOnOrBefore: 'Önce veya eşit', + headerFilterOperatorIsEmpty: 'Boş', + headerFilterOperatorIsNotEmpty: 'Boş değil', + headerFilterOperatorIsAnyOf: 'Herhangi biri', + 'headerFilterOperator=': 'Eşittir', + 'headerFilterOperator!=': 'Eşit değil', + 'headerFilterOperator>': 'Büyüktür', + 'headerFilterOperator>=': 'Büyük veya eşit', + 'headerFilterOperator<': 'Küçüktür', + 'headerFilterOperator<=': 'Küçük veya eşit', // Filter values text filterValueAny: 'herhangi', From ba9ae791c26cb1f0c205f5189b9b25df6d6f02f9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:46:47 +0300 Subject: [PATCH 704/912] Bump moment-hijri to ^2.30.0 (#14014) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/package.json b/docs/package.json index 386dd02f5166..3d515a05a990 100644 --- a/docs/package.json +++ b/docs/package.json @@ -75,7 +75,7 @@ "lz-string": "^1.5.0", "markdown-to-jsx": "^7.4.7", "moment": "^2.30.1", - "moment-hijri": "^2.1.2", + "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", "moment-timezone": "^0.5.45", "next": "^14.2.5", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index c56e2deddbcc..431876098dec 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -108,7 +108,7 @@ "dayjs": "^1.11.11", "luxon": "^3.4.4", "moment": "^2.30.1", - "moment-hijri": "^2.1.2", + "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", "moment-timezone": "^0.5.45", "rimraf": "^5.0.9" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f00f0e49401..1e09396ab14b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -564,8 +564,8 @@ importers: specifier: ^2.30.1 version: 2.30.1 moment-hijri: - specifier: ^2.1.2 - version: 2.1.2 + specifier: ^2.30.0 + version: 2.30.0 moment-jalaali: specifier: ^0.10.1 version: 0.10.1 @@ -1229,8 +1229,8 @@ importers: specifier: ^2.30.1 version: 2.30.1 moment-hijri: - specifier: ^2.1.2 - version: 2.1.2 + specifier: ^2.30.0 + version: 2.30.0 moment-jalaali: specifier: ^0.10.1 version: 0.10.1 @@ -1276,7 +1276,7 @@ importers: version: 2.1.1 moment-hijri: specifier: ^2.1.2 - version: 2.1.2 + version: 2.30.0 moment-jalaali: specifier: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 version: 0.10.1 @@ -7693,8 +7693,8 @@ packages: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} - moment-hijri@2.1.2: - resolution: {integrity: sha512-p5ZOA1UzBHAAXiePh37XRjjwuyH78+1ShYZ7R6jogxketewG7kTCUjUmcP9c4Qsx8D8cqxwUWrESjtgdT6tNoA==} + moment-hijri@2.30.0: + resolution: {integrity: sha512-A3Ss8ASkhkT160laK9gXv+Yle0jA6eg92o8Uw78mU3OlUyaWjW2ntMd04kutawFb01KR0GIeJ8lqgIABGbWj7g==} moment-jalaali@0.10.1: resolution: {integrity: sha512-/iwLtt3onvI6wFydUSTj10nFeNkD9sZ0fSY1gmqC2dwt1yGYJun6agI7E7SiBYi8uzGlt3P4KuPYCMLiv43E+g==} @@ -17432,7 +17432,7 @@ snapshots: modify-values@1.0.1: {} - moment-hijri@2.1.2: + moment-hijri@2.30.0: dependencies: moment: 2.30.1 From 293233360d4ecd10075c5aceda1b9b89c50e7e33 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:47:24 +0300 Subject: [PATCH 705/912] Bump lru-cache to ^10.4.3 (#14012) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/x-data-grid-generator/package.json | 2 +- pnpm-lock.yaml | 23 ++++++++++----------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 6d5c032b0733..5c5b9978009c 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -38,7 +38,7 @@ "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.12", "clsx": "^2.1.1", - "lru-cache": "^10.3.0" + "lru-cache": "^10.4.3" }, "devDependencies": { "@types/chance": "^1.1.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e09396ab14b..007fc66a1ca2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1027,8 +1027,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 lru-cache: - specifier: ^10.3.0 - version: 10.3.0 + specifier: ^10.4.3 + version: 10.4.3 react: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1 @@ -7427,9 +7427,8 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.3.0: - resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -12050,7 +12049,7 @@ snapshots: agent-base: 7.1.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 - lru-cache: 10.3.0 + lru-cache: 10.4.3 socks-proxy-agent: 8.0.2 transitivePeerDependencies: - supports-color @@ -12074,7 +12073,7 @@ snapshots: hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.2 json-stringify-nice: 1.1.4 - lru-cache: 10.3.0 + lru-cache: 10.4.3 minimatch: 9.0.4 nopt: 7.2.1 npm-install-checks: 6.3.0 @@ -12103,7 +12102,7 @@ snapshots: '@npmcli/git@5.0.4': dependencies: '@npmcli/promise-spawn': 7.0.1 - lru-cache: 10.3.0 + lru-cache: 10.4.3 npm-pick-manifest: 9.0.1 proc-log: 3.0.0 promise-inflight: 1.0.1 @@ -14017,7 +14016,7 @@ snapshots: '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 glob: 10.3.10 - lru-cache: 10.3.0 + lru-cache: 10.4.3 minipass: 7.0.4 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -16056,7 +16055,7 @@ snapshots: hosted-git-info@7.0.2: dependencies: - lru-cache: 10.3.0 + lru-cache: 10.4.3 html-encoding-sniffer@4.0.0: dependencies: @@ -17141,7 +17140,7 @@ snapshots: dependencies: tslib: 2.6.2 - lru-cache@10.3.0: {} + lru-cache@10.4.3: {} lru-cache@4.1.5: dependencies: @@ -18131,7 +18130,7 @@ snapshots: path-scurry@1.10.1: dependencies: - lru-cache: 10.3.0 + lru-cache: 10.4.3 minipass: 7.0.4 path-to-regexp@0.1.7: {} From 3b65350387ae64dfeed9de5aff167812ff9a6cfd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:48:50 +0300 Subject: [PATCH 706/912] Bump @tanstack/query-core to ^5.51.15 (#13926) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/package.json b/docs/package.json index 3d515a05a990..28a3bd62dde7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -47,7 +47,7 @@ "@mui/x-date-pickers-pro": "workspace:*", "@mui/x-tree-view": "workspace:*", "@react-spring/web": "^9.7.4", - "@tanstack/query-core": "^5.50.1", + "@tanstack/query-core": "^5.51.15", "ast-types": "^0.14.2", "autoprefixer": "^10.4.19", "babel-plugin-module-resolver": "^5.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 007fc66a1ca2..044bd71a9146 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -483,8 +483,8 @@ importers: specifier: ^9.7.4 version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/query-core': - specifier: ^5.50.1 - version: 5.50.1 + specifier: ^5.51.15 + version: 5.51.15 ast-types: specifier: ^0.14.2 version: 0.14.2 @@ -3853,8 +3853,8 @@ packages: '@swc/types@0.1.9': resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} - '@tanstack/query-core@5.50.1': - resolution: {integrity: sha512-lpfhKPrJlyV2DSVcQb/HuozH3Av3kws4ge22agx+lNGpFkS4vLZ7St0l3GLwlAD+bqB+qXGex3JdRKUNtMviEQ==} + '@tanstack/query-core@5.51.15': + resolution: {integrity: sha512-xyobHDJ0yhPE3+UkSQ2/4X1fLSg7ICJI5J1JyU9yf7F3deQfEwSImCDrB1WSRrauJkMtXW7YIEcC0oA6ZZWt5A==} '@testing-library/dom@10.3.1': resolution: {integrity: sha512-q/WL+vlXMpC0uXDyfsMtc1rmotzLV8Y0gq6q1gfrrDjQeHoeLrqHbxdPvPNAh1i+xuJl7+BezywcXArz7vLqKQ==} @@ -12819,7 +12819,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/query-core@5.50.1': {} + '@tanstack/query-core@5.51.15': {} '@testing-library/dom@10.3.1': dependencies: From 92f11a8e57f5cac577f14e87758468bde322a14e Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 30 Jul 2024 16:01:23 +0200 Subject: [PATCH 707/912] [core] Fix GHA syntax for Codspeed action (#14035) --- .github/workflows/codspeed.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index b6954350de98..bfd31d7482a8 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -24,12 +24,13 @@ jobs: # L1: Run the benchmarks for pushes to the master or next branch and if the changes are in the charts package based on on.push.paths # L2: Run the benchmarks if we add the label 'component: charts' to the pull request # L3: Run the benchmarks for pull requests with the label 'component: charts' - if: > - " - ${{ github.event_name == 'push' }} || - ${{ github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'component: charts' }} || - ${{ github.event_name == 'pull_request' && github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'component: charts')}} - " + # Yaml syntax looks a little weird, but it is correct. + if: >- + ${{ + (github.event_name == 'push') || + (github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'component: charts') || + (github.event_name == 'pull_request' && github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'component: charts')) + }} steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 From 64d8236b89f18a51c8aec2e72978c5912e594f88 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Tue, 30 Jul 2024 17:12:37 +0300 Subject: [PATCH 708/912] [infra] Revert `vale` action `paths` filtering (#14038) --- .github/workflows/vale-action.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/vale-action.yml b/.github/workflows/vale-action.yml index e323ba33dc72..53ce0e90216f 100644 --- a/.github/workflows/vale-action.yml +++ b/.github/workflows/vale-action.yml @@ -1,9 +1,6 @@ name: Vale action -on: - pull_request: - paths: - - 'docs/data/**.md' +on: [pull_request] permissions: {} From 280e4b78ff6c6dfee9fd6fe1d0e96b5e9e88391d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 17:15:08 +0300 Subject: [PATCH 709/912] Bump eslint-plugin-react-compiler to 0.0.0-experimental-9ed098e-20240725 (#14003) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 72d0b7b6c985..8aa2e169945c 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", - "eslint-plugin-react-compiler": "0.0.0-experimental-51a85ea-20240601", + "eslint-plugin-react-compiler": "0.0.0-experimental-9ed098e-20240725", "eslint-plugin-react-hooks": "^4.6.2", "fast-glob": "^3.3.2", "format-util": "^1.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 044bd71a9146..3e05514f0951 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -261,8 +261,8 @@ importers: specifier: ^7.35.0 version: 7.35.0(eslint@8.57.0) eslint-plugin-react-compiler: - specifier: 0.0.0-experimental-51a85ea-20240601 - version: 0.0.0-experimental-51a85ea-20240601(eslint@8.57.0) + specifier: 0.0.0-experimental-9ed098e-20240725 + version: 0.0.0-experimental-9ed098e-20240725(eslint@8.57.0) eslint-plugin-react-hooks: specifier: ^4.6.2 version: 4.6.2(eslint@8.57.0) @@ -5881,8 +5881,8 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-react-compiler@0.0.0-experimental-51a85ea-20240601: - resolution: {integrity: sha512-ROiKTVu9pZsNHyJepZj/JULWnkw8+I8+9gOF/MkJ8Q22/9f9MkPQkD2f6FXzVH+iyWbp7DQ3RXKhB3hWhf8AIg==} + eslint-plugin-react-compiler@0.0.0-experimental-9ed098e-20240725: + resolution: {integrity: sha512-Xv2iD8kU6R4Wdjdh1WhdP8UnSqSV+/XcadxwBCmMr836fQUoXGuw/uVGc01v9opZs9SwKzo+8My6ayVCgAinPA==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} peerDependencies: eslint: '>=7' @@ -15235,7 +15235,7 @@ snapshots: '@types/eslint': 8.56.11 eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-react-compiler@0.0.0-experimental-51a85ea-20240601(eslint@8.57.0): + eslint-plugin-react-compiler@0.0.0-experimental-9ed098e-20240725(eslint@8.57.0): dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.0 From 3c3f683ed3f394406c1e96c147b527a31f213767 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Tue, 30 Jul 2024 19:21:39 +0200 Subject: [PATCH 710/912] [docs] Fix Vale errors (#14025) --- CHANGELOG.md | 8 ++++---- docs/data/data-grid/overlays/overlays.md | 10 +++++----- docs/data/data-grid/server-side-data/index.md | 14 +++++++------- packages/x-internals/README.md | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d03430475e23..a3f3d899b88a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -143,8 +143,8 @@ Same changes as in `@mui/x-date-pickers@7.11.0`, plus: - [charts] Defaultize axis on top level `useChartContainerProps` (#13817) @JCQuintas - [charts] Fix charts not passing `className` to root element (#13647) @JCQuintas - [charts] Generate API documentation for pro components (#13822) @alexfauquette -- [charts] Improve zoomed highlight behaviour (unreleased) (#13868) @JCQuintas -- [charts] Allow zoom on Y axis and add zoom options to configure zooming behaviour (unreleased) (#13726) @JCQuintas +- [charts] Improve zoomed highlight behavior (unreleased) (#13868) @JCQuintas +- [charts] Allow zoom on Y axis and add zoom options to configure zooming behavior (unreleased) (#13726) @JCQuintas - [charts] Disable animations while zooming (unreleased) (#13807) @JCQuintas ### Tree View @@ -617,7 +617,7 @@ Same changes as in `@mui/x-date-pickers@7.6.2`. #### `@mui/x-charts@7.6.2` -- [charts] Add `Initializable` type and behaviour to allow checking if a complex context has been initialized. (#13365) @JCQuintas +- [charts] Add `Initializable` type and behavior to allow checking if a complex context has been initialized. (#13365) @JCQuintas - [charts] Fix some props not working in `xAxis` and `yAxis` (#13372) @Valyok26 - [charts] Harmonize charts types (#13366) @alexfauquette - [charts] Introduce plugins system (#13367) @alexfauquette @@ -625,7 +625,7 @@ Same changes as in `@mui/x-date-pickers@7.6.2`. ### Docs -- [docs] Add badges like in Material UI @oliviertassinari +- [docs] Add badges like in Material UI @oliviertassinari - [docs] Update twitter.com to x.com @oliviertassinari - [docs] Fix the description of `tickInterval` (#13355) @alexfauquette - [docs] Adjust the code example for `quickFilterValues` (#12919) @michelengelen diff --git a/docs/data/data-grid/overlays/overlays.md b/docs/data/data-grid/overlays/overlays.md index 426e8b615b3e..be08d87ac261 100644 --- a/docs/data/data-grid/overlays/overlays.md +++ b/docs/data/data-grid/overlays/overlays.md @@ -50,21 +50,21 @@ An animated placeholder of the data grid. ### Custom component -If you want to customize the no rows overlay, a component can be passed to the `loadingOverlay` slot. +If you want to customize the no-rows overlay, a component can be passed to the `loadingOverlay` slot. -In the following demo, a labelled determinate [CircularProgress](/material-ui/react-progress/#circular-determinate) component is rendered in place of the default loading overlay, with some additional _Loading rows…_ text. +In the following demo, a labeled determinate [CircularProgress](/material-ui/react-progress/#circular-determinate) component is rendered in place of the default loading overlay, with some additional _Loading rows…_ text. {{"demo": "LoadingOverlayCustom.js", "bg": "inline"}} ## No rows overlay -The no rows overlay is displayed when the data grid has no rows. +The no-rows overlay is displayed when the data grid has no rows. {{"demo": "NoRowsOverlay.js", "bg": "inline"}} ### Custom component -If you want to customize the no rows overlay, a component can be passed to the `noRowsOverlay` slot and rendered in place. +If you want to customize the no-rows overlay, a component can be passed to the `noRowsOverlay` slot and rendered in place. In the following demo, an illustration is added on top of the default "No rows" message. @@ -72,7 +72,7 @@ In the following demo, an illustration is added on top of the default "No rows" ## No results overlay -The no results overlay is displayed when the data grid has no results after filtering. +The no-results overlay is displayed when the data grid has no results after filtering. {{"demo": "NoResultsOverlay.js", "bg": "inline"}} diff --git a/docs/data/data-grid/server-side-data/index.md b/docs/data/data-grid/server-side-data/index.md index 38a003c98581..106b1737b7c3 100644 --- a/docs/data/data-grid/server-side-data/index.md +++ b/docs/data/data-grid/server-side-data/index.md @@ -58,7 +58,7 @@ This example only scratches the surface with a lot of problems still unsolved li - Performance optimization - Caching data/deduping requests -- More complex use-cases on the server like grouping, tree data, etc. +- More complex use cases on the server like grouping, tree data, etc. - Server-side row editing - Lazy loading of data - Handling updates to the data like row editing, row deletion, etc. @@ -70,17 +70,17 @@ Trying to solve these problems one after the other can make the code complex and The idea for a centralized data source is to simplify server-side data fetching. It's an abstraction layer between the Data Grid and the server, providing a simple interface for interacting with the server. -Think of it like a middleman handling the communication between the Data Grid (client) and the actual data source (server). +Think of it like an intermediary handling the communication between the Data Grid (client) and the actual data source (server). :::warning This feature is under development and is marked as **unstable**. -The information shared on this page could change in future. +The information shared on this page could change in the future. Feel free to subscribe or comment on the official GitHub [umbrella issue](https://github.com/mui/mui-x/issues/8179). ::: -It has an initial set of required methods that you need to implement. The data grid will use these methods internally to fetch a sub-set of data when needed. +It has an initial set of required methods that you need to implement. The data grid will use these methods internally to fetch a subset of data when needed. Let's take a look at the minimal `GridDataSource` interface configuration. @@ -177,7 +177,7 @@ The following demo showcases this behavior. :::info The data source demos use a utility function `useMockServer` to simulate the server-side data fetching. -In a real-world scenario, you should replace this with your own server-side data fetching logic. +In a real-world scenario, you should replace this with your own server-side data-fetching logic. Open info section of the browser console to see the requests being made and the data being fetched in response. ::: @@ -187,7 +187,7 @@ Open info section of the browser console to see the requests being made and the The data source caches fetched data by default. This means that if the user navigates to a page or expands a node that has already been fetched, the grid will not call the `getRows` function again to avoid unnecessary calls to the server. -The `GridDataSourceCacheDefault` is used by default which is a simple in-memory cache that stores the data in a plain object. It could be seen in action in the demo below. +The `GridDataSourceCacheDefault` is used by default which is a simple in-memory cache that stores the data in a plain object. It can be seen in action in the demo below. {{"demo": "ServerSideDataGrid.js", "bg": "inline"}} @@ -211,7 +211,7 @@ const lowTTLCache = new GridDataSourceCacheDefault({ ttl: 1000 * 10 }); // 10 se ### Custom cache -To provide a custom cache, use `unstable_dataSourceCache` prop, which could be either written from scratch or based out of another cache library. +To provide a custom cache, use `unstable_dataSourceCache` prop, which could be either written from scratch or based on another cache library. This prop accepts a generic interface of type `GridDataSourceCache`. ```tsx diff --git a/packages/x-internals/README.md b/packages/x-internals/README.md index e4389f60af4d..fc88a82e83b3 100644 --- a/packages/x-internals/README.md +++ b/packages/x-internals/README.md @@ -1,4 +1,4 @@ # @mui/x-internals -Shared utilities used by MUI X packages. +Shared utilities used by MUI X packages. This package should never be installed or used directly. From dd1158f2d31fdd8733db0085c56e82f30967c9dc Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Tue, 30 Jul 2024 14:54:17 -0400 Subject: [PATCH 711/912] [DataGrid] Refactor: remove useless copy (#14039) --- packages/x-data-grid/src/internals/utils/useProps.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/x-data-grid/src/internals/utils/useProps.ts b/packages/x-data-grid/src/internals/utils/useProps.ts index 0f876b37a31f..2529fc1f09df 100644 --- a/packages/x-data-grid/src/internals/utils/useProps.ts +++ b/packages/x-data-grid/src/internals/utils/useProps.ts @@ -32,8 +32,5 @@ function groupForwardedProps< } export function useProps>(allProps: T) { - return React.useMemo(() => { - const { ...themedProps } = allProps; - return groupForwardedProps(themedProps); - }, [allProps]); + return React.useMemo(() => groupForwardedProps(allProps), [allProps]); } From 0df10b7d7e87d560b886f651eda02800a62623e5 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Tue, 30 Jul 2024 22:27:47 +0200 Subject: [PATCH 712/912] [infra] Fixes output to empty string on `'_No response_'` as order id (#14044) --- .github/workflows/issue-cleanup.yml | 6 +++--- scripts/githubActions/issueBodyCleanup.js | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/issue-cleanup.yml b/.github/workflows/issue-cleanup.yml index 32815b98154c..a4d8839b60aa 100644 --- a/.github/workflows/issue-cleanup.yml +++ b/.github/workflows/issue-cleanup.yml @@ -1,4 +1,4 @@ -name: Cleanup issue +name: Issue cleanup on: issues: @@ -10,13 +10,13 @@ permissions: {} jobs: issue_cleanup: runs-on: ubuntu-latest - name: Clean issue body + name: Clean issue body and add support label permissions: issues: write steps: - name: Checkout repository uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Cleanup issue body + - name: Clean issue body id: cleanup uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: diff --git a/scripts/githubActions/issueBodyCleanup.js b/scripts/githubActions/issueBodyCleanup.js index 81e18cfba21f..91d251828f51 100644 --- a/scripts/githubActions/issueBodyCleanup.js +++ b/scripts/githubActions/issueBodyCleanup.js @@ -29,7 +29,11 @@ module.exports = async ({ core, context, github }) => { const searchKeywords = extractInputSection(lines, 'Search keywords'); // get the order id and set it as an output for the support label step - const orderID = extractInputSection(lines, 'Order ID or Support key'); + let orderID = extractInputSection(lines, 'Order ID or Support key'); + if (orderID === '_No response_') { + orderID = ''; + } + core.setOutput('ORDER_ID', orderID); const products = extractInputSection(lines, 'Affected products'); @@ -41,7 +45,7 @@ module.exports = async ({ core, context, github }) => { lines.push(''); lines.push(`**Search keywords**: ${searchKeywords}`); - if (orderID !== '' && orderID !== '_No response_') { + if (orderID !== '') { lines.push(`**Order ID**: ${orderID}`); } From 39b38ae5dcf8113232901eb7233aaffac405f0df Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Tue, 30 Jul 2024 18:44:44 -0400 Subject: [PATCH 713/912] [DataGrid] Fix top corner pixels & outline radius (#13943) Signed-off-by: Rom Grk Co-authored-by: Andrew Cherniavskii Co-authored-by: Kenan Yusuf --- .../src/tests/rows.DataGridPro.test.tsx | 10 ++- .../src/components/GridPagination.tsx | 1 + .../x-data-grid/src/components/GridRow.tsx | 64 ++++++------------- .../columnHeaders/GridColumnGroupHeader.tsx | 3 + .../src/components/containers/GridRoot.tsx | 16 ++--- .../components/containers/GridRootStyles.ts | 38 +++++++++-- .../virtualization/GridTopContainer.tsx | 11 ---- .../x-data-grid/src/constants/gridClasses.ts | 12 ++++ .../columnHeaders/useGridColumnHeaders.tsx | 3 + .../virtualization/useGridVirtualScroller.tsx | 8 ++- .../src/utils/composeGridClasses.ts | 10 +++ 11 files changed, 99 insertions(+), 77 deletions(-) create mode 100644 packages/x-data-grid/src/utils/composeGridClasses.ts diff --git a/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx index 101bc83e0420..8e24fde92b3b 100644 --- a/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/rows.DataGridPro.test.tsx @@ -441,10 +441,12 @@ describe(' - Rows', () => { const rowBufferPx = n * rowHeight; const nbRows = 996; const height = 600; + const headerHeight = rowHeight; + const innerHeight = height - headerHeight; render( - Rows', () => { const lastCell = $$('[role="row"]:last-child [role="gridcell"]')[0]; expect(lastCell).to.have.text('995'); - expect(renderingZone.children.length).to.equal(Math.floor(height / rowHeight) + n); + expect(renderingZone.children.length).to.equal(Math.floor(innerHeight / rowHeight) + n); const scrollbarSize = apiRef.current.state.dimensions.scrollbarSize; const distanceToFirstRow = (nbRows - renderingZone.children.length) * rowHeight; expect(gridOffsetTop()).to.equal(distanceToFirstRow); - expect(virtualScroller.scrollHeight - scrollbarSize).to.equal(nbRows * rowHeight); + expect(virtualScroller.scrollHeight - scrollbarSize - headerHeight).to.equal( + nbRows * rowHeight, + ); }); it('should have all the rows rendered of the page in the DOM when autoPageSize: true', () => { diff --git a/packages/x-data-grid/src/components/GridPagination.tsx b/packages/x-data-grid/src/components/GridPagination.tsx index e4ff7b2953c9..495d57d7ee02 100644 --- a/packages/x-data-grid/src/components/GridPagination.tsx +++ b/packages/x-data-grid/src/components/GridPagination.tsx @@ -16,6 +16,7 @@ import { } from '../hooks/features/pagination/gridPaginationSelector'; const GridPaginationRoot = styled(TablePagination)(({ theme }) => ({ + maxHeight: 'calc(100% + 1px)', // border width [`& .${tablePaginationClasses.selectLabel}`]: { display: 'none', [theme.breakpoints.up('sm')]: { diff --git a/packages/x-data-grid/src/components/GridRow.tsx b/packages/x-data-grid/src/components/GridRow.tsx index 917deae2ba62..ee26a2b20c1f 100644 --- a/packages/x-data-grid/src/components/GridRow.tsx +++ b/packages/x-data-grid/src/components/GridRow.tsx @@ -1,18 +1,15 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { - unstable_composeClasses as composeClasses, - unstable_useForkRef as useForkRef, -} from '@mui/utils'; +import { unstable_useForkRef as useForkRef } from '@mui/utils'; import { fastMemo } from '../utils/fastMemo'; import { GridRowEventLookup } from '../models/events'; import { GridRowId, GridRowModel } from '../models/gridRows'; import { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRowModel'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; -import { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses'; +import { gridClasses } from '../constants/gridClasses'; +import { composeGridClasses } from '../utils/composeGridClasses'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; -import type { DataGridProcessedProps } from '../models/props/DataGridProps'; import { GridPinnedColumns } from '../hooks/features/columns'; import type { GridStateColDef } from '../models/colDef/gridColDef'; import type { GridRenderContext } from '../models/params/gridScrollParams'; @@ -62,6 +59,7 @@ export interface GridRowProps extends React.HTMLAttributes { isFirstVisible: boolean; isLastVisible: boolean; isNotVisible: boolean; + showBottomBorder: boolean; onClick?: React.MouseEventHandler; onDoubleClick?: React.MouseEventHandler; onMouseEnter?: React.MouseEventHandler; @@ -69,33 +67,6 @@ export interface GridRowProps extends React.HTMLAttributes { [x: string]: any; // Allow custom attributes like data-* and aria-* } -type OwnerState = Pick & { - editable: boolean; - editing: boolean; - isFirstVisible: boolean; - isLastVisible: boolean; - classes?: DataGridProcessedProps['classes']; - rowHeight: GridRowProps['rowHeight']; -}; - -const useUtilityClasses = (ownerState: OwnerState) => { - const { editable, editing, selected, isFirstVisible, isLastVisible, rowHeight, classes } = - ownerState; - const slots = { - root: [ - 'row', - selected && 'selected', - editable && 'row--editable', - editing && 'row--editing', - isFirstVisible && 'row--firstVisible', - isLastVisible && 'row--lastVisible', - rowHeight === 'auto' && 'row--dynamicHeight', - ], - }; - - return composeClasses(slots, getDataGridUtilityClass, classes); -}; - function EmptyCell({ width }: { width: number }) { if (!width) { return null; @@ -129,6 +100,7 @@ const GridRow = React.forwardRef(function GridRow( isFirstVisible, isLastVisible, isNotVisible, + showBottomBorder, focusedCell, tabbableCell, onClick, @@ -152,6 +124,8 @@ const GridRow = React.forwardRef(function GridRow( const rowNode = apiRef.current.getRowNode(rowId); const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0; const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width; + const editing = apiRef.current.getRowMode(rowId) === GridRowModes.Edit; + const editable = rootProps.editMode === GridEditModes.Row; const hasFocusCell = focusedColumnIndex !== undefined; const hasVirtualFocusCellLeft = @@ -165,17 +139,18 @@ const GridRow = React.forwardRef(function GridRow( const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based - const ownerState = { - selected, - isFirstVisible, - isLastVisible, - classes: rootProps.classes, - editing: apiRef.current.getRowMode(rowId) === GridRowModes.Edit, - editable: rootProps.editMode === GridEditModes.Row, - rowHeight, - }; - - const classes = useUtilityClasses(ownerState); + const classes = composeGridClasses(rootProps.classes, { + root: [ + 'row', + selected && 'selected', + editable && 'row--editable', + editing && 'row--editing', + isFirstVisible && 'row--firstVisible', + isLastVisible && 'row--lastVisible', + showBottomBorder && 'row--borderBottom', + rowHeight === 'auto' && 'row--dynamicHeight', + ], + }); React.useLayoutEffect(() => { if (currentPage.range) { @@ -596,6 +571,7 @@ GridRow.propTypes = { rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired, rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, selected: PropTypes.bool.isRequired, + showBottomBorder: PropTypes.bool.isRequired, /** * Determines which cell should be tabbable by having tabIndex=0. * If `null`, no cell in this row is in the tab sequence. diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx index e9524c5a7e7e..b734b750b04e 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx @@ -38,6 +38,7 @@ type OwnerState = { showLeftBorder: boolean; showRightBorder: boolean; isDragging: boolean; + isLastColumn: boolean; headerAlign?: GridAlignment; classes?: DataGridProcessedProps['classes']; pinnedPosition?: GridPinnedColumnPosition; @@ -48,6 +49,7 @@ const useUtilityClasses = (ownerState: OwnerState) => { classes, headerAlign, isDragging, + isLastColumn, showLeftBorder, showRightBorder, groupId, @@ -67,6 +69,7 @@ const useUtilityClasses = (ownerState: OwnerState) => { groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight', + isLastColumn && 'columnHeader--last', ], draggableContainer: ['columnHeaderDraggableContainer'], titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'], diff --git a/packages/x-data-grid/src/components/containers/GridRoot.tsx b/packages/x-data-grid/src/components/containers/GridRoot.tsx index a9642d906b69..7bfee7a978eb 100644 --- a/packages/x-data-grid/src/components/containers/GridRoot.tsx +++ b/packages/x-data-grid/src/components/containers/GridRoot.tsx @@ -25,18 +25,17 @@ export interface GridRootProps extends React.HTMLAttributes { sx?: SxProps; } -type OwnerState = DataGridProcessedProps & { - density: GridDensity; -}; +type OwnerState = DataGridProcessedProps; -const useUtilityClasses = (ownerState: OwnerState) => { - const { autoHeight, density, classes, showCellVerticalBorder } = ownerState; +const useUtilityClasses = (ownerState: OwnerState, density: GridDensity) => { + const { autoHeight, classes, showCellVerticalBorder } = ownerState; const slots = { root: [ 'root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, + ownerState.slots.toolbar === null && 'root--noToolbar', 'withBorderColor', showCellVerticalBorder && 'withVerticalBorder', ], @@ -53,12 +52,9 @@ const GridRoot = React.forwardRef(function GridRo const rootElementRef = apiRef.current.rootElementRef; const handleRef = useForkRef(rootElementRef, ref); - const ownerState = { - ...rootProps, - density, - }; + const ownerState = rootProps; - const classes = useUtilityClasses(ownerState); + const classes = useUtilityClasses(ownerState, density); // Our implementation of const [mountedState, setMountedState] = React.useState(false); diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index ca63952cbb00..0e76bd7f298f 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -11,6 +11,9 @@ import { import type {} from '../../themeAugmentation/overrides'; import { gridClasses as c } from '../../constants/gridClasses'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; +import { useGridSelector } from '../../hooks/utils/useGridSelector'; +import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext'; +import { gridDimensionsSelector } from '../../hooks/features/dimensions/gridDimensionsSelectors'; export type OwnerState = DataGridProcessedProps; @@ -42,6 +45,11 @@ const columnHeaderStyles = { }, }; +// Emotion thinks it knows better than us which selector we should use. +// https://github.com/emotion-js/emotion/issues/1105#issuecomment-1722524968 +const ignoreSsrWarning = + '/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */'; + export const GridRootStyles = styled('div', { name: 'MuiDataGrid', slot: 'Root', @@ -125,6 +133,9 @@ export const GridRootStyles = styled('div', { styles.root, ], })<{ ownerState: OwnerState }>(({ theme: t }) => { + const apiRef = useGridPrivateApiContext(); + const dimensions = useGridSelector(apiRef, gridDimensionsSelector); + const borderColor = getBorderColor(t); const radius = t.shape.borderRadius; @@ -215,13 +226,9 @@ export const GridRootStyles = styled('div', { minWidth: 0, // See https://github.com/mui/mui-x/issues/8547 minHeight: 0, flexDirection: 'column', + overflow: 'hidden', overflowAnchor: 'none', // Keep the same scrolling position - // The selector we really want here is `:first-child`, but emotion thinks it knows better than use what we - // want and prints a warning to the console if we use it, about :first-child being "unsafe" in an SSR context. - // https://github.com/emotion-js/emotion/issues/1105 - // Using `:first-of-type instead` is ironically less "safe" because if all our elements aren't `div`, this style - // will fail to apply. - [`.${c.main} > *:first-of-type`]: { + [`.${c.main} > *:first-child${ignoreSsrWarning}`]: { borderTopLeftRadius: 'var(--unstable_DataGrid-radius)', borderTopRightRadius: 'var(--unstable_DataGrid-radius)', }, @@ -273,6 +280,15 @@ export const GridRootStyles = styled('div', { [`& .${c.columnHeader}:focus, & .${c.cell}:focus`]: { outline: `solid ${t.palette.primary.main} 1px`, }, + [`&.${c['root--noToolbar']} [aria-rowindex="1"] [aria-colindex="1"]`]: { + borderTopLeftRadius: 'calc(var(--unstable_DataGrid-radius) - 1px)', + }, + [`&.${c['root--noToolbar']} [aria-rowindex="1"] .${c['columnHeader--last']}`]: { + borderTopRightRadius: + !dimensions.hasScrollY || dimensions.scrollbarSize === 0 + ? 'calc(var(--unstable_DataGrid-radius) - 1px)' + : undefined, + }, [`& .${c.columnHeaderCheckbox}, & .${c.cellCheckbox}`]: { padding: 0, justifyContent: 'center', @@ -417,6 +433,16 @@ export const GridRootStyles = styled('div', { }, }, + /* Bottom border of the top-container */ + [`& .${c['row--borderBottom']} .${c.columnHeader}, + & .${c['row--borderBottom']} .${c.filler}, + & .${c['row--borderBottom']} .${c.scrollbarFiller}`]: { + borderBottom: `1px solid var(--DataGrid-rowBorderColor)`, + }, + [`& .${c['row--borderBottom']} .${c.cell}`]: { + borderBottom: `1px solid var(--rowBorderColor)`, + }, + /* Row styles */ [`.${c.row}`]: { display: 'flex', diff --git a/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx b/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx index 88603b41c344..2cb6904a4260 100644 --- a/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx @@ -15,17 +15,6 @@ const Element = styled('div')({ position: 'sticky', zIndex: 4, top: 0, - '&::after': { - content: '" "', - position: 'absolute', - zIndex: 5, - bottom: 0, - left: 0, - right: 0, - height: 1, - width: 'var(--DataGrid-rowWidth)', - backgroundColor: 'var(--DataGrid-rowBorderColor)', - }, }); export function GridTopContainer(props: React.HTMLAttributes) { diff --git a/packages/x-data-grid/src/constants/gridClasses.ts b/packages/x-data-grid/src/constants/gridClasses.ts index e18d9ad39c9c..3251ec30d194 100644 --- a/packages/x-data-grid/src/constants/gridClasses.ts +++ b/packages/x-data-grid/src/constants/gridClasses.ts @@ -444,6 +444,11 @@ export interface GridClasses { * Styles applied to the root element when user selection is disabled. */ 'root--disableUserSelection': string; + /** + * Used to fix header outline border radius. + * @ignore - do not document. + */ + 'root--noToolbar': string; /** * Styles applied to the row element if the row is editable. */ @@ -472,6 +477,11 @@ export interface GridClasses { * Styles applied to the row if its detail panel is open. */ 'row--detailPanelExpanded': string; + /** + * Styles applied to the row cells if the row needs a bottom border. + * @ignore - do not document. + */ + 'row--borderBottom': string; /** * Styles applied to the row element. */ @@ -729,6 +739,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', + 'root--noToolbar', 'row', 'row--editable', 'row--editing', @@ -737,6 +748,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', + 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index a18109c0edfb..de3a72f4a844 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -28,6 +28,7 @@ import { gridColumnPositionsSelector, gridVisiblePinnedColumnDefinitionsSelector, } from '../columns'; +import { gridPinnedRowsSelector } from '../rows/gridRowsSelector'; import { GridGroupingStructure } from '../columnGrouping/gridColumnGroupsInterfaces'; import { gridColumnGroupsUnwrappedModelSelector } from '../columnGrouping/gridColumnGroupsSelector'; import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell'; @@ -105,6 +106,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector); const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector); const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector); + const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector); const offsetLeft = computeOffsetLeft( columnPositions, renderContext, @@ -298,6 +300,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { role="row" aria-rowindex={headerGroupingMaxDepth + 1} ownerState={rootProps} + className={pinnedRows.top.length === 0 ? gridClasses['row--borderBottom'] : undefined} > {leftRenderContext && getColumnHeaders( diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx index be589c077003..4c12b9b87a56 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx @@ -378,6 +378,7 @@ export const useGridVirtualScroller = () => { rowIndexes.forEach((rowIndexInPage) => { const { id, model } = rowModels[rowIndexInPage]; + const rowIndex = (currentPage?.range?.firstRowIndex || 0) + rowIndexOffset + rowIndexInPage; // NOTE: This is an expensive feature, the colSpan code could be optimized. if (hasColSpan) { @@ -429,6 +430,7 @@ export const useGridVirtualScroller = () => { } let isLastVisible = false; + const isLastVisibleInSection = rowIndexInPage === rowModels.length - 1; if (isLastSection) { if (!isPinnedSection) { const lastIndex = currentPage.rows.length - 1; @@ -438,7 +440,7 @@ export const useGridVirtualScroller = () => { isLastVisible = true; } } else { - isLastVisible = rowIndexInPage === rowModels.length - 1; + isLastVisible = isLastVisibleInSection; } } @@ -467,8 +469,7 @@ export const useGridVirtualScroller = () => { theme.direction, pinnedColumns.left.length, ); - - const rowIndex = (currentPage?.range?.firstRowIndex || 0) + rowIndexOffset + rowIndexInPage; + const showBottomBorder = isLastVisibleInSection && params.position === 'top'; rows.push( { isFirstVisible={isFirstVisible} isLastVisible={isLastVisible} isNotVisible={isNotVisible} + showBottomBorder={showBottomBorder} {...rowProps} />, ); diff --git a/packages/x-data-grid/src/utils/composeGridClasses.ts b/packages/x-data-grid/src/utils/composeGridClasses.ts new file mode 100644 index 000000000000..f3b5b9ac6285 --- /dev/null +++ b/packages/x-data-grid/src/utils/composeGridClasses.ts @@ -0,0 +1,10 @@ +import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import { getDataGridUtilityClass } from '../constants/gridClasses'; +import type { DataGridProcessedProps } from '../models/props/DataGridProps'; + +export function composeGridClasses( + classes: DataGridProcessedProps['classes'], + slots: Parameters[0], +) { + return composeClasses(slots, getDataGridUtilityClass, classes); +} From a460f2d28d0be1db4a9589f4b5f032ec07089cfc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 09:49:22 +0300 Subject: [PATCH 714/912] Bump @mui/docs to 6.0.0-beta.4 (#14000) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/package.json b/docs/package.json index 28a3bd62dde7..513ebfc10669 100644 --- a/docs/package.json +++ b/docs/package.json @@ -28,7 +28,7 @@ "@emotion/server": "^11.11.0", "@emotion/styled": "^11.13.0", "@mui/base": "^5.0.0-beta.40", - "@mui/docs": "6.0.0-beta.2", + "@mui/docs": "6.0.0-beta.4", "@mui/icons-material": "^5.16.5", "@mui/joy": "^5.0.0-beta.48", "@mui/lab": "^5.0.0-alpha.173", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e05514f0951..0bcfd7ab1f02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -426,8 +426,8 @@ importers: specifier: ^5.0.0-beta.40 version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/docs': - specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(2aynwhh2o77ide7mtb5em7e6t4) + specifier: 6.0.0-beta.4 + version: 6.0.0-beta.4(v73oylu5qs3cavoyvfoft6xvce) '@mui/icons-material': specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -2947,9 +2947,9 @@ packages: '@mui/core-downloads-tracker@5.16.5': resolution: {integrity: sha512-ziFn1oPm6VjvHQcdGcAO+fXvOQEgieIj0BuSqcltFU+JXIxjPdVYNTdn2HU7/Ak5Gabk6k2u7+9PV7oZ6JT5sA==} - '@mui/docs@6.0.0-beta.2': - resolution: {integrity: sha512-VLSVlYs09wVyhxrjIEMoyHcJV60mMePjszbzOcGImbRgCdaSw1cwCTzntmB09dRkaDsMhRul1I+poFyQu0nCAA==} - engines: {node: '>=12.0.0'} + '@mui/docs@6.0.0-beta.4': + resolution: {integrity: sha512-zQ/0CPWRmNBDYwLE10FrBm4wnLUCm5200ZsyqFowcHr2Utajmlsby4BIkhjlZ7/XurQr2SW67bA+VIWT+GKvDQ==} + engines: {node: '>=14.0.0'} peerDependencies: '@mui/base': '*' '@mui/icons-material': ^5.0.0 @@ -2957,6 +2957,7 @@ packages: '@mui/system': ^5.0.0 '@types/react': ^17.0.0 || ^18.0.0 chai: ^4.4.1 + csstype: ^3.1.3 next: ^13.5.1 || ^14 react: ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -11744,7 +11745,7 @@ snapshots: '@mui/core-downloads-tracker@5.16.5': {} - '@mui/docs@6.0.0-beta.2(2aynwhh2o77ide7mtb5em7e6t4)': + '@mui/docs@6.0.0-beta.4(v73oylu5qs3cavoyvfoft6xvce)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11755,6 +11756,7 @@ snapshots: chai: 5.1.1 clipboard-copy: 4.0.1 clsx: 2.1.1 + csstype: 3.1.3 next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: 0.2.0 prop-types: 15.8.1 From 4f671aeb506ebfdf62da7da629c2f0ce79646a5f Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Wed, 31 Jul 2024 09:10:28 +0200 Subject: [PATCH 715/912] [test] Fix mocha config to run charts tests (#14041) --- .mocharc.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/.mocharc.js b/.mocharc.js index e45e0484ca48..3f1b312f2f7c 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -7,9 +7,6 @@ module.exports = { // Mocha seems to ignore .next anyway (maybe because dotfiles?). // We're leaving this to make sure. 'docs/.next/**', - // x-charts requires 'tsx/cjs' which conflict with the babel date-fns override for picker tests - 'packages/x-charts/**', - 'packages/x-charts-pro/**', ], recursive: true, timeout: (process.env.CIRCLECI === 'true' ? 5 : 2) * 1000, // Circle CI has low-performance CPUs. From f278d5a93ca848aeb37dc8b81a107c86457ae75d Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:03:42 +0200 Subject: [PATCH 716/912] [infra] Fixed add label call (#14049) --- scripts/githubActions/orderIdValidation.js | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/scripts/githubActions/orderIdValidation.js b/scripts/githubActions/orderIdValidation.js index 21a0ca3c609e..1acc23cc1d00 100644 --- a/scripts/githubActions/orderIdValidation.js +++ b/scripts/githubActions/orderIdValidation.js @@ -15,12 +15,6 @@ module.exports = async ({ core, context, github }) => { const orderApi = 'https://store-wp.mui.com/wp-json/wc/v3/orders/'; - const issue = await github.rest.issues.get({ - owner, - repo, - issue_number: issueNumber, - }); - core.debug(`>>> Order ID: ${orderId}`); if (!orderId) { @@ -59,19 +53,11 @@ module.exports = async ({ core, context, github }) => { core.debug(`>>> planName: ${planName}`); core.debug(`>>> labelName: ${labelName}`); - const label = await github.rest.issues.getLabel({ - owner, - repo, - name: labelName, - }); - - core.debug(`>>> new label: ${label.name}`); - await github.rest.issues.addLabels({ owner, repo, issue_number: issueNumber, - labels: [...issue.data.labels, label], + labels: [labelName], }); } } catch (error) { From ca2fb5cc9da621f5bfe38e9ae23fcb3e69261727 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:49:44 +0200 Subject: [PATCH 717/912] Bump @mui/monorepo digest to 4a82b6b (#13999) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Andrew Cherniavskyi --- docs/package.json | 1 + package.json | 2 +- pnpm-lock.yaml | 30 +++++++++++++++++++----------- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/docs/package.json b/docs/package.json index 513ebfc10669..5fb57f442982 100644 --- a/docs/package.json +++ b/docs/package.json @@ -109,6 +109,7 @@ "@types/d3-scale": "^4.0.8", "@types/d3-scale-chromatic": "^3.0.3", "@types/doctrine": "^0.0.9", + "@types/gtag.js": "^0.0.20", "@types/lodash": "^4.17.7", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", diff --git a/package.json b/package.json index 8aa2e169945c..9a5c889e6630 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@mui/internal-markdown": "^1.0.8", "@mui/internal-test-utils": "^1.0.5", "@mui/material": "^5.16.5", - "@mui/monorepo": "github:mui/material-ui#288863bd2f8681a82c4bfbaf13215b41043bc551", + "@mui/monorepo": "github:mui/material-ui#4a82b6b0e0395db8fa0a0d49b6b76de4516b1579", "@mui/utils": "^5.16.5", "@next/eslint-plugin-next": "14.2.5", "@octokit/plugin-retry": "^7.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0bcfd7ab1f02..5b82b9643cbd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': - specifier: github:mui/material-ui#288863bd2f8681a82c4bfbaf13215b41043bc551 - version: https://codeload.github.com/mui/material-ui/tar.gz/288863bd2f8681a82c4bfbaf13215b41043bc551(encoding@0.1.13) + specifier: github:mui/material-ui#4a82b6b0e0395db8fa0a0d49b6b76de4516b1579 + version: https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579(encoding@0.1.13) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -660,6 +660,9 @@ importers: '@types/doctrine': specifier: ^0.0.9 version: 0.0.9 + '@types/gtag.js': + specifier: ^0.0.20 + version: 0.0.20 '@types/lodash': specifier: ^4.17.7 version: 4.17.7 @@ -3060,9 +3063,9 @@ packages: '@types/react': optional: true - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/288863bd2f8681a82c4bfbaf13215b41043bc551': - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/288863bd2f8681a82c4bfbaf13215b41043bc551} - version: 6.0.0-beta.2 + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579': + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579} + version: 6.0.0-beta.4 engines: {pnpm: 9.5.0} '@mui/private-theming@5.16.5': @@ -4011,6 +4014,9 @@ packages: '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/gtag.js@0.0.20': + resolution: {integrity: sha512-wwAbk3SA2QeU67unN7zPxjEHmPmlXwZXZvQEpbEUQuMCRGgKyE1m6XDuTUA9b6pCGb/GqJmdfMOY5LuDjJSbbg==} + '@types/history@4.7.11': resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} @@ -6405,8 +6411,8 @@ packages: resolution: {integrity: sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==} engines: {node: '>=14'} - google-auth-library@9.11.0: - resolution: {integrity: sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==} + google-auth-library@9.12.0: + resolution: {integrity: sha512-5pWjpxJMNJ5UTuhK7QPD5KFPsbosWkX4ajMDeZwXllTtwwqeiIzPWbHIddkLBkkn0mUPboTmukT5rd30Ec9igQ==} engines: {node: '>=14'} googleapis-common@7.0.1: @@ -11898,13 +11904,13 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/288863bd2f8681a82c4bfbaf13215b41043bc551(encoding@0.1.13)': + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579(encoding@0.1.13)': dependencies: '@googleapis/sheets': 8.0.0(encoding@0.1.13) '@netlify/functions': 2.8.1 '@slack/bolt': 3.19.0 execa: 9.3.0 - google-auth-library: 9.11.0(encoding@0.1.13) + google-auth-library: 9.12.0(encoding@0.1.13) transitivePeerDependencies: - bufferutil - debug @@ -12982,6 +12988,8 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 18.19.42 + '@types/gtag.js@0.0.20': {} + '@types/history@4.7.11': {} '@types/html-minifier-terser@6.1.0': {} @@ -15939,7 +15947,7 @@ snapshots: transitivePeerDependencies: - supports-color - google-auth-library@9.11.0(encoding@0.1.13): + google-auth-library@9.12.0(encoding@0.1.13): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -15955,7 +15963,7 @@ snapshots: dependencies: extend: 3.0.2 gaxios: 6.1.1(encoding@0.1.13) - google-auth-library: 9.11.0(encoding@0.1.13) + google-auth-library: 9.12.0(encoding@0.1.13) qs: 6.11.2 url-template: 2.0.8 uuid: 9.0.1 From 995fcccbdd856b1e4aa98c810cd54e2c2fa20184 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 31 Jul 2024 13:55:48 +0200 Subject: [PATCH 718/912] [TreeView] Support item reordering using drag and drop (#12213) --- docs/data/pages.ts | 1 + .../customization/FileExplorer.js | 3 + .../customization/FileExplorer.tsx | 3 + .../customization/HeadlessAPI.js | 3 + .../customization/HeadlessAPI.tsx | 3 + .../tree-view/rich-tree-view/items/items.md | 5 + .../rich-tree-view/ordering/DragAndDrop.js | 50 +++ .../rich-tree-view/ordering/DragAndDrop.tsx | 50 +++ .../ordering/DragAndDrop.tsx.preview | 9 + .../rich-tree-view/ordering/FileExplorer.js | 260 ++++++++++++ .../rich-tree-view/ordering/FileExplorer.tsx | 295 ++++++++++++++ .../ordering/OnItemPositionChange.js | 69 ++++ .../ordering/OnItemPositionChange.tsx | 77 ++++ .../ordering/OnlyReorderFromDragHandle.js | 115 ++++++ .../ordering/OnlyReorderFromDragHandle.tsx | 129 ++++++ .../OnlyReorderFromDragHandle.tsx.preview | 10 + .../ordering/OnlyReorderInSameParent.js | 53 +++ .../ordering/OnlyReorderInSameParent.tsx | 53 +++ .../OnlyReorderInSameParent.tsx.preview | 12 + .../ordering/OnlyReorderLeaves.js | 57 +++ .../ordering/OnlyReorderLeaves.tsx | 57 +++ .../ordering/OnlyReorderLeaves.tsx.preview | 13 + .../ordering/SendAllItemsToServer.js | 88 +++++ .../ordering/SendAllItemsToServer.tsx | 88 +++++ .../rich-tree-view/ordering/ordering.md | 72 ++++ .../pages/x/api/tree-view/rich-tree-view.json | 2 +- docs/pages/x/api/tree-view/tree-item-2.json | 8 +- docs/pages/x/api/tree-view/tree-item.json | 6 + .../rich-tree-view/ordering.js | 7 + .../tree-view/tree-item-2/tree-item-2.json | 1 + .../tree-view/tree-item/tree-item.json | 4 + .../DateRangeCalendar.test.tsx | 2 +- .../hooks/useField/useField.utils.ts | 2 +- .../RichTreeViewPro.plugins.ts | 8 +- .../x-tree-view-pro/src/internals/index.ts | 1 + .../useTreeViewItemsReordering/index.ts | 7 + .../useTreeViewItemsReordering.itemPlugin.ts | 155 ++++++++ .../useTreeViewItemsReordering.test.tsx | 370 ++++++++++++++++++ .../useTreeViewItemsReordering.ts | 278 +++++++++++++ .../useTreeViewItemsReordering.types.ts | 160 ++++++++ .../useTreeViewItemsReordering.utils.ts | 199 ++++++++++ .../x-tree-view/src/TreeItem/TreeItem.tsx | 37 +- .../src/TreeItem/TreeItemContent.tsx | 11 + .../src/TreeItem/treeItemClasses.ts | 3 + .../src/TreeItem/useTreeItemState.ts | 2 +- .../x-tree-view/src/TreeItem2/TreeItem2.tsx | 15 + .../src/TreeItem2/TreeItem2.types.ts | 7 + .../TreeItem2DragAndDropOverlay.tsx | 72 ++++ .../TreeItem2DragAndDropOverlay.types.ts | 7 + .../src/TreeItem2DragAndDropOverlay/index.ts | 2 + .../src/TreeItem2Icon/TreeItem2Icon.tsx | 2 +- .../TreeItem2Provider/TreeItem2Provider.tsx | 2 +- .../useTreeItem2Utils/useTreeItem2Utils.tsx | 2 +- .../src/internals/TreeViewProvider/index.ts | 1 + packages/x-tree-view/src/internals/index.ts | 16 +- .../x-tree-view/src/internals/models/index.ts | 1 + .../src/internals/models/itemPlugin.ts | 2 + .../plugins/useTreeViewItems/index.ts | 2 + .../useTreeViewItems.types.ts | 5 +- .../useTreeViewJSXItems.tsx | 2 +- .../useTreeViewKeyboardNavigation.ts | 6 +- .../useTreeViewKeyboardNavigation.types.ts | 3 +- packages/x-tree-view/src/models/items.ts | 6 + .../x-tree-view/src/useTreeItem2/index.ts | 1 + .../src/useTreeItem2/useTreeItem2.ts | 62 ++- .../src/useTreeItem2/useTreeItem2.types.ts | 26 +- scripts/x-tree-view.exports.json | 2 + test/utils/dragAndDrop.ts | 65 +++ test/utils/pickers/calendar.ts | 67 +--- .../describeTreeView/describeTreeView.tsx | 29 +- .../describeTreeView.types.ts | 9 + 71 files changed, 3144 insertions(+), 108 deletions(-) create mode 100644 docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.js create mode 100644 docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.tsx create mode 100644 docs/data/tree-view/rich-tree-view/ordering/ordering.md create mode 100644 docs/pages/x/react-tree-view/rich-tree-view/ordering.js create mode 100644 packages/x-tree-view-pro/src/internals/index.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/index.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx create mode 100644 packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.ts create mode 100644 packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.ts create mode 100644 packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx create mode 100644 packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.ts create mode 100644 packages/x-tree-view/src/TreeItem2DragAndDropOverlay/index.ts create mode 100644 test/utils/dragAndDrop.ts diff --git a/docs/data/pages.ts b/docs/data/pages.ts index 52a507a9c828..ae5de4cf9b6b 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -510,6 +510,7 @@ const pages: MuiPage[] = [ { pathname: '/x/react-tree-view/rich-tree-view/expansion' }, { pathname: '/x/react-tree-view/rich-tree-view/customization' }, { pathname: '/x/react-tree-view/rich-tree-view/focus' }, + { pathname: '/x/react-tree-view/rich-tree-view/ordering', plan: 'pro' }, ], }, { diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js index ee988f862845..a02a1e86667b 100644 --- a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js @@ -25,6 +25,7 @@ import { } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; const ITEMS = [ { @@ -212,6 +213,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { getCheckboxProps, getLabelProps, getGroupTransitionProps, + getDragAndDropOverlayProps, status, publicAPI, } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); @@ -245,6 +247,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + {children && } diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx index 3bee383e9d96..b57e0a3fb720 100644 --- a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx @@ -28,6 +28,7 @@ import { } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; import { TreeViewBaseItem } from '@mui/x-tree-view/models'; type FileType = 'image' | 'pdf' | 'doc' | 'video' | 'folder' | 'pinned' | 'trash'; @@ -248,6 +249,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( getCheckboxProps, getLabelProps, getGroupTransitionProps, + getDragAndDropOverlayProps, status, publicAPI, } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); @@ -281,6 +283,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( + {children && } diff --git a/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.js b/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.js index e3915dd7caba..1fa00ed8698b 100644 --- a/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.js +++ b/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.js @@ -15,6 +15,7 @@ import { } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; const ITEMS = [ { @@ -50,6 +51,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { getCheckboxProps, getLabelProps, getGroupTransitionProps, + getDragAndDropOverlayProps, status, } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); @@ -74,6 +76,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + {children && } diff --git a/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.tsx b/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.tsx index 8d0929895b2c..75533393d528 100644 --- a/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/HeadlessAPI.tsx @@ -18,6 +18,7 @@ import { } from '@mui/x-tree-view/TreeItem2'; import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; const ITEMS: TreeViewBaseItem[] = [ { @@ -60,6 +61,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( getCheckboxProps, getLabelProps, getGroupTransitionProps, + getDragAndDropOverlayProps, status, } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); @@ -84,6 +86,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem( + {children && } diff --git a/docs/data/tree-view/rich-tree-view/items/items.md b/docs/data/tree-view/rich-tree-view/items/items.md index 604336992c08..322e8c3dba80 100644 --- a/docs/data/tree-view/rich-tree-view/items/items.md +++ b/docs/data/tree-view/rich-tree-view/items/items.md @@ -187,6 +187,11 @@ const itemTree = apiRef.current.getItemTree(); {{"demo": "ApiMethodGetItemTree.js", "defaultCodeOpen": false}} +:::info +This method is mostly useful when the Tree View has some internal updates on the items. +For now, the only features causing updates on the items is the [re-ordering](/x/react-tree-view/rich-tree-view/ordering/). +::: + ### Get an item's children by ID Use the `getItemOrderedChildrenIds` API method to get an item's children by its ID. diff --git a/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.js b/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.js new file mode 100644 index 000000000000..7832e545034f --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.js @@ -0,0 +1,50 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; + +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; + +const ITEMS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function DragAndDrop() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx b/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx new file mode 100644 index 000000000000..1c59beb40bc9 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx @@ -0,0 +1,50 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; + +const ITEMS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function DragAndDrop() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx.preview b/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx.preview new file mode 100644 index 000000000000..b29cac8f227a --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/DragAndDrop.tsx.preview @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js new file mode 100644 index 000000000000..2e27635af25f --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js @@ -0,0 +1,260 @@ +import * as React from 'react'; +import clsx from 'clsx'; +import { styled, alpha } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import ArticleIcon from '@mui/icons-material/Article'; +import DeleteIcon from '@mui/icons-material/Delete'; +import FolderRounded from '@mui/icons-material/FolderRounded'; +import ImageIcon from '@mui/icons-material/Image'; +import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf'; +import VideoCameraBackIcon from '@mui/icons-material/VideoCameraBack'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { treeItemClasses } from '@mui/x-tree-view/TreeItem'; +import { unstable_useTreeItem2 as useTreeItem2 } from '@mui/x-tree-view/useTreeItem2'; +import { + TreeItem2Checkbox, + TreeItem2Content, + TreeItem2IconContainer, + TreeItem2Label, + TreeItem2Root, + TreeItem2GroupTransition, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; +import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; + +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const ITEMS = [ + { + id: '1', + label: 'Documents', + fileType: 'folder', + children: [ + { + id: '1.1', + label: 'Company', + fileType: 'folder', + children: [ + { id: '1.1.1', label: 'Invoice', fileType: 'pdf' }, + { id: '1.1.2', label: 'Meeting notes', fileType: 'doc' }, + { id: '1.1.3', label: 'Tasks list', fileType: 'doc' }, + { id: '1.1.4', label: 'Equipment', fileType: 'pdf' }, + { id: '1.1.5', label: 'Video conference', fileType: 'video' }, + ], + }, + { id: '1.2', label: 'Personal', fileType: 'folder' }, + { id: '1.3', label: 'Group photo', fileType: 'image' }, + ], + }, + { + id: '2', + label: 'Bookmarked', + fileType: 'folder', + children: [ + { id: '2.1', label: 'Learning materials', fileType: 'folder' }, + { id: '2.2', label: 'News', fileType: 'folder' }, + { id: '2.3', label: 'Forums', fileType: 'folder' }, + { id: '2.4', label: 'Travel documents', fileType: 'pdf' }, + ], + }, + { id: '3', label: 'History', fileType: 'folder' }, + { id: '4', label: 'Trash', fileType: 'trash' }, +]; + +function DotIcon() { + return ( + + ); +} + +const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ + color: + theme.palette.mode === 'light' + ? theme.palette.grey[800] + : theme.palette.grey[400], + position: 'relative', + [`& .${treeItemClasses.groupTransition}`]: { + marginLeft: theme.spacing(3.5), + }, +})); + +const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ + flexDirection: 'row-reverse', + borderRadius: theme.spacing(0.7), + marginBottom: theme.spacing(0.5), + marginTop: theme.spacing(0.5), + paddingRight: theme.spacing(1), + fontWeight: 500, + [`&.Mui-expanded `]: { + '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { + color: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + }, + '&::before': { + content: '""', + display: 'block', + position: 'absolute', + left: '16px', + top: '44px', + height: 'calc(100% - 48px)', + width: '1.5px', + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.grey[300] + : theme.palette.grey[700], + }, + }, + '&:hover': { + backgroundColor: alpha(theme.palette.primary.main, 0.1), + color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + }, + [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + color: theme.palette.primary.contrastText, + }, +})); + +const StyledTreeItemLabelText = styled(Typography)({ + color: 'inherit', + fontFamily: 'General Sans', + fontWeight: 500, +}); + +function CustomLabel({ icon: Icon, expandable, children, ...other }) { + return ( + + {Icon && ( + + )} + + {children} + {expandable && } + + ); +} + +const isExpandable = (reactChildren) => { + if (Array.isArray(reactChildren)) { + return reactChildren.length > 0 && reactChildren.some(isExpandable); + } + return Boolean(reactChildren); +}; + +const getIconFromFileType = (fileType) => { + switch (fileType) { + case 'image': + return ImageIcon; + case 'pdf': + return PictureAsPdfIcon; + case 'doc': + return ArticleIcon; + case 'video': + return VideoCameraBackIcon; + case 'folder': + return FolderRounded; + case 'trash': + return DeleteIcon; + default: + return ArticleIcon; + } +}; + +const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + const { id, itemId, label, disabled, children, ...other } = props; + + const { + getRootProps, + getContentProps, + getIconContainerProps, + getCheckboxProps, + getLabelProps, + getGroupTransitionProps, + getDragAndDropOverlayProps, + status, + publicAPI, + } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); + + const item = publicAPI.getItem(itemId); + const expandable = isExpandable(children); + const icon = getIconFromFileType(item.fileType); + + return ( + + + + + + + + + + + {children && } + + + ); +}); + +export default function FileExplorer() { + const apiRef = useTreeViewApiRef(); + + return ( + { + return ( + params.newPosition.parentId === null || + ['folder', 'trash'].includes( + apiRef.current.getItem(params.newPosition.parentId).fileType, + ) + ); + }} + /> + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx new file mode 100644 index 000000000000..77d933653142 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx @@ -0,0 +1,295 @@ +import * as React from 'react'; +import clsx from 'clsx'; +import { styled, alpha } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import ArticleIcon from '@mui/icons-material/Article'; +import DeleteIcon from '@mui/icons-material/Delete'; +import FolderRounded from '@mui/icons-material/FolderRounded'; +import ImageIcon from '@mui/icons-material/Image'; +import PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf'; +import VideoCameraBackIcon from '@mui/icons-material/VideoCameraBack'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { treeItemClasses } from '@mui/x-tree-view/TreeItem'; +import { + unstable_useTreeItem2 as useTreeItem2, + UseTreeItem2Parameters, +} from '@mui/x-tree-view/useTreeItem2'; +import { + TreeItem2Checkbox, + TreeItem2Content, + TreeItem2IconContainer, + TreeItem2Label, + TreeItem2Root, + TreeItem2GroupTransition, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; +import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +type FileType = 'image' | 'pdf' | 'doc' | 'video' | 'folder' | 'pinned' | 'trash'; + +type ExtendedTreeItemProps = { + fileType: FileType; + id: string; + label: string; +}; + +const ITEMS: TreeViewBaseItem[] = [ + { + id: '1', + label: 'Documents', + fileType: 'folder', + children: [ + { + id: '1.1', + label: 'Company', + fileType: 'folder', + children: [ + { id: '1.1.1', label: 'Invoice', fileType: 'pdf' }, + { id: '1.1.2', label: 'Meeting notes', fileType: 'doc' }, + { id: '1.1.3', label: 'Tasks list', fileType: 'doc' }, + { id: '1.1.4', label: 'Equipment', fileType: 'pdf' }, + { id: '1.1.5', label: 'Video conference', fileType: 'video' }, + ], + }, + { id: '1.2', label: 'Personal', fileType: 'folder' }, + { id: '1.3', label: 'Group photo', fileType: 'image' }, + ], + }, + { + id: '2', + label: 'Bookmarked', + fileType: 'folder', + children: [ + { id: '2.1', label: 'Learning materials', fileType: 'folder' }, + { id: '2.2', label: 'News', fileType: 'folder' }, + { id: '2.3', label: 'Forums', fileType: 'folder' }, + { id: '2.4', label: 'Travel documents', fileType: 'pdf' }, + ], + }, + { id: '3', label: 'History', fileType: 'folder' }, + { id: '4', label: 'Trash', fileType: 'trash' }, +]; + +function DotIcon() { + return ( + + ); +} +declare module 'react' { + interface CSSProperties { + '--tree-view-color'?: string; + '--tree-view-bg-color'?: string; + } +} + +const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ + color: + theme.palette.mode === 'light' + ? theme.palette.grey[800] + : theme.palette.grey[400], + position: 'relative', + [`& .${treeItemClasses.groupTransition}`]: { + marginLeft: theme.spacing(3.5), + }, +})) as unknown as typeof TreeItem2Root; + +const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ + flexDirection: 'row-reverse', + borderRadius: theme.spacing(0.7), + marginBottom: theme.spacing(0.5), + marginTop: theme.spacing(0.5), + paddingRight: theme.spacing(1), + fontWeight: 500, + [`&.Mui-expanded `]: { + '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { + color: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + }, + '&::before': { + content: '""', + display: 'block', + position: 'absolute', + left: '16px', + top: '44px', + height: 'calc(100% - 48px)', + width: '1.5px', + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.grey[300] + : theme.palette.grey[700], + }, + }, + '&:hover': { + backgroundColor: alpha(theme.palette.primary.main, 0.1), + color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + }, + [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { + backgroundColor: + theme.palette.mode === 'light' + ? theme.palette.primary.main + : theme.palette.primary.dark, + color: theme.palette.primary.contrastText, + }, +})); + +const StyledTreeItemLabelText = styled(Typography)({ + color: 'inherit', + fontFamily: 'General Sans', + fontWeight: 500, +}) as unknown as typeof Typography; + +interface CustomLabelProps { + children: React.ReactNode; + icon?: React.ElementType; + expandable?: boolean; +} + +function CustomLabel({ + icon: Icon, + expandable, + children, + ...other +}: CustomLabelProps) { + return ( + + {Icon && ( + + )} + + {children} + {expandable && } + + ); +} + +const isExpandable = (reactChildren: React.ReactNode) => { + if (Array.isArray(reactChildren)) { + return reactChildren.length > 0 && reactChildren.some(isExpandable); + } + return Boolean(reactChildren); +}; + +const getIconFromFileType = (fileType: FileType) => { + switch (fileType) { + case 'image': + return ImageIcon; + case 'pdf': + return PictureAsPdfIcon; + case 'doc': + return ArticleIcon; + case 'video': + return VideoCameraBackIcon; + case 'folder': + return FolderRounded; + case 'trash': + return DeleteIcon; + default: + return ArticleIcon; + } +}; + +interface CustomTreeItemProps + extends Omit, + Omit, 'onFocus'> {} + +const CustomTreeItem = React.forwardRef(function CustomTreeItem( + props: CustomTreeItemProps, + ref: React.Ref, +) { + const { id, itemId, label, disabled, children, ...other } = props; + + const { + getRootProps, + getContentProps, + getIconContainerProps, + getCheckboxProps, + getLabelProps, + getGroupTransitionProps, + getDragAndDropOverlayProps, + status, + publicAPI, + } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); + + const item = publicAPI.getItem(itemId); + const expandable = isExpandable(children); + const icon = getIconFromFileType(item.fileType); + + return ( + + + + + + + + + + + {children && } + + + ); +}); + +export default function FileExplorer() { + const apiRef = useTreeViewApiRef(); + + return ( + { + return ( + params.newPosition.parentId === null || + ['folder', 'trash'].includes( + apiRef.current!.getItem(params.newPosition.parentId).fileType, + ) + ); + }} + /> + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.js b/docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.js new file mode 100644 index 000000000000..c9cfef10d6a0 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.js @@ -0,0 +1,69 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; + +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnItemPositionChange() { + const [lastReorder, setLastReorder] = React.useState(null); + + return ( + + + setLastReorder(params)} + /> + + {lastReorder == null ? ( + No reorder registered yet + ) : ( + + Last reordered item: {lastReorder.itemId} +
    + Position before: {lastReorder.oldPosition.parentId ?? 'root'} (index{' '} + {lastReorder.oldPosition.index})
    F Position after:{' '} + {lastReorder.newPosition.parentId ?? 'root'} (index{' '} + {lastReorder.newPosition.index}) +
    + )} +
    + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.tsx b/docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.tsx new file mode 100644 index 000000000000..52f5ff5474bc --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnItemPositionChange.tsx @@ -0,0 +1,77 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { + RichTreeViewPro, + RichTreeViewProProps, +} from '@mui/x-tree-view-pro/RichTreeViewPro'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnItemPositionChange() { + const [lastReorder, setLastReorder] = React.useState< + | Parameters< + NonNullable['onItemPositionChange']> + >[0] + | null + >(null); + + return ( + + + setLastReorder(params)} + /> + + {lastReorder == null ? ( + No reorder registered yet + ) : ( + + Last reordered item: {lastReorder.itemId} +
    + Position before: {lastReorder.oldPosition.parentId ?? 'root'} (index{' '} + {lastReorder.oldPosition.index})
    F Position after:{' '} + {lastReorder.newPosition.parentId ?? 'root'} (index{' '} + {lastReorder.newPosition.index}) +
    + )} +
    + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.js b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.js new file mode 100644 index 000000000000..8aa17d6dd5a2 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.js @@ -0,0 +1,115 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import DragIndicatorIcon from '@mui/icons-material/DragIndicator'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; + +import { unstable_useTreeItem2 as useTreeItem2 } from '@mui/x-tree-view/useTreeItem2'; +import { + TreeItem2Content, + TreeItem2IconContainer, + TreeItem2GroupTransition, + TreeItem2Label, + TreeItem2Root, + TreeItem2Checkbox, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; +import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +const CustomTreeItem = React.forwardRef(function CustomTreeItem(props, ref) { + const { id, itemId, label, disabled, children, ...other } = props; + + const { + getRootProps, + getContentProps, + getIconContainerProps, + getCheckboxProps, + getLabelProps, + getGroupTransitionProps, + getDragAndDropOverlayProps, + status, + } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); + + const { draggable, onDragStart, onDragOver, onDragEnd, ...otherRootProps } = + getRootProps(other); + + const handleDragStart = (event) => { + if (!onDragStart) { + return; + } + + onDragStart(event); + event.dataTransfer.setDragImage(event.target.parentElement, 0, 0); + }; + + return ( + + + + + + + + + + + + + + {children && } + + + ); +}); + +export default function OnlyReorderFromDragHandle() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx new file mode 100644 index 000000000000..d01d81f8f4c3 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx @@ -0,0 +1,129 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import DragIndicatorIcon from '@mui/icons-material/DragIndicator'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { + unstable_useTreeItem2 as useTreeItem2, + UseTreeItem2Parameters, +} from '@mui/x-tree-view/useTreeItem2'; +import { + TreeItem2Content, + TreeItem2IconContainer, + TreeItem2GroupTransition, + TreeItem2Label, + TreeItem2Root, + TreeItem2Checkbox, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2Icon } from '@mui/x-tree-view/TreeItem2Icon'; +import { TreeItem2Provider } from '@mui/x-tree-view/TreeItem2Provider'; +import { TreeItem2DragAndDropOverlay } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +interface CustomTreeItemProps + extends Omit, + Omit, 'onFocus'> {} + +const CustomTreeItem = React.forwardRef(function CustomTreeItem( + props: CustomTreeItemProps, + ref: React.Ref, +) { + const { id, itemId, label, disabled, children, ...other } = props; + + const { + getRootProps, + getContentProps, + getIconContainerProps, + getCheckboxProps, + getLabelProps, + getGroupTransitionProps, + getDragAndDropOverlayProps, + status, + } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref }); + + const { draggable, onDragStart, onDragOver, onDragEnd, ...otherRootProps } = + getRootProps(other); + + const handleDragStart = (event: React.DragEvent) => { + if (!onDragStart) { + return; + } + + onDragStart(event); + event.dataTransfer.setDragImage( + (event.target as HTMLElement).parentElement!, + 0, + 0, + ); + }; + + return ( + + + + + + + + + + + + + + {children && } + + + ); +}); + +export default function OnlyReorderFromDragHandle() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx.preview b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx.preview new file mode 100644 index 000000000000..632176dce3e3 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderFromDragHandle.tsx.preview @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.js b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.js new file mode 100644 index 000000000000..c105172ea3e9 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.js @@ -0,0 +1,53 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; + +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnlyReorderInSameParent() { + return ( + + + params.oldPosition.parentId === params.newPosition.parentId + } + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx new file mode 100644 index 000000000000..c69e56fdfde4 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx @@ -0,0 +1,53 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnlyReorderInSameParent() { + return ( + + + params.oldPosition.parentId === params.newPosition.parentId + } + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx.preview b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx.preview new file mode 100644 index 000000000000..726c958558b1 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderInSameParent.tsx.preview @@ -0,0 +1,12 @@ + + params.oldPosition.parentId === params.newPosition.parentId + } +/> \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.js b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.js new file mode 100644 index 000000000000..ac3e351da44b --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.js @@ -0,0 +1,57 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; + +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnlyReorderLeaves() { + const apiRef = useTreeViewApiRef(); + + return ( + + + apiRef.current.getItemOrderedChildrenIds(itemId).length === 0 + } + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx new file mode 100644 index 000000000000..551b2a805ef4 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx @@ -0,0 +1,57 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function OnlyReorderLeaves() { + const apiRef = useTreeViewApiRef(); + + return ( + + + apiRef.current!.getItemOrderedChildrenIds(itemId).length === 0 + } + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx.preview b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx.preview new file mode 100644 index 000000000000..8057c22fe961 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/OnlyReorderLeaves.tsx.preview @@ -0,0 +1,13 @@ + + apiRef.current!.getItemOrderedChildrenIds(itemId).length === 0 + } +/> \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.js b/docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.js new file mode 100644 index 000000000000..1481b77bb83d --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.js @@ -0,0 +1,88 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; + +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +const getAllItemsWithChildrenItemIds = (items) => { + const itemIds = []; + const registerItemId = (item) => { + if (item.children?.length) { + itemIds.push(item.id); + item.children.forEach(registerItemId); + } + }; + + items.forEach(registerItemId); + + return itemIds; +}; + +export default function SendAllItemsToServer() { + const apiRefTreeViewA = useTreeViewApiRef(); + const [itemsTreeViewB, setItemsTreeViewB] = React.useState(MUI_X_PRODUCTS); + + const handleItemPositionChangeTreeViewA = () => { + // We need to wait for the new items to be updated in the state + setTimeout(() => { + const newItemsTreeViewA = apiRefTreeViewA.current.getItemTree(); + setItemsTreeViewB(newItemsTreeViewA); + }); + }; + + return ( + + + + + + true} + /> + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.tsx b/docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.tsx new file mode 100644 index 000000000000..6f39404daf70 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/SendAllItemsToServer.tsx @@ -0,0 +1,88 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; +import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and Time Pickers', + children: [ + { id: 'pickers-community', label: '@mui/x-date-pickers' }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +const getAllItemsWithChildrenItemIds = (items: TreeViewBaseItem[]) => { + const itemIds: string[] = []; + const registerItemId = (item: TreeViewBaseItem) => { + if (item.children?.length) { + itemIds.push(item.id); + item.children.forEach(registerItemId); + } + }; + + items.forEach(registerItemId); + + return itemIds; +}; + +export default function SendAllItemsToServer() { + const apiRefTreeViewA = useTreeViewApiRef(); + const [itemsTreeViewB, setItemsTreeViewB] = React.useState(MUI_X_PRODUCTS); + + const handleItemPositionChangeTreeViewA = () => { + // We need to wait for the new items to be updated in the state + setTimeout(() => { + const newItemsTreeViewA = apiRefTreeViewA.current!.getItemTree(); + setItemsTreeViewB(newItemsTreeViewA); + }); + }; + + return ( + + + + + + true} + /> + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/ordering/ordering.md b/docs/data/tree-view/rich-tree-view/ordering/ordering.md new file mode 100644 index 000000000000..bdd78d0ff9ad --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/ordering/ordering.md @@ -0,0 +1,72 @@ +--- +productId: x-tree-view +title: Rich Tree View - Ordering +components: RichTreeView, TreeItem2 +packageName: '@mui/x-tree-view' +githubLabel: 'component: tree view' +waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/ +--- + +# Rich Tree View - Ordering [](/x/introduction/licensing/#pro-plan 'Pro plan') + +

    Drag and drop your items to reorder them.

    + +:::success +To be able to reorder items, you first have to enable the `indentationAtItemLevel` and the `itemsReordering` experimental features: + +```tsx + +``` + +See [Tree Item Customization—Apply the nested item's indentation at the item level](/x/react-tree-view/tree-item-customization/#apply-the-nested-items-indentation-at-the-item-level) for more details. +::: + +## Enable drag & drop re-ordering + +You can enable the drag & drop re-ordering of items by setting the `itemsReordering` prop to `true`: + +{{"demo": "DragAndDrop.js"}} + +## Limit the re-ordering + +By default, all the items are reorderable. +You can prevent the re-ordering of some items using the `isItemReorderable` prop. +The following example shows how to only allow re-ordering of the leaves using the [`getItemOrderedChildrenIds`](/x/react-tree-view/rich-tree-view/items/#get-an-items-children-by-id) API method. + +{{"demo": "OnlyReorderLeaves.js"}} + +You can also limit the items in which an item can be dropped using the `canMoveItemToNewPosition` prop. +The following example shows how to only allow re-ordering inside the same parent: + +{{"demo": "OnlyReorderInSameParent.js"}} + +## React to an item re-ordering + +You can use the `onItemPositionChange` to send the new position of an item to your backend: + +{{"demo": "OnItemPositionChange.js"}} + +If you want to send the entire dataset to your backend, you can use the [`getItemTree`](/x/react-tree-view/rich-tree-view/items/#get-the-current-item-tree) API method. +The following demo demonstrates it by synchronizing the first tree view with the second one whenever you do a re-ordering: + +{{"demo": "SendAllItemsToServer.js"}} + +## Customization + +### Only trigger the reordering from a drag handle + +You can create a custom Tree Item component to render a drag handle icon and only trigger the reordering when dragging from it: + +{{"demo": "OnlyReorderFromDragHandle.js"}} + +## Common examples + +### File explorer + +The example below is a simplified version of the [File Explorer](/x/react-tree-view/rich-tree-view/customization/#file-explorer) example with drag & drop re-ordering. +You can re-order items but only inside folders (or inside the trash). + +{{"demo": "FileExplorer.js"}} diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 7857c5c370ba..4c371bb9e28a 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -153,6 +153,6 @@ "forwardsRefTo": "HTMLUListElement", "filename": "/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/tree-item-2.json b/docs/pages/x/api/tree-view/tree-item-2.json index bac50963652a..7fb8b2a97e2d 100644 --- a/docs/pages/x/api/tree-view/tree-item-2.json +++ b/docs/pages/x/api/tree-view/tree-item-2.json @@ -58,6 +58,12 @@ "default": "TreeItem2Label", "class": "MuiTreeItem2-label" }, + { + "name": "dragAndDropOverlay", + "description": "The component that renders the overlay when an item reordering is ongoing.\nWarning: This slot is only useful when using the `RichTreeViewPro` component.", + "default": "TreeItem2DragAndDropOverlay", + "class": "MuiTreeItem2-dragAndDropOverlay" + }, { "name": "collapseIcon", "description": "The icon used to collapse the item.", "class": null }, { "name": "expandIcon", "description": "The icon used to expand the item.", "class": null }, { "name": "endIcon", "description": "The icon displayed next to an end item.", "class": null }, @@ -99,6 +105,6 @@ "forwardsRefTo": "HTMLLIElement", "filename": "/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/tree-item.json b/docs/pages/x/api/tree-view/tree-item.json index 290aa0e5881d..5c84d1bdfbcc 100644 --- a/docs/pages/x/api/tree-view/tree-item.json +++ b/docs/pages/x/api/tree-view/tree-item.json @@ -66,6 +66,12 @@ "description": "State class applied to the element when disabled.", "isGlobal": true }, + { + "key": "dragAndDropOverlay", + "className": "MuiTreeItem-dragAndDropOverlay", + "description": "Styles applied to the drag and drop overlay.", + "isGlobal": false + }, { "key": "expanded", "className": "Mui-expanded", diff --git a/docs/pages/x/react-tree-view/rich-tree-view/ordering.js b/docs/pages/x/react-tree-view/rich-tree-view/ordering.js new file mode 100644 index 000000000000..72994d240844 --- /dev/null +++ b/docs/pages/x/react-tree-view/rich-tree-view/ordering.js @@ -0,0 +1,7 @@ +import * as React from 'react'; +import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; +import * as pageProps from 'docsx/data/tree-view/rich-tree-view/ordering/ordering.md?muiMarkdown'; + +export default function Page() { + return ; +} diff --git a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json index 9c34f2f4220e..6a5f8d2ae832 100644 --- a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json +++ b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json @@ -43,6 +43,7 @@ "checkbox": "The component that renders the item checkbox for selection.", "collapseIcon": "The icon used to collapse the item.", "content": "The component that renders the content of the item. (e.g.: everything related to this item, not to its children).", + "dragAndDropOverlay": "The component that renders the overlay when an item reordering is ongoing. Warning: This slot is only useful when using the RichTreeViewPro component.", "endIcon": "The icon displayed next to an end item.", "expandIcon": "The icon used to expand the item.", "groupTransition": "The component that renders the children of the item.", diff --git a/docs/translations/api-docs/tree-view/tree-item/tree-item.json b/docs/translations/api-docs/tree-view/tree-item/tree-item.json index d0471b434619..596c008d70f1 100644 --- a/docs/translations/api-docs/tree-view/tree-item/tree-item.json +++ b/docs/translations/api-docs/tree-view/tree-item/tree-item.json @@ -37,6 +37,10 @@ "nodeName": "the element", "conditions": "disabled" }, + "dragAndDropOverlay": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the drag and drop overlay" + }, "expanded": { "description": "State class applied to {{nodeName}} when {{conditions}}.", "nodeName": "the content element", diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx index 129d6c7ba2f2..1836534d0282 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx @@ -11,10 +11,10 @@ import { import { adapterToUse, buildPickerDragInteractions, - MockedDataTransfer, rangeCalendarDayTouches, createPickerRenderer, } from 'test/utils/pickers'; +import { MockedDataTransfer } from 'test/utils/dragAndDrop'; import { DateRangeCalendar, dateRangeCalendarClasses as classes, diff --git a/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts b/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts index 0827ff4acbcf..71b5465dce55 100644 --- a/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts +++ b/packages/x-date-pickers/src/internals/hooks/useField/useField.utils.ts @@ -747,7 +747,7 @@ export const mergeDateIntoReferenceDate = ( return mergedDate; }, referenceDate); -export const isAndroid = () => navigator.userAgent.toLowerCase().indexOf('android') > -1; +export const isAndroid = () => navigator.userAgent.toLowerCase().includes('android'); // TODO v8: Remove if we drop the v6 TextField approach. export const getSectionOrder = ( diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts index dca59df1cdf4..70dbf423afe4 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts @@ -14,6 +14,10 @@ import { MergeSignaturesProperty, TreeViewCorePluginParameters, } from '@mui/x-tree-view/internals'; +import { + useTreeViewItemsReordering, + UseTreeViewItemsReorderingParameters, +} from '../internals/plugins/useTreeViewItemsReordering'; export const RICH_TREE_VIEW_PRO_PLUGINS = [ useTreeViewItems, @@ -22,6 +26,7 @@ export const RICH_TREE_VIEW_PRO_PLUGINS = [ useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons, + useTreeViewItemsReordering, ] as const; export type RichTreeViewProPluginSignatures = ConvertPluginsIntoSignatures< @@ -45,4 +50,5 @@ export interface RichTreeViewProPluginParameters, - UseTreeViewIconsParameters {} + UseTreeViewIconsParameters, + UseTreeViewItemsReorderingParameters {} diff --git a/packages/x-tree-view-pro/src/internals/index.ts b/packages/x-tree-view-pro/src/internals/index.ts new file mode 100644 index 000000000000..cb9559d5f241 --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/index.ts @@ -0,0 +1 @@ +export { UseTreeViewItemsReorderingSignature } from './plugins/useTreeViewItemsReordering'; diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/index.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/index.ts new file mode 100644 index 000000000000..517ac7914e58 --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/index.ts @@ -0,0 +1,7 @@ +export { useTreeViewItemsReordering } from './useTreeViewItemsReordering'; +export type { + UseTreeViewItemsReorderingSignature, + UseTreeViewItemsReorderingParameters, + UseTreeViewItemsReorderingDefaultizedParameters, + TreeViewItemReorderPosition, +} from './useTreeViewItemsReordering.types'; diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.ts new file mode 100644 index 000000000000..18d5014bfccf --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.ts @@ -0,0 +1,155 @@ +import * as React from 'react'; +import { + MuiCancellableEvent, + TreeViewItemPlugin, + useTreeViewContext, + UseTreeViewItemsSignature, + isTargetInDescendants, +} from '@mui/x-tree-view/internals'; +import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; +import { + UseTreeItem2DragAndDropOverlaySlotPropsFromItemsReordering, + UseTreeItem2RootSlotPropsFromItemsReordering, + UseTreeViewItemsReorderingSignature, + TreeViewItemItemReorderingValidActions, + UseTreeItem2ContentSlotPropsFromItemsReordering, +} from './useTreeViewItemsReordering.types'; + +export const isAndroid = () => navigator.userAgent.toLowerCase().includes('android'); + +export const useTreeViewItemsReorderingItemPlugin: TreeViewItemPlugin = ({ + props, +}) => { + const { itemsReordering, instance } = + useTreeViewContext<[UseTreeViewItemsSignature, UseTreeViewItemsReorderingSignature]>(); + const { itemId } = props; + + const validActionsRef = React.useRef(null); + + return { + propsEnhancers: { + root: ({ + rootRefObject, + contentRefObject, + externalEventHandlers, + }): UseTreeItem2RootSlotPropsFromItemsReordering => { + const draggable = instance.canItemBeDragged(itemId); + if (!draggable) { + return {}; + } + + const handleDragStart = (event: React.DragEvent & MuiCancellableEvent) => { + externalEventHandlers.onDragStart?.(event); + if (event.defaultMuiPrevented || event.defaultPrevented) { + return; + } + + // We don't use `event.currentTarget` here. + // This is to allow people to pass `onDragStart` to another element than the root. + if (isTargetInDescendants(event.target as HTMLElement, rootRefObject.current)) { + return; + } + + // Comment to show the children in the drag preview + // TODO: Improve the customization of the drag preview + event.dataTransfer.effectAllowed = 'move'; + event.dataTransfer.setDragImage(contentRefObject.current!, 0, 0); + + const { types } = event.dataTransfer; + if (isAndroid() && !types.includes('text/plain') && !types.includes('text/uri-list')) { + event.dataTransfer.setData('text/plain', 'android-fallback'); + } + + // iOS requires a media type to be defined + event.dataTransfer.setData('application/mui-x', ''); + + instance.startDraggingItem(itemId); + }; + + const handleRootDragOver = (event: React.DragEvent & MuiCancellableEvent) => { + externalEventHandlers.onDragOver?.(event); + if (event.defaultMuiPrevented) { + return; + } + + event.preventDefault(); + }; + + const handleRootDragEnd = (event: React.DragEvent & MuiCancellableEvent) => { + externalEventHandlers.onDragEnd?.(event); + if (event.defaultMuiPrevented) { + return; + } + + instance.stopDraggingItem(itemId); + }; + + return { + draggable: true, + onDragStart: handleDragStart, + onDragOver: handleRootDragOver, + onDragEnd: handleRootDragEnd, + }; + }, + content: ({ + externalEventHandlers, + contentRefObject, + }): UseTreeItem2ContentSlotPropsFromItemsReordering => { + const currentDrag = itemsReordering.currentDrag; + if (!currentDrag || currentDrag.draggedItemId === itemId) { + return {}; + } + + const handleDragOver = (event: React.DragEvent & MuiCancellableEvent) => { + externalEventHandlers.onDragOver?.(event); + if (event.defaultMuiPrevented || validActionsRef.current == null) { + return; + } + + const rect = (event.target as HTMLDivElement).getBoundingClientRect(); + const y = event.clientY - rect.top; + const x = event.clientX - rect.left; + instance.setDragTargetItem({ + itemId, + validActions: validActionsRef.current, + targetHeight: rect.height, + cursorY: y, + cursorX: x, + contentElement: contentRefObject.current!, + }); + }; + + const handleDragEnter = (event: React.DragEvent & MuiCancellableEvent) => { + externalEventHandlers.onDragEnter?.(event); + if (event.defaultMuiPrevented) { + return; + } + + validActionsRef.current = instance.getDroppingTargetValidActions(itemId); + }; + + return { + onDragEnter: handleDragEnter, + onDragOver: handleDragOver, + }; + }, + dragAndDropOverlay: (): UseTreeItem2DragAndDropOverlaySlotPropsFromItemsReordering => { + const currentDrag = itemsReordering.currentDrag; + if (!currentDrag || currentDrag.targetItemId !== itemId || currentDrag.action == null) { + return {}; + } + + const targetDepth = + currentDrag.newPosition?.parentId == null + ? 0 + : // The depth is always defined because drag&drop is only usable with Rich Tree View components. + instance.getItemMeta(currentDrag.newPosition.parentId).depth! + 1; + + return { + action: currentDrag.action, + style: { '--TreeView-targetDepth': targetDepth } as React.CSSProperties, + }; + }, + }, + }; +}; diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx new file mode 100644 index 000000000000..b316969dbc1f --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx @@ -0,0 +1,370 @@ +import { describeTreeView } from 'test/utils/tree-view/describeTreeView'; +import { expect } from 'chai'; +import { spy } from 'sinon'; +import { fireEvent, createEvent } from '@mui/internal-test-utils'; +import { UseTreeViewItemsReorderingSignature } from '@mui/x-tree-view-pro/internals'; +import { DragEventTypes, MockedDataTransfer } from 'test/utils/dragAndDrop'; +import { + UseTreeViewExpansionSignature, + UseTreeViewItemsSignature, +} from '@mui/x-tree-view/internals'; +import { chooseActionToApply } from './useTreeViewItemsReordering.utils'; +import { TreeViewItemItemReorderingValidActions } from './useTreeViewItemsReordering.types'; + +interface DragEventOptions { + /** + * Coordinates of the mouse pointer relative to the target element. + * @default: { x: targetWidth / 2, y: targetHeight / 2 } + */ + coordinates?: { x: number; y: number }; +} + +const buildTreeViewDragInteractions = (dataTransfer: DataTransfer) => { + const createFireEvent = + (type: DragEventTypes) => + (target: HTMLElement, options: DragEventOptions = {}) => { + const rect = target.getBoundingClientRect(); + const coordinates = options.coordinates ?? { x: rect.width / 2, y: rect.height / 2 }; + const createdEvent = createEvent[type](target, { + clientX: rect.left + coordinates.x, + clientY: rect.top + coordinates.y, + }); + Object.defineProperty(createdEvent, 'dataTransfer', { + value: dataTransfer, + }); + + return fireEvent(target, createdEvent); + }; + + const dragStart = createFireEvent('dragStart'); + const dragEnter = createFireEvent('dragEnter'); + const dragOver = createFireEvent('dragOver'); + const dragEnd = createFireEvent('dragEnd'); + + return { + fullDragSequence: ( + draggedItem: HTMLElement, + targetItem: HTMLElement, + options: DragEventOptions = {}, + ) => { + dragStart(draggedItem); + dragEnter(targetItem); + dragOver(targetItem, { coordinates: options.coordinates }); + dragEnd(draggedItem); + }, + }; +}; + +describeTreeView< + [UseTreeViewItemsReorderingSignature, UseTreeViewItemsSignature, UseTreeViewExpansionSignature] +>('useTreeViewItemsReordering', ({ render, treeViewComponentName }) => { + if (treeViewComponentName === 'SimpleTreeView' || treeViewComponentName === 'RichTreeView') { + return; + } + + let dragEvents: ReturnType; + // eslint-disable-next-line mocha/no-top-level-hooks + beforeEach(() => { + const dataTransfer = new MockedDataTransfer(); + dragEvents = buildTreeViewDragInteractions(dataTransfer); + }); + + // eslint-disable-next-line mocha/no-top-level-hooks + afterEach(() => { + dragEvents = {} as typeof dragEvents; + }); + + describe('itemReordering prop', () => { + it('should allow to drag and drop items when props.itemsReordering={true}', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([ + { id: '2', children: [{ id: '1' }] }, + { id: '3' }, + ]); + }); + + it('should not allow to drag and drop items when props.itemsReordering={false}', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: false, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + }); + + it('should not allow to drag and drop items when props.itemsReordering is not defined', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + }); + + it('should allow to expand the new parent of the dragged item when it was not expandable before', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], + itemsReordering: true, + defaultExpandedItems: ['1'], + }); + + dragEvents.fullDragSequence(response.getItemRoot('1.1'), response.getItemContent('2')); + + fireEvent.focus(response.getItemRoot('2')); + fireEvent.keyDown(response.getItemRoot('2'), { key: 'Enter' }); + + expect(response.getItemIdTree()).to.deep.equal([ + { id: '1', children: [] }, + { id: '2', children: [{ id: '1.1' }] }, + ]); + }); + }); + + describe('onItemPositionChange prop', () => { + it('should call onItemPositionChange when an item is moved', () => { + const onItemPositionChange = spy(); + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + onItemPositionChange, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(onItemPositionChange.callCount).to.equal(1); + expect(onItemPositionChange.lastCall.firstArg).to.deep.equal({ + itemId: '1', + oldPosition: { parentId: null, index: 0 }, + newPosition: { parentId: '2', index: 0 }, + }); + }); + }); + + describe('isItemReorderable prop', () => { + it('should not allow to drag an item when isItemReorderable returns false', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + canMoveItemToNewPosition: () => false, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + }); + + it('should allow to drag an item when isItemReorderable returns true', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + canMoveItemToNewPosition: () => true, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([ + { id: '2', children: [{ id: '1' }] }, + { id: '3' }, + ]); + }); + }); + + describe('canMoveItemToNewPosition prop', () => { + it('should not allow to drop an item when canMoveItemToNewPosition returns false', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + canMoveItemToNewPosition: () => false, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + }); + + it('should allow to drop an item when canMoveItemToNewPosition returns true', () => { + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + canMoveItemToNewPosition: () => true, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(response.getItemIdTree()).to.deep.equal([ + { id: '2', children: [{ id: '1' }] }, + { id: '3' }, + ]); + }); + }); +}); + +describe('getNewPosition util', () => { + // The actions use the following tree when dropping "1.1" on "1.2": + // - 1 + // - 1.1 + // - 1.2 + // - 1.3 + // - 2 + const ALL_ACTIONS: TreeViewItemItemReorderingValidActions = { + 'reorder-above': { parentId: '1', index: 0 }, + 'reorder-below': { parentId: '1', index: 1 }, + 'make-child': { parentId: '1.2', index: 0 }, + 'move-to-parent': { parentId: null, index: 2 }, + }; + + const FAKE_CONTENT_ELEMENT = {} as HTMLDivElement; + + const COMMON_PROPERTIES = { + itemChildrenIndentation: 12, + validActions: ALL_ACTIONS, + targetHeight: 100, + targetDepth: 1, + cursorY: 50, + cursorX: 100, + contentElement: FAKE_CONTENT_ELEMENT, + }; + + it('should choose the "reorder-above" action when the cursor is in the top quarter of the target item', () => { + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 1, + }), + ).to.equal('reorder-above'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 24, + }), + ).to.equal('reorder-above'); + }); + + it('should choose the "reorder-above" action when the cursor is in the top half of the target item and the "make-child" action is not valid', () => { + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 25, + validActions: { ...ALL_ACTIONS, 'make-child': undefined }, + }), + ).to.equal('reorder-above'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 49, + validActions: { ...ALL_ACTIONS, 'make-child': undefined }, + }), + ).to.equal('reorder-above'); + }); + + it('should choose the "reorder-below" action when the cursor is in the bottom quarter of the target item', () => { + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 99, + }), + ).to.equal('reorder-below'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 76, + }), + ).to.equal('reorder-below'); + }); + + it('should choose the "reorder-below" action when the cursor is in the bottom half of the target item and the "make-child" action is not valid', () => { + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 75, + validActions: { ...ALL_ACTIONS, 'make-child': undefined }, + }), + ).to.equal('reorder-below'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 51, + validActions: { ...ALL_ACTIONS, 'make-child': undefined }, + }), + ).to.equal('reorder-below'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 50, + validActions: { ...ALL_ACTIONS, 'make-child': undefined }, + }), + ).to.equal('reorder-below'); + }); + + it('should choose the "make-child" action when the cursor is in the middle of the target item', () => { + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 25, + }), + ).to.equal('make-child'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 50, + }), + ).to.equal('make-child'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorY: 74, + }), + ).to.equal('make-child'); + }); + + it('should choose the "move-to-parent" action when the cursor is inside the depth-offset of the target item', () => { + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorX: 1, + cursorY: 1, + }), + ).to.equal('move-to-parent'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorX: 11, + cursorY: 1, + }), + ).to.equal('move-to-parent'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorX: 1, + cursorY: 50, + }), + ).to.equal('move-to-parent'); + + expect( + chooseActionToApply({ + ...COMMON_PROPERTIES, + cursorX: 1, + cursorY: 99, + }), + ).to.equal('move-to-parent'); + }); +}); diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts new file mode 100644 index 000000000000..e9065681e876 --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts @@ -0,0 +1,278 @@ +import * as React from 'react'; +import { warnOnce, TreeViewPlugin } from '@mui/x-tree-view/internals'; +import { TreeViewItemsReorderingAction } from '@mui/x-tree-view/models'; +import { + TreeViewItemItemReorderingValidActions, + TreeViewItemReorderPosition, + UseTreeViewItemsReorderingInstance, + UseTreeViewItemsReorderingSignature, +} from './useTreeViewItemsReordering.types'; +import { + chooseActionToApply, + isAncestor, + moveItemInTree, +} from './useTreeViewItemsReordering.utils'; +import { useTreeViewItemsReorderingItemPlugin } from './useTreeViewItemsReordering.itemPlugin'; + +export const useTreeViewItemsReordering: TreeViewPlugin = ({ + params, + instance, + state, + setState, + experimentalFeatures, +}) => { + const isItemsReorderingEnabled = + params.itemsReordering && !!experimentalFeatures?.itemsReordering; + + if (process.env.NODE_END !== 'production') { + if ( + params.itemsReordering && + (!experimentalFeatures?.indentationAtItemLevel || !experimentalFeatures?.itemsReordering) + ) { + warnOnce([ + 'MUI X: The items reordering feature requires the `indentationAtItemLevel` and `itemsReordering` experimental features to be enabled.', + 'You can do it by passing `experimentalFeatures={{ indentationAtItemLevel: true, itemsReordering: true }}` to the `RichTreeViewPro` component.', + 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/', + ]); + } + } + + const canItemBeDragged = React.useCallback( + (itemId: string) => { + if (!isItemsReorderingEnabled) { + return false; + } + + const isItemReorderable = params.isItemReorderable; + if (isItemReorderable) { + return isItemReorderable(itemId); + } + + return true; + }, + [isItemsReorderingEnabled, params.isItemReorderable], + ); + + const getDroppingTargetValidActions = React.useCallback( + (itemId: string) => { + if (!state.itemsReordering) { + throw new Error('There is no ongoing reordering.'); + } + + if (itemId === state.itemsReordering.draggedItemId) { + return {}; + } + + const canMoveItemToNewPosition = params.canMoveItemToNewPosition; + const targetItemMeta = instance.getItemMeta(itemId); + const targetItemIndex = instance.getItemIndex(targetItemMeta.id); + const draggedItemMeta = instance.getItemMeta(state.itemsReordering.draggedItemId); + const draggedItemIndex = instance.getItemIndex(draggedItemMeta.id); + + const oldPosition: TreeViewItemReorderPosition = { + parentId: draggedItemMeta.parentId, + index: draggedItemIndex, + }; + + const checkIfPositionIsValid = (positionAfterAction: TreeViewItemReorderPosition) => { + let isValid: boolean; + // If the new position is equal to the old one, we don't want to show any dropping UI. + if ( + positionAfterAction.parentId === oldPosition.parentId && + positionAfterAction.index === oldPosition.index + ) { + isValid = false; + } else if (canMoveItemToNewPosition) { + isValid = canMoveItemToNewPosition({ + itemId, + oldPosition, + newPosition: positionAfterAction, + }); + } else { + isValid = true; + } + + return isValid; + }; + + const positionsAfterAction: Record< + TreeViewItemsReorderingAction, + TreeViewItemReorderPosition | null + > = { + 'make-child': { parentId: targetItemMeta.id, index: 0 }, + 'reorder-above': { + parentId: targetItemMeta.parentId, + index: + targetItemMeta.parentId === draggedItemMeta.parentId && + targetItemIndex > draggedItemIndex + ? targetItemIndex - 1 + : targetItemIndex, + }, + 'reorder-below': targetItemMeta.expandable + ? null + : { + parentId: targetItemMeta.parentId, + index: + targetItemMeta.parentId === draggedItemMeta.parentId && + targetItemIndex > draggedItemIndex + ? targetItemIndex + : targetItemIndex + 1, + }, + 'move-to-parent': + targetItemMeta.parentId == null + ? null + : { + parentId: targetItemMeta.parentId, + index: instance.getItemOrderedChildrenIds(targetItemMeta.parentId).length, + }, + }; + + const validActions: TreeViewItemItemReorderingValidActions = {}; + Object.keys(positionsAfterAction).forEach((action) => { + const positionAfterAction = positionsAfterAction[action as TreeViewItemsReorderingAction]; + if (positionAfterAction != null && checkIfPositionIsValid(positionAfterAction)) { + validActions[action as TreeViewItemsReorderingAction] = positionAfterAction; + } + }); + + return validActions; + }, + [instance, state.itemsReordering, params.canMoveItemToNewPosition], + ); + + const startDraggingItem = React.useCallback( + (itemId: string) => { + setState((prevState) => ({ + ...prevState, + itemsReordering: { + targetItemId: itemId, + draggedItemId: itemId, + action: null, + newPosition: null, + }, + })); + }, + [setState], + ); + + const stopDraggingItem = React.useCallback( + (itemId: string) => { + if (state.itemsReordering == null || state.itemsReordering.draggedItemId !== itemId) { + return; + } + + if ( + state.itemsReordering.draggedItemId === state.itemsReordering.targetItemId || + state.itemsReordering.action == null || + state.itemsReordering.newPosition == null + ) { + setState((prevState) => ({ ...prevState, itemsReordering: null })); + return; + } + + const draggedItemMeta = instance.getItemMeta(state.itemsReordering.draggedItemId); + + const oldPosition: TreeViewItemReorderPosition = { + parentId: draggedItemMeta.parentId, + index: instance.getItemIndex(draggedItemMeta.id), + }; + + const newPosition = state.itemsReordering.newPosition; + + setState((prevState) => ({ + ...prevState, + itemsReordering: null, + items: moveItemInTree({ + itemToMoveId: itemId, + newPosition, + oldPosition, + prevState: prevState.items, + }), + })); + + const onItemPositionChange = params.onItemPositionChange; + onItemPositionChange?.({ + itemId, + newPosition, + oldPosition, + }); + }, + [setState, state.itemsReordering, instance, params.onItemPositionChange], + ); + + const setDragTargetItem = React.useCallback< + UseTreeViewItemsReorderingInstance['setDragTargetItem'] + >( + ({ itemId, validActions, targetHeight, cursorY, cursorX, contentElement }) => { + setState((prevState) => { + const prevSubState = prevState.itemsReordering; + if (prevSubState == null || isAncestor(instance, itemId, prevSubState.draggedItemId)) { + return prevState; + } + const action = chooseActionToApply({ + itemChildrenIndentation: params.itemChildrenIndentation, + validActions, + targetHeight, + targetDepth: prevState.items.itemMetaMap[itemId].depth!, + cursorY, + cursorX, + contentElement, + }); + + const newPosition = action == null ? null : validActions[action]!; + + if ( + prevSubState.targetItemId === itemId && + prevSubState.action === action && + prevSubState.newPosition?.parentId === newPosition?.parentId && + prevSubState.newPosition?.index === newPosition?.index + ) { + return prevState; + } + + return { + ...prevState, + itemsReordering: { + ...prevSubState, + targetItemId: itemId, + newPosition, + action, + }, + }; + }); + }, + [instance, setState, params.itemChildrenIndentation], + ); + + return { + instance: { + canItemBeDragged, + getDroppingTargetValidActions, + startDraggingItem, + stopDraggingItem, + setDragTargetItem, + }, + contextValue: { + itemsReordering: { + enabled: isItemsReorderingEnabled, + currentDrag: state.itemsReordering, + }, + }, + }; +}; + +useTreeViewItemsReordering.itemPlugin = useTreeViewItemsReorderingItemPlugin; + +useTreeViewItemsReordering.getDefaultizedParams = (params) => ({ + ...params, + itemsReordering: params.itemsReordering ?? false, +}); + +useTreeViewItemsReordering.getInitialState = () => ({ itemsReordering: null }); + +useTreeViewItemsReordering.params = { + itemsReordering: true, + isItemReorderable: true, + canMoveItemToNewPosition: true, + onItemPositionChange: true, +}; diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.ts new file mode 100644 index 000000000000..2f2e909cc31e --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.ts @@ -0,0 +1,160 @@ +import * as React from 'react'; +import { + DefaultizedProps, + TreeViewPluginSignature, + UseTreeViewItemsSignature, + MuiCancellableEventHandler, +} from '@mui/x-tree-view/internals'; +import { TreeViewItemId, TreeViewItemsReorderingAction } from '@mui/x-tree-view/models'; +import { TreeItem2DragAndDropOverlayProps } from '@mui/x-tree-view/TreeItem2DragAndDropOverlay'; + +export interface UseTreeViewItemsReorderingInstance { + /** + * Check if a given item can be dragged. + * @param {TreeViewItemId} itemId The id of the item to check. + * @returns {boolean} `true` if the item can be dragged, `false` otherwise. + */ + canItemBeDragged: (itemId: TreeViewItemId) => boolean; + /** + * Get the valid reordering action if a given item is the target of the ongoing reordering. + * @param {TreeViewItemId} itemId The id of the item to get the action of. + * @returns {TreeViewItemItemReorderingValidActions} The valid actions for theF item. + */ + getDroppingTargetValidActions: (itemId: TreeViewItemId) => TreeViewItemItemReorderingValidActions; + /** + * Start a reordering for the given item. + * @param {TreeViewItemId} itemId The id of the item to start the reordering for. + */ + startDraggingItem: (itemId: TreeViewItemId) => void; + /** + * Stop the reordering of a given item. + * @param {TreeViewItemId} itemId The id of the item to stop the reordering for. + */ + stopDraggingItem: (itemId: TreeViewItemId) => void; + /** + * Set the new target item for the ongoing reordering. + * The action will be determined based on the position of the cursor inside the target and the valid actions for this target. + * @param {object} params The params describing the new target item. + * @param {TreeViewItemId} params.itemId The id of the new target item. + * @param {TreeViewItemItemReorderingValidActions} params.validActions The valid actions for the new target item. + * @param {number} params.targetHeight The height of the target item. + * @param {number} params.cursorY The Y coordinate of the mouse cursor. + * @param {number} params.cursorX The X coordinate of the mouse cursor. + * @param {HTMLDivElement} params.contentElement The DOM element rendered for the content slot. + */ + setDragTargetItem: (params: { + itemId: TreeViewItemId; + validActions: TreeViewItemItemReorderingValidActions; + targetHeight: number; + cursorY: number; + cursorX: number; + contentElement: HTMLDivElement; + }) => void; +} + +export interface TreeViewItemReorderPosition { + parentId: string | null; + index: number; +} + +export type TreeViewItemItemReorderingValidActions = { + [key in TreeViewItemsReorderingAction]?: TreeViewItemReorderPosition; +}; + +export interface UseTreeViewItemsReorderingParameters { + /** + * If `true`, the reordering of items is enabled. + * Make sure to also enable the `itemsReordering` experimental feature: + * ``. + * @default false + */ + itemsReordering?: boolean; + /** + * Used to determine if a given item can be reordered. + * @param {string} itemId The id of the item to check. + * @returns {boolean} `true` if the item can be reordered. + * @default () => true + */ + isItemReorderable?: (itemId: string) => boolean; + /** + * Used to determine if a given item can move to some new position. + * @param {object} params The params describing the item re-ordering. + * @param {string} params.itemId The id of the item to check. + * @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item. + * @param {TreeViewItemReorderPosition} params.newPosition The new position of the item. + * @returns {boolean} `true` if the item can move to the new position. + */ + canMoveItemToNewPosition?: (params: { + itemId: string; + oldPosition: TreeViewItemReorderPosition; + newPosition: TreeViewItemReorderPosition; + }) => boolean; + /** + * Callback fired when a tree item is moved in the tree. + * @param {object} params The params describing the item re-ordering. + * @param {string} params.itemId The id of the item moved. + * @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item. + * @param {TreeViewItemReorderPosition} params.newPosition The new position of the item. + */ + onItemPositionChange?: (params: { + itemId: string; + oldPosition: TreeViewItemReorderPosition; + newPosition: TreeViewItemReorderPosition; + }) => void; +} + +export type UseTreeViewItemsReorderingDefaultizedParameters = DefaultizedProps< + UseTreeViewItemsReorderingParameters, + 'itemsReordering' +>; + +export interface UseTreeViewItemsReorderingState { + itemsReordering: { + draggedItemId: string; + targetItemId: string; + newPosition: TreeViewItemReorderPosition | null; + action: TreeViewItemsReorderingAction | null; + } | null; +} + +interface UseTreeViewItemsReorderingContextValue { + itemsReordering: { + enabled: boolean; + currentDrag: UseTreeViewItemsReorderingState['itemsReordering']; + }; +} + +export type UseTreeViewItemsReorderingSignature = TreeViewPluginSignature<{ + params: UseTreeViewItemsReorderingParameters; + defaultizedParams: UseTreeViewItemsReorderingDefaultizedParameters; + instance: UseTreeViewItemsReorderingInstance; + state: UseTreeViewItemsReorderingState; + contextValue: UseTreeViewItemsReorderingContextValue; + experimentalFeatures: 'itemsReordering'; + dependencies: [UseTreeViewItemsSignature]; +}>; + +export interface UseTreeItem2RootSlotPropsFromItemsReordering { + draggable?: true; + onDragStart?: MuiCancellableEventHandler; + onDragOver?: MuiCancellableEventHandler; + onDragEnd?: MuiCancellableEventHandler; +} + +export interface UseTreeItem2ContentSlotPropsFromItemsReordering { + onDragEnter?: MuiCancellableEventHandler; + onDragOver?: MuiCancellableEventHandler; +} + +export interface UseTreeItem2DragAndDropOverlaySlotPropsFromItemsReordering + extends TreeItem2DragAndDropOverlayProps {} + +declare module '@mui/x-tree-view/useTreeItem2' { + interface UseTreeItem2RootSlotOwnProps extends UseTreeItem2RootSlotPropsFromItemsReordering {} + + interface UseTreeItem2ContentSlotOwnProps + extends UseTreeItem2ContentSlotPropsFromItemsReordering {} + + interface UseTreeItem2DragAndDropOverlaySlotOwnProps + extends UseTreeItem2DragAndDropOverlaySlotPropsFromItemsReordering {} +} diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.ts new file mode 100644 index 000000000000..bfd7f19a3ba8 --- /dev/null +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.ts @@ -0,0 +1,199 @@ +import { + TreeViewInstance, + UseTreeViewItemsSignature, + UseTreeViewItemsState, + buildSiblingIndexes, + TREE_VIEW_ROOT_PARENT_ID, +} from '@mui/x-tree-view/internals'; +import { TreeViewItemId, TreeViewItemsReorderingAction } from '@mui/x-tree-view/models'; +import { + TreeViewItemItemReorderingValidActions, + TreeViewItemReorderPosition, +} from './useTreeViewItemsReordering.types'; + +/** + * Checks if the item with the id itemIdB is an ancestor of the item with the id itemIdA. + */ +export const isAncestor = ( + instance: TreeViewInstance<[UseTreeViewItemsSignature]>, + itemIdA: string, + itemIdB: string, +): boolean => { + const itemMetaA = instance.getItemMeta(itemIdA); + if (itemMetaA.parentId === itemIdB) { + return true; + } + + if (itemMetaA.parentId == null) { + return false; + } + + return isAncestor(instance, itemMetaA.parentId, itemIdB); +}; + +/** + * Transforms a CSS string `itemChildrenIndentation` into a number representing the indentation in number. + * @param {string | null} itemChildrenIndentation The indentation as passed to the `itemChildrenIndentation` prop. + * @param {HTMLElement} contentElement The DOM element to which the indentation will be applied. + */ +const parseItemChildrenIndentation = ( + itemChildrenIndentation: string | number, + contentElement: HTMLElement, +) => { + if (typeof itemChildrenIndentation === 'number') { + return itemChildrenIndentation; + } + + const pixelExec = /^(\d.+)(px)$/.exec(itemChildrenIndentation); + if (pixelExec) { + return parseFloat(pixelExec[1]); + } + + // If the format is neither `px` nor a number, we need to measure the indentation using an actual DOM element. + const tempElement = document.createElement('div'); + tempElement.style.width = itemChildrenIndentation; + tempElement.style.position = 'absolute'; + contentElement.appendChild(tempElement); + const value = tempElement.offsetWidth; + contentElement.removeChild(tempElement); + + return value; +}; + +interface GetNewPositionParams { + itemChildrenIndentation: string | number; + validActions: TreeViewItemItemReorderingValidActions; + targetHeight: number; + targetDepth: number; + cursorY: number; + cursorX: number; + contentElement: HTMLDivElement; +} + +export const chooseActionToApply = ({ + itemChildrenIndentation, + validActions, + targetHeight, + targetDepth, + cursorX, + cursorY, + contentElement, +}: GetNewPositionParams) => { + let action: TreeViewItemsReorderingAction | null; + + const itemChildrenIndentationPx = parseItemChildrenIndentation( + itemChildrenIndentation, + contentElement, + ); + // If we can move the item to the parent of the target, then we allocate the left offset to this action + // Support moving to other ancestors + if (validActions['move-to-parent'] && cursorX < itemChildrenIndentationPx * targetDepth) { + action = 'move-to-parent'; + } + + // If we can move the item inside the target, then we have the following split: + // - the upper quarter of the target moves it above + // - the lower quarter of the target moves it below + // - the inner half makes it a child + else if (validActions['make-child']) { + if (validActions['reorder-above'] && cursorY < (1 / 4) * targetHeight) { + action = 'reorder-above'; + } else if (validActions['reorder-below'] && cursorY > (3 / 4) * targetHeight) { + action = 'reorder-below'; + } else { + action = 'make-child'; + } + } + // If we can't move the item inside the target, then we have the following split: + // - the upper half of the target moves it above + // - the lower half of the target moves it below + else { + // eslint-disable-next-line no-lonely-if + if (validActions['reorder-above'] && cursorY < (1 / 2) * targetHeight) { + action = 'reorder-above'; + } else if (validActions['reorder-below'] && cursorY >= (1 / 2) * targetHeight) { + action = 'reorder-below'; + } else { + action = null; + } + } + + return action; +}; + +export const moveItemInTree = ({ + itemToMoveId, + oldPosition, + newPosition, + prevState, +}: { + itemToMoveId: TreeViewItemId; + oldPosition: TreeViewItemReorderPosition; + newPosition: TreeViewItemReorderPosition; + prevState: UseTreeViewItemsState['items']; +}): UseTreeViewItemsState['items'] => { + const itemToMoveMeta = prevState.itemMetaMap[itemToMoveId]; + + const oldParentId = oldPosition.parentId ?? TREE_VIEW_ROOT_PARENT_ID; + const newParentId = newPosition.parentId ?? TREE_VIEW_ROOT_PARENT_ID; + + // 1. Update the `itemOrderedChildrenIds`. + const itemOrderedChildrenIds = { ...prevState.itemOrderedChildrenIds }; + if (oldParentId === newParentId) { + const updatedChildren = [...itemOrderedChildrenIds[oldParentId]]; + updatedChildren.splice(oldPosition.index, 1); + updatedChildren.splice(newPosition.index, 0, itemToMoveId); + itemOrderedChildrenIds[itemToMoveMeta.parentId ?? TREE_VIEW_ROOT_PARENT_ID] = updatedChildren; + } else { + const updatedOldParentChildren = [...itemOrderedChildrenIds[oldParentId]]; + updatedOldParentChildren.splice(oldPosition.index, 1); + itemOrderedChildrenIds[oldParentId] = updatedOldParentChildren; + + const updatedNewParentChildren = [...(itemOrderedChildrenIds[newParentId] ?? [])]; + updatedNewParentChildren.splice(newPosition.index, 0, itemToMoveId); + itemOrderedChildrenIds[newParentId] = updatedNewParentChildren; + } + + // 2. Update the `itemChildrenIndexes` + const itemChildrenIndexes = { ...prevState.itemChildrenIndexes }; + itemChildrenIndexes[oldParentId] = buildSiblingIndexes(itemOrderedChildrenIds[oldParentId]); + if (newParentId !== oldParentId) { + itemChildrenIndexes[newParentId] = buildSiblingIndexes(itemOrderedChildrenIds[newParentId]); + } + + // 3. Update the `itemMetaMap` + const itemMetaMap = { ...prevState.itemMetaMap }; + + // 3.1 Update the `expandable` property of the old and the new parent + if (oldParentId !== TREE_VIEW_ROOT_PARENT_ID && oldParentId !== newParentId) { + itemMetaMap[oldParentId].expandable = itemOrderedChildrenIds[oldParentId].length > 0; + } + if (newParentId !== TREE_VIEW_ROOT_PARENT_ID && newParentId !== oldParentId) { + itemMetaMap[newParentId].expandable = itemOrderedChildrenIds[newParentId].length > 0; + } + + // 3.2 Update the `parentId` and `depth` properties of the item to move + // The depth is always defined because drag&drop is only usable with Rich Tree View components. + const itemToMoveDepth = newPosition.parentId == null ? 0 : itemMetaMap[newParentId].depth! + 1; + itemMetaMap[itemToMoveId] = { + ...itemToMoveMeta, + parentId: newPosition.parentId, + depth: itemToMoveDepth, + }; + + // 3.3 Update the depth of all the children of the item to move + const updateItemDepth = (itemId: string, depth: number) => { + itemMetaMap[itemId] = { ...itemMetaMap[itemId], depth }; + itemOrderedChildrenIds[itemId]?.forEach((childId) => updateItemDepth(childId, depth + 1)); + }; + itemOrderedChildrenIds[itemToMoveId]?.forEach((childId) => + updateItemDepth(childId, itemToMoveDepth + 1), + ); + + return { + ...prevState, + itemOrderedChildrenIds, + itemChildrenIndexes, + itemMetaMap, + }; +}; diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index 13883b1ac5b6..9b92f63e2aa2 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import Collapse from '@mui/material/Collapse'; -import { resolveComponentProps, useSlotProps } from '@mui/base/utils'; +import { extractEventHandlers, resolveComponentProps, useSlotProps } from '@mui/base/utils'; import useForkRef from '@mui/utils/useForkRef'; import { shouldForwardProp } from '@mui/system/createStyled'; import { alpha } from '@mui/material/styles'; @@ -19,7 +19,7 @@ import { TreeItemOwnerState, TreeItemProps, } from './TreeItem.types'; -import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext'; +import { useTreeViewContext } from '../internals/TreeViewProvider'; import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons'; import { TreeItem2Provider } from '../TreeItem2Provider'; import { TreeViewItemDepthContext } from '../internals/TreeViewItemDepthContext'; @@ -77,6 +77,7 @@ const StyledTreeItemContent = styled(TreeItemContent, { borderRadius: theme.shape.borderRadius, width: '100%', boxSizing: 'border-box', // prevent width + padding to overflow + position: 'relative', display: 'flex', alignItems: 'center', gap: theme.spacing(1), @@ -216,9 +217,11 @@ export const TreeItem = React.forwardRef(function TreeItem( const { expanded, focused, selected, disabled, handleExpansion } = useTreeItemState(itemId); - const { contentRef, rootRef } = runItemPlugins(props); - const handleRootRef = useForkRef(inRef, rootRef); - const handleContentRef = useForkRef(ContentProps?.ref, contentRef); + const { contentRef, rootRef, propsEnhancers } = runItemPlugins(props); + const rootRefObject = React.useRef(null); + const contentRefObject = React.useRef(null); + const handleRootRef = useForkRef(inRef, rootRef, rootRefObject); + const handleContentRef = useForkRef(ContentProps?.ref, contentRef, contentRefObject); const slots = { expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon, @@ -349,6 +352,25 @@ export const TreeItem = React.forwardRef(function TreeItem( const idAttribute = instance.getTreeItemIdAttribute(itemId, id); const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1; + const enhancedRootProps = + propsEnhancers.root?.({ + rootRefObject, + contentRefObject, + externalEventHandlers: extractEventHandlers(other), + }) ?? {}; + const enhancedContentProps = + propsEnhancers.content?.({ + rootRefObject, + contentRefObject, + externalEventHandlers: extractEventHandlers(ContentProps), + }) ?? {}; + const enhancedDragAndDropOverlayProps = + propsEnhancers.dragAndDropOverlay?.({ + rootRefObject, + contentRefObject, + externalEventHandlers: {}, + }) ?? {}; + return ( {children && ( diff --git a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx index 621acf067db1..686d7d9c88a5 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx @@ -3,6 +3,10 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import Checkbox from '@mui/material/Checkbox'; import { useTreeItemState } from './useTreeItemState'; +import { + TreeItem2DragAndDropOverlay, + TreeItem2DragAndDropOverlayProps, +} from '../TreeItem2DragAndDropOverlay'; export interface TreeItemContentProps extends React.HTMLAttributes { className?: string; @@ -47,6 +51,7 @@ export interface TreeItemContentProps extends React.HTMLAttributes * The icon to display next to the tree item's label. Either a parent or end icon. */ displayIcon?: React.ReactNode; + dragAndDropOverlayProps?: TreeItem2DragAndDropOverlayProps; } export type TreeItemContentClassKey = keyof NonNullable; @@ -68,6 +73,7 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( itemId, onClick, onMouseDown, + dragAndDropOverlayProps, ...other } = props; @@ -144,6 +150,7 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( )}
    {label}
    + {dragAndDropOverlayProps && }
    ); }); @@ -162,6 +169,10 @@ TreeItemContent.propTypes = { * The icon to display next to the tree item's label. Either a parent or end icon. */ displayIcon: PropTypes.node, + dragAndDropOverlayProps: PropTypes.shape({ + action: PropTypes.oneOf(['make-child', 'move-to-parent', 'reorder-above', 'reorder-below']), + style: PropTypes.object, + }), /** * The icon to display next to the tree item's label. Either an expansion or collapse icon. */ diff --git a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts index ceff7c2a2ca6..a8ac533418c6 100644 --- a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts +++ b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts @@ -22,6 +22,8 @@ export interface TreeItemClasses { label: string; /** Styles applied to the checkbox element. */ checkbox: string; + /** Styles applied to the drag and drop overlay. */ + dragAndDropOverlay: string; } export type TreeItemClassKey = keyof TreeItemClasses; @@ -41,4 +43,5 @@ export const treeItemClasses: TreeItemClasses = generateUtilityClasses('MuiTreeI 'iconContainer', 'label', 'checkbox', + 'dragAndDropOverlay', ]); diff --git a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts index 829c35ff696c..7f41a5ad7dcc 100644 --- a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts +++ b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext'; +import { useTreeViewContext } from '../internals/TreeViewProvider'; import { UseTreeViewSelectionSignature } from '../internals/plugins/useTreeViewSelection'; import { UseTreeViewExpansionSignature } from '../internals/plugins/useTreeViewExpansion'; import { UseTreeViewFocusSignature } from '../internals/plugins/useTreeViewFocus'; diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx index 3f429e6a5860..97466530c017 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx @@ -17,6 +17,7 @@ import { } from '../useTreeItem2'; import { getTreeItemUtilityClass } from '../TreeItem'; import { TreeItem2Icon } from '../TreeItem2Icon'; +import { TreeItem2DragAndDropOverlay } from '../TreeItem2DragAndDropOverlay'; import { TreeItem2Provider } from '../TreeItem2Provider'; const useThemeProps = createUseThemeProps('MuiTreeItem2'); @@ -43,6 +44,7 @@ export const TreeItem2Content = styled('div', { borderRadius: theme.shape.borderRadius, width: '100%', boxSizing: 'border-box', // prevent width + padding to overflow + position: 'relative', display: 'flex', alignItems: 'center', gap: theme.spacing(1), @@ -187,6 +189,7 @@ const useUtilityClasses = (ownerState: TreeItem2OwnerState) => { checkbox: ['checkbox'], label: ['label'], groupTransition: ['groupTransition'], + dragAndDropOverlay: ['dragAndDropOverlay'], }; return composeClasses(slots, getTreeItemUtilityClass, classes); @@ -221,6 +224,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( getCheckboxProps, getLabelProps, getGroupTransitionProps, + getDragAndDropOverlayProps, status, } = useTreeItem2({ id, @@ -299,6 +303,16 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( className: classes.groupTransition, }); + const DragAndDropOverlay: React.ElementType | undefined = + slots.dragAndDropOverlay ?? TreeItem2DragAndDropOverlay; + const dragAndDropOverlayProps = useSlotProps({ + elementType: DragAndDropOverlay, + getSlotProps: getDragAndDropOverlayProps, + externalSlotProps: slotProps.dragAndDropOverlay, + ownerState: {}, + className: classes.dragAndDropOverlay, + }); + return ( @@ -308,6 +322,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts b/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts index 697a62ab17df..15caa3132572 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts @@ -37,6 +37,12 @@ export interface TreeItem2Slots extends TreeItem2IconSlots { * @default TreeItem2Label */ label?: React.ElementType; + /** + * The component that renders the overlay when an item reordering is ongoing. + * Warning: This slot is only useful when using the `RichTreeViewPro` component. + * @default TreeItem2DragAndDropOverlay + */ + dragAndDropOverlay?: React.ElementType; } export interface TreeItem2SlotProps extends TreeItem2IconSlotProps { @@ -46,6 +52,7 @@ export interface TreeItem2SlotProps extends TreeItem2IconSlotProps { iconContainer?: SlotComponentProps<'div', {}, {}>; checkbox?: SlotComponentProps<'button', {}, {}>; label?: SlotComponentProps<'div', {}, {}>; + dragAndDropOverlay?: SlotComponentProps<'div', {}, {}>; } export interface TreeItem2Props diff --git a/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx new file mode 100644 index 000000000000..a435c62372f8 --- /dev/null +++ b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx @@ -0,0 +1,72 @@ +import * as React from 'react'; +import { alpha } from '@mui/material/styles'; +import { shouldForwardProp } from '@mui/system'; +import { TreeItem2DragAndDropOverlayProps } from './TreeItem2DragAndDropOverlay.types'; +import { TreeViewItemsReorderingAction } from '../models'; +import { styled } from '../internals/zero-styled'; + +const TreeItem2DragAndDropOverlayRoot = styled('div', { + name: 'MuiTreeItem2DragAndDropOverlay', + slot: 'Root', + overridesResolver: (props, styles) => styles.root, + shouldForwardProp: (prop) => shouldForwardProp(prop) && prop !== 'action', +})<{ action?: TreeViewItemsReorderingAction | null }>(({ theme }) => ({ + position: 'absolute', + left: 0, + display: 'flex', + top: 0, + bottom: 0, + right: 0, + pointerEvents: 'none', + variants: [ + { + props: { action: 'make-child' }, + style: { + marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))', + borderRadius: theme.shape.borderRadius, + backgroundColor: alpha((theme.vars || theme).palette.primary.dark, 0.15), + }, + }, + { + props: { action: 'reorder-above' }, + style: { + marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))', + borderTop: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, + ...(theme.palette.mode === 'dark' && { + borderTop: `1px solid ${alpha((theme.vars || theme).palette.grey[100], 0.6)}`, + }), + }, + }, + { + props: { action: 'reorder-below' }, + style: { + marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))', + borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, + ...(theme.palette.mode === 'dark' && { + borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[100], 0.6)}`, + }), + }, + }, + { + props: { action: 'move-to-parent' }, + style: { + marginLeft: + 'calc(var(--TreeView-indentMultiplier) * calc(var(--TreeView-itemDepth) - 1))' as any, + borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, + ...(theme.palette.mode === 'dark' && { + borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, + }), + }, + }, + ], +})); + +function TreeItem2DragAndDropOverlay(props: TreeItem2DragAndDropOverlayProps) { + if (props.action == null) { + return null; + } + + return ; +} + +export { TreeItem2DragAndDropOverlay }; diff --git a/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.ts b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.ts new file mode 100644 index 000000000000..a2b3b4d22468 --- /dev/null +++ b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.ts @@ -0,0 +1,7 @@ +import * as React from 'react'; +import { TreeViewItemsReorderingAction } from '../models'; + +export interface TreeItem2DragAndDropOverlayProps { + action?: TreeViewItemsReorderingAction; + style?: React.CSSProperties; +} diff --git a/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/index.ts b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/index.ts new file mode 100644 index 000000000000..548f1827a8bc --- /dev/null +++ b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/index.ts @@ -0,0 +1,2 @@ +export { TreeItem2DragAndDropOverlay } from './TreeItem2DragAndDropOverlay'; +export type { TreeItem2DragAndDropOverlayProps } from './TreeItem2DragAndDropOverlay.types'; diff --git a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx index 6247cbb4dcab..9229b11daeec 100644 --- a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx +++ b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { resolveComponentProps, useSlotProps } from '@mui/base/utils'; import { TreeItem2IconProps } from './TreeItem2Icon.types'; -import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext'; +import { useTreeViewContext } from '../internals/TreeViewProvider'; import { UseTreeViewIconsSignature } from '../internals/plugins/useTreeViewIcons'; import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons'; diff --git a/packages/x-tree-view/src/TreeItem2Provider/TreeItem2Provider.tsx b/packages/x-tree-view/src/TreeItem2Provider/TreeItem2Provider.tsx index 2b5387522cef..ad586535f16f 100644 --- a/packages/x-tree-view/src/TreeItem2Provider/TreeItem2Provider.tsx +++ b/packages/x-tree-view/src/TreeItem2Provider/TreeItem2Provider.tsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import { TreeItem2ProviderProps } from './TreeItem2Provider.types'; -import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext'; +import { useTreeViewContext } from '../internals/TreeViewProvider'; function TreeItem2Provider(props: TreeItem2ProviderProps) { const { children, itemId } = props; diff --git a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx index ab33dc1eb1a8..b7b3b99bf501 100644 --- a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx +++ b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useTreeViewContext } from '../../internals/TreeViewProvider/useTreeViewContext'; +import { useTreeViewContext } from '../../internals/TreeViewProvider'; import { UseTreeViewSelectionSignature } from '../../internals/plugins/useTreeViewSelection'; import { UseTreeViewExpansionSignature } from '../../internals/plugins/useTreeViewExpansion'; import { UseTreeViewItemsSignature } from '../../internals/plugins/useTreeViewItems'; diff --git a/packages/x-tree-view/src/internals/TreeViewProvider/index.ts b/packages/x-tree-view/src/internals/TreeViewProvider/index.ts index ffee8fb725aa..e5f68e1bc90c 100644 --- a/packages/x-tree-view/src/internals/TreeViewProvider/index.ts +++ b/packages/x-tree-view/src/internals/TreeViewProvider/index.ts @@ -1,4 +1,5 @@ export { TreeViewProvider } from './TreeViewProvider'; +export { useTreeViewContext } from './useTreeViewContext'; export type { TreeViewProviderProps, TreeViewContextValue, diff --git a/packages/x-tree-view/src/internals/index.ts b/packages/x-tree-view/src/internals/index.ts index 69afff500859..a17a5f7a414d 100644 --- a/packages/x-tree-view/src/internals/index.ts +++ b/packages/x-tree-view/src/internals/index.ts @@ -1,5 +1,5 @@ export { useTreeView } from './useTreeView'; -export { TreeViewProvider } from './TreeViewProvider'; +export { TreeViewProvider, useTreeViewContext } from './TreeViewProvider'; export { unstable_resetCleanupTracking } from './hooks/useInstanceEventHandler'; @@ -10,6 +10,12 @@ export type { MergeSignaturesProperty, TreeViewPublicAPI, TreeViewExperimentalFeatures, + TreeViewItemMeta, + TreeViewInstance, + DefaultizedProps, + TreeViewItemPlugin, + MuiCancellableEvent, + MuiCancellableEventHandler, } from './models'; // Core plugins @@ -38,10 +44,15 @@ export type { UseTreeViewIconsSignature, UseTreeViewIconsParameters, } from './plugins/useTreeViewIcons'; -export { useTreeViewItems } from './plugins/useTreeViewItems'; +export { + useTreeViewItems, + buildSiblingIndexes, + TREE_VIEW_ROOT_PARENT_ID, +} from './plugins/useTreeViewItems'; export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, + UseTreeViewItemsState, } from './plugins/useTreeViewItems'; export { useTreeViewJSXItems } from './plugins/useTreeViewJSXItems'; export type { @@ -49,4 +60,5 @@ export type { UseTreeViewJSXItemsParameters, } from './plugins/useTreeViewJSXItems'; +export { isTargetInDescendants } from './utils/tree'; export { warnOnce } from './utils/warning'; diff --git a/packages/x-tree-view/src/internals/models/index.ts b/packages/x-tree-view/src/internals/models/index.ts index 9095cd823af3..7478186e4ea9 100644 --- a/packages/x-tree-view/src/internals/models/index.ts +++ b/packages/x-tree-view/src/internals/models/index.ts @@ -2,3 +2,4 @@ export * from './helpers'; export * from './plugin'; export * from './itemPlugin'; export * from './treeView'; +export * from './MuiCancellableEvent'; diff --git a/packages/x-tree-view/src/internals/models/itemPlugin.ts b/packages/x-tree-view/src/internals/models/itemPlugin.ts index 1fa3b21cc84f..ae25a111da1b 100644 --- a/packages/x-tree-view/src/internals/models/itemPlugin.ts +++ b/packages/x-tree-view/src/internals/models/itemPlugin.ts @@ -2,6 +2,7 @@ import * as React from 'react'; import { EventHandlers } from '@mui/base/utils'; import type { UseTreeItem2ContentSlotOwnProps, + UseTreeItem2DragAndDropOverlaySlotOwnProps, UseTreeItem2RootSlotOwnProps, } from '../../useTreeItem2'; @@ -18,6 +19,7 @@ type TreeViewItemPluginSlotPropsEnhancer = ( export interface TreeViewItemPluginSlotPropsEnhancers { root?: TreeViewItemPluginSlotPropsEnhancer; content?: TreeViewItemPluginSlotPropsEnhancer; + dragAndDropOverlay?: TreeViewItemPluginSlotPropsEnhancer; } export interface TreeViewItemPluginResponse { diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts index 63c1a5d694ce..b98e02587536 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/index.ts @@ -3,4 +3,6 @@ export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsDefaultizedParameters, + UseTreeViewItemsState, } from './useTreeViewItems.types'; +export { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts index 24ce69a01b89..956f8861f4c4 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.types.ts @@ -26,6 +26,7 @@ export interface UseTreeViewItemsPublicAPI { /** * Get the ids of a given item's children. * Those ids are returned in the order they should be rendered. + * To get the root items, pass `null` as the `itemId`. * @param {TreeViewItemId | null} itemId The id of the item to get the children of. * @returns {TreeViewItemId[]} The ids of the item's children. */ @@ -85,7 +86,7 @@ export interface UseTreeViewItemsInstance extends UseTreeViewItems areItemUpdatesPrevented: () => boolean; } -export interface UseTreeViewItemsParameters { +export interface UseTreeViewItemsParameters { /** * If `true`, will allow focus on disabled items. * @default false @@ -131,7 +132,7 @@ export interface UseTreeViewItemsParameters { itemChildrenIndentation?: string | number; } -export type UseTreeViewItemsDefaultizedParameters = DefaultizedProps< +export type UseTreeViewItemsDefaultizedParameters = DefaultizedProps< UseTreeViewItemsParameters, 'disabledItemsFocusable' | 'itemChildrenIndentation' >; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx index 125fc300dd40..545a74bef743 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.tsx @@ -5,7 +5,7 @@ import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { TreeViewItemPlugin, TreeViewItemMeta, TreeViewPlugin } from '../../models'; import { UseTreeViewJSXItemsSignature } from './useTreeViewJSXItems.types'; import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent'; -import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext'; +import { useTreeViewContext } from '../../TreeViewProvider'; import { TreeViewChildrenItemContext, TreeViewChildrenItemProvider, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts index 2a414205c2e9..1e8c939257d1 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.ts @@ -1,18 +1,18 @@ import * as React from 'react'; import { useRtl } from '@mui/system/RtlProvider'; import useEventCallback from '@mui/utils/useEventCallback'; -import { TreeViewItemMeta, TreeViewPlugin } from '../../models'; +import { TreeViewItemMeta, TreeViewPlugin, MuiCancellableEvent } from '../../models'; import { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem, + isTargetInDescendants, } from '../../utils/tree'; import { TreeViewFirstCharMap, UseTreeViewKeyboardNavigationSignature, } from './useTreeViewKeyboardNavigation.types'; -import { MuiCancellableEvent } from '../../models/MuiCancellableEvent'; function isPrintableCharacter(string: string) { return !!string && string.length === 1 && !!string.match(/\S/); @@ -92,7 +92,7 @@ export const useTreeViewKeyboardNavigation: TreeViewPlugin< if ( event.altKey || - event.currentTarget !== (event.target as HTMLElement).closest('*[role="treeitem"]') + isTargetInDescendants(event.target as HTMLElement, event.currentTarget as HTMLElement) ) { return; } diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts index 8572a6e75fc2..9bab5a805ad6 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.ts @@ -1,10 +1,9 @@ import * as React from 'react'; -import { TreeViewPluginSignature } from '../../models'; +import { TreeViewPluginSignature, MuiCancellableEvent } from '../../models'; import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewSelectionSignature } from '../useTreeViewSelection'; import { UseTreeViewFocusSignature } from '../useTreeViewFocus'; import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion'; -import { MuiCancellableEvent } from '../../models/MuiCancellableEvent'; import { TreeViewItemId } from '../../../models'; export interface UseTreeViewKeyboardNavigationInstance { diff --git a/packages/x-tree-view/src/models/items.ts b/packages/x-tree-view/src/models/items.ts index 006f82e39724..f1ef54da13b9 100644 --- a/packages/x-tree-view/src/models/items.ts +++ b/packages/x-tree-view/src/models/items.ts @@ -4,3 +4,9 @@ export type TreeViewItemId = string; export type TreeViewBaseItem = R & { children?: TreeViewBaseItem[]; }; + +export type TreeViewItemsReorderingAction = + | 'reorder-above' + | 'reorder-below' + | 'make-child' + | 'move-to-parent'; diff --git a/packages/x-tree-view/src/useTreeItem2/index.ts b/packages/x-tree-view/src/useTreeItem2/index.ts index ab751aa588c4..f99a0f545223 100644 --- a/packages/x-tree-view/src/useTreeItem2/index.ts +++ b/packages/x-tree-view/src/useTreeItem2/index.ts @@ -8,4 +8,5 @@ export type { UseTreeItem2LabelSlotOwnProps, UseTreeItem2IconContainerSlotOwnProps, UseTreeItem2GroupTransitionSlotOwnProps, + UseTreeItem2DragAndDropOverlaySlotOwnProps, } from './useTreeItem2.types'; diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index 1d9e53e82e91..ea6483c82afe 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -12,9 +12,12 @@ import { UseTreeItem2CheckboxSlotProps, UseTreeItem2MinimalPlugins, UseTreeItem2OptionalPlugins, + UseTreeItem2DragAndDropOverlaySlotProps, + UseTreeItem2RootSlotPropsFromUseTreeItem, + UseTreeItem2ContentSlotPropsFromUseTreeItem, } from './useTreeItem2.types'; -import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext'; -import { MuiCancellableEvent } from '../internals/models/MuiCancellableEvent'; +import { useTreeViewContext } from '../internals/TreeViewProvider'; +import { MuiCancellableEvent } from '../internals/models'; import { useTreeItem2Utils } from '../hooks/useTreeItem2Utils'; import { TreeViewItemDepthContext } from '../internals/TreeViewItemDepthContext'; @@ -36,10 +39,13 @@ export const useTreeItem2 = < const { id, itemId, label, children, rootRef } = parameters; - const { rootRef: pluginRootRef, contentRef } = runItemPlugins(parameters); + const { rootRef: pluginRootRef, contentRef, propsEnhancers } = runItemPlugins(parameters); const { interactions, status } = useTreeItem2Utils({ itemId, children }); + const rootRefObject = React.useRef(null); + const contentRefObject = React.useRef(null); const idAttribute = instance.getTreeItemIdAttribute(itemId, id); - const handleRootRef = useForkRef(rootRef, pluginRootRef)!; + const handleRootRef = useForkRef(rootRef, pluginRootRef, rootRefObject)!; + const handleContentRef = useForkRef(contentRef, contentRefObject)!; const checkboxRef = React.useRef(null); const createRootHandleFocus = @@ -156,7 +162,7 @@ export const useTreeItem2 = < ariaSelected = true; } - const response: UseTreeItem2RootSlotProps = { + const props: UseTreeItem2RootSlotPropsFromUseTreeItem = { ...externalEventHandlers, ref: handleRootRef, role: 'treeitem', @@ -172,13 +178,19 @@ export const useTreeItem2 = < }; if (indentationAtItemLevel) { - response.style = { + props.style = { '--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext, } as React.CSSProperties; } - return response; + const enhancedRootProps = + propsEnhancers.root?.({ rootRefObject, contentRefObject, externalEventHandlers }) ?? {}; + + return { + ...props, + ...enhancedRootProps, + } as UseTreeItem2RootSlotProps; }; const getContentProps = = {}>( @@ -186,20 +198,26 @@ export const useTreeItem2 = < ): UseTreeItem2ContentSlotProps => { const externalEventHandlers = extractEventHandlers(externalProps); - const response: UseTreeItem2ContentSlotProps = { + const props: UseTreeItem2ContentSlotPropsFromUseTreeItem = { ...externalEventHandlers, ...externalProps, - ref: contentRef, + ref: handleContentRef, onClick: createContentHandleClick(externalEventHandlers), onMouseDown: createContentHandleMouseDown(externalEventHandlers), status, }; if (indentationAtItemLevel) { - response.indentationAtItemLevel = true; + props.indentationAtItemLevel = true; } - return response; + const enhancedContentProps = + propsEnhancers.content?.({ rootRefObject, contentRefObject, externalEventHandlers }) ?? {}; + + return { + ...props, + ...enhancedContentProps, + } as UseTreeItem2ContentSlotProps; }; const getCheckboxProps = = {}>( @@ -223,7 +241,6 @@ export const useTreeItem2 = < externalProps: ExternalProps = {} as ExternalProps, ): UseTreeItem2LabelSlotProps => { const externalEventHandlers = { - ...extractEventHandlers(parameters), ...extractEventHandlers(externalProps), }; @@ -268,6 +285,26 @@ export const useTreeItem2 = < return response; }; + const getDragAndDropOverlayProps = = {}>( + externalProps: ExternalProps = {} as ExternalProps, + ): UseTreeItem2DragAndDropOverlaySlotProps => { + const externalEventHandlers = { + ...extractEventHandlers(externalProps), + }; + + const enhancedDragAndDropOverlayProps = + propsEnhancers.dragAndDropOverlay?.({ + rootRefObject, + contentRefObject, + externalEventHandlers, + }) ?? {}; + + return { + ...externalProps, + ...enhancedDragAndDropOverlayProps, + } as UseTreeItem2DragAndDropOverlaySlotProps; + }; + return { getRootProps, getContentProps, @@ -275,6 +312,7 @@ export const useTreeItem2 = < getIconContainerProps, getCheckboxProps, getLabelProps, + getDragAndDropOverlayProps, rootRef: handleRootRef, status, publicAPI, diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts index 8d29f86796e3..42173dbc4f57 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts @@ -1,7 +1,6 @@ import * as React from 'react'; import { TreeViewItemId } from '../models'; -import { MuiCancellableEventHandler } from '../internals/models/MuiCancellableEvent'; -import { TreeViewPublicAPI } from '../internals/models'; +import { TreeViewPublicAPI, MuiCancellableEventHandler } from '../internals/models'; import { UseTreeViewSelectionSignature } from '../internals/plugins/useTreeViewSelection'; import { UseTreeViewItemsSignature } from '../internals/plugins/useTreeViewItems'; import { UseTreeViewFocusSignature } from '../internals/plugins/useTreeViewFocus'; @@ -34,7 +33,7 @@ export interface UseTreeItem2Parameters { children?: React.ReactNode; } -export interface UseTreeItem2RootSlotOwnProps { +export interface UseTreeItem2RootSlotPropsFromUseTreeItem { role: 'treeitem'; tabIndex: 0 | -1; id: string; @@ -51,10 +50,12 @@ export interface UseTreeItem2RootSlotOwnProps { style?: React.CSSProperties; } +export interface UseTreeItem2RootSlotOwnProps extends UseTreeItem2RootSlotPropsFromUseTreeItem {} + export type UseTreeItem2RootSlotProps = ExternalProps & UseTreeItem2RootSlotOwnProps; -export interface UseTreeItem2ContentSlotOwnProps { +export interface UseTreeItem2ContentSlotPropsFromUseTreeItem { onClick: MuiCancellableEventHandler; onMouseDown: MuiCancellableEventHandler; ref: React.RefCallback | null; @@ -65,6 +66,9 @@ export interface UseTreeItem2ContentSlotOwnProps { indentationAtItemLevel?: true; } +export interface UseTreeItem2ContentSlotOwnProps + extends UseTreeItem2ContentSlotPropsFromUseTreeItem {} + export type UseTreeItem2ContentSlotProps = ExternalProps & UseTreeItem2ContentSlotOwnProps; @@ -109,6 +113,11 @@ export interface UseTreeItem2GroupTransitionSlotOwnProps { export type UseTreeItem2GroupTransitionSlotProps = ExternalProps & UseTreeItem2GroupTransitionSlotOwnProps; +export interface UseTreeItem2DragAndDropOverlaySlotOwnProps {} + +export type UseTreeItem2DragAndDropOverlaySlotProps = ExternalProps & + UseTreeItem2DragAndDropOverlaySlotOwnProps; + export interface UseTreeItem2Status { expandable: boolean; expanded: boolean; @@ -169,6 +178,15 @@ export interface UseTreeItem2ReturnValue< getGroupTransitionProps: = {}>( externalProps?: ExternalProps, ) => UseTreeItem2GroupTransitionSlotProps; + /** + * Resolver for the DragAndDropOverlay slot's props. + * Warning: This slot is only useful when using the `RichTreeViewPro` component. + * @param {ExternalProps} externalProps Additional props for the DragAndDropOverlay slot + * @returns {UseTreeItem2DragAndDropOverlaySlotProps} Props that should be spread on the DragAndDropOverlay slot + */ + getDragAndDropOverlayProps: = {}>( + externalProps?: ExternalProps, + ) => UseTreeItem2DragAndDropOverlaySlotProps; /** * A ref to the component's root DOM element. */ diff --git a/scripts/x-tree-view.exports.json b/scripts/x-tree-view.exports.json index eff0884be816..a694660c3afa 100644 --- a/scripts/x-tree-view.exports.json +++ b/scripts/x-tree-view.exports.json @@ -60,12 +60,14 @@ { "name": "TreeViewCollapseIcon", "kind": "Variable" }, { "name": "TreeViewExpandIcon", "kind": "Variable" }, { "name": "TreeViewItemId", "kind": "TypeAlias" }, + { "name": "TreeViewItemsReorderingAction", "kind": "TypeAlias" }, { "name": "TreeViewProps", "kind": "Interface" }, { "name": "TreeViewSlotProps", "kind": "Interface" }, { "name": "TreeViewSlots", "kind": "Interface" }, { "name": "unstable_resetCleanupTracking", "kind": "Variable" }, { "name": "unstable_useTreeItem2", "kind": "Variable" }, { "name": "UseTreeItem2ContentSlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2DragAndDropOverlaySlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2GroupTransitionSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2IconContainerSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2LabelSlotOwnProps", "kind": "Interface" }, diff --git a/test/utils/dragAndDrop.ts b/test/utils/dragAndDrop.ts new file mode 100644 index 000000000000..04a4c05d17d9 --- /dev/null +++ b/test/utils/dragAndDrop.ts @@ -0,0 +1,65 @@ +export type DragEventTypes = + | 'dragStart' + | 'dragOver' + | 'dragEnter' + | 'dragLeave' + | 'dragEnd' + | 'drop'; + +export class MockedDataTransfer implements DataTransfer { + data: Record; + + dropEffect: 'none' | 'copy' | 'move' | 'link'; + + effectAllowed: + | 'none' + | 'copy' + | 'copyLink' + | 'copyMove' + | 'link' + | 'linkMove' + | 'move' + | 'all' + | 'uninitialized'; + + files: FileList; + + img?: Element; + + items: DataTransferItemList; + + types: string[]; + + xOffset: number; + + yOffset: number; + + constructor() { + this.data = {}; + this.dropEffect = 'none'; + this.effectAllowed = 'all'; + this.files = [] as unknown as FileList; + this.items = [] as unknown as DataTransferItemList; + this.types = []; + this.xOffset = 0; + this.yOffset = 0; + } + + clearData() { + this.data = {}; + } + + getData(format: string) { + return this.data[format]; + } + + setData(format: string, data: string) { + this.data[format] = data; + } + + setDragImage(img: Element, xOffset: number, yOffset: number) { + this.img = img; + this.xOffset = xOffset; + this.yOffset = yOffset; + } +} diff --git a/test/utils/pickers/calendar.ts b/test/utils/pickers/calendar.ts index c06241ae0dc1..93fd8107afe1 100644 --- a/test/utils/pickers/calendar.ts +++ b/test/utils/pickers/calendar.ts @@ -1,4 +1,5 @@ import { fireEvent, createEvent } from '@mui/internal-test-utils'; +import { DragEventTypes } from '../dragAndDrop'; export const rangeCalendarDayTouches = { '2018-01-01': { @@ -54,69 +55,3 @@ export const buildPickerDragInteractions = (getDataTransfer: () => DataTransfer return { executeDateDragWithoutDrop, executeDateDrag }; }; - -export type DragEventTypes = - | 'dragStart' - | 'dragOver' - | 'dragEnter' - | 'dragLeave' - | 'dragEnd' - | 'drop'; - -export class MockedDataTransfer implements DataTransfer { - data: Record; - - dropEffect: 'none' | 'copy' | 'move' | 'link'; - - effectAllowed: - | 'none' - | 'copy' - | 'copyLink' - | 'copyMove' - | 'link' - | 'linkMove' - | 'move' - | 'all' - | 'uninitialized'; - - files: FileList; - - img?: Element; - - items: DataTransferItemList; - - types: string[]; - - xOffset: number; - - yOffset: number; - - constructor() { - this.data = {}; - this.dropEffect = 'none'; - this.effectAllowed = 'all'; - this.files = [] as unknown as FileList; - this.items = [] as unknown as DataTransferItemList; - this.types = []; - this.xOffset = 0; - this.yOffset = 0; - } - - clearData() { - this.data = {}; - } - - getData(format: string) { - return this.data[format]; - } - - setData(format: string, data: string) { - this.data[format] = data; - } - - setDragImage(img: Element, xOffset: number, yOffset: number) { - this.img = img; - this.xOffset = xOffset; - this.yOffset = yOffset; - } -} diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.tsx b/test/utils/tree-view/describeTreeView/describeTreeView.tsx index 82feb196b543..8b61afb3e962 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.tsx +++ b/test/utils/tree-view/describeTreeView/describeTreeView.tsx @@ -6,6 +6,7 @@ import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro'; import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; import { TreeViewAnyPluginSignature, TreeViewPublicAPI } from '@mui/x-tree-view/internals/models'; import { MuiRenderResult } from '@mui/internal-test-utils/createRenderer'; import { @@ -14,6 +15,7 @@ import { DescribeTreeViewJSXRenderer, DescribeTreeViewItem, DescribeTreeViewRendererUtils, + TreeViewItemIdTreeElement, } from './describeTreeView.types'; const innerDescribeTreeView = ( @@ -22,12 +24,34 @@ const innerDescribeTreeView = ): void => { const { render } = createRenderer(); - const getUtils = (result: MuiRenderResult): DescribeTreeViewRendererUtils => { + const getUtils = ( + result: MuiRenderResult, + apiRef?: { current: TreeViewPublicAPI }, + ): DescribeTreeViewRendererUtils => { const getRoot = () => result.getByRole('tree'); const getAllTreeItemIds = () => result.queryAllByRole('treeitem').map((item) => item.dataset.testid!); + const getItemIdTree = (): TreeViewItemIdTreeElement[] => { + if (!apiRef) { + throw new Error( + 'Cannot use getItemIdTree in renderFromJSX because the apiRef is not defined', + ); + } + + const cleanItem = (item: TreeViewBaseItem) => { + if (item.children) { + return { id: item.id, children: item.children.map(cleanItem) }; + } + + return { id: item.id }; + }; + + // @ts-ignore + return apiRef.current!.getItemTree().map(cleanItem); + }; + const getFocusedItemId = () => { const activeElement = document.activeElement; if (!activeElement || !activeElement.classList.contains(treeItemClasses.root)) { @@ -77,6 +101,7 @@ const innerDescribeTreeView = isItemExpanded, isItemSelected, getSelectedTreeItems, + getItemIdTree, }; }; @@ -133,7 +158,7 @@ const innerDescribeTreeView = setProps: result.setProps, setItems: (newItems) => result.setProps({ items: newItems }), apiRef: apiRef as unknown as { current: TreeViewPublicAPI }, - ...getUtils(result), + ...getUtils(result, apiRef as unknown as { current: TreeViewPublicAPI }), }; }; diff --git a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts index 8aff13f693ed..d9e17fe48cde 100644 --- a/test/utils/tree-view/describeTreeView/describeTreeView.types.ts +++ b/test/utils/tree-view/describeTreeView/describeTreeView.types.ts @@ -2,8 +2,10 @@ import * as React from 'react'; import { MergeSignaturesProperty, TreeViewAnyPluginSignature, + TreeViewExperimentalFeatures, TreeViewPublicAPI, } from '@mui/x-tree-view/internals/models'; +import { TreeViewItemId } from '@mui/x-tree-view/models'; import { TreeItemProps } from '@mui/x-tree-view/TreeItem'; import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; @@ -11,6 +13,11 @@ export type DescribeTreeViewTestRunner, ) => void; +export interface TreeViewItemIdTreeElement { + id: TreeViewItemId; + children?: TreeViewItemIdTreeElement[]; +} + export interface DescribeTreeViewRendererUtils { /** * Returns the `root` slot of the Tree View. @@ -83,6 +90,7 @@ export interface DescribeTreeViewRendererUtils { * @returns {HTMLElement[]} List of the item id of all the items currently selected. */ getSelectedTreeItems: () => string[]; + getItemIdTree: () => TreeViewItemIdTreeElement[]; } export interface DescribeTreeViewRendererReturnValue< @@ -120,6 +128,7 @@ export type DescribeTreeViewRenderer & { item?: Partial | Partial; }; + experimentalFeatures?: TreeViewExperimentalFeatures; }, ) => DescribeTreeViewRendererReturnValue; From 42e02eaefefe5582e75334007291167b54cd5f5d Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Wed, 31 Jul 2024 15:10:22 +0200 Subject: [PATCH 719/912] [core] Replace @mui/base with @mui/utils + @mui/material (#13823) Signed-off-by: Marija Najdova Co-authored-by: Lukas --- .../charts/zoom-and-pan/ZoomControlled.js | 2 +- .../charts/zoom-and-pan/ZoomControlled.tsx | 2 +- .../QuickFilterOutsideOfGrid.js | 2 +- .../QuickFilterOutsideOfGrid.tsx | 2 +- .../BrowserV6MultiInputRangeField.js | 2 +- .../BrowserV6MultiInputRangeField.tsx | 2 +- .../BrowserV6SingleInputRangeField.js | 2 +- .../BrowserV6SingleInputRangeField.tsx | 2 +- .../BrowserV7MultiInputRangeField.js | 2 +- .../BrowserV7MultiInputRangeField.tsx | 2 +- .../BrowserV7SingleInputRangeField.js | 2 +- .../BrowserV7SingleInputRangeField.tsx | 2 +- .../custom-field/JoyV6MultiInputRangeField.js | 2 +- .../JoyV6MultiInputRangeField.tsx | 2 +- .../JoyV6SingleInputRangeField.js | 2 +- .../JoyV6SingleInputRangeField.tsx | 2 +- docs/package.json | 2 -- .../pages/x/api/date-pickers/date-picker.json | 2 +- .../x/api/date-pickers/date-range-picker.json | 2 +- .../x/api/date-pickers/date-time-picker.json | 2 +- .../date-pickers/date-time-range-picker.json | 2 +- .../api/date-pickers/desktop-date-picker.json | 2 +- .../desktop-date-range-picker.json | 2 +- .../desktop-date-time-picker.json | 2 +- .../desktop-date-time-range-picker.json | 2 +- .../api/date-pickers/desktop-time-picker.json | 2 +- .../pages/x/api/date-pickers/time-picker.json | 2 +- packages/x-charts-pro/package.json | 1 - .../x-charts-pro/src/Heatmap/HeatmapItem.tsx | 2 +- packages/x-charts/package.json | 1 - packages/x-charts/src/BarChart/BarElement.tsx | 2 +- .../src/BarChart/BarLabel/BarLabelItem.tsx | 2 +- .../src/ChartsLegend/ChartsLegend.tsx | 4 ++-- .../src/ChartsLegend/LegendPerItem.tsx | 2 +- .../ChartsAxisTooltipContent.tsx | 2 +- .../ChartsItemTooltipContent.tsx | 2 +- .../src/ChartsTooltip/ChartsTooltip.tsx | 6 ++--- .../x-charts/src/ChartsXAxis/ChartsXAxis.tsx | 4 ++-- .../x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 4 ++-- .../x-charts/src/LineChart/AreaElement.tsx | 2 +- .../x-charts/src/LineChart/LineElement.tsx | 2 +- packages/x-data-grid-generator/package.json | 1 - .../src/components/GridAggregationHeader.tsx | 2 +- .../src/components/GridFooterCell.tsx | 2 +- .../components/GridGroupingCriteriaCell.tsx | 2 +- .../GridDataSourceTreeDataGroupingCell.tsx | 2 +- .../components/GridDetailPanelToggleCell.tsx | 2 +- .../src/components/GridDetailPanels.tsx | 2 +- .../src/components/GridPinnedRows.tsx | 2 +- .../src/components/GridRowReorderCell.tsx | 2 +- .../components/GridTreeDataGroupingCell.tsx | 2 +- .../columnHeaders/useGridColumnHeaders.tsx | 2 +- .../columnReorder/useGridColumnReorder.tsx | 2 +- .../features/rowReorder/useGridRowReorder.tsx | 2 +- .../useGridRowReorderPreProcessors.ts | 2 +- .../src/components/GridRowCount.tsx | 2 +- .../src/components/GridSelectedRowCount.tsx | 2 +- .../src/components/base/GridOverlays.tsx | 2 +- .../src/components/cell/GridBooleanCell.tsx | 2 +- .../columnHeaders/ColumnHeaderMenuIcon.tsx | 2 +- .../columnHeaders/GridBaseColumnHeaders.tsx | 2 +- .../GridColumnHeaderSortIcon.tsx | 2 +- .../columnHeaders/GridColumnHeaderTitle.tsx | 2 +- .../columnHeaders/GridIconButtonContainer.tsx | 2 +- .../columnSelection/GridHeaderCheckbox.tsx | 2 +- .../GridColumnsManagement.tsx | 2 +- .../containers/GridFooterContainer.tsx | 2 +- .../src/components/containers/GridOverlay.tsx | 2 +- .../containers/GridToolbarContainer.tsx | 2 +- .../src/components/panel/GridPanelContent.tsx | 2 +- .../src/components/panel/GridPanelFooter.tsx | 2 +- .../src/components/panel/GridPanelHeader.tsx | 2 +- .../src/components/panel/GridPanelWrapper.tsx | 2 +- .../virtualization/GridBottomContainer.tsx | 2 +- .../virtualization/GridTopContainer.tsx | 2 +- .../virtualization/GridVirtualScroller.tsx | 2 +- .../GridVirtualScrollerContent.tsx | 2 +- .../GridVirtualScrollerRenderZone.tsx | 2 +- .../useGridRowSelectionPreProcessors.ts | 2 +- packages/x-date-pickers-pro/package.json | 1 - .../DateRangeCalendar/DateRangeCalendar.tsx | 3 ++- .../DateRangeCalendar.types.ts | 2 +- .../DateRangePickerToolbar.tsx | 2 +- .../DateRangePickerDay/DateRangePickerDay.tsx | 2 +- .../DateTimeRangePickerToolbar.tsx | 2 +- .../DesktopDateRangePicker.tsx | 2 +- .../DesktopDateTimeRangePicker.tsx | 2 +- .../MobileDateRangePicker.tsx | 2 +- .../MobileDateTimeRangePicker.tsx | 2 +- .../MultiInputDateRangeField.tsx | 2 +- .../MultiInputDateRangeField.types.ts | 2 +- .../MultiInputDateTimeRangeField.tsx | 2 +- .../MultiInputDateTimeRangeField.types.ts | 2 +- .../MultiInputTimeRangeField.tsx | 2 +- .../MultiInputTimeRangeField.types.ts | 2 +- .../SingleInputDateRangeField.tsx | 2 +- .../SingleInputDateRangeField.types.ts | 2 +- .../SingleInputDateTimeRangeField.tsx | 2 +- .../SingleInputDateTimeRangeField.types.ts | 2 +- .../SingleInputTimeRangeField.tsx | 2 +- .../SingleInputTimeRangeField.types.ts | 2 +- .../useDesktopRangePicker.tsx | 2 +- .../hooks/useEnrichedRangePickerFieldProps.ts | 3 ++- .../useMobileRangePicker.tsx | 2 +- .../x-date-pickers-pro/src/models/fields.ts | 2 +- packages/x-date-pickers/package.json | 1 - .../src/DateCalendar/DateCalendar.tsx | 2 +- .../src/DateCalendar/DateCalendar.types.ts | 2 +- .../src/DateCalendar/DayCalendar.tsx | 2 +- .../src/DateField/DateField.tsx | 2 +- .../src/DateField/DateField.types.ts | 2 +- .../src/DatePicker/DatePickerToolbar.tsx | 2 +- .../src/DateTimeField/DateTimeField.tsx | 2 +- .../src/DateTimeField/DateTimeField.types.ts | 2 +- .../DayCalendarSkeleton.tsx | 2 +- .../DesktopDatePicker/DesktopDatePicker.tsx | 2 +- .../DesktopDateTimePicker.tsx | 2 +- .../DesktopTimePicker/DesktopTimePicker.tsx | 2 +- .../src/DigitalClock/DigitalClock.tsx | 2 +- .../src/DigitalClock/DigitalClock.types.ts | 2 +- .../src/MobileDatePicker/MobileDatePicker.tsx | 2 +- .../MobileDateTimePicker.tsx | 2 +- .../src/MobileTimePicker/MobileTimePicker.tsx | 2 +- .../src/MonthCalendar/PickersMonth.tsx | 2 +- .../MultiSectionDigitalClock.types.ts | 2 +- .../PickersCalendarHeader.tsx | 4 ++-- .../PickersCalendarHeader.types.ts | 2 +- .../src/PickersLayout/PickersLayout.tsx | 2 +- .../src/PickersLayout/PickersLayout.types.ts | 2 +- .../src/PickersLayout/usePickerLayout.tsx | 4 ++-- .../PickersSectionList/PickersSectionList.tsx | 2 +- .../PickersSectionList.types.ts | 2 +- .../PickersInputBase/PickersInputBase.tsx | 2 +- .../src/TimeClock/ClockNumber.tsx | 2 +- .../src/TimeClock/ClockPointer.tsx | 2 +- .../src/TimeField/TimeField.tsx | 2 +- .../src/TimeField/TimeField.types.ts | 2 +- .../src/TimePicker/TimePickerToolbar.tsx | 2 +- .../src/YearCalendar/PickersYear.tsx | 2 +- .../src/hooks/useClearableField.tsx | 3 ++- .../PickersArrowSwitcher.tsx | 4 ++-- .../PickersArrowSwitcher.types.tsx | 2 +- .../internals/components/PickersPopper.tsx | 5 ++-- .../internals/components/PickersToolbar.tsx | 2 +- .../components/PickersToolbarButton.tsx | 2 +- .../components/PickersToolbarText.tsx | 2 +- .../useDesktopPicker/useDesktopPicker.tsx | 2 +- .../useDesktopPicker.types.ts | 2 +- .../hooks/useMobilePicker/useMobilePicker.tsx | 2 +- .../useMobilePicker/useMobilePicker.types.ts | 2 +- packages/x-tree-view-pro/README.md | 2 +- packages/x-tree-view-pro/package.json | 1 - .../src/RichTreeViewPro/RichTreeViewPro.tsx | 2 +- .../RichTreeViewPro/RichTreeViewPro.types.ts | 2 +- packages/x-tree-view/package.json | 1 - .../src/RichTreeView/RichTreeView.tsx | 2 +- .../src/RichTreeView/RichTreeView.types.ts | 2 +- .../src/SimpleTreeView/SimpleTreeView.tsx | 2 +- .../SimpleTreeView/SimpleTreeView.types.ts | 2 +- .../x-tree-view/src/TreeItem/TreeItem.tsx | 6 +++-- .../src/TreeItem/TreeItem.types.ts | 2 +- .../x-tree-view/src/TreeItem2/TreeItem2.tsx | 2 +- .../src/TreeItem2/TreeItem2.types.ts | 2 +- .../src/TreeItem2Icon/TreeItem2Icon.tsx | 3 ++- .../src/TreeItem2Icon/TreeItem2Icon.types.ts | 2 +- .../src/internals/models/itemPlugin.ts | 2 +- .../src/internals/models/plugin.ts | 2 +- .../useTreeViewFocus/useTreeViewFocus.ts | 2 +- .../useTreeViewIcons.types.ts | 2 +- .../src/internals/useTreeView/useTreeView.ts | 2 +- .../useTreeView/useTreeView.types.ts | 2 +- .../src/useTreeItem2/useTreeItem2.ts | 3 ++- pnpm-lock.yaml | 24 ------------------- renovate.json | 1 - 174 files changed, 182 insertions(+), 208 deletions(-) diff --git a/docs/data/charts/zoom-and-pan/ZoomControlled.js b/docs/data/charts/zoom-and-pan/ZoomControlled.js index 82a17f60a326..5f214831d5ed 100644 --- a/docs/data/charts/zoom-and-pan/ZoomControlled.js +++ b/docs/data/charts/zoom-and-pan/ZoomControlled.js @@ -1,7 +1,7 @@ import * as React from 'react'; import { LineChartPro } from '@mui/x-charts-pro/LineChartPro'; -import { Button } from '@mui/base'; +import Button from '@mui/material/Button'; export default function ZoomControlled() { const [zoom, setZoom] = React.useState([ diff --git a/docs/data/charts/zoom-and-pan/ZoomControlled.tsx b/docs/data/charts/zoom-and-pan/ZoomControlled.tsx index 643f2fd65a7a..bb17254c4e90 100644 --- a/docs/data/charts/zoom-and-pan/ZoomControlled.tsx +++ b/docs/data/charts/zoom-and-pan/ZoomControlled.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { LineChartPro } from '@mui/x-charts-pro/LineChartPro'; import { ZoomData } from '@mui/x-charts-pro/context'; -import { Button } from '@mui/base'; +import Button from '@mui/material/Button'; export default function ZoomControlled() { const [zoom, setZoom] = React.useState([ diff --git a/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.js b/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.js index 685103643c46..e1b71155c7e9 100644 --- a/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.js +++ b/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Portal } from '@mui/base/Portal'; +import Portal from '@mui/material/Portal'; import Box from '@mui/material/Box'; import Grid from '@mui/material/Grid'; import { DataGrid, GridToolbarQuickFilter, GridToolbar } from '@mui/x-data-grid'; diff --git a/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.tsx b/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.tsx index 12fc5cd7a1ab..9e8397efea9c 100644 --- a/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.tsx +++ b/docs/data/data-grid/filtering-recipes/QuickFilterOutsideOfGrid.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Portal } from '@mui/base/Portal'; +import Portal from '@mui/material/Portal'; import Box from '@mui/material/Box'; import Grid from '@mui/material/Grid'; import { DataGrid, GridToolbarQuickFilter, GridToolbar } from '@mui/x-data-grid'; diff --git a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js index 54fbf77485f5..61c9dd0857d1 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js @@ -1,7 +1,7 @@ import * as React from 'react'; import { unstable_useForkRef as useForkRef } from '@mui/utils'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; diff --git a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx index 73fa1cf82f75..0c993265f441 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Dayjs } from 'dayjs'; import { unstable_useForkRef as useForkRef } from '@mui/utils'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; diff --git a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js index 5761a6ea83bd..dc34821c612c 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js @@ -1,7 +1,7 @@ import * as React from 'react'; import { unstable_useForkRef as useForkRef } from '@mui/utils'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import Box from '@mui/material/Box'; import IconButton from '@mui/material/IconButton'; import InputAdornment from '@mui/material/InputAdornment'; diff --git a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx index a42e057c5a70..29d27a1c63d7 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Dayjs } from 'dayjs'; import { unstable_useForkRef as useForkRef } from '@mui/utils'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import Box from '@mui/material/Box'; import IconButton from '@mui/material/IconButton'; import InputAdornment from '@mui/material/InputAdornment'; diff --git a/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.js index 76d9cceb5c6a..077b80a25691 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.js @@ -1,7 +1,7 @@ import * as React from 'react'; import useForkRef from '@mui/utils/useForkRef'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled } from '@mui/material/styles'; import Stack from '@mui/material/Stack'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; diff --git a/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.tsx index 8763070380ba..c4ef19f2f15b 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV7MultiInputRangeField.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Dayjs } from 'dayjs'; import useForkRef from '@mui/utils/useForkRef'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled } from '@mui/material/styles'; import Stack from '@mui/material/Stack'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; diff --git a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js index 2eeede71d126..57cc103e1c69 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js @@ -1,7 +1,7 @@ import * as React from 'react'; import useForkRef from '@mui/utils/useForkRef'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled } from '@mui/material/styles'; import IconButton from '@mui/material/IconButton'; import InputAdornment from '@mui/material/InputAdornment'; diff --git a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx index ac5ab4b22c28..dd04c5aae06e 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Dayjs } from 'dayjs'; import useForkRef from '@mui/utils/useForkRef'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled } from '@mui/material/styles'; import IconButton from '@mui/material/IconButton'; import InputAdornment from '@mui/material/InputAdornment'; diff --git a/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.js b/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.js index 40b15af9295f..e4f82d1581bb 100644 --- a/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.js +++ b/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.js @@ -5,6 +5,7 @@ import { useColorScheme as useMaterialColorScheme, Experimental_CssVarsProvider as MaterialCssVarsProvider, } from '@mui/material/styles'; +import useSlotProps from '@mui/utils/useSlotProps'; import { extendTheme as extendJoyTheme, useColorScheme, @@ -12,7 +13,6 @@ import { CssVarsProvider, THEME_ID, } from '@mui/joy/styles'; -import { useSlotProps } from '@mui/base/utils'; import Input from '@mui/joy/Input'; import Stack from '@mui/joy/Stack'; import FormControl from '@mui/joy/FormControl'; diff --git a/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.tsx b/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.tsx index 831ada098b9c..175c0a3d04bb 100644 --- a/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/JoyV6MultiInputRangeField.tsx @@ -5,6 +5,7 @@ import { useColorScheme as useMaterialColorScheme, Experimental_CssVarsProvider as MaterialCssVarsProvider, } from '@mui/material/styles'; +import useSlotProps from '@mui/utils/useSlotProps'; import { extendTheme as extendJoyTheme, useColorScheme, @@ -12,7 +13,6 @@ import { CssVarsProvider, THEME_ID, } from '@mui/joy/styles'; -import { useSlotProps } from '@mui/base/utils'; import Input, { InputProps } from '@mui/joy/Input'; import Stack, { StackProps } from '@mui/joy/Stack'; import FormControl from '@mui/joy/FormControl'; diff --git a/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.js b/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.js index 7183f8d9c4a3..9ac5abf64465 100644 --- a/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.js +++ b/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.js @@ -5,13 +5,13 @@ import { useColorScheme as useMaterialColorScheme, Experimental_CssVarsProvider as MaterialCssVarsProvider, } from '@mui/material/styles'; +import useSlotProps from '@mui/utils/useSlotProps'; import { extendTheme as extendJoyTheme, useColorScheme, CssVarsProvider, THEME_ID, } from '@mui/joy/styles'; -import { useSlotProps } from '@mui/base/utils'; import Input from '@mui/joy/Input'; import FormControl from '@mui/joy/FormControl'; import FormLabel from '@mui/joy/FormLabel'; diff --git a/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.tsx b/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.tsx index d7e26765a1a0..832a7b515624 100644 --- a/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/JoyV6SingleInputRangeField.tsx @@ -5,13 +5,13 @@ import { useColorScheme as useMaterialColorScheme, Experimental_CssVarsProvider as MaterialCssVarsProvider, } from '@mui/material/styles'; +import useSlotProps from '@mui/utils/useSlotProps'; import { extendTheme as extendJoyTheme, useColorScheme, CssVarsProvider, THEME_ID, } from '@mui/joy/styles'; -import { useSlotProps } from '@mui/base/utils'; import Input, { InputProps } from '@mui/joy/Input'; import FormControl from '@mui/joy/FormControl'; import FormLabel from '@mui/joy/FormLabel'; diff --git a/docs/package.json b/docs/package.json index 5fb57f442982..1c2da4954612 100644 --- a/docs/package.json +++ b/docs/package.json @@ -27,7 +27,6 @@ "@emotion/react": "^11.13.0", "@emotion/server": "^11.11.0", "@emotion/styled": "^11.13.0", - "@mui/base": "^5.0.0-beta.40", "@mui/docs": "6.0.0-beta.4", "@mui/icons-material": "^5.16.5", "@mui/joy": "^5.0.0-beta.48", @@ -66,7 +65,6 @@ "date-fns-jalali": "^2.30.0-0", "dayjs": "^1.11.11", "doctrine": "^3.0.0", - "d3-scale-chromatic": "^3.1.0", "exceljs": "^4.4.0", "fg-loadcss": "^3.1.0", "jscodeshift": "0.16.1", diff --git a/docs/pages/x/api/date-pickers/date-picker.json b/docs/pages/x/api/date-pickers/date-picker.json index 261027e0dffb..11f66d860b1c 100644 --- a/docs/pages/x/api/date-pickers/date-picker.json +++ b/docs/pages/x/api/date-pickers/date-picker.json @@ -236,7 +236,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/date-range-picker.json b/docs/pages/x/api/date-pickers/date-range-picker.json index 0d6fa4e9126e..ac4355088980 100644 --- a/docs/pages/x/api/date-pickers/date-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-range-picker.json @@ -202,7 +202,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/date-time-picker.json b/docs/pages/x/api/date-pickers/date-time-picker.json index 3f3ea5eb8b7d..4186360ab270 100644 --- a/docs/pages/x/api/date-pickers/date-time-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-picker.json @@ -264,7 +264,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/date-time-range-picker.json b/docs/pages/x/api/date-pickers/date-time-range-picker.json index 58bdbd2ba412..ebbb2d916315 100644 --- a/docs/pages/x/api/date-pickers/date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/date-time-range-picker.json @@ -253,7 +253,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/desktop-date-picker.json b/docs/pages/x/api/date-pickers/desktop-date-picker.json index 42f3fd8ddf20..c9f5528a3a66 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-picker.json @@ -232,7 +232,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/desktop-date-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-range-picker.json index 46d50fe54632..f4aec3a80bb5 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-range-picker.json @@ -198,7 +198,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { "name": "field", "description": "", "class": null }, diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json index 79ef2f9f293b..ba0848986a20 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-picker.json @@ -260,7 +260,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json index ce32a3e27e22..39ea91b009e3 100644 --- a/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-date-time-range-picker.json @@ -249,7 +249,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/desktop-time-picker.json b/docs/pages/x/api/date-pickers/desktop-time-picker.json index 9e0778a668a3..5ed580f886e8 100644 --- a/docs/pages/x/api/date-pickers/desktop-time-picker.json +++ b/docs/pages/x/api/date-pickers/desktop-time-picker.json @@ -181,7 +181,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/docs/pages/x/api/date-pickers/time-picker.json b/docs/pages/x/api/date-pickers/time-picker.json index bd196aa67441..fc3050e0d0c8 100644 --- a/docs/pages/x/api/date-pickers/time-picker.json +++ b/docs/pages/x/api/date-pickers/time-picker.json @@ -185,7 +185,7 @@ { "name": "desktopTrapFocus", "description": "Custom component for trapping the focus inside the views on desktop.", - "default": "FocusTrap from '@mui/base'.", + "default": "TrapFocus from '@mui/material'.", "class": null }, { diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 2c05e1572a66..6f81dc767fdc 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -41,7 +41,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-charts": "workspace:*", diff --git a/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx b/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx index ef38071bbf35..5b36445c5aa9 100644 --- a/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx +++ b/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { styled } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; import { useItemHighlighted } from '@mui/x-charts/context'; import { useInteractionItemProps, SeriesId } from '@mui/x-charts/internals'; diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 42b556b7840c..28fc77a6daad 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -40,7 +40,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@react-spring/rafz": "^9.7.4", diff --git a/packages/x-charts/src/BarChart/BarElement.tsx b/packages/x-charts/src/BarChart/BarElement.tsx index c99ee449de45..e9359eae9fd9 100644 --- a/packages/x-charts/src/BarChart/BarElement.tsx +++ b/packages/x-charts/src/BarChart/BarElement.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import { styled } from '@mui/material/styles'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; diff --git a/packages/x-charts/src/BarChart/BarLabel/BarLabelItem.tsx b/packages/x-charts/src/BarChart/BarLabel/BarLabelItem.tsx index 47f16932289e..a71c3c7a4a29 100644 --- a/packages/x-charts/src/BarChart/BarLabel/BarLabelItem.tsx +++ b/packages/x-charts/src/BarChart/BarLabel/BarLabelItem.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import PropTypes from 'prop-types'; import { SlotComponentPropsFromProps } from '../../internals/SlotComponentPropsFromProps'; import { useUtilityClasses } from './barLabelClasses'; diff --git a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx index 5194f2e14184..1fab773c243f 100644 --- a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { useSlotProps } from '@mui/base/utils'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; +import composeClasses from '@mui/utils/composeClasses'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; import { getSeriesToDisplay } from './utils'; import { ChartsLegendClasses, getLegendUtilityClass } from './chartsLegendClasses'; diff --git a/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx b/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx index 9bb218e150fd..dd61aeb4e9f8 100644 --- a/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx +++ b/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { NoSsr } from '@mui/base/NoSsr'; +import NoSsr from '@mui/material/NoSsr'; import { useTheme, styled } from '@mui/material/styles'; import { DrawingArea } from '../context/DrawingProvider'; import { DefaultizedProps } from '../models/helpers'; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 19a9d6c8aab7..961191227c49 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { SxProps, Theme } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { AxisInteractionData } from '../context/InteractionProvider'; import { useCartesianContext } from '../context/CartesianProvider'; import { ChartSeriesDefaultized, ChartSeriesType } from '../models/seriesType/config'; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx index fc2f0ff3acdf..65c8dbe0c652 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { SxProps, Theme } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { ItemInteractionData } from '../context/InteractionProvider'; import { ChartSeriesDefaultized, ChartSeriesType } from '../models/seriesType/config'; import { ChartsTooltipClasses } from './chartsTooltipClasses'; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx index 5f2d8fb96b2e..1391416cf3d0 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx @@ -2,9 +2,9 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; import { styled, useThemeProps, SxProps, Theme } from '@mui/material/styles'; -import { Popper, PopperProps as BasePopperProps } from '@mui/base/Popper'; -import { NoSsr } from '@mui/base/NoSsr'; -import { useSlotProps } from '@mui/base/utils'; +import Popper, { PopperProps as BasePopperProps } from '@mui/material/Popper'; +import NoSsr from '@mui/material/NoSsr'; +import useSlotProps from '@mui/utils/useSlotProps'; import { AxisInteractionData, InteractionContext, diff --git a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx index 8329f9bd91b3..dd5ce3424fad 100644 --- a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx +++ b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { useSlotProps } from '@mui/base/utils'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; +import composeClasses from '@mui/utils/composeClasses'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; import { useCartesianContext } from '../context/CartesianProvider'; import { useTicks, TickItemType } from '../hooks/useTicks'; diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index 09cc6fd48c8f..43f365d4881f 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { useSlotProps } from '@mui/base/utils'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; +import composeClasses from '@mui/utils/composeClasses'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; import { useCartesianContext } from '../context/CartesianProvider'; import { useTicks } from '../hooks/useTicks'; diff --git a/packages/x-charts/src/LineChart/AreaElement.tsx b/packages/x-charts/src/LineChart/AreaElement.tsx index d38548bcea59..ab692866824a 100644 --- a/packages/x-charts/src/LineChart/AreaElement.tsx +++ b/packages/x-charts/src/LineChart/AreaElement.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; import { SlotComponentPropsFromProps } from '../internals/SlotComponentPropsFromProps'; diff --git a/packages/x-charts/src/LineChart/LineElement.tsx b/packages/x-charts/src/LineChart/LineElement.tsx index c5df2482d78a..4361d3e7a0d8 100644 --- a/packages/x-charts/src/LineChart/LineElement.tsx +++ b/packages/x-charts/src/LineChart/LineElement.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import generateUtilityClass from '@mui/utils/generateUtilityClass'; import generateUtilityClasses from '@mui/utils/generateUtilityClasses'; import { SlotComponentPropsFromProps } from '../internals/SlotComponentPropsFromProps'; diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 5c5b9978009c..c45ba4a8a521 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -34,7 +34,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.12", "clsx": "^2.1.1", diff --git a/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx b/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx index bcf55edd9897..45048fa89147 100644 --- a/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx +++ b/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled } from '@mui/material/styles'; import { getDataGridUtilityClass, diff --git a/packages/x-data-grid-premium/src/components/GridFooterCell.tsx b/packages/x-data-grid-premium/src/components/GridFooterCell.tsx index e7184db59b37..d7b7c601d62c 100644 --- a/packages/x-data-grid-premium/src/components/GridFooterCell.tsx +++ b/packages/x-data-grid-premium/src/components/GridFooterCell.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { getDataGridUtilityClass, GridRenderCellParams } from '@mui/x-data-grid'; import { styled, Theme } from '@mui/material/styles'; import { SxProps } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { DataGridPremiumProcessedProps } from '../models/dataGridPremiumProps'; diff --git a/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx b/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx index b9b367ea6c31..0046dc3294a4 100644 --- a/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx +++ b/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import Box from '@mui/material/Box'; import { useGridSelector, diff --git a/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx b/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx index d03c28e675c4..eedd1ea4f7d3 100644 --- a/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx +++ b/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import Box from '@mui/material/Box'; import Badge from '@mui/material/Badge'; import { diff --git a/packages/x-data-grid-pro/src/components/GridDetailPanelToggleCell.tsx b/packages/x-data-grid-pro/src/components/GridDetailPanelToggleCell.tsx index f38083de2364..0df3ae4e9dbb 100644 --- a/packages/x-data-grid-pro/src/components/GridDetailPanelToggleCell.tsx +++ b/packages/x-data-grid-pro/src/components/GridDetailPanelToggleCell.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass, useGridSelector, GridRenderCellParams } from '@mui/x-data-grid'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; diff --git a/packages/x-data-grid-pro/src/components/GridDetailPanels.tsx b/packages/x-data-grid-pro/src/components/GridDetailPanels.tsx index 64f3cbed737e..a1bdd1cf006b 100644 --- a/packages/x-data-grid-pro/src/components/GridDetailPanels.tsx +++ b/packages/x-data-grid-pro/src/components/GridDetailPanels.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass, useGridSelector, GridRowId } from '@mui/x-data-grid'; import { GridDetailPanelsProps, EMPTY_DETAIL_PANELS } from '@mui/x-data-grid/internals'; import { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext'; diff --git a/packages/x-data-grid-pro/src/components/GridPinnedRows.tsx b/packages/x-data-grid-pro/src/components/GridPinnedRows.tsx index a1060d680c0f..04dfb4ccd17c 100644 --- a/packages/x-data-grid-pro/src/components/GridPinnedRows.tsx +++ b/packages/x-data-grid-pro/src/components/GridPinnedRows.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass, gridClasses, useGridSelector } from '@mui/x-data-grid'; import { GridPinnedRowsProps, diff --git a/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx b/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx index 42a11ff403da..8cac92c40b11 100644 --- a/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx +++ b/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { GridRenderCellParams, GridRowEventLookup, diff --git a/packages/x-data-grid-pro/src/components/GridTreeDataGroupingCell.tsx b/packages/x-data-grid-pro/src/components/GridTreeDataGroupingCell.tsx index 673b637ee038..65cc02dc5886 100644 --- a/packages/x-data-grid-pro/src/components/GridTreeDataGroupingCell.tsx +++ b/packages/x-data-grid-pro/src/components/GridTreeDataGroupingCell.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import Box from '@mui/material/Box'; import { useGridSelector, diff --git a/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index 5465063b1a27..ced989772a6b 100644 --- a/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid-pro/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -18,7 +18,7 @@ import { GridStateColDef, GridColumnHeaderRow, } from '@mui/x-data-grid/internals'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useGridRootProps } from '../../utils/useGridRootProps'; import { DataGridProProcessedProps } from '../../../models/dataGridProProps'; diff --git a/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx b/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx index bbe9010f1583..e882e42ea10a 100644 --- a/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx +++ b/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useTheme } from '@mui/material/styles'; import { CursorCoordinates, diff --git a/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorder.tsx b/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorder.tsx index eac8e8105a68..e6c4ed135c1d 100644 --- a/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorder.tsx +++ b/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorder.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useGridLogger, useGridApiEventHandler, diff --git a/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorderPreProcessors.ts b/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorderPreProcessors.ts index ccef772bac9d..12c63761f0ce 100644 --- a/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorderPreProcessors.ts +++ b/packages/x-data-grid-pro/src/hooks/features/rowReorder/useGridRowReorderPreProcessors.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass, GridColDef } from '@mui/x-data-grid'; import { GridPipeProcessor, useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals'; import { DataGridProProcessedProps } from '../../../models/dataGridProProps'; diff --git a/packages/x-data-grid/src/components/GridRowCount.tsx b/packages/x-data-grid/src/components/GridRowCount.tsx index e032ae6c443f..1651bfa95765 100644 --- a/packages/x-data-grid/src/components/GridRowCount.tsx +++ b/packages/x-data-grid/src/components/GridRowCount.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled, SxProps, Theme } from '@mui/system'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; import { getDataGridUtilityClass } from '../constants/gridClasses'; diff --git a/packages/x-data-grid/src/components/GridSelectedRowCount.tsx b/packages/x-data-grid/src/components/GridSelectedRowCount.tsx index 0b1f98a07bed..17b033fbfeea 100644 --- a/packages/x-data-grid/src/components/GridSelectedRowCount.tsx +++ b/packages/x-data-grid/src/components/GridSelectedRowCount.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled, SxProps, Theme } from '@mui/system'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; import { getDataGridUtilityClass } from '../constants/gridClasses'; diff --git a/packages/x-data-grid/src/components/base/GridOverlays.tsx b/packages/x-data-grid/src/components/base/GridOverlays.tsx index 169763a4633c..e21561bcdf27 100644 --- a/packages/x-data-grid/src/components/base/GridOverlays.tsx +++ b/packages/x-data-grid/src/components/base/GridOverlays.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { styled } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import clsx from 'clsx'; import { useGridSelector } from '../../hooks/utils/useGridSelector'; import { gridDimensionsSelector } from '../../hooks/features/dimensions'; diff --git a/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx b/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx index 4d41d9e0f967..543e199229c2 100644 --- a/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridBooleanCell.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { SvgIconProps } from '@mui/material/SvgIcon'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { GridRenderCellParams } from '../../models/params/gridCellParams'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx b/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx index 16566f378d74..20d7527388ab 100644 --- a/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { GridStateColDef } from '../../models/colDef/gridColDef'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; diff --git a/packages/x-data-grid/src/components/columnHeaders/GridBaseColumnHeaders.tsx b/packages/x-data-grid/src/components/columnHeaders/GridBaseColumnHeaders.tsx index aa640c82d98b..47d2ecf6a418 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridBaseColumnHeaders.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridBaseColumnHeaders.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled, SxProps, Theme } from '@mui/system'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSortIcon.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSortIcon.tsx index c10c6225402f..367931b7e3c9 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSortIcon.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSortIcon.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import Badge from '@mui/material/Badge'; import { GridSlotsComponent } from '../../models/gridSlotsComponent'; import { GridSortDirection } from '../../models/gridSortModel'; diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx index 7faef9a89489..cf70450d7643 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled } from '@mui/system'; import { isOverflown } from '../../utils/domUtils'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; diff --git a/packages/x-data-grid/src/components/columnHeaders/GridIconButtonContainer.tsx b/packages/x-data-grid/src/components/columnHeaders/GridIconButtonContainer.tsx index 1fd807e831ee..7c0c88a6df7b 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridIconButtonContainer.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridIconButtonContainer.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled } from '@mui/system'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx b/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx index 47ee8b35b92b..71e12c5db38b 100644 --- a/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx +++ b/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { isMultipleRowSelectionEnabled } from '../../hooks/features/rowSelection/utils'; import { useGridSelector } from '../../hooks/utils/useGridSelector'; import { gridTabIndexColumnHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector'; diff --git a/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx b/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx index 7fdf409c4811..431736337d34 100644 --- a/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx +++ b/packages/x-data-grid/src/components/columnsManagement/GridColumnsManagement.tsx @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-use-before-define */ import * as React from 'react'; import PropTypes from 'prop-types'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import FormControlLabel from '@mui/material/FormControlLabel'; import { styled } from '@mui/material/styles'; import { diff --git a/packages/x-data-grid/src/components/containers/GridFooterContainer.tsx b/packages/x-data-grid/src/components/containers/GridFooterContainer.tsx index ef1f96f32fe1..42f4a1051319 100644 --- a/packages/x-data-grid/src/components/containers/GridFooterContainer.tsx +++ b/packages/x-data-grid/src/components/containers/GridFooterContainer.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { styled, SxProps, Theme } from '@mui/system'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/containers/GridOverlay.tsx b/packages/x-data-grid/src/components/containers/GridOverlay.tsx index 5a48306eaeab..73a339738ca4 100644 --- a/packages/x-data-grid/src/components/containers/GridOverlay.tsx +++ b/packages/x-data-grid/src/components/containers/GridOverlay.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { Theme, SxProps, styled } from '@mui/system'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; diff --git a/packages/x-data-grid/src/components/containers/GridToolbarContainer.tsx b/packages/x-data-grid/src/components/containers/GridToolbarContainer.tsx index c291bd10796e..e53f8d7809d1 100644 --- a/packages/x-data-grid/src/components/containers/GridToolbarContainer.tsx +++ b/packages/x-data-grid/src/components/containers/GridToolbarContainer.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled, SxProps, Theme } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/panel/GridPanelContent.tsx b/packages/x-data-grid/src/components/panel/GridPanelContent.tsx index 2e373a71ab0b..0506f44f7b55 100644 --- a/packages/x-data-grid/src/components/panel/GridPanelContent.tsx +++ b/packages/x-data-grid/src/components/panel/GridPanelContent.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled, SxProps, Theme } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/panel/GridPanelFooter.tsx b/packages/x-data-grid/src/components/panel/GridPanelFooter.tsx index df96cce1c7f9..7744ad239b7d 100644 --- a/packages/x-data-grid/src/components/panel/GridPanelFooter.tsx +++ b/packages/x-data-grid/src/components/panel/GridPanelFooter.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled, SxProps, Theme } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/panel/GridPanelHeader.tsx b/packages/x-data-grid/src/components/panel/GridPanelHeader.tsx index 23ad3f025218..64cf34faf373 100644 --- a/packages/x-data-grid/src/components/panel/GridPanelHeader.tsx +++ b/packages/x-data-grid/src/components/panel/GridPanelHeader.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled, SxProps, Theme } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/panel/GridPanelWrapper.tsx b/packages/x-data-grid/src/components/panel/GridPanelWrapper.tsx index 455a3e474a76..d1afe7d8f292 100644 --- a/packages/x-data-grid/src/components/panel/GridPanelWrapper.tsx +++ b/packages/x-data-grid/src/components/panel/GridPanelWrapper.tsx @@ -4,7 +4,7 @@ import clsx from 'clsx'; import FocusTrap, { TrapFocusProps } from '@mui/material/Unstable_TrapFocus'; import { styled, Theme } from '@mui/material/styles'; import { MUIStyledCommonProps } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/virtualization/GridBottomContainer.tsx b/packages/x-data-grid/src/components/virtualization/GridBottomContainer.tsx index fa5b24d25ed0..40eaa1cfcf94 100644 --- a/packages/x-data-grid/src/components/virtualization/GridBottomContainer.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridBottomContainer.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses'; const useUtilityClasses = () => { diff --git a/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx b/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx index 2cb6904a4260..84afe0bd9fec 100644 --- a/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridTopContainer.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses'; const useUtilityClasses = () => { diff --git a/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx b/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx index 5afc96f930fc..875d1e2b80e5 100644 --- a/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { styled } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { GridScrollArea } from '../GridScrollArea'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; diff --git a/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerContent.tsx b/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerContent.tsx index 95e05d1a48a5..90709353bf2b 100644 --- a/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerContent.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerContent.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled, SxProps, Theme } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; diff --git a/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerRenderZone.tsx b/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerRenderZone.tsx index 240238494e0b..4ecd09eaf4f8 100644 --- a/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerRenderZone.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerRenderZone.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled, SxProps, Theme } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { useGridSelector } from '../../hooks/utils/useGridSelector'; import { gridRowsMetaSelector } from '../../hooks/features/rows'; diff --git a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelectionPreProcessors.ts b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelectionPreProcessors.ts index 454bbb05cbdc..373282645648 100644 --- a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelectionPreProcessors.ts +++ b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelectionPreProcessors.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { GridColDef } from '../../../models/colDef/gridColDef'; import { GridPipeProcessor, useGridRegisterPipeProcessor } from '../../core/pipeProcessing'; import { getDataGridUtilityClass } from '../../../constants'; diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 9f8774100d36..45fc2a705a6b 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -43,7 +43,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-date-pickers": "workspace:*", diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx index 42091d172fe4..3e0272ae130c 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.tsx @@ -3,7 +3,8 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import useEventCallback from '@mui/utils/useEventCallback'; import useMediaQuery from '@mui/material/useMediaQuery'; -import { resolveComponentProps, useSlotProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled, useThemeProps } from '@mui/material/styles'; import composeClasses from '@mui/utils/composeClasses'; import useId from '@mui/utils/useId'; diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.types.ts b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.types.ts index 7830eba35b47..ac56c4d44149 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.types.ts +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { SxProps } from '@mui/system'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { Theme } from '@mui/material/styles'; import { PickerValidDate, TimezoneProps } from '@mui/x-date-pickers/models'; import { diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerToolbar.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerToolbar.tsx index da4b3debfa1d..e712df988508 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerToolbar.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePickerToolbar.tsx @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import Typography from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { PickersToolbar, PickersToolbarButton, diff --git a/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx b/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx index a285918781a3..2c466c3680a0 100644 --- a/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePickerDay/DateRangePickerDay.tsx @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import { useLicenseVerifier } from '@mui/x-license'; import { alpha, styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { useUtils } from '@mui/x-date-pickers/internals'; import { PickerValidDate } from '@mui/x-date-pickers/models'; import { PickersDay, PickersDayProps } from '@mui/x-date-pickers/PickersDay'; diff --git a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx index 26816d573602..3d8c07b23c6f 100644 --- a/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx +++ b/packages/x-date-pickers-pro/src/DateTimeRangePicker/DateTimeRangePickerToolbar.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { BaseToolbarProps, ExportedBaseToolbarProps, diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx index ffe1495a0c61..1a583b12807b 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/DesktopDateRangePicker.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { extractValidationProps, PickerViewRendererLookup } from '@mui/x-date-pickers/internals'; import { PickerValidDate } from '@mui/x-date-pickers/models'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { rangeValueManager } from '../internals/utils/valueManagers'; import { DesktopDateRangePickerProps } from './DesktopDateRangePicker.types'; diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index 1f5222ac1dd9..f3d52bc90d1f 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -11,7 +11,7 @@ import { useUtils, } from '@mui/x-date-pickers/internals'; import { PickerValidDate } from '@mui/x-date-pickers/models'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { renderDigitalClockTimeView, diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx index 3341e4ab5eb6..54558b1607ea 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/MobileDateRangePicker.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { extractValidationProps, PickerViewRendererLookup } from '@mui/x-date-pickers/internals'; import { PickerValidDate } from '@mui/x-date-pickers/models'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { rangeValueManager } from '../internals/utils/valueManagers'; import { MobileDateRangePickerProps } from './MobileDateRangePicker.types'; diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index 96105234fa08..504484d7f344 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -15,7 +15,7 @@ import { useUtils, } from '@mui/x-date-pickers/internals'; import { PickerValidDate } from '@mui/x-date-pickers/models'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView, diff --git a/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx b/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx index 4ba7a091e61a..909fc6c29e7c 100644 --- a/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx +++ b/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.tsx @@ -5,7 +5,7 @@ import Stack, { StackProps } from '@mui/material/Stack'; import MuiTextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass, diff --git a/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.types.ts b/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.types.ts index e933812498ed..d70dd6ef8bb1 100644 --- a/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.types.ts +++ b/packages/x-date-pickers-pro/src/MultiInputDateRangeField/MultiInputDateRangeField.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { PickerValidDate } from '@mui/x-date-pickers/models'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import Typography from '@mui/material/Typography'; import Stack, { StackProps } from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; diff --git a/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx b/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx index 99dcaf800e27..133685debe58 100644 --- a/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx +++ b/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.tsx @@ -5,7 +5,7 @@ import Stack, { StackProps } from '@mui/material/Stack'; import MuiTextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass, diff --git a/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.ts b/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.ts index 6199fe64b64b..65f89beffb37 100644 --- a/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.ts +++ b/packages/x-date-pickers-pro/src/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import Typography from '@mui/material/Typography'; import Stack, { StackProps } from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; diff --git a/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.tsx b/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.tsx index a92f6ca3675c..ee04099dff91 100644 --- a/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.tsx +++ b/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.tsx @@ -5,7 +5,7 @@ import Stack, { StackProps } from '@mui/material/Stack'; import MuiTextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass, diff --git a/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.types.ts b/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.types.ts index aaedafde0864..718b2728541d 100644 --- a/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.types.ts +++ b/packages/x-date-pickers-pro/src/MultiInputTimeRangeField/MultiInputTimeRangeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import Typography from '@mui/material/Typography'; import Stack, { StackProps } from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; diff --git a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx index a8b4c44765a3..edc1e5b91b69 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import MuiTextField from '@mui/material/TextField'; import { useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { refType } from '@mui/utils'; import { useClearableField } from '@mui/x-date-pickers/hooks'; import { convertFieldResponseIntoMuiTextFieldProps } from '@mui/x-date-pickers/internals'; diff --git a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.types.ts b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.types.ts index 518f3373ed36..f9dc8c7a978f 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.types.ts +++ b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/SingleInputDateRangeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import TextField from '@mui/material/TextField'; import { UseFieldInternalProps } from '@mui/x-date-pickers/internals'; import { BuiltInFieldTextFieldProps, PickerValidDate } from '@mui/x-date-pickers/models'; diff --git a/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx b/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx index 26986f70a89b..57d0a57f3a91 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.tsx @@ -5,7 +5,7 @@ import { convertFieldResponseIntoMuiTextFieldProps } from '@mui/x-date-pickers/i import { PickersTextField } from '@mui/x-date-pickers/PickersTextField'; import { useThemeProps } from '@mui/material/styles'; import { refType } from '@mui/utils'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { useClearableField } from '@mui/x-date-pickers/hooks'; import { PickerValidDate } from '@mui/x-date-pickers/models'; import { SingleInputDateTimeRangeFieldProps } from './SingleInputDateTimeRangeField.types'; diff --git a/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.ts b/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.ts index 9e2e93d3323c..d67d6a040e48 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.ts +++ b/packages/x-date-pickers-pro/src/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import TextField from '@mui/material/TextField'; import { UseFieldInternalProps } from '@mui/x-date-pickers/internals'; import { BuiltInFieldTextFieldProps, PickerValidDate } from '@mui/x-date-pickers/models'; diff --git a/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.tsx b/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.tsx index 8d483b9a2cfc..cd37622a001e 100644 --- a/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.tsx @@ -6,7 +6,7 @@ import { convertFieldResponseIntoMuiTextFieldProps } from '@mui/x-date-pickers/i import { PickerValidDate } from '@mui/x-date-pickers/models'; import { PickersTextField } from '@mui/x-date-pickers/PickersTextField'; import { useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { refType } from '@mui/utils'; import { SingleInputTimeRangeFieldProps } from './SingleInputTimeRangeField.types'; import { useSingleInputTimeRangeField } from './useSingleInputTimeRangeField'; diff --git a/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.types.ts b/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.types.ts index e6623980cc2a..93e4a1019b5f 100644 --- a/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.types.ts +++ b/packages/x-date-pickers-pro/src/SingleInputTimeRangeField/SingleInputTimeRangeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import TextField from '@mui/material/TextField'; import { UseFieldInternalProps } from '@mui/x-date-pickers/internals'; import { PickerValidDate, BuiltInFieldTextFieldProps } from '@mui/x-date-pickers/models'; diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx b/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx index 371cb6dfdcc8..cb635fdba2ca 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { useLicenseVerifier } from '@mui/x-license'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { PickersLayout, PickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout'; diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts b/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts index dab1f11a3451..92161a1d50da 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts +++ b/packages/x-date-pickers-pro/src/internals/hooks/useEnrichedRangePickerFieldProps.ts @@ -2,7 +2,8 @@ import * as React from 'react'; import Stack, { StackProps } from '@mui/material/Stack'; import Typography, { TypographyProps } from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; -import { resolveComponentProps, SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import useEventCallback from '@mui/utils/useEventCallback'; import useForkRef from '@mui/utils/useForkRef'; import { diff --git a/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx b/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx index e10a45588e8e..8c0ff7404326 100644 --- a/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/internals/hooks/useMobileRangePicker/useMobileRangePicker.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { useLicenseVerifier } from '@mui/x-license'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { PickersLayout, PickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout'; diff --git a/packages/x-date-pickers-pro/src/models/fields.ts b/packages/x-date-pickers-pro/src/models/fields.ts index 3f3b0c3d499b..169c946d77c3 100644 --- a/packages/x-date-pickers-pro/src/models/fields.ts +++ b/packages/x-date-pickers-pro/src/models/fields.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { BaseFieldProps, UseFieldResponse } from '@mui/x-date-pickers/internals'; import { BaseSingleInputPickersTextFieldProps, diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 431876098dec..9bd1c74dae01 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -46,7 +46,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@types/react-transition-group": "^4.4.10", diff --git a/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx b/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx index fa540c59f542..765f75bd9fbe 100644 --- a/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx +++ b/packages/x-date-pickers/src/DateCalendar/DateCalendar.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled, useThemeProps } from '@mui/material/styles'; import { unstable_composeClasses as composeClasses, diff --git a/packages/x-date-pickers/src/DateCalendar/DateCalendar.types.ts b/packages/x-date-pickers/src/DateCalendar/DateCalendar.types.ts index a2f496173a7f..7189f354b50f 100644 --- a/packages/x-date-pickers/src/DateCalendar/DateCalendar.types.ts +++ b/packages/x-date-pickers/src/DateCalendar/DateCalendar.types.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { SxProps } from '@mui/system'; import { Theme } from '@mui/material/styles'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { PickersCalendarHeader, PickersCalendarHeaderProps, diff --git a/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx b/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx index 5c06161d17c1..f1a173e45249 100644 --- a/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx +++ b/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; import Typography from '@mui/material/Typography'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { useRtl } from '@mui/system/RtlProvider'; import { styled, useThemeProps } from '@mui/material/styles'; import { diff --git a/packages/x-date-pickers/src/DateField/DateField.tsx b/packages/x-date-pickers/src/DateField/DateField.tsx index 4419c8342ea7..5f707a99d31a 100644 --- a/packages/x-date-pickers/src/DateField/DateField.tsx +++ b/packages/x-date-pickers/src/DateField/DateField.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import MuiTextField from '@mui/material/TextField'; import { useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { refType } from '@mui/utils'; import { DateFieldProps } from './DateField.types'; import { useDateField } from './useDateField'; diff --git a/packages/x-date-pickers/src/DateField/DateField.types.ts b/packages/x-date-pickers/src/DateField/DateField.types.ts index ef75f2b56090..cf1bdfcc800a 100644 --- a/packages/x-date-pickers/src/DateField/DateField.types.ts +++ b/packages/x-date-pickers/src/DateField/DateField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import TextField from '@mui/material/TextField'; import { ExportedUseClearableFieldProps, diff --git a/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx b/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx index 46c31a964c5d..e90974b9ac84 100644 --- a/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx +++ b/packages/x-date-pickers/src/DatePicker/DatePickerToolbar.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import PropTypes from 'prop-types'; import Typography from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { PickersToolbar } from '../internals/components/PickersToolbar'; import { usePickersTranslations } from '../hooks/usePickersTranslations'; import { useUtils } from '../internals/hooks/useUtils'; diff --git a/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx b/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx index ca4213f73168..44db7bb3fb50 100644 --- a/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx +++ b/packages/x-date-pickers/src/DateTimeField/DateTimeField.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import MuiTextField from '@mui/material/TextField'; import { useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { refType } from '@mui/utils'; import { DateTimeFieldProps } from './DateTimeField.types'; import { useDateTimeField } from './useDateTimeField'; diff --git a/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts b/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts index 4f6301f55c08..625f70532e55 100644 --- a/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts +++ b/packages/x-date-pickers/src/DateTimeField/DateTimeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import TextField from '@mui/material/TextField'; import { DateTimeValidationError, diff --git a/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx b/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx index c6bfb2ae1f11..a42de4d0dc78 100644 --- a/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx +++ b/packages/x-date-pickers/src/DayCalendarSkeleton/DayCalendarSkeleton.tsx @@ -4,7 +4,7 @@ import clsx from 'clsx'; import Skeleton from '@mui/material/Skeleton'; import { styled, useThemeProps, Theme } from '@mui/material/styles'; import { SxProps } from '@mui/system'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions'; import { DayCalendarSkeletonClasses, diff --git a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx index 666e76637c28..5e0c6e75ae8a 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/DesktopDatePicker.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { singleItemValueManager } from '../internals/utils/valueManagers'; import { DesktopDatePickerProps } from './DesktopDatePicker.types'; diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx index cf9a5d3d1a9d..f728453aa5ae 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/DesktopDateTimePicker.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import Divider from '@mui/material/Divider'; import { singleItemValueManager } from '../internals/utils/valueManagers'; diff --git a/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx b/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx index 63a21269ac3b..31232c0cfb7e 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/DesktopTimePicker.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { singleItemValueManager } from '../internals/utils/valueManagers'; import { TimeField } from '../TimeField'; diff --git a/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx b/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx index 81d214a13049..e2e2c7558540 100644 --- a/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx +++ b/packages/x-date-pickers/src/DigitalClock/DigitalClock.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import PropTypes from 'prop-types'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { alpha, styled, useThemeProps } from '@mui/material/styles'; import useEventCallback from '@mui/utils/useEventCallback'; import composeClasses from '@mui/utils/composeClasses'; diff --git a/packages/x-date-pickers/src/DigitalClock/DigitalClock.types.ts b/packages/x-date-pickers/src/DigitalClock/DigitalClock.types.ts index 7b98c84670d6..3d5910de62db 100644 --- a/packages/x-date-pickers/src/DigitalClock/DigitalClock.types.ts +++ b/packages/x-date-pickers/src/DigitalClock/DigitalClock.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import MenuItem from '@mui/material/MenuItem'; import { DigitalClockClasses } from './digitalClockClasses'; import { diff --git a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx index 128442c94dd3..5f33b9a15dcf 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/MobileDatePicker.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { useMobilePicker } from '../internals/hooks/useMobilePicker'; import { MobileDatePickerProps } from './MobileDatePicker.types'; diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx index 5a52c5ed4df4..50ab45e2b37f 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/MobileDateTimePicker.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { singleItemValueManager } from '../internals/utils/valueManagers'; import { DateTimeField } from '../DateTimeField'; diff --git a/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx b/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx index 159260767130..021ec100c680 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/MobileTimePicker.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; import { refType } from '@mui/utils'; import { singleItemValueManager } from '../internals/utils/valueManagers'; import { TimeField } from '../TimeField'; diff --git a/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx b/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx index 33e457bcb1a6..9c1bcf3bcf3d 100644 --- a/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx +++ b/packages/x-date-pickers/src/MonthCalendar/PickersMonth.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled, alpha, useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { diff --git a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.types.ts b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.types.ts index 31f2ac1d1d73..e7efd1b3a350 100644 --- a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.types.ts +++ b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import MenuItem from '@mui/material/MenuItem'; import { MultiSectionDigitalClockClasses } from './multiSectionDigitalClockClasses'; import { diff --git a/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx b/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx index 8bc20e9e3309..84cdf31ad41d 100644 --- a/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx +++ b/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.tsx @@ -3,8 +3,8 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import Fade from '@mui/material/Fade'; import { styled, useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; +import composeClasses from '@mui/utils/composeClasses'; import IconButton from '@mui/material/IconButton'; import { usePickersTranslations } from '../hooks/usePickersTranslations'; import { useUtils } from '../internals/hooks/useUtils'; diff --git a/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.types.ts b/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.types.ts index 8effea890681..87c37e46afa0 100644 --- a/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.types.ts +++ b/packages/x-date-pickers/src/PickersCalendarHeader/PickersCalendarHeader.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import IconButton from '@mui/material/IconButton'; import SvgIcon from '@mui/material/SvgIcon'; import { SxProps, Theme } from '@mui/material/styles'; diff --git a/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx b/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx index dd899cdf44d0..a61368d59aa9 100644 --- a/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx +++ b/packages/x-date-pickers/src/PickersLayout/PickersLayout.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { PickersLayoutProps } from './PickersLayout.types'; import { pickersLayoutClasses, getPickersLayoutUtilityClass } from './pickersLayoutClasses'; import usePickerLayout from './usePickerLayout'; diff --git a/packages/x-date-pickers/src/PickersLayout/PickersLayout.types.ts b/packages/x-date-pickers/src/PickersLayout/PickersLayout.types.ts index d68ca961c2eb..69a3fac2cdc2 100644 --- a/packages/x-date-pickers/src/PickersLayout/PickersLayout.types.ts +++ b/packages/x-date-pickers/src/PickersLayout/PickersLayout.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { SxProps, Theme } from '@mui/material/styles'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { PickersActionBar, PickersActionBarProps } from '../PickersActionBar'; import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar'; import { BaseTabsProps, ExportedBaseTabsProps } from '../internals/models/props/tabs'; diff --git a/packages/x-date-pickers/src/PickersLayout/usePickerLayout.tsx b/packages/x-date-pickers/src/PickersLayout/usePickerLayout.tsx index 561d73fec586..e9fab40f161f 100644 --- a/packages/x-date-pickers/src/PickersLayout/usePickerLayout.tsx +++ b/packages/x-date-pickers/src/PickersLayout/usePickerLayout.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { useSlotProps } from '@mui/base/utils'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; +import composeClasses from '@mui/utils/composeClasses'; import { PickersActionBar, PickersActionBarAction } from '../PickersActionBar'; import { PickersLayoutProps, SubComponents } from './PickersLayout.types'; import { getPickersLayoutUtilityClass } from './pickersLayoutClasses'; diff --git a/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.tsx b/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.tsx index c9aaac3716cb..ada0fed9cd07 100644 --- a/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.tsx +++ b/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; import useForkRef from '@mui/utils/useForkRef'; import { styled, useThemeProps } from '@mui/material/styles'; diff --git a/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.types.ts b/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.types.ts index 179fbb03807b..99781b259a84 100644 --- a/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.types.ts +++ b/packages/x-date-pickers/src/PickersSectionList/PickersSectionList.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { PickersSectionListClasses } from './pickersSectionListClasses'; export interface PickersSectionListSlots { diff --git a/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx b/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx index 7c118ea29b1a..e7813d3adbf8 100644 --- a/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx +++ b/packages/x-date-pickers/src/PickersTextField/PickersInputBase/PickersInputBase.tsx @@ -6,7 +6,7 @@ import useForkRef from '@mui/utils/useForkRef'; import { refType } from '@mui/utils'; import composeClasses from '@mui/utils/composeClasses'; import capitalize from '@mui/utils/capitalize'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import visuallyHidden from '@mui/utils/visuallyHidden'; import { useRtl } from '@mui/system/RtlProvider'; import { diff --git a/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx b/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx index bab778903644..c407a02a7adf 100644 --- a/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx +++ b/packages/x-date-pickers/src/TimeClock/ClockNumber.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared'; import { ClockNumberClasses, diff --git a/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx b/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx index 735b228846ec..db50723091b6 100644 --- a/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx +++ b/packages/x-date-pickers/src/TimeClock/ClockPointer.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared'; import { TimeView } from '../models'; import { ClockPointerClasses, getClockPointerUtilityClass } from './clockPointerClasses'; diff --git a/packages/x-date-pickers/src/TimeField/TimeField.tsx b/packages/x-date-pickers/src/TimeField/TimeField.tsx index da1ecf38b3f8..10d4918133ed 100644 --- a/packages/x-date-pickers/src/TimeField/TimeField.tsx +++ b/packages/x-date-pickers/src/TimeField/TimeField.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import MuiTextField from '@mui/material/TextField'; import { useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { refType } from '@mui/utils'; import { TimeFieldProps } from './TimeField.types'; import { useTimeField } from './useTimeField'; diff --git a/packages/x-date-pickers/src/TimeField/TimeField.types.ts b/packages/x-date-pickers/src/TimeField/TimeField.types.ts index 0633093cf7f5..478cf08ee9ee 100644 --- a/packages/x-date-pickers/src/TimeField/TimeField.types.ts +++ b/packages/x-date-pickers/src/TimeField/TimeField.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import TextField from '@mui/material/TextField'; import { UseFieldInternalProps } from '../internals/hooks/useField'; import { MakeOptional } from '../internals/models/helpers'; diff --git a/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx b/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx index ef2d545cfad0..6bc310619603 100644 --- a/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx +++ b/packages/x-date-pickers/src/TimePicker/TimePickerToolbar.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import PropTypes from 'prop-types'; import { useRtl } from '@mui/system/RtlProvider'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { PickersToolbarText } from '../internals/components/PickersToolbarText'; import { PickersToolbarButton } from '../internals/components/PickersToolbarButton'; import { PickersToolbar } from '../internals/components/PickersToolbar'; diff --git a/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx b/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx index a2fa699d1093..4cfd69ba8232 100644 --- a/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx +++ b/packages/x-date-pickers/src/YearCalendar/PickersYear.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; import { styled, alpha, useThemeProps } from '@mui/material/styles'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; import useEnhancedEffect from '@mui/utils/useEnhancedEffect'; import { diff --git a/packages/x-date-pickers/src/hooks/useClearableField.tsx b/packages/x-date-pickers/src/hooks/useClearableField.tsx index fb06acdfbd90..52e3838e15b3 100644 --- a/packages/x-date-pickers/src/hooks/useClearableField.tsx +++ b/packages/x-date-pickers/src/hooks/useClearableField.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; -import { SlotComponentProps, useSlotProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import MuiIconButton from '@mui/material/IconButton'; import InputAdornment from '@mui/material/InputAdornment'; import { SxProps } from '@mui/system'; diff --git a/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx b/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx index c8af2ef21e8e..a5dd5873308f 100644 --- a/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.tsx @@ -3,8 +3,8 @@ import clsx from 'clsx'; import Typography from '@mui/material/Typography'; import { useRtl } from '@mui/system/RtlProvider'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; -import { useSlotProps } from '@mui/base/utils'; +import composeClasses from '@mui/utils/composeClasses'; +import useSlotProps from '@mui/utils/useSlotProps'; import IconButton from '@mui/material/IconButton'; import { ArrowLeftIcon, ArrowRightIcon } from '../../../icons'; import { diff --git a/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.tsx b/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.tsx index b4242649bfbc..f32e1745edf7 100644 --- a/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import IconButton from '@mui/material/IconButton'; import SvgIcon from '@mui/material/SvgIcon'; import { PickersArrowSwitcherClasses } from './pickersArrowSwitcherClasses'; diff --git a/packages/x-date-pickers/src/internals/components/PickersPopper.tsx b/packages/x-date-pickers/src/internals/components/PickersPopper.tsx index 58a9f9e0e50b..81d3d1d5b448 100644 --- a/packages/x-date-pickers/src/internals/components/PickersPopper.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersPopper.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useSlotProps, SlotComponentProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import Grow from '@mui/material/Grow'; import Fade from '@mui/material/Fade'; import MuiPaper, { PaperProps as MuiPaperProps } from '@mui/material/Paper'; @@ -11,6 +11,7 @@ import BaseFocusTrap, { TrapFocusProps as MuiTrapFocusProps, } from '@mui/material/Unstable_TrapFocus'; import { + SlotComponentProps, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_ownerDocument as ownerDocument, @@ -40,7 +41,7 @@ export interface PickersPopperSlots { desktopTransition?: React.JSXElementConstructor; /** * Custom component for trapping the focus inside the views on desktop. - * @default FocusTrap from '@mui/base'. + * @default TrapFocus from '@mui/material'. */ desktopTrapFocus?: React.JSXElementConstructor; /** diff --git a/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx b/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx index 780756015029..3f4279540336 100644 --- a/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersToolbar.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import clsx from 'clsx'; import Typography from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { BaseToolbarProps } from '../models/props/toolbar'; import { getPickersToolbarUtilityClass, PickersToolbarClasses } from './pickersToolbarClasses'; import { DateOrTimeViewWithMeridiem } from '../models'; diff --git a/packages/x-date-pickers/src/internals/components/PickersToolbarButton.tsx b/packages/x-date-pickers/src/internals/components/PickersToolbarButton.tsx index 17b44028ca76..e79c5cec6346 100644 --- a/packages/x-date-pickers/src/internals/components/PickersToolbarButton.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersToolbarButton.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import clsx from 'clsx'; import Button, { ButtonProps } from '@mui/material/Button'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { TypographyProps } from '@mui/material/Typography'; import { PickersToolbarText } from './PickersToolbarText'; import { ExtendMui } from '../models/helpers'; diff --git a/packages/x-date-pickers/src/internals/components/PickersToolbarText.tsx b/packages/x-date-pickers/src/internals/components/PickersToolbarText.tsx index f5ba8185d9e9..a3b0c533e77e 100644 --- a/packages/x-date-pickers/src/internals/components/PickersToolbarText.tsx +++ b/packages/x-date-pickers/src/internals/components/PickersToolbarText.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import clsx from 'clsx'; import Typography, { TypographyProps } from '@mui/material/Typography'; import { styled, useThemeProps } from '@mui/material/styles'; -import { unstable_composeClasses as composeClasses } from '@mui/utils'; +import composeClasses from '@mui/utils/composeClasses'; import { getPickersToolbarTextUtilityClass, pickersToolbarTextClasses, diff --git a/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.tsx b/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.tsx index 3f54c063f181..56e943302f79 100644 --- a/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.tsx +++ b/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import MuiInputAdornment from '@mui/material/InputAdornment'; import IconButton from '@mui/material/IconButton'; import useForkRef from '@mui/utils/useForkRef'; diff --git a/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.types.ts b/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.types.ts index 76ae02864952..59ff56096d93 100644 --- a/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.types.ts +++ b/packages/x-date-pickers/src/internals/hooks/useDesktopPicker/useDesktopPicker.types.ts @@ -2,7 +2,7 @@ import * as React from 'react'; import IconButton, { IconButtonProps } from '@mui/material/IconButton'; import { InputAdornmentProps } from '@mui/material/InputAdornment'; import TextField from '@mui/material/TextField'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { BaseNonStaticPickerProps, BasePickerProps, diff --git a/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.tsx b/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.tsx index 7c3212cd2cc5..b98cf417300b 100644 --- a/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.tsx +++ b/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import useForkRef from '@mui/utils/useForkRef'; import useId from '@mui/utils/useId'; import { PickersModalDialog } from '../../components/PickersModalDialog'; diff --git a/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.types.ts b/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.types.ts index c983d49d2d99..d741a588e9e5 100644 --- a/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.types.ts +++ b/packages/x-date-pickers/src/internals/hooks/useMobilePicker/useMobilePicker.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import TextField from '@mui/material/TextField'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { BaseNonStaticPickerProps, BasePickerProps, diff --git a/packages/x-tree-view-pro/README.md b/packages/x-tree-view-pro/README.md index 7f48bdf17d35..9d9bfe64f275 100644 --- a/packages/x-tree-view-pro/README.md +++ b/packages/x-tree-view-pro/README.md @@ -15,7 +15,7 @@ This component has the following peer dependencies that you will need to install ```json "peerDependencies": { - "@mui/material": "^5.15.0", + "@mui/material": "^5.15.14", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index ed120d233412..5aa07ec37682 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -44,7 +44,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-internals": "workspace:*", diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx index bb318e951ef6..fe08a3f193c3 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import composeClasses from '@mui/utils/composeClasses'; import { useLicenseVerifier, Watermark } from '@mui/x-license'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { TreeItem, TreeItemProps } from '@mui/x-tree-view/TreeItem'; import { useTreeView, TreeViewProvider, warnOnce } from '@mui/x-tree-view/internals'; import { styled, createUseThemeProps } from '../internals/zero-styled'; diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts index 2f882e8dc922..81b1eeac8782 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.types.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { Theme } from '@mui/material/styles'; import { SxProps } from '@mui/system'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { TreeItem, TreeItemProps } from '@mui/x-tree-view/TreeItem'; import { TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; import { TreeViewItemId } from '@mui/x-tree-view/models'; diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 17b7603b7d62..900ba5e3db75 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -44,7 +44,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/base": "^5.0.0-beta.40", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-internals": "workspace:*", diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index 2c54294e6a71..6eb825d49fa1 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { getRichTreeViewUtilityClass } from './richTreeViewClasses'; import { RichTreeViewProps } from './RichTreeView.types'; import { styled, createUseThemeProps } from '../internals/zero-styled'; diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts b/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts index a1102b3f64e0..d229ed984215 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.types.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { Theme } from '@mui/material/styles'; import { SxProps } from '@mui/system'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { RichTreeViewClasses } from './richTreeViewClasses'; import { RichTreeViewPluginParameters, diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx index b00eced03286..b508c5f92bd4 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { styled, createUseThemeProps } from '../internals/zero-styled'; import { getSimpleTreeViewUtilityClass } from './simpleTreeViewClasses'; import { SimpleTreeViewProps } from './SimpleTreeView.types'; diff --git a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.types.ts b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.types.ts index 958dbcbf8348..563b73fb67c1 100644 --- a/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.types.ts +++ b/packages/x-tree-view/src/SimpleTreeView/SimpleTreeView.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { Theme } from '@mui/material/styles'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { SxProps } from '@mui/system'; import { SimpleTreeViewClasses } from './simpleTreeViewClasses'; import { diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index 9b92f63e2aa2..c66a4fde6a30 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -2,14 +2,16 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import Collapse from '@mui/material/Collapse'; -import { extractEventHandlers, resolveComponentProps, useSlotProps } from '@mui/base/utils'; import useForkRef from '@mui/utils/useForkRef'; import { shouldForwardProp } from '@mui/system/createStyled'; import { alpha } from '@mui/material/styles'; import { TransitionProps } from '@mui/material/transitions'; +import composeClasses from '@mui/utils/composeClasses'; +import extractEventHandlers from '@mui/utils/extractEventHandlers'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; +import useSlotProps from '@mui/utils/useSlotProps'; import unsupportedProp from '@mui/utils/unsupportedProp'; import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef'; -import { unstable_composeClasses as composeClasses } from '@mui/base'; import { styled, createUseThemeProps } from '../internals/zero-styled'; import { TreeItemContent } from './TreeItemContent'; import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses'; diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.types.ts b/packages/x-tree-view/src/TreeItem/TreeItem.types.ts index 0e2a66d0565a..41dcfe6960f5 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.types.ts +++ b/packages/x-tree-view/src/TreeItem/TreeItem.types.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { Theme } from '@mui/material/styles'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { TransitionProps } from '@mui/material/transitions'; import { SxProps } from '@mui/system'; import { TreeItemContentProps } from './TreeItemContent'; diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx index 97466530c017..a1f72bfc089d 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx @@ -5,7 +5,7 @@ import unsupportedProp from '@mui/utils/unsupportedProp'; import { alpha } from '@mui/material/styles'; import Collapse from '@mui/material/Collapse'; import MuiCheckbox, { CheckboxProps } from '@mui/material/Checkbox'; -import { useSlotProps } from '@mui/base/utils'; +import useSlotProps from '@mui/utils/useSlotProps'; import { shouldForwardProp } from '@mui/system/createStyled'; import composeClasses from '@mui/utils/composeClasses'; import { styled, createUseThemeProps } from '../internals/zero-styled'; diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts b/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts index 15caa3132572..a82f1ec7b75f 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { UseTreeItem2Parameters, UseTreeItem2Status } from '../useTreeItem2'; import { TreeItemClasses } from '../TreeItem'; import { TreeItem2IconSlotProps, TreeItem2IconSlots } from '../TreeItem2Icon'; diff --git a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx index 9229b11daeec..b07e292a9aaa 100644 --- a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx +++ b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { resolveComponentProps, useSlotProps } from '@mui/base/utils'; +import resolveComponentProps from '@mui/utils/resolveComponentProps'; +import useSlotProps from '@mui/utils/useSlotProps'; import { TreeItem2IconProps } from './TreeItem2Icon.types'; import { useTreeViewContext } from '../internals/TreeViewProvider'; import { UseTreeViewIconsSignature } from '../internals/plugins/useTreeViewIcons'; diff --git a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts index eca8d8da6012..cd66abb4f8a2 100644 --- a/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts +++ b/packages/x-tree-view/src/TreeItem2Icon/TreeItem2Icon.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { UseTreeItem2Status } from '../useTreeItem2'; export interface TreeItem2IconSlots { diff --git a/packages/x-tree-view/src/internals/models/itemPlugin.ts b/packages/x-tree-view/src/internals/models/itemPlugin.ts index ae25a111da1b..2356e8deeb68 100644 --- a/packages/x-tree-view/src/internals/models/itemPlugin.ts +++ b/packages/x-tree-view/src/internals/models/itemPlugin.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { EventHandlers } from '@mui/base/utils'; +import { EventHandlers } from '@mui/utils'; import type { UseTreeItem2ContentSlotOwnProps, UseTreeItem2DragAndDropOverlaySlotOwnProps, diff --git a/packages/x-tree-view/src/internals/models/plugin.ts b/packages/x-tree-view/src/internals/models/plugin.ts index 08b3b337636e..9dda02da7565 100644 --- a/packages/x-tree-view/src/internals/models/plugin.ts +++ b/packages/x-tree-view/src/internals/models/plugin.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { EventHandlers } from '@mui/base/utils'; +import { EventHandlers } from '@mui/utils'; import { TreeViewExperimentalFeatures, TreeViewInstance, TreeViewModel } from './treeView'; import type { MergeSignaturesProperty, OptionalIfEmpty } from './helpers'; import { TreeViewEventLookupElement } from './events'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts index d2128d3c91b8..62cc95cb0912 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import useEventCallback from '@mui/utils/useEventCallback'; -import { EventHandlers } from '@mui/base/utils'; +import { EventHandlers } from '@mui/utils'; import ownerDocument from '@mui/utils/ownerDocument'; import { TreeViewPlugin, TreeViewUsedInstance } from '../../models'; import { UseTreeViewFocusSignature } from './useTreeViewFocus.types'; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts index 5705fbbddaa0..a303f54a8410 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { SlotComponentProps } from '@mui/base/utils'; +import { SlotComponentProps } from '@mui/utils'; import { TreeViewPluginSignature } from '../../models'; import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { UseTreeViewSelectionSignature } from '../useTreeViewSelection'; diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts index ca3022d1938a..09f41ff67af7 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import useForkRef from '@mui/utils/useForkRef'; -import { EventHandlers } from '@mui/base/utils'; +import { EventHandlers } from '@mui/utils'; import { TreeViewAnyPluginSignature, TreeViewInstance, diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts b/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts index e3ab5a0cf4e6..d4ebb91b39c4 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.types.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { EventHandlers } from '@mui/base/utils'; +import { EventHandlers } from '@mui/utils'; import type { TreeViewContextValue } from '../TreeViewProvider'; import { TreeViewAnyPluginSignature, diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index ea6483c82afe..64639815422f 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -1,5 +1,6 @@ import * as React from 'react'; -import { EventHandlers, extractEventHandlers } from '@mui/base/utils'; +import { EventHandlers } from '@mui/utils'; +import extractEventHandlers from '@mui/utils/extractEventHandlers'; import useForkRef from '@mui/utils/useForkRef'; import { UseTreeItem2Parameters, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b82b9643cbd..d8d123b88b8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -422,9 +422,6 @@ importers: '@emotion/styled': specifier: ^11.13.0 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.4 version: 6.0.0-beta.4(v73oylu5qs3cavoyvfoft6xvce) @@ -717,9 +714,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -782,9 +776,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1011,9 +1002,6 @@ importers: '@babel/runtime': specifier: ^7.25.0 version: 7.25.0 - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': specifier: ^5.4.1 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -1170,9 +1158,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1256,9 +1241,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1376,9 +1358,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1432,9 +1411,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/base': - specifier: ^5.0.0-beta.40 - version: 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) diff --git a/renovate.json b/renovate.json index 75aa1928d57c..43c1d692a475 100644 --- a/renovate.json +++ b/renovate.json @@ -81,7 +81,6 @@ { "groupName": "MUI Core", "matchPackageNames": [ - "@mui/base", "@mui/icons-material", "@mui/joy", "@mui/lab", From 630acb5595371eac0648fd7f1bea60a429351f69 Mon Sep 17 00:00:00 2001 From: Paul BROWN Date: Wed, 31 Jul 2024 16:34:08 +0300 Subject: [PATCH 720/912] [l10n] Improve Finnish (fi-FI) locale (#14054) --- packages/x-date-pickers/src/locales/fiFI.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-date-pickers/src/locales/fiFI.ts b/packages/x-date-pickers/src/locales/fiFI.ts index 905fa4f31ffb..0b2c5772db2c 100644 --- a/packages/x-date-pickers/src/locales/fiFI.ts +++ b/packages/x-date-pickers/src/locales/fiFI.ts @@ -15,8 +15,8 @@ const fiFIPickers: Partial> = { nextMonth: 'Seuraava kuukausi', // View navigation - openPreviousView: 'Avaa edellinen kuukausi', - openNextView: 'Avaa seuraava kuukausi', + openPreviousView: 'Avaa edellinen näkymä', + openNextView: 'Avaa seuraava näkymä', calendarViewSwitchingButtonAriaLabel: (view) => view === 'year' ? 'vuosinäkymä on auki, vaihda kalenterinäkymään' From 5762b1d06ece35406ae1b4270bcb32068146cabf Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 1 Aug 2024 13:16:05 +0200 Subject: [PATCH 721/912] [TreeView] Publish the pro package (#14052) Signed-off-by: Flavien DELANGLE Co-authored-by: alex --- docs/data/tree-view-component-api-pages.ts | 5 + .../getting-started/getting-started.md | 26 +- .../rich-tree-view/ordering/ordering.md | 2 +- .../x/api/tree-view/rich-tree-view-pro.js | 23 ++ .../x/api/tree-view/rich-tree-view-pro.json | 186 ++++++++++++++ .../pages/x/api/tree-view/rich-tree-view.json | 2 +- .../x/api/tree-view/simple-tree-view.json | 3 +- docs/pages/x/api/tree-view/tree-item-2.json | 3 +- docs/pages/x/api/tree-view/tree-item.json | 5 +- docs/pages/x/api/tree-view/tree-view.json | 3 +- docs/scripts/createXTypeScriptProjects.ts | 36 ++- .../TreeViewInstallationInstructions.js | 13 + .../rich-tree-view-pro.json | 144 +++++++++++ packages/x-tree-view-pro/package.json | 4 +- .../src/RichTreeViewPro/RichTreeViewPro.tsx | 234 ++++++++++++++++++ pnpm-lock.yaml | 3 + .../treeViewSettings/getComponentInfo.ts | 7 +- .../buildApiDocs/treeViewSettings/index.ts | 10 +- scripts/x-tree-view-pro.exports.json | 77 ++++++ 19 files changed, 729 insertions(+), 57 deletions(-) create mode 100644 docs/pages/x/api/tree-view/rich-tree-view-pro.js create mode 100644 docs/pages/x/api/tree-view/rich-tree-view-pro.json create mode 100644 docs/src/modules/components/TreeViewInstallationInstructions.js create mode 100644 docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json create mode 100644 scripts/x-tree-view-pro.exports.json diff --git a/docs/data/tree-view-component-api-pages.ts b/docs/data/tree-view-component-api-pages.ts index 39fcd6ae8933..61b41b874045 100644 --- a/docs/data/tree-view-component-api-pages.ts +++ b/docs/data/tree-view-component-api-pages.ts @@ -5,6 +5,11 @@ const apiPages: MuiPage[] = [ pathname: '/x/api/tree-view/rich-tree-view', title: 'RichTreeView', }, + { + pathname: '/x/api/tree-view/rich-tree-view-pro', + title: 'RichTreeViewPro', + plan: 'pro', + }, { pathname: '/x/api/tree-view/simple-tree-view', title: 'SimpleTreeView', diff --git a/docs/data/tree-view/getting-started/getting-started.md b/docs/data/tree-view/getting-started/getting-started.md index 8b57abc56271..75eb6936f8b0 100644 --- a/docs/data/tree-view/getting-started/getting-started.md +++ b/docs/data/tree-view/getting-started/getting-started.md @@ -13,25 +13,11 @@ waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/ ## Installation -Using your favorite package manager, install `@mui/x-tree-view`: +Using your favorite package manager, install `@mui/x-tree-view-pro` for the commercial version, or `@mui/x-tree-view` for the free community version. - - -```bash npm -npm install @mui/x-tree-view -``` - -```bash pnpm -pnpm add @mui/x-tree-view -``` - -```bash yarn -yarn add @mui/x-tree-view -``` - - +{{"component": "modules/components/TreeViewInstallationInstructions.js"}} The Tree View package has a peer dependency on `@mui/material`. If you are not already using it in your project, you can install it with: @@ -72,14 +58,14 @@ Material UI is using [Emotion](https://emotion.sh/docs/introduction) as a styli npm install @mui/styled-engine-sc styled-components ``` -```bash yarn -yarn add @mui/styled-engine-sc styled-components -``` - ```bash pnpm pnpm add @mui/styled-engine-sc styled-components ``` +```bash yarn +yarn add @mui/styled-engine-sc styled-components +``` + Take a look at the [Styled engine guide](/material-ui/integrations/styled-components/) for more information about how to configure `styled-components` as the style engine. diff --git a/docs/data/tree-view/rich-tree-view/ordering/ordering.md b/docs/data/tree-view/rich-tree-view/ordering/ordering.md index bdd78d0ff9ad..ed28ace0806b 100644 --- a/docs/data/tree-view/rich-tree-view/ordering/ordering.md +++ b/docs/data/tree-view/rich-tree-view/ordering/ordering.md @@ -1,7 +1,7 @@ --- productId: x-tree-view title: Rich Tree View - Ordering -components: RichTreeView, TreeItem2 +components: TreeItem2, TreeItem, RichTreeViewPro packageName: '@mui/x-tree-view' githubLabel: 'component: tree view' waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/ diff --git a/docs/pages/x/api/tree-view/rich-tree-view-pro.js b/docs/pages/x/api/tree-view/rich-tree-view-pro.js new file mode 100644 index 000000000000..edf9d9f16834 --- /dev/null +++ b/docs/pages/x/api/tree-view/rich-tree-view-pro.js @@ -0,0 +1,23 @@ +import * as React from 'react'; +import ApiPage from 'docs/src/modules/components/ApiPage'; +import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; +import jsonPageContent from './rich-tree-view-pro.json'; + +export default function Page(props) { + const { descriptions, pageContent } = props; + return ; +} + +Page.getInitialProps = () => { + const req = require.context( + 'docsx/translations/api-docs/tree-view/rich-tree-view-pro', + false, + /\.\/rich-tree-view-pro.*.json$/, + ); + const descriptions = mapApiPageTranslations(req); + + return { + descriptions, + pageContent: jsonPageContent, + }; +}; diff --git a/docs/pages/x/api/tree-view/rich-tree-view-pro.json b/docs/pages/x/api/tree-view/rich-tree-view-pro.json new file mode 100644 index 000000000000..03bea300243d --- /dev/null +++ b/docs/pages/x/api/tree-view/rich-tree-view-pro.json @@ -0,0 +1,186 @@ +{ + "props": { + "apiRef": { + "type": { + "name": "shape", + "description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, selectItem: func, setItemExpansion: func } }" + } + }, + "canMoveItemToNewPosition": { + "type": { "name": "func" }, + "signature": { + "type": "function(params: object, params.itemId: string, params.oldPosition: TreeViewItemReorderPosition, params.newPosition: TreeViewItemReorderPosition) => boolean", + "describedArgs": ["params", "params.itemId", "params.oldPosition", "params.newPosition"], + "returned": "boolean" + } + }, + "checkboxSelection": { "type": { "name": "bool" }, "default": "false" }, + "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, + "defaultExpandedItems": { + "type": { "name": "arrayOf", "description": "Array<string>" }, + "default": "[]" + }, + "defaultSelectedItems": { "type": { "name": "any" }, "default": "[]" }, + "disabledItemsFocusable": { "type": { "name": "bool" }, "default": "false" }, + "disableSelection": { "type": { "name": "bool" }, "default": "false" }, + "expandedItems": { "type": { "name": "arrayOf", "description": "Array<string>" } }, + "expansionTrigger": { + "type": { "name": "enum", "description": "'content'
    | 'iconContainer'" }, + "default": "'content'" + }, + "experimentalFeatures": { + "type": { + "name": "shape", + "description": "{ indentationAtItemLevel?: bool, itemsReordering?: bool }" + } + }, + "getItemId": { + "type": { "name": "func" }, + "default": "(item) => item.id", + "signature": { + "type": "function(item: R) => string", + "describedArgs": ["item"], + "returned": "string" + } + }, + "getItemLabel": { + "type": { "name": "func" }, + "default": "(item) => item.label", + "signature": { + "type": "function(item: R) => string", + "describedArgs": ["item"], + "returned": "string" + } + }, + "id": { "type": { "name": "string" } }, + "isItemDisabled": { + "type": { "name": "func" }, + "signature": { + "type": "function(item: R) => boolean", + "describedArgs": ["item"], + "returned": "boolean" + } + }, + "isItemReorderable": { + "type": { "name": "func" }, + "default": "() => true", + "signature": { + "type": "function(itemId: string) => boolean", + "describedArgs": ["itemId"], + "returned": "boolean" + } + }, + "itemChildrenIndentation": { + "type": { "name": "union", "description": "number
    | string" }, + "default": "12px" + }, + "itemsReordering": { "type": { "name": "bool" }, "default": "false" }, + "multiSelect": { "type": { "name": "bool" }, "default": "false" }, + "onExpandedItemsChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.SyntheticEvent, itemIds: array) => void", + "describedArgs": ["event", "itemIds"] + } + }, + "onItemClick": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.MouseEvent, itemId: string) => void", + "describedArgs": ["event", "itemId"] + } + }, + "onItemExpansionToggle": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.SyntheticEvent, itemId: array, isExpanded: array) => void", + "describedArgs": ["event", "itemId", "isExpanded"] + } + }, + "onItemFocus": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.SyntheticEvent | null, itemId: string) => void", + "describedArgs": ["event", "itemId"] + } + }, + "onItemPositionChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(params: object, params.itemId: string, params.oldPosition: TreeViewItemReorderPosition, params.newPosition: TreeViewItemReorderPosition) => void", + "describedArgs": ["params", "params.itemId", "params.oldPosition", "params.newPosition"] + } + }, + "onItemSelectionToggle": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.SyntheticEvent, itemId: array, isSelected: array) => void", + "describedArgs": ["event", "itemId", "isSelected"] + } + }, + "onSelectedItemsChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(event: React.SyntheticEvent, itemIds: Array | string) => void", + "describedArgs": ["event", "itemIds"] + } + }, + "selectedItems": { "type": { "name": "any" } }, + "slotProps": { "type": { "name": "object" }, "default": "{}" }, + "slots": { + "type": { "name": "object" }, + "default": "{}", + "additionalInfo": { "slotsApi": true } + }, + "sx": { + "type": { + "name": "union", + "description": "Array<func
    | object
    | bool>
    | func
    | object" + }, + "additionalInfo": { "sx": true } + } + }, + "name": "RichTreeViewPro", + "imports": [ + "import { RichTreeViewPro } from '@mui/x-tree-view-pro/RichTreeViewPro';", + "import { RichTreeViewPro } from '@mui/x-tree-view-pro';" + ], + "slots": [ + { + "name": "root", + "description": "Element rendered at the root.", + "default": "RichTreeViewProRoot", + "class": "MuiRichTreeViewPro-root" + }, + { + "name": "item", + "description": "Custom component for the item.", + "default": "TreeItem.", + "class": null + }, + { + "name": "collapseIcon", + "description": "The default icon used to collapse the item.", + "class": null + }, + { + "name": "expandIcon", + "description": "The default icon used to expand the item.", + "class": null + }, + { + "name": "endIcon", + "description": "The default icon displayed next to an end item.\nThis is applied to all tree items and can be overridden by the TreeItem `icon` slot prop.", + "class": null + } + ], + "classes": [], + "spread": true, + "themeDefaultProps": true, + "muiName": "MuiRichTreeViewPro", + "forwardsRefTo": "HTMLUListElement", + "filename": "/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx", + "inheritance": null, + "demos": "", + "cssComponent": false +} diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 4c371bb9e28a..7857c5c370ba 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -153,6 +153,6 @@ "forwardsRefTo": "HTMLUListElement", "filename": "/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/simple-tree-view.json b/docs/pages/x/api/tree-view/simple-tree-view.json index 8089af6898d0..0e9d838a7327 100644 --- a/docs/pages/x/api/tree-view/simple-tree-view.json +++ b/docs/pages/x/api/tree-view/simple-tree-view.json @@ -86,7 +86,8 @@ "name": "SimpleTreeView", "imports": [ "import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView';", - "import { SimpleTreeView } from '@mui/x-tree-view';" + "import { SimpleTreeView } from '@mui/x-tree-view';", + "import { SimpleTreeView } from '@mui/x-tree-view-pro';" ], "slots": [ { diff --git a/docs/pages/x/api/tree-view/tree-item-2.json b/docs/pages/x/api/tree-view/tree-item-2.json index 7fb8b2a97e2d..64dd97521004 100644 --- a/docs/pages/x/api/tree-view/tree-item-2.json +++ b/docs/pages/x/api/tree-view/tree-item-2.json @@ -19,7 +19,8 @@ "name": "TreeItem2", "imports": [ "import { TreeItem2 } from '@mui/x-tree-view/TreeItem2';", - "import { TreeItem2 } from '@mui/x-tree-view';" + "import { TreeItem2 } from '@mui/x-tree-view';", + "import { TreeItem2 } from '@mui/x-tree-view-pro';" ], "slots": [ { diff --git a/docs/pages/x/api/tree-view/tree-item.json b/docs/pages/x/api/tree-view/tree-item.json index 5c84d1bdfbcc..2a7c1b9c0032 100644 --- a/docs/pages/x/api/tree-view/tree-item.json +++ b/docs/pages/x/api/tree-view/tree-item.json @@ -29,7 +29,8 @@ "name": "TreeItem", "imports": [ "import { TreeItem } from '@mui/x-tree-view/TreeItem';", - "import { TreeItem } from '@mui/x-tree-view';" + "import { TreeItem } from '@mui/x-tree-view';", + "import { TreeItem } from '@mui/x-tree-view-pro';" ], "slots": [ { "name": "collapseIcon", "description": "The icon used to collapse the item.", "class": null }, @@ -115,6 +116,6 @@ "forwardsRefTo": "HTMLLIElement", "filename": "/packages/x-tree-view/src/TreeItem/TreeItem.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/tree-view/tree-view.json b/docs/pages/x/api/tree-view/tree-view.json index d75b315dc75b..c03fa0e611a9 100644 --- a/docs/pages/x/api/tree-view/tree-view.json +++ b/docs/pages/x/api/tree-view/tree-view.json @@ -86,7 +86,8 @@ "name": "TreeView", "imports": [ "import { TreeView } from '@mui/x-tree-view/TreeView';", - "import { TreeView } from '@mui/x-tree-view';" + "import { TreeView } from '@mui/x-tree-view';", + "import { TreeView } from '@mui/x-tree-view-pro';" ], "slots": [ { diff --git a/docs/scripts/createXTypeScriptProjects.ts b/docs/scripts/createXTypeScriptProjects.ts index abaee20f814a..6acad90be81f 100644 --- a/docs/scripts/createXTypeScriptProjects.ts +++ b/docs/scripts/createXTypeScriptProjects.ts @@ -318,7 +318,6 @@ export const createXTypeScriptProjects = () => { }), ); - // TODO x-charts-pro uncomment when making the package public projects.set( 'x-charts-pro', createXTypeScriptProject({ @@ -355,24 +354,23 @@ export const createXTypeScriptProjects = () => { }), ); - // TODO x-tree-view-pro uncomment when making the package public - // projects.set( - // 'x-tree-view-pro', - // createXTypeScriptProject({ - // name: 'x-tree-view-pro', - // rootPath: path.join(workspaceRoot, 'packages/x-tree-view-pro'), - // entryPointPath: 'src/index.ts', - // documentationFolderName: 'tree-view', - // getComponentsWithPropTypes: getComponentPaths({ - // folders: ['src'], - // includeUnstableComponents: true, - // }), - // getComponentsWithApiDoc: getComponentPaths({ - // folders: ['src'], - // includeUnstableComponents: true, - // }), - // }), - // ); + projects.set( + 'x-tree-view-pro', + createXTypeScriptProject({ + name: 'x-tree-view-pro', + rootPath: path.join(workspaceRoot, 'packages/x-tree-view-pro'), + entryPointPath: 'src/index.ts', + documentationFolderName: 'tree-view', + getComponentsWithPropTypes: getComponentPaths({ + folders: ['src'], + includeUnstableComponents: true, + }), + getComponentsWithApiDoc: getComponentPaths({ + folders: ['src'], + includeUnstableComponents: true, + }), + }), + ); return projects; }; diff --git a/docs/src/modules/components/TreeViewInstallationInstructions.js b/docs/src/modules/components/TreeViewInstallationInstructions.js new file mode 100644 index 000000000000..d05d2ebba846 --- /dev/null +++ b/docs/src/modules/components/TreeViewInstallationInstructions.js @@ -0,0 +1,13 @@ +import * as React from 'react'; +import InstallationInstructions from './InstallationInstructions'; + +// #default-branch-switch + +const packages = { + Community: '@mui/x-tree-view', + Pro: '@mui/x-tree-view-pro', +}; + +export default function TreeViewInstallationInstructions() { + return ; +} diff --git a/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json b/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json new file mode 100644 index 000000000000..bcd6e7bdb905 --- /dev/null +++ b/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json @@ -0,0 +1,144 @@ +{ + "componentDescription": "", + "propDescriptions": { + "apiRef": { + "description": "The ref object that allows Tree View manipulation. Can be instantiated with useTreeViewApiRef()." + }, + "canMoveItemToNewPosition": { + "description": "Used to determine if a given item can move to some new position.", + "typeDescriptions": { + "params": "The params describing the item re-ordering.", + "params.itemId": "The id of the item to check.", + "params.oldPosition": "The old position of the item.", + "params.newPosition": "The new position of the item.", + "boolean": "true if the item can move to the new position." + } + }, + "checkboxSelection": { + "description": "If true, the tree view renders a checkbox at the left of its label that allows selecting it." + }, + "classes": { "description": "Override or extend the styles applied to the component." }, + "defaultExpandedItems": { + "description": "Expanded item ids. Used when the item's expansion is not controlled." + }, + "defaultSelectedItems": { + "description": "Selected item ids. (Uncontrolled) When multiSelect is true this takes an array of strings; when false (default) a string." + }, + "disabledItemsFocusable": { + "description": "If true, will allow focus on disabled items." + }, + "disableSelection": { "description": "If true selection is disabled." }, + "expandedItems": { + "description": "Expanded item ids. Used when the item's expansion is controlled." + }, + "expansionTrigger": { + "description": "The slot that triggers the item's expansion when clicked." + }, + "experimentalFeatures": { + "description": "Unstable features, breaking changes might be introduced. For each feature, if the flag is not explicitly set to true, the feature will be fully disabled and any property / method call will not have any effect." + }, + "getItemId": { + "description": "Used to determine the id of a given item.", + "typeDescriptions": { "item": "The item to check.", "string": "The id of the item." } + }, + "getItemLabel": { + "description": "Used to determine the string label for a given item.", + "typeDescriptions": { "item": "The item to check.", "string": "The label of the item." } + }, + "id": { + "description": "This prop is used to help implement the accessibility logic. If you don't provide this prop. It falls back to a randomly generated id." + }, + "isItemDisabled": { + "description": "Used to determine if a given item should be disabled.", + "typeDescriptions": { + "item": "The item to check.", + "boolean": "true if the item should be disabled." + } + }, + "isItemReorderable": { + "description": "Used to determine if a given item can be reordered.", + "typeDescriptions": { + "itemId": "The id of the item to check.", + "boolean": "true if the item can be reordered." + } + }, + "itemChildrenIndentation": { + "description": "Horizontal indentation between an item and its children. Examples: 24, "24px", "2rem", "2em"." + }, + "itemsReordering": { + "description": "If true, the reordering of items is enabled. Make sure to also enable the itemsReordering experimental feature: <RichTreeViewPro experimentalFeatures={{ itemsReordering: true }} itemsReordering />." + }, + "multiSelect": { + "description": "If true, ctrl and shift will trigger multiselect." + }, + "onExpandedItemsChange": { + "description": "Callback fired when tree items are expanded/collapsed.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemIds": "The ids of the expanded items." + } + }, + "onItemClick": { + "description": "Callback fired when the content slot of a given tree item is clicked.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemId": "The id of the focused item." + } + }, + "onItemExpansionToggle": { + "description": "Callback fired when a tree item is expanded or collapsed.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemId": "The itemId of the modified item.", + "isExpanded": "true if the item has just been expanded, false if it has just been collapsed." + } + }, + "onItemFocus": { + "description": "Callback fired when a given tree item is focused.", + "typeDescriptions": { + "event": "The DOM event that triggered the change. Warning: This is a generic event not a focus event.", + "itemId": "The id of the focused item." + } + }, + "onItemPositionChange": { + "description": "Callback fired when a tree item is moved in the tree.", + "typeDescriptions": { + "params": "The params describing the item re-ordering.", + "params.itemId": "The id of the item moved.", + "params.oldPosition": "The old position of the item.", + "params.newPosition": "The new position of the item." + } + }, + "onItemSelectionToggle": { + "description": "Callback fired when a tree item is selected or deselected.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemId": "The itemId of the modified item.", + "isSelected": "true if the item has just been selected, false if it has just been deselected." + } + }, + "onSelectedItemsChange": { + "description": "Callback fired when tree items are selected/deselected.", + "typeDescriptions": { + "event": "The DOM event that triggered the change.", + "itemIds": "The ids of the selected items. When multiSelect is true, this is an array of strings; when false (default) a string." + } + }, + "selectedItems": { + "description": "Selected item ids. (Controlled) When multiSelect is true this takes an array of strings; when false (default) a string." + }, + "slotProps": { "description": "The props used for each component slot." }, + "slots": { "description": "Overridable component slots." }, + "sx": { + "description": "The system prop that allows defining system overrides as well as additional CSS styles." + } + }, + "classDescriptions": {}, + "slotDescriptions": { + "collapseIcon": "The default icon used to collapse the item.", + "endIcon": "The default icon displayed next to an end item. This is applied to all tree items and can be overridden by the TreeItem icon slot prop.", + "expandIcon": "The default icon used to expand the item.", + "item": "Custom component for the item.", + "root": "Element rendered at the root." + } +} diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 5aa07ec37682..e31b9e195ed7 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,7 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.2.0", - "private": true, + "version": "7.11.1", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", @@ -63,6 +62,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", + "@types/prop-types": "^15.7.12", "rimraf": "^5.0.9" }, "engines": { diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx index fe08a3f193c3..e71cc8ed6534 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; import { useLicenseVerifier, Watermark } from '@mui/x-license'; import useSlotProps from '@mui/utils/useSlotProps'; @@ -63,6 +64,32 @@ function WrappedTreeItem({ return {children}; } +WrappedTreeItem.propTypes = { + // ----------------------------- Warning -------------------------------- + // | These PropTypes are generated from the TypeScript type definitions | + // | To update them edit the TypeScript types and run "pnpm proptypes" | + // ---------------------------------------------------------------------- + /** + * The content of the component. + */ + children: PropTypes.node, + /** + * The id of the item. + */ + itemId: PropTypes.string.isRequired, + label: PropTypes.string.isRequired, + /** + * The props used for each component slot. + * @default {} + */ + slotProps: PropTypes.object, + /** + * Overridable component slots. + * @default {} + */ + slots: PropTypes.object, +} as any; + const releaseInfo = getReleaseInfo(); /** @@ -146,4 +173,211 @@ const RichTreeViewPro = React.forwardRef(function RichTreeViewPro< ); }) as RichTreeViewProComponent; +RichTreeViewPro.propTypes = { + // ----------------------------- Warning -------------------------------- + // | These PropTypes are generated from the TypeScript type definitions | + // | To update them edit the TypeScript types and run "pnpm proptypes" | + // ---------------------------------------------------------------------- + /** + * The ref object that allows Tree View manipulation. Can be instantiated with `useTreeViewApiRef()`. + */ + apiRef: PropTypes.shape({ + current: PropTypes.shape({ + focusItem: PropTypes.func.isRequired, + getItem: PropTypes.func.isRequired, + getItemDOMElement: PropTypes.func.isRequired, + getItemOrderedChildrenIds: PropTypes.func.isRequired, + getItemTree: PropTypes.func.isRequired, + selectItem: PropTypes.func.isRequired, + setItemExpansion: PropTypes.func.isRequired, + }), + }), + /** + * Used to determine if a given item can move to some new position. + * @param {object} params The params describing the item re-ordering. + * @param {string} params.itemId The id of the item to check. + * @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item. + * @param {TreeViewItemReorderPosition} params.newPosition The new position of the item. + * @returns {boolean} `true` if the item can move to the new position. + */ + canMoveItemToNewPosition: PropTypes.func, + /** + * If `true`, the tree view renders a checkbox at the left of its label that allows selecting it. + * @default false + */ + checkboxSelection: PropTypes.bool, + /** + * Override or extend the styles applied to the component. + */ + classes: PropTypes.object, + className: PropTypes.string, + /** + * Expanded item ids. + * Used when the item's expansion is not controlled. + * @default [] + */ + defaultExpandedItems: PropTypes.arrayOf(PropTypes.string), + /** + * Selected item ids. (Uncontrolled) + * When `multiSelect` is true this takes an array of strings; when false (default) a string. + * @default [] + */ + defaultSelectedItems: PropTypes.any, + /** + * If `true`, will allow focus on disabled items. + * @default false + */ + disabledItemsFocusable: PropTypes.bool, + /** + * If `true` selection is disabled. + * @default false + */ + disableSelection: PropTypes.bool, + /** + * Expanded item ids. + * Used when the item's expansion is controlled. + */ + expandedItems: PropTypes.arrayOf(PropTypes.string), + /** + * The slot that triggers the item's expansion when clicked. + * @default 'content' + */ + expansionTrigger: PropTypes.oneOf(['content', 'iconContainer']), + /** + * Unstable features, breaking changes might be introduced. + * For each feature, if the flag is not explicitly set to `true`, + * the feature will be fully disabled and any property / method call will not have any effect. + */ + experimentalFeatures: PropTypes.shape({ + indentationAtItemLevel: PropTypes.bool, + itemsReordering: PropTypes.bool, + }), + /** + * Used to determine the id of a given item. + * + * @template R + * @param {R} item The item to check. + * @returns {string} The id of the item. + * @default (item) => item.id + */ + getItemId: PropTypes.func, + /** + * Used to determine the string label for a given item. + * + * @template R + * @param {R} item The item to check. + * @returns {string} The label of the item. + * @default (item) => item.label + */ + getItemLabel: PropTypes.func, + /** + * This prop is used to help implement the accessibility logic. + * If you don't provide this prop. It falls back to a randomly generated id. + */ + id: PropTypes.string, + /** + * Used to determine if a given item should be disabled. + * @template R + * @param {R} item The item to check. + * @returns {boolean} `true` if the item should be disabled. + */ + isItemDisabled: PropTypes.func, + /** + * Used to determine if a given item can be reordered. + * @param {string} itemId The id of the item to check. + * @returns {boolean} `true` if the item can be reordered. + * @default () => true + */ + isItemReorderable: PropTypes.func, + /** + * Horizontal indentation between an item and its children. + * Examples: 24, "24px", "2rem", "2em". + * @default 12px + */ + itemChildrenIndentation: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), + items: PropTypes.array.isRequired, + /** + * If `true`, the reordering of items is enabled. + * Make sure to also enable the `itemsReordering` experimental feature: + * ``. + * @default false + */ + itemsReordering: PropTypes.bool, + /** + * If `true`, `ctrl` and `shift` will trigger multiselect. + * @default false + */ + multiSelect: PropTypes.bool, + /** + * Callback fired when tree items are expanded/collapsed. + * @param {React.SyntheticEvent} event The DOM event that triggered the change. + * @param {array} itemIds The ids of the expanded items. + */ + onExpandedItemsChange: PropTypes.func, + /** + * Callback fired when the `content` slot of a given tree item is clicked. + * @param {React.MouseEvent} event The DOM event that triggered the change. + * @param {string} itemId The id of the focused item. + */ + onItemClick: PropTypes.func, + /** + * Callback fired when a tree item is expanded or collapsed. + * @param {React.SyntheticEvent} event The DOM event that triggered the change. + * @param {array} itemId The itemId of the modified item. + * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed. + */ + onItemExpansionToggle: PropTypes.func, + /** + * Callback fired when a given tree item is focused. + * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. + * @param {string} itemId The id of the focused item. + */ + onItemFocus: PropTypes.func, + /** + * Callback fired when a tree item is moved in the tree. + * @param {object} params The params describing the item re-ordering. + * @param {string} params.itemId The id of the item moved. + * @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item. + * @param {TreeViewItemReorderPosition} params.newPosition The new position of the item. + */ + onItemPositionChange: PropTypes.func, + /** + * Callback fired when a tree item is selected or deselected. + * @param {React.SyntheticEvent} event The DOM event that triggered the change. + * @param {array} itemId The itemId of the modified item. + * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected. + */ + onItemSelectionToggle: PropTypes.func, + /** + * Callback fired when tree items are selected/deselected. + * @param {React.SyntheticEvent} event The DOM event that triggered the change. + * @param {string[] | string} itemIds The ids of the selected items. + * When `multiSelect` is `true`, this is an array of strings; when false (default) a string. + */ + onSelectedItemsChange: PropTypes.func, + /** + * Selected item ids. (Controlled) + * When `multiSelect` is true this takes an array of strings; when false (default) a string. + */ + selectedItems: PropTypes.any, + /** + * The props used for each component slot. + * @default {} + */ + slotProps: PropTypes.object, + /** + * Overridable component slots. + * @default {} + */ + slots: PropTypes.object, + /** + * The system prop that allows defining system overrides as well as additional CSS styles. + */ + sx: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), + PropTypes.func, + PropTypes.object, + ]), +} as any; + export { RichTreeViewPro }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8d123b88b8c..86a5d3a8f25e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1451,6 +1451,9 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.5 version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/prop-types': + specifier: ^15.7.12 + version: 15.7.12 rimraf: specifier: ^5.0.9 version: 5.0.9 diff --git a/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts b/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts index 395c5ed62822..c3fe3091bd03 100644 --- a/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts +++ b/scripts/buildApiDocs/treeViewSettings/getComponentInfo.ts @@ -75,10 +75,9 @@ export function getComponentImports(name: string, filename: string) { const reExportPackage = [rootImportPath]; - // TODO x-tree-view-pro uncomment when making the package public - // if (rootImportPath === '@mui/x-tree-view') { - // reExportPackage.push('@mui/x-tree-view-pro'); - // } + if (rootImportPath === '@mui/x-tree-view' && name !== 'RichTreeView') { + reExportPackage.push('@mui/x-tree-view-pro'); + } return [ `import { ${name} } from '${subdirectoryImportPath}';`, diff --git a/scripts/buildApiDocs/treeViewSettings/index.ts b/scripts/buildApiDocs/treeViewSettings/index.ts index 88689abe0cee..f7ad936c1b1d 100644 --- a/scripts/buildApiDocs/treeViewSettings/index.ts +++ b/scripts/buildApiDocs/treeViewSettings/index.ts @@ -43,11 +43,11 @@ export default apiPages; rootPath: path.join(process.cwd(), 'packages/x-tree-view'), entryPointPath: 'src/index.ts', }, - // { - // name: 'tree-view-pro', - // rootPath: path.join(process.cwd(), 'packages/x-tree-view-pro'), - // entryPointPath: 'src/index.ts', - // }, + { + name: 'tree-view-pro', + rootPath: path.join(process.cwd(), 'packages/x-tree-view-pro'), + entryPointPath: 'src/index.ts', + }, ], getApiPages: () => findApiPages('docs/pages/x/api/tree-view'), getComponentInfo, diff --git a/scripts/x-tree-view-pro.exports.json b/scripts/x-tree-view-pro.exports.json new file mode 100644 index 000000000000..0e080fd3bec3 --- /dev/null +++ b/scripts/x-tree-view-pro.exports.json @@ -0,0 +1,77 @@ +[ + { "name": "getRichTreeViewProUtilityClass", "kind": "Function" }, + { "name": "getSimpleTreeViewUtilityClass", "kind": "Function" }, + { "name": "getTreeItemUtilityClass", "kind": "Function" }, + { "name": "getTreeViewUtilityClass", "kind": "Function" }, + { "name": "MultiSelectTreeViewProps", "kind": "TypeAlias" }, + { "name": "RichTreeViewPro", "kind": "Variable" }, + { "name": "richTreeViewProClasses", "kind": "Variable" }, + { "name": "RichTreeViewProClasses", "kind": "Interface" }, + { "name": "RichTreeViewProClassKey", "kind": "TypeAlias" }, + { "name": "RichTreeViewProProps", "kind": "Interface" }, + { "name": "RichTreeViewProPropsBase", "kind": "Interface" }, + { "name": "RichTreeViewProRoot", "kind": "Variable" }, + { "name": "RichTreeViewProSlotProps", "kind": "Interface" }, + { "name": "RichTreeViewProSlots", "kind": "Interface" }, + { "name": "SimpleTreeView", "kind": "Variable" }, + { "name": "simpleTreeViewClasses", "kind": "Variable" }, + { "name": "SimpleTreeViewClasses", "kind": "Interface" }, + { "name": "SimpleTreeViewClassKey", "kind": "TypeAlias" }, + { "name": "SimpleTreeViewProps", "kind": "Interface" }, + { "name": "SimpleTreeViewRoot", "kind": "Variable" }, + { "name": "SimpleTreeViewSlotProps", "kind": "Interface" }, + { "name": "SimpleTreeViewSlots", "kind": "Interface" }, + { "name": "SingleSelectTreeViewProps", "kind": "TypeAlias" }, + { "name": "TreeItem", "kind": "Variable" }, + { "name": "TreeItem2", "kind": "Variable" }, + { "name": "TreeItem2Checkbox", "kind": "Variable" }, + { "name": "TreeItem2Content", "kind": "Variable" }, + { "name": "TreeItem2GroupTransition", "kind": "Variable" }, + { "name": "TreeItem2Icon", "kind": "Function" }, + { "name": "TreeItem2IconContainer", "kind": "Variable" }, + { "name": "TreeItem2IconProps", "kind": "Interface" }, + { "name": "TreeItem2IconSlotProps", "kind": "Interface" }, + { "name": "TreeItem2IconSlots", "kind": "Interface" }, + { "name": "TreeItem2Label", "kind": "Variable" }, + { "name": "TreeItem2Props", "kind": "Interface" }, + { "name": "TreeItem2Provider", "kind": "Function" }, + { "name": "TreeItem2ProviderProps", "kind": "Interface" }, + { "name": "TreeItem2Root", "kind": "Variable" }, + { "name": "TreeItem2SlotProps", "kind": "Interface" }, + { "name": "TreeItem2Slots", "kind": "Interface" }, + { "name": "treeItemClasses", "kind": "Variable" }, + { "name": "TreeItemClasses", "kind": "Interface" }, + { "name": "TreeItemClassKey", "kind": "TypeAlias" }, + { "name": "TreeItemContent", "kind": "Variable" }, + { "name": "TreeItemContentClassKey", "kind": "TypeAlias" }, + { "name": "TreeItemContentProps", "kind": "Interface" }, + { "name": "TreeItemProps", "kind": "Interface" }, + { "name": "TreeItemSlotProps", "kind": "Interface" }, + { "name": "TreeItemSlots", "kind": "Interface" }, + { "name": "TreeView", "kind": "Variable" }, + { "name": "TreeViewBaseItem", "kind": "TypeAlias" }, + { "name": "treeViewClasses", "kind": "Variable" }, + { "name": "TreeViewClasses", "kind": "Interface" }, + { "name": "TreeViewClassKey", "kind": "TypeAlias" }, + { "name": "TreeViewCollapseIcon", "kind": "Variable" }, + { "name": "TreeViewExpandIcon", "kind": "Variable" }, + { "name": "TreeViewItemId", "kind": "TypeAlias" }, + { "name": "TreeViewItemsReorderingAction", "kind": "TypeAlias" }, + { "name": "TreeViewProps", "kind": "Interface" }, + { "name": "TreeViewSlotProps", "kind": "Interface" }, + { "name": "TreeViewSlots", "kind": "Interface" }, + { "name": "unstable_resetCleanupTracking", "kind": "Variable" }, + { "name": "unstable_useTreeItem2", "kind": "Variable" }, + { "name": "UseTreeItem2ContentSlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2DragAndDropOverlaySlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2GroupTransitionSlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2IconContainerSlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2LabelSlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2Parameters", "kind": "Interface" }, + { "name": "UseTreeItem2ReturnValue", "kind": "Interface" }, + { "name": "UseTreeItem2RootSlotOwnProps", "kind": "Interface" }, + { "name": "UseTreeItem2Status", "kind": "Interface" }, + { "name": "useTreeItem2Utils", "kind": "Variable" }, + { "name": "useTreeItemState", "kind": "Function" }, + { "name": "useTreeViewApiRef", "kind": "Variable" } +] From 77c190e9c8f17f85a07b01d043a6ad0df00f0228 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Thu, 1 Aug 2024 17:39:23 +0200 Subject: [PATCH 722/912] [TreeView] Fix env check for drag and drop warning (#14069) --- .../useTreeViewItemsReordering/useTreeViewItemsReordering.ts | 2 +- .../useTreeViewItemsReordering.types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts index e9065681e876..91843a7b6dc4 100644 --- a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts @@ -24,7 +24,7 @@ export const useTreeViewItemsReordering: TreeViewPlugin TreeViewItemItemReorderingValidActions; /** From eefc4a8777ce07dbf5fa613bf6dd282ab48f4742 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Thu, 1 Aug 2024 18:27:08 +0200 Subject: [PATCH 723/912] v7.12.0 (#14064) Signed-off-by: Jose C Quintas Jr Co-authored-by: Lukas Tyla Co-authored-by: Flavien DELANGLE Co-authored-by: Andrew Cherniavskii --- CHANGELOG.md | 106 ++++++++++++++++++ docs/data/introduction/licensing/licensing.md | 1 + package.json | 2 +- packages/x-charts-vendor/package.json | 36 +++--- packages/x-charts/package.json | 6 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 15 files changed, 139 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3f3d899b88a..2da1e48cfc59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,112 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.12.0 + +_Aug 1, 2024_ + +### 💵 Our commercial offering is evolving + +The [Pro plan](https://mui.com/x/introduction/licensing/#pro-plan) is receiving two new packages: + +- `@mui/x-tree-view-pro` (available today!) +- `@mui/x-charts-pro` (available in the coming weeks) + +As always, every feature released as part of the MIT plan will remain free and MIT licensed forever. + +This expansion of the Pro plan comes with some adjustments to our pricing strategy. Learn more about those in the [Upcoming changes to MUI X pricing in 2024](https://mui.com/blog/mui-x-sep-2024-price-update/) blog post. + +### Highlights + +We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨: + +- 🎁 Introduce [item reordering using drag and drop](https://mui.com/x/react-tree-view/rich-tree-view/ordering/) on the `RichTreeViewPro` component + + Item reordering using drag and drop + +- 📦 Support Common JS bundle out of the box on `@mui/x-charts` by adding vendored D3 dependencies. + + - This modifies how the package imports D3.js. It will impact you if you use `d3` packages installed by `@mui/x-charts` and don't have them in your `package.json`. You shouldn't be affected otherwise. + - For more context, the initial issue is caused by D3 only exporting ESM. + + ![image](https://github.com/user-attachments/assets/d705b4de-0c93-420e-a416-528e7a044c1d) + + - The solution up until now was to export charts with only ESM. But some frameworks are confused by this configuration. + + ![image](https://github.com/user-attachments/assets/18a09703-9dd4-4226-a33d-167af059219c) + + - So in order to fix this, we are providing a CJS version of D3. + + ![image](https://github.com/user-attachments/assets/56387fe6-85d8-4750-bb9d-9866d5be68fa) + +- 🌍 Improve Turkish (tr-TR) locale on the Data Grid +- 🌍 Improve Finnish (fi-FI) locale on the Date and Time Pickers +- 🐞 Bugfixes +- 📚 Documentation improvements + + + +### Data Grid + +#### `@mui/x-data-grid@7.12.0` + +- [DataGrid] Fix crash when updating columns immediately after scrolling (#13781) @cherniavskii +- [DataGrid] Fix `role=presentation` a11y issue (#13891) @romgrk +- [DataGrid] Fix top corner pixels & outline radius (#13943) @romgrk +- [DataGrid] Refactor: remove useless copy (#14039) @romgrk +- [l10n] Improve Turkish (tr-TR) locale (#13996) @bagcivan + +#### `@mui/x-data-grid-pro@7.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.12.0`. + +#### `@mui/x-data-grid-premium@7.12.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.12.0`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.12.0` + +- [l10n] Improve Finnish (fi-FI) locale (#14054) @frozenzia + +#### `@mui/x-date-pickers-pro@7.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.12.0`. + +### Charts + +#### `@mui/x-charts@7.12.0` + +- [charts] Fix incorrect `axisId` prop being allowed in xAxis/yAxis config. Use `id` instead. (#13986) @JCQuintas +- [charts] Use vendor to have Common JS bundle working out of the box (#13608) @alexfauquette +- [charts] Divide the `SeriesProvider` to use in filtering (#14026) @JCQuintas + +### Tree View + +#### `@mui/x-tree-view@7.12.0` + +- [TreeView] Add new prop `onItemClick` on the Tree View components (#14018) @flaviendelangle +- [TreeView] Add new utility function `isEventTargetInDescendants` (#13982) @flaviendelangle +- [TreeView] Support item reordering using drag and drop (#12213) @flaviendelangle + +### Docs + +- [docs] Add Pickers `minDate` and `maxDate` `default` description (#14024) @LukasTy +- [docs] Fix 404 (#13989) @alexfauquette +- [docs] Fix Vale errors (#14025) @oliviertassinari +- [docs] Update on `renderCell` & autogenerated rows (#13879) @romgrk + +### Core + +- [core] Fix event naming convention @oliviertassinari +- [core] Replace @mui/base with @mui/utils + @mui/material (#13823) @mnajdova +- [core] Test `charts` performance with codspeed (#13952) @JCQuintas +- [infra] Consolidate issue cleanup and support labeling action (#14031) @michelengelen +- [infra] Revert `vale` action `paths` filtering (#14038) @LukasTy +- [test] Fix adapters code coverage (#13969) @alexfauquette +- [test] Fix mocha config to run charts tests (#14041) @alexfauquette + ## 7.11.1 _Jul 25, 2024_ diff --git a/docs/data/introduction/licensing/licensing.md b/docs/data/introduction/licensing/licensing.md index 85f8955bead3..fccbdc844284 100644 --- a/docs/data/introduction/licensing/licensing.md +++ b/docs/data/introduction/licensing/licensing.md @@ -43,6 +43,7 @@ These are the Pro npm packages: - [`@mui/x-data-grid-pro`](https://www.npmjs.com/package/@mui/x-data-grid-pro) - [`@mui/x-date-pickers-pro`](https://www.npmjs.com/package/@mui/x-date-pickers-pro) +- [`@mui/x-tree-view-pro`](https://www.npmjs.com/package/@mui/x-tree-view-pro) ### Premium plan diff --git a/package.json b/package.json index 9a5c889e6630..ad0c4abefdf5 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.11.1", + "version": "7.12.0", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 92e890da5ca1..35d438d0d559 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-vendor", - "version": "7.8.0", + "version": "7.12.0", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", "main": "./index.js", @@ -25,34 +25,34 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "d3-color": "^3.1.0", - "d3-delaunay": "^6.0.4", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0", - "d3-time": "^3.1.0", "@types/d3-color": "^3.1.3", "@types/d3-delaunay": "^6.0.4", "@types/d3-interpolate": "^3.0.4", "@types/d3-scale": "^4.0.8", "@types/d3-shape": "^3.1.6", "@types/d3-time": "^3.0.3", - "robust-predicates": "^3.0.2", - "delaunator": "^5.0.1" + "d3-color": "^3.1.0", + "d3-delaunay": "^6.0.4", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.2.0", + "d3-time": "^3.1.0", + "delaunator": "^5.0.1", + "robust-predicates": "^3.0.2" }, "devDependencies": { - "d3-format": "^3.1.0", - "d3-time-format": "^4.1.0", - "d3-path": "^3.0.1", - "d3-array": "^3.1.6", + "@babel/plugin-transform-runtime": "^7.24.7", + "@types/d3-array": "^3.0.3", "@types/d3-format": "^3.0.4", - "@types/d3-time-format": "^4.0.3", "@types/d3-path": "^3.0.1", - "@types/d3-array": "^3.0.3", - "internmap": "^2.0.3", + "@types/d3-time-format": "^4.0.3", + "d3-array": "^3.1.6", + "d3-format": "^3.1.0", + "d3-path": "^3.0.1", + "d3-time-format": "^4.1.0", "execa": "^9.3.0", - "rimraf": "^5.0.8", - "@babel/plugin-transform-runtime": "^7.24.7" + "internmap": "^2.0.3", + "rimraf": "^5.0.8" }, "publishConfig": { "provenance": true diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 28fc77a6daad..7ee9390fb6d0 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.11.1", + "version": "7.12.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "./src/index.js", @@ -42,11 +42,11 @@ "@babel/runtime": "^7.25.0", "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", + "@mui/x-charts-vendor": "workspace:*", "@react-spring/rafz": "^9.7.4", "@react-spring/web": "^9.7.4", "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "@mui/x-charts-vendor": "workspace:*" + "prop-types": "^15.8.1" }, "peerDependencies": { "@emotion/react": "^11.9.0", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index c45ba4a8a521..11da83bbec09 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.11.1", + "version": "7.12.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 9b1c244c808f..357adba42c5d 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.11.1", + "version": "7.12.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 4ab27308d3cc..97fb042a5ed2 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.11.1", + "version": "7.12.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index a4eda7b280c3..4018bbb601cb 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.11.1", + "version": "7.12.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 45fc2a705a6b..9ab8869c92ca 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.11.1", + "version": "7.12.0", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 9bd1c74dae01..7c82a56b19af 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.11.1", + "version": "7.12.0", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index ce017cd12f5b..405e3106e5d0 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-internals", - "version": "7.11.1", + "version": "7.12.0", "description": "Utility functions for the MUI X packages (internal use only).", "author": "MUI Team", "license": "MIT", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 9fe318b3ffef..dcc406c7f0b7 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.11.1", + "version": "7.12.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index e31b9e195ed7..b2f2f014f6d1 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.11.1", + "version": "7.12.0", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 900ba5e3db75..0ab596434f56 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.11.1", + "version": "7.12.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From 345c769ada0d279f5be8fdc74c9c68c475f2ea11 Mon Sep 17 00:00:00 2001 From: Sam <39610614+samwato@users.noreply.github.com> Date: Fri, 2 Aug 2024 06:44:23 +1000 Subject: [PATCH 724/912] [DataGrid] Fix `columnHeadersContainerRef` being `undefined` before mount (#14051) Co-authored-by: Andrew Cherniavskii --- packages/x-data-grid/src/components/GridHeaders.tsx | 6 +----- packages/x-data-grid/src/hooks/core/useGridRefs.ts | 2 ++ .../x-data-grid/src/hooks/features/scroll/useGridScroll.ts | 2 +- packages/x-data-grid/src/models/api/gridCoreApi.ts | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/x-data-grid/src/components/GridHeaders.tsx b/packages/x-data-grid/src/components/GridHeaders.tsx index 10a926d5ae9a..b6f2f6b290e0 100644 --- a/packages/x-data-grid/src/components/GridHeaders.tsx +++ b/packages/x-data-grid/src/components/GridHeaders.tsx @@ -54,11 +54,7 @@ function GridHeaders() { cellTabIndexState === null ); - const columnsContainerRef = React.useRef(null); - - apiRef.current.register('private', { - columnHeadersContainerRef: columnsContainerRef, - }); + const columnsContainerRef = apiRef.current.columnHeadersContainerRef; return ( ( const rootElementRef = React.useRef(null); const mainElementRef = React.useRef(null); const virtualScrollerRef = React.useRef(null); + const columnHeadersContainerRef = React.useRef(null); apiRef.current.register('public', { rootElementRef, @@ -15,5 +16,6 @@ export const useGridRefs = ( apiRef.current.register('private', { mainElementRef, virtualScrollerRef, + columnHeadersContainerRef, }); }; diff --git a/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts b/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts index 8e5f2ba8dab1..0c5543e0d12e 100644 --- a/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts +++ b/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts @@ -57,7 +57,7 @@ export const useGridScroll = ( ): void => { const theme = useTheme(); const logger = useGridLogger(apiRef, 'useGridScroll'); - const colRef = apiRef.current.columnHeadersContainerRef!; + const colRef = apiRef.current.columnHeadersContainerRef; const virtualScrollerRef = apiRef.current.virtualScrollerRef!; const visibleSortedRows = useGridSelector(apiRef, gridExpandedSortedRowEntriesSelector); diff --git a/packages/x-data-grid/src/models/api/gridCoreApi.ts b/packages/x-data-grid/src/models/api/gridCoreApi.ts index ac99d8652da1..8a48f4ee2412 100644 --- a/packages/x-data-grid/src/models/api/gridCoreApi.ts +++ b/packages/x-data-grid/src/models/api/gridCoreApi.ts @@ -75,7 +75,7 @@ export interface GridCorePrivateApi< /** * The React ref of the grid column container virtualized div element. */ - columnHeadersContainerRef?: React.RefObject; + columnHeadersContainerRef: React.RefObject; /** * The React ref of the grid header filter row element. */ From 98975a310cf55510fcd1a0cc38d94594f8972699 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Fri, 2 Aug 2024 10:24:25 +0200 Subject: [PATCH 725/912] [charts] Fix charts vendor publish config (#14073) --- packages/x-charts-vendor/.npmignore | 2 ++ packages/x-charts-vendor/package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/x-charts-vendor/.npmignore b/packages/x-charts-vendor/.npmignore index 86e1a1cbaa58..491f38fb62a3 100644 --- a/packages/x-charts-vendor/.npmignore +++ b/packages/x-charts-vendor/.npmignore @@ -5,6 +5,8 @@ !/lib-vendor !/src !/d3-* +!/delaunator.* +!/robust-predicates.* !/internmap.js !LICENSE.txt !CHANGELOG.md diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 35d438d0d559..aadffa3ba0a1 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -55,7 +55,7 @@ "rimraf": "^5.0.8" }, "publishConfig": { - "provenance": true + "access": "public" }, "scripts": { "build": "node ./scripts/build.js" From 7d86cfd390f19bee22531ea25dc444d83c38e6b6 Mon Sep 17 00:00:00 2001 From: Robin <34270540+Robin1896@users.noreply.github.com> Date: Fri, 2 Aug 2024 14:51:52 +0200 Subject: [PATCH 726/912] [l10n] Improve Dutch (nlNL) locale (pickers) (#14036) Signed-off-by: Robin <34270540+Robin1896@users.noreply.github.com> Co-authored-by: alex --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/nlNL.ts | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 9e60d0001b7e..6c2afaec1d78 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -59,7 +59,7 @@ "languageTag": "nl-NL", "importName": "nlNL", "localeName": "Dutch", - "missingKeysCount": 14, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/nlNL.ts" }, diff --git a/packages/x-date-pickers/src/locales/nlNL.ts b/packages/x-date-pickers/src/locales/nlNL.ts index 1df2a019a7de..d1caa93adba3 100644 --- a/packages/x-date-pickers/src/locales/nlNL.ts +++ b/packages/x-date-pickers/src/locales/nlNL.ts @@ -25,10 +25,10 @@ const nlNLPickers: Partial> = { // DateRange labels start: 'Start', end: 'Einde', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Start datum', + startTime: 'Start tijd', + endDate: 'Eind datum', + endTime: 'Eind tijd', // Action bar cancelButtonLabel: 'Annuleren', @@ -67,7 +67,7 @@ const nlNLPickers: Partial> = { value !== null && utils.isValid(value) ? `Kies tijd, geselecteerde tijd is ${utils.format(value, 'fullTime')}` : 'Kies tijd', - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Wissen', // Table labels timeTableLabel: 'kies tijd', @@ -84,17 +84,17 @@ const nlNLPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Jaar', + month: 'Maand', + day: 'Dag', + weekDay: 'Weekdag', + hours: 'Uren', + minutes: 'Minuten', + seconds: 'Seconden', + meridiem: 'Middag', // Common - // empty: 'Empty', + empty: 'Legen', }; export const nlNL = getPickersLocalization(nlNLPickers); From 2b1d39d0454fd74fde1cc616e17749bed209825a Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Mon, 5 Aug 2024 10:50:36 +0200 Subject: [PATCH 727/912] [charts] Move `plugins` to `PluginProvider` (#14056) --- .../ChartContainerPro/ChartContainerPro.tsx | 8 ++-- .../useChartContainerProProps.ts | 4 +- .../x-charts-pro/src/Heatmap/formatter.ts | 4 +- packages/x-charts-pro/src/Heatmap/getColor.ts | 14 +++--- packages/x-charts-pro/src/Heatmap/plugin.ts | 4 +- .../CartesianProviderPro.tsx | 6 ++- packages/x-charts/src/BarChart/BarPlot.tsx | 4 +- .../x-charts/src/BarChart/extremums.test.ts | 2 +- packages/x-charts/src/BarChart/extremums.ts | 5 ++- packages/x-charts/src/BarChart/formatter.ts | 10 ++--- packages/x-charts/src/BarChart/getColor.ts | 13 +++--- packages/x-charts/src/BarChart/legend.ts | 2 +- packages/x-charts/src/BarChart/plugin.ts | 4 +- .../src/ChartContainer/ChartContainer.tsx | 18 +++----- .../src/ChartContainer/defaultPlugins.ts | 12 ----- .../ChartContainer/useChartContainerHooks.ts | 27 ------------ .../ChartContainer/useChartContainerProps.ts | 26 +++++------ .../src/ChartContainer/usePluginsMerge.ts | 40 ----------------- packages/x-charts/src/ChartsLegend/utils.ts | 4 +- .../ChartsAxisTooltipContent.tsx | 2 +- .../ChartsItemTooltipContent.tsx | 2 +- packages/x-charts/src/LineChart/extremums.ts | 5 ++- .../x-charts/src/LineChart/formatter.test.ts | 4 +- packages/x-charts/src/LineChart/formatter.ts | 10 ++--- packages/x-charts/src/LineChart/getColor.ts | 13 +++--- packages/x-charts/src/LineChart/legend.ts | 2 +- packages/x-charts/src/LineChart/plugin.ts | 4 +- packages/x-charts/src/PieChart/formatter.ts | 5 ++- packages/x-charts/src/PieChart/getColor.ts | 8 ++-- packages/x-charts/src/PieChart/legend.ts | 2 +- packages/x-charts/src/PieChart/plugin.ts | 4 +- .../x-charts/src/ScatterChart/extremums.ts | 5 ++- .../x-charts/src/ScatterChart/formatter.ts | 4 +- .../x-charts/src/ScatterChart/getColor.ts | 15 +++---- packages/x-charts/src/ScatterChart/legend.ts | 2 +- packages/x-charts/src/ScatterChart/plugin.ts | 4 +- .../CartesianProvider/CartesianProvider.tsx | 15 +++---- .../context/CartesianProvider/computeValue.ts | 7 +-- .../CartesianProvider/getAxisExtremum.ts | 5 ++- .../x-charts/src/context/ColorProvider.tsx | 22 ---------- .../useHighlighted.test.tsx | 13 +++--- .../PluginProvider/ColorProcessor.types.ts | 15 +++++++ .../PluginProvider/ExtremumGetter.types.ts | 23 ++++++++++ .../context/PluginProvider/Plugin.types.ts | 30 +++++++++++++ .../context/PluginProvider/PluginContext.ts | 17 +++++++ .../context/PluginProvider/PluginProvider.tsx | 20 +++++++++ .../PluginProvider/SeriesFormatter.types.ts | 37 ++++++++++++++++ .../src/context/PluginProvider/index.ts | 10 +++++ .../context/PluginProvider/mergePlugins.ts | 44 +++++++++++++++++++ .../PluginProvider/useColorProcessor.ts | 27 ++++++++++++ .../PluginProvider/useSeriesFormatter.ts | 27 ++++++++++++ .../PluginProvider/useXExtremumGetter.ts | 27 ++++++++++++ .../PluginProvider/useYExtremumGetter.ts | 27 ++++++++++++ .../context/SeriesProvider/Series.types.ts | 21 ++------- .../context/SeriesProvider/SeriesProvider.tsx | 5 ++- .../context/SeriesProvider/processSeries.ts | 7 +-- packages/x-charts/src/hooks/useColor.ts | 18 -------- .../x-charts/src/hooks/useSeries.test.tsx | 13 +++--- packages/x-charts/src/internals/index.ts | 2 +- packages/x-charts/src/models/index.ts | 1 - packages/x-charts/src/models/plugin.ts | 34 -------------- .../x-charts/src/models/seriesType/config.ts | 39 ---------------- scripts/x-charts-pro.exports.json | 3 -- scripts/x-charts.exports.json | 3 -- 64 files changed, 442 insertions(+), 368 deletions(-) delete mode 100644 packages/x-charts/src/ChartContainer/defaultPlugins.ts delete mode 100644 packages/x-charts/src/ChartContainer/useChartContainerHooks.ts delete mode 100644 packages/x-charts/src/ChartContainer/usePluginsMerge.ts delete mode 100644 packages/x-charts/src/context/ColorProvider.tsx create mode 100644 packages/x-charts/src/context/PluginProvider/ColorProcessor.types.ts create mode 100644 packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts create mode 100644 packages/x-charts/src/context/PluginProvider/Plugin.types.ts create mode 100644 packages/x-charts/src/context/PluginProvider/PluginContext.ts create mode 100644 packages/x-charts/src/context/PluginProvider/PluginProvider.tsx create mode 100644 packages/x-charts/src/context/PluginProvider/SeriesFormatter.types.ts create mode 100644 packages/x-charts/src/context/PluginProvider/index.ts create mode 100644 packages/x-charts/src/context/PluginProvider/mergePlugins.ts create mode 100644 packages/x-charts/src/context/PluginProvider/useColorProcessor.ts create mode 100644 packages/x-charts/src/context/PluginProvider/useSeriesFormatter.ts create mode 100644 packages/x-charts/src/context/PluginProvider/useXExtremumGetter.ts create mode 100644 packages/x-charts/src/context/PluginProvider/useYExtremumGetter.ts delete mode 100644 packages/x-charts/src/hooks/useColor.ts delete mode 100644 packages/x-charts/src/models/plugin.ts diff --git a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx index 2daf4a098657..f6eb0236e4c0 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx +++ b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx @@ -5,9 +5,9 @@ import { ChartsSurface } from '@mui/x-charts/ChartsSurface'; import { HighlightedProvider, ZAxisContextProvider } from '@mui/x-charts/context'; import { ChartsAxesGradients, - ColorProvider, DrawingProvider, InteractionProvider, + PluginProvider, SeriesProvider, } from '@mui/x-charts/internals'; import { useLicenseVerifier } from '@mui/x-license/useLicenseVerifier'; @@ -27,12 +27,12 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( const { zoomProviderProps, drawingProviderProps, - colorProviderProps, seriesProviderProps, zAxisContextProps, highlightedProviderProps, cartesianContextProps, chartsSurfaceProps, + pluginProviderProps, children, } = useChartContainerProProps(props, ref); @@ -40,7 +40,7 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( return ( - + @@ -57,7 +57,7 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( - + ); }); diff --git a/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts b/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts index f0a17e423a6e..a0c090029f9e 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts +++ b/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts @@ -11,12 +11,12 @@ export const useChartContainerProProps = ( const { children, drawingProviderProps, - colorProviderProps, seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, + pluginProviderProps, xAxis, yAxis, } = useChartContainerProps(baseProps, ref); @@ -32,7 +32,7 @@ export const useChartContainerProProps = ( zoomProviderProps, children, drawingProviderProps, - colorProviderProps, + pluginProviderProps, seriesProviderProps, cartesianContextProps, zAxisContextProps, diff --git a/packages/x-charts-pro/src/Heatmap/formatter.ts b/packages/x-charts-pro/src/Heatmap/formatter.ts index 17e0b2a68ae3..26fa5f2b2c1f 100644 --- a/packages/x-charts-pro/src/Heatmap/formatter.ts +++ b/packages/x-charts-pro/src/Heatmap/formatter.ts @@ -1,7 +1,7 @@ -import { Formatter, SeriesId } from '@mui/x-charts/internals'; +import { SeriesFormatter, SeriesId } from '@mui/x-charts/internals'; import { DefaultizedHeatmapSeriesType } from '../models/seriesType/heatmap'; -const formatter: Formatter<'heatmap'> = (params) => { +const formatter: SeriesFormatter<'heatmap'> = (params) => { const { series, seriesOrder } = params; const defaultizedSeries: Record = {}; diff --git a/packages/x-charts-pro/src/Heatmap/getColor.ts b/packages/x-charts-pro/src/Heatmap/getColor.ts index f51d38225023..21b9463cb793 100644 --- a/packages/x-charts-pro/src/Heatmap/getColor.ts +++ b/packages/x-charts-pro/src/Heatmap/getColor.ts @@ -1,12 +1,6 @@ -import { DefaultizedSeriesType } from '@mui/x-charts'; -import { AxisDefaultized, ZAxisDefaultized } from '@mui/x-charts/internals'; +import { ColorProcessor } from '@mui/x-charts/internals'; -export default function getColor( - series: DefaultizedSeriesType<'heatmap'>, - xAxis?: AxisDefaultized, - yAxis?: AxisDefaultized, - zAxis?: ZAxisDefaultized, -) { +const getColor: ColorProcessor<'heatmap'> = (series, xAxis, yAxis, zAxis) => { const zColorScale = zAxis?.colorScale; if (zColorScale) { @@ -21,4 +15,6 @@ export default function getColor( } return () => ''; -} +}; + +export default getColor; diff --git a/packages/x-charts-pro/src/Heatmap/plugin.ts b/packages/x-charts-pro/src/Heatmap/plugin.ts index c6d7b42077af..52177f244abb 100644 --- a/packages/x-charts-pro/src/Heatmap/plugin.ts +++ b/packages/x-charts-pro/src/Heatmap/plugin.ts @@ -1,9 +1,9 @@ -import { ChartsPluginType } from '@mui/x-charts/models'; +import { ChartsPlugin } from '@mui/x-charts/internals'; import { getBaseExtremum } from './extremums'; import formatter from './formatter'; import getColor from './getColor'; -export const plugin: ChartsPluginType<'heatmap'> = { +export const plugin: ChartsPlugin<'heatmap'> = { seriesType: 'heatmap', seriesFormatter: formatter, colorProcessor: getColor, diff --git a/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx b/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx index ac228d7395aa..9b86a0394446 100644 --- a/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx +++ b/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx @@ -5,6 +5,8 @@ import { CartesianContext, CartesianContextProviderProps, cartesianProviderUtils, + useXExtremumGetter, + useYExtremumGetter, } from '@mui/x-charts/internals'; import { useZoom } from '../ZoomProvider/useZoom'; @@ -13,11 +15,13 @@ const { computeValue } = cartesianProviderUtils; export interface CartesianContextProviderProProps extends CartesianContextProviderProps {} function CartesianContextProviderPro(props: CartesianContextProviderProProps) { - const { xAxis, yAxis, dataset, xExtremumGetters, yExtremumGetters, children } = props; + const { xAxis, yAxis, dataset, children } = props; const formattedSeries = useSeries(); const drawingArea = useDrawingArea(); const { zoomData } = useZoom(); + const xExtremumGetters = useXExtremumGetter(); + const yExtremumGetters = useYExtremumGetter(); const xValues = React.useMemo( () => diff --git a/packages/x-charts/src/BarChart/BarPlot.tsx b/packages/x-charts/src/BarChart/BarPlot.tsx index 0fcec46bc62b..875644e4bcaf 100644 --- a/packages/x-charts/src/BarChart/BarPlot.tsx +++ b/packages/x-charts/src/BarChart/BarPlot.tsx @@ -4,7 +4,6 @@ import { useTransition } from '@react-spring/web'; import { useCartesianContext } from '../context/CartesianProvider'; import { BarElement, BarElementSlotProps, BarElementSlots } from './BarElement'; import { AxisDefaultized } from '../models/axis'; -import { FormatterResult } from '../models/seriesType/config'; import { BarItemIdentifier } from '../models'; import getColor from './getColor'; import { useChartId } from '../hooks'; @@ -14,6 +13,7 @@ import { BarLabelItemProps, BarLabelSlotProps, BarLabelSlots } from './BarLabel/ import { BarLabelPlot } from './BarLabel/BarLabelPlot'; import { checkScaleErrors } from './checkScaleErrors'; import { useBarSeries } from '../hooks/useSeries'; +import { SeriesFormatterResult } from '../context/PluginProvider'; /** * Solution of the equations @@ -88,7 +88,7 @@ const useAggregatedData = (): { } => { const seriesData = useBarSeries() ?? - ({ series: {}, stackingGroups: [], seriesOrder: [] } as FormatterResult<'bar'>); + ({ series: {}, stackingGroups: [], seriesOrder: [] } as SeriesFormatterResult<'bar'>); const axisData = useCartesianContext(); const chartId = useChartId(); diff --git a/packages/x-charts/src/BarChart/extremums.test.ts b/packages/x-charts/src/BarChart/extremums.test.ts index 00942ffad552..6222d82357e8 100644 --- a/packages/x-charts/src/BarChart/extremums.test.ts +++ b/packages/x-charts/src/BarChart/extremums.test.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { getExtremumX } from './extremums'; -import { ExtremumGetter } from '../models/seriesType/config'; +import { ExtremumGetter } from '../context/PluginProvider'; const buildData = ( data: number[], diff --git a/packages/x-charts/src/BarChart/extremums.ts b/packages/x-charts/src/BarChart/extremums.ts index 19a1913290dc..d6fb3f2e79d9 100644 --- a/packages/x-charts/src/BarChart/extremums.ts +++ b/packages/x-charts/src/BarChart/extremums.ts @@ -1,4 +1,7 @@ -import { ExtremumGetter, ExtremumGetterResult } from '../models/seriesType/config'; +import { + ExtremumGetter, + ExtremumGetterResult, +} from '../context/PluginProvider/ExtremumGetter.types'; const getBaseExtremum: ExtremumGetter<'bar'> = (params) => { const { axis } = params; diff --git a/packages/x-charts/src/BarChart/formatter.ts b/packages/x-charts/src/BarChart/formatter.ts index 3fd9f07ae17c..35d2cb3ae7e3 100644 --- a/packages/x-charts/src/BarChart/formatter.ts +++ b/packages/x-charts/src/BarChart/formatter.ts @@ -1,20 +1,16 @@ import { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape'; import { getStackingGroups } from '../internals/stackSeries'; -import { - ChartSeries, - DatasetElementType, - DatasetType, - Formatter, -} from '../models/seriesType/config'; +import { ChartSeries, DatasetElementType, DatasetType } from '../models/seriesType/config'; import { defaultizeValueFormatter } from '../internals/defaultizeValueFormatter'; import { DefaultizedProps } from '../models/helpers'; import { SeriesId } from '../models/seriesType/common'; +import { SeriesFormatter } from '../context/PluginProvider/SeriesFormatter.types'; let warnOnce = false; type BarDataset = DatasetType; -const formatter: Formatter<'bar'> = (params, dataset) => { +const formatter: SeriesFormatter<'bar'> = (params, dataset) => { const { seriesOrder, series } = params; const stackingGroups = getStackingGroups(params); diff --git a/packages/x-charts/src/BarChart/getColor.ts b/packages/x-charts/src/BarChart/getColor.ts index ccb8beb2ea23..c656a49dd36f 100644 --- a/packages/x-charts/src/BarChart/getColor.ts +++ b/packages/x-charts/src/BarChart/getColor.ts @@ -1,11 +1,6 @@ -import { AxisDefaultized } from '../models/axis'; -import { DefaultizedBarSeriesType } from '../models/seriesType/bar'; +import { ColorProcessor } from '../context/PluginProvider/ColorProcessor.types'; -export default function getColor( - series: DefaultizedBarSeriesType, - xAxis?: AxisDefaultized, - yAxis?: AxisDefaultized, -) { +const getColor: ColorProcessor<'bar'> = (series, xAxis, yAxis) => { const verticalLayout = series.layout === 'vertical'; const bandColorScale = verticalLayout ? xAxis?.colorScale : yAxis?.colorScale; @@ -33,4 +28,6 @@ export default function getColor( }; } return () => series.color; -} +}; + +export default getColor; diff --git a/packages/x-charts/src/BarChart/legend.ts b/packages/x-charts/src/BarChart/legend.ts index 905bd103d381..6098786b5c55 100644 --- a/packages/x-charts/src/BarChart/legend.ts +++ b/packages/x-charts/src/BarChart/legend.ts @@ -1,6 +1,6 @@ import { LegendItemParams } from '../ChartsLegend/chartsLegend.types'; +import { LegendGetter } from '../context/PluginProvider'; import { getLabel } from '../internals/getLabel'; -import { LegendGetter } from '../models/seriesType/config'; const legendGetter: LegendGetter<'bar'> = (params) => { const { seriesOrder, series } = params; diff --git a/packages/x-charts/src/BarChart/plugin.ts b/packages/x-charts/src/BarChart/plugin.ts index 1527621c8026..c719e66c5a8d 100644 --- a/packages/x-charts/src/BarChart/plugin.ts +++ b/packages/x-charts/src/BarChart/plugin.ts @@ -1,9 +1,9 @@ -import { ChartsPluginType } from '../models/plugin'; +import type { ChartsPlugin } from '../context/PluginProvider'; import { getExtremumX, getExtremumY } from './extremums'; import formatter from './formatter'; import getColor from './getColor'; -export const plugin: ChartsPluginType<'bar'> = { +export const plugin: ChartsPlugin<'bar'> = { seriesType: 'bar', seriesFormatter: formatter, colorProcessor: getColor, diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index 2d5555891a35..786bf90b345d 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { DrawingProvider, DrawingProviderProps } from '../context/DrawingProvider'; import { SeriesProvider, SeriesProviderProps } from '../context/SeriesProvider'; import { InteractionProvider } from '../context/InteractionProvider'; -import { ColorProvider } from '../context/ColorProvider'; import { ChartsSurface, ChartsSurfaceProps } from '../ChartsSurface'; import { CartesianContextProvider, @@ -16,8 +15,7 @@ import { ZAxisContextProvider, ZAxisContextProviderProps, } from '../context'; -import { ChartsPluginType } from '../models/plugin'; -import { ChartSeriesType } from '../models/seriesType/config'; +import { PluginProvider, PluginProviderProps } from '../context/PluginProvider'; import { useChartContainerProps } from './useChartContainerProps'; import { AxisConfig, ChartsXAxisProps, ChartsYAxisProps, ScaleName } from '../models/axis'; import { MakeOptional } from '../models/helpers'; @@ -28,7 +26,8 @@ export type ChartContainerProps = Omit< Omit & Pick & ZAxisContextProviderProps & - HighlightedProviderProps, + HighlightedProviderProps & + PluginProviderProps, 'children' > & { /** @@ -44,28 +43,23 @@ export type ChartContainerProps = Omit< */ yAxis?: MakeOptional, 'id'>[]; children?: React.ReactNode; - /** - * An array of plugins defining how to preprocess data. - * If not provided, the container supports line, bar, scatter and pie charts. - */ - plugins?: ChartsPluginType[]; }; const ChartContainer = React.forwardRef(function ChartContainer(props: ChartContainerProps, ref) { const { children, drawingProviderProps, - colorProviderProps, seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, + pluginProviderProps, } = useChartContainerProps(props, ref); return ( - + @@ -80,7 +74,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont - + ); }); diff --git a/packages/x-charts/src/ChartContainer/defaultPlugins.ts b/packages/x-charts/src/ChartContainer/defaultPlugins.ts deleted file mode 100644 index c14585c0d6b5..000000000000 --- a/packages/x-charts/src/ChartContainer/defaultPlugins.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { plugin as barPlugin } from '../BarChart/plugin'; -import { plugin as scatterPlugin } from '../ScatterChart/plugin'; -import { plugin as linePlugin } from '../LineChart/plugin'; -import { plugin as piePlugin } from '../PieChart/plugin'; -import { ChartsPluginType } from '../models'; - -export const defaultPlugins: ChartsPluginType<'bar' | 'scatter' | 'line' | 'pie'>[] = [ - barPlugin, - scatterPlugin, - linePlugin, - piePlugin, -]; diff --git a/packages/x-charts/src/ChartContainer/useChartContainerHooks.ts b/packages/x-charts/src/ChartContainer/useChartContainerHooks.ts deleted file mode 100644 index 7866295afec9..000000000000 --- a/packages/x-charts/src/ChartContainer/useChartContainerHooks.ts +++ /dev/null @@ -1,27 +0,0 @@ -import useForkRef from '@mui/utils/useForkRef'; -import * as React from 'react'; -import { usePluginsMerge } from './usePluginsMerge'; -import { useReducedMotion } from '../hooks/useReducedMotion'; -import { ChartsPluginType } from '../models'; -import { ChartSeriesType } from '../models/seriesType/config'; - -export const useChartContainerHooks = ( - ref: React.ForwardedRef | null, - plugins?: ChartsPluginType[], -) => { - const svgRef = React.useRef(null); - const chartSurfaceRef = useForkRef(ref, svgRef); - - const { xExtremumGetters, yExtremumGetters, seriesFormatters, colorProcessors } = - usePluginsMerge(plugins); - useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion) - - return { - svgRef, - chartSurfaceRef, - xExtremumGetters, - yExtremumGetters, - seriesFormatters, - colorProcessors, - }; -}; diff --git a/packages/x-charts/src/ChartContainer/useChartContainerProps.ts b/packages/x-charts/src/ChartContainer/useChartContainerProps.ts index b25c480bebef..6b44c62859f0 100644 --- a/packages/x-charts/src/ChartContainer/useChartContainerProps.ts +++ b/packages/x-charts/src/ChartContainer/useChartContainerProps.ts @@ -1,13 +1,15 @@ +import * as React from 'react'; +import useForkRef from '@mui/utils/useForkRef'; import type { DrawingProviderProps } from '../context/DrawingProvider'; -import type { ColorProviderProps } from '../context/ColorProvider'; import type { CartesianContextProviderProps } from '../context/CartesianProvider'; import type { SeriesProviderProps } from '../context/SeriesProvider'; import type { ZAxisContextProviderProps } from '../context/ZAxisContextProvider'; import type { ChartContainerProps } from './ChartContainer'; -import { useChartContainerHooks } from './useChartContainerHooks'; import { HighlightedProviderProps } from '../context'; import { ChartsSurfaceProps } from '../ChartsSurface'; import { useDefaultizeAxis } from './useDefaultizeAxis'; +import { PluginProviderProps } from '../context/PluginProvider'; +import { useReducedMotion } from '../hooks/useReducedMotion'; export const useChartContainerProps = ( props: ChartContainerProps, @@ -33,15 +35,10 @@ export const useChartContainerProps = ( children, ...other } = props; + const svgRef = React.useRef(null); + const chartSurfaceRef = useForkRef(ref, svgRef); - const { - svgRef, - chartSurfaceRef, - xExtremumGetters, - yExtremumGetters, - seriesFormatters, - colorProcessors, - } = useChartContainerHooks(ref, plugins); + useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion) const [defaultizedXAxis, defaultizedYAxis] = useDefaultizeAxis(xAxis, yAxis); @@ -52,23 +49,20 @@ export const useChartContainerProps = ( svgRef, }; - const colorProviderProps: Omit = { - colorProcessors, + const pluginProviderProps: Omit = { + plugins, }; const seriesProviderProps: Omit = { series, colors, dataset, - seriesFormatters, }; const cartesianContextProps: Omit = { xAxis: defaultizedXAxis, yAxis: defaultizedYAxis, dataset, - xExtremumGetters, - yExtremumGetters, }; const zAxisContextProps: Omit = { @@ -95,12 +89,12 @@ export const useChartContainerProps = ( return { children, drawingProviderProps, - colorProviderProps, seriesProviderProps, cartesianContextProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, + pluginProviderProps, xAxis: defaultizedXAxis, yAxis: defaultizedYAxis, }; diff --git a/packages/x-charts/src/ChartContainer/usePluginsMerge.ts b/packages/x-charts/src/ChartContainer/usePluginsMerge.ts deleted file mode 100644 index 66d9034424b3..000000000000 --- a/packages/x-charts/src/ChartContainer/usePluginsMerge.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as React from 'react'; -import { ChartsPluginType, ColorProcessorsConfig, ExtremumGettersConfig } from '../models'; -import { ChartSeriesType } from '../models/seriesType/config'; -import { SeriesFormatterConfig } from '../context/SeriesProvider'; -import { defaultPlugins } from './defaultPlugins'; - -export function usePluginsMerge(plugins?: ChartsPluginType[]) { - const defaultizedPlugins = plugins ?? defaultPlugins; - - return React.useMemo(() => { - const seriesFormatters: SeriesFormatterConfig = {}; - const colorProcessors: ColorProcessorsConfig = {}; - const xExtremumGetters: ExtremumGettersConfig = {}; - const yExtremumGetters: ExtremumGettersConfig = {}; - - for (let i = 0; i < defaultizedPlugins.length; i += 1) { - const plugin = defaultizedPlugins[i]; - - // To remove those any we will need to solve this union discrimination issue: - // https://www.typescriptlang.org/play/?#code/FDAuE8AcFMAIDkCuBbARtATgYQPYDsAzASwHNYBeWAb2FlgGsi8ATALlgHI8V0MOBuWrBwwMAQ1A4M7ABQAPdtzSYAlBQB8sJb0EBfEBBiwAyqAxMSuQqQrUhjFuw4BnMxYFCRmCVNkLYruZ4JGrkmoEWeiAAxviuWqhWxCTsSMrY+Mm2VAxMbLAARNqYBQA0wqI+0rByGrAATLAAVDWw+rF48YFJpOymQZaZNpQ5DvkFEcFlFd6S1bVhsAAG9S0AJFRyukttMXGgsB3JzrYA2niJQyTl3VcAugZQcADylXPOALJikJAW2ULFDAAflSPEwPRIpw4XnEcw4d1KQkmJBBJjcwQhUJhVXhiN0gmAHXi2LmXx+FnYr1mUk+31+wWy+JABCksBkABtoAcjjYcARDldnGoaCA6AB6MWwADqUnoJxw9FgRH5AHc4L9ooroGJogALQ5iZxwPJEABuRGYiDE7PASJVRFAerZPJIADoxsKhHRooa4FwwXxWF66DNYVIyfTIS73Xk7rZoySpIIQyHUBhtfRkyGfUbOMiOEGU3RExgIxZTtGxnHKAm3kng8xoAQxIh2aBC0W0xms-pvftqLkWOUS2141chBLYABJDimuB4HBKxtiWBiVA4RAHXU4FWwSSwTkHAAqxlgiBYmFcYhYAusbrGq5vtepGFX6YPTHo0GYnjrpbp5ZVrYJZ6EAA - seriesFormatters[plugin.seriesType] = plugin.seriesFormatter as any; - - colorProcessors[plugin.seriesType] = plugin.colorProcessor as any; - - if (plugin.xExtremumGetter) { - xExtremumGetters[plugin.seriesType] = plugin.xExtremumGetter as any; - } - - if (plugin.yExtremumGetter) { - yExtremumGetters[plugin.seriesType] = plugin.yExtremumGetter as any; - } - } - return { - seriesFormatters, - colorProcessors, - xExtremumGetters, - yExtremumGetters, - }; - }, [defaultizedPlugins]); -} diff --git a/packages/x-charts/src/ChartsLegend/utils.ts b/packages/x-charts/src/ChartsLegend/utils.ts index 304831f9062a..0e4e0bf973c8 100644 --- a/packages/x-charts/src/ChartsLegend/utils.ts +++ b/packages/x-charts/src/ChartsLegend/utils.ts @@ -1,5 +1,7 @@ import { FormattedSeries } from '../context/SeriesProvider'; -import { ChartSeriesType, LegendGetter } from '../models/seriesType/config'; +import { ChartSeriesType } from '../models/seriesType/config'; +import { LegendGetter } from '../context/PluginProvider'; + import getBarLegend from '../BarChart/legend'; import getScatterLegend from '../ScatterChart/legend'; import getLineLegend from '../LineChart/legend'; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 961191227c49..874d00f3ca35 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -8,7 +8,7 @@ import { AxisDefaultized } from '../models/axis'; import { ChartsTooltipClasses } from './chartsTooltipClasses'; import { DefaultChartsAxisTooltipContent } from './DefaultChartsAxisTooltipContent'; import { ZAxisContext } from '../context/ZAxisContextProvider'; -import { useColorProcessor } from '../hooks/useColor'; +import { useColorProcessor } from '../context/PluginProvider/useColorProcessor'; import { isCartesianSeriesType } from '../internals/isCartesian'; import { useSeries } from '../hooks/useSeries'; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx index 65c8dbe0c652..54c7fd602f2e 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsItemTooltipContent.tsx @@ -7,7 +7,7 @@ import { ChartsTooltipClasses } from './chartsTooltipClasses'; import { DefaultChartsItemTooltipContent } from './DefaultChartsItemTooltipContent'; import { useCartesianContext } from '../context/CartesianProvider'; import { ZAxisContext } from '../context/ZAxisContextProvider'; -import { useColorProcessor } from '../hooks/useColor'; +import { useColorProcessor } from '../context/PluginProvider/useColorProcessor'; import { useSeries } from '../hooks/useSeries'; export interface ChartsItemContentProps { diff --git a/packages/x-charts/src/LineChart/extremums.ts b/packages/x-charts/src/LineChart/extremums.ts index 57c6ec6cd0b6..e913bc31c26b 100644 --- a/packages/x-charts/src/LineChart/extremums.ts +++ b/packages/x-charts/src/LineChart/extremums.ts @@ -1,4 +1,7 @@ -import { ExtremumGetter, ExtremumGetterResult } from '../models/seriesType/config'; +import { + ExtremumGetter, + ExtremumGetterResult, +} from '../context/PluginProvider/ExtremumGetter.types'; export const getExtremumX: ExtremumGetter<'line'> = (params) => { const { axis } = params; diff --git a/packages/x-charts/src/LineChart/formatter.test.ts b/packages/x-charts/src/LineChart/formatter.test.ts index 627ac7bfe491..fb12a5e406ce 100644 --- a/packages/x-charts/src/LineChart/formatter.test.ts +++ b/packages/x-charts/src/LineChart/formatter.test.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; -import { FormatterParams } from '../models/seriesType/config'; import lineFormatter from './formatter'; +import { SeriesFormatterParams } from '../context/PluginProvider'; const seriesOrder = ['id1']; -const seriesDataset: FormatterParams<'line'>['series'] = { +const seriesDataset: SeriesFormatterParams<'line'>['series'] = { id1: { // useless info type: 'line', diff --git a/packages/x-charts/src/LineChart/formatter.ts b/packages/x-charts/src/LineChart/formatter.ts index 32196d2e47e1..bf5261999f63 100644 --- a/packages/x-charts/src/LineChart/formatter.ts +++ b/packages/x-charts/src/LineChart/formatter.ts @@ -1,19 +1,15 @@ import { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape'; import { getStackingGroups } from '../internals/stackSeries'; -import { - ChartSeries, - DatasetElementType, - DatasetType, - Formatter, -} from '../models/seriesType/config'; +import { ChartSeries, DatasetElementType, DatasetType } from '../models/seriesType/config'; import { defaultizeValueFormatter } from '../internals/defaultizeValueFormatter'; import { DefaultizedProps } from '../models/helpers'; import { SeriesId } from '../models/seriesType/common'; +import { SeriesFormatter } from '../context/PluginProvider/SeriesFormatter.types'; let warnedOnce = false; // For now it's a copy past of bar charts formatter, but maybe will diverge later -const formatter: Formatter<'line'> = (params, dataset) => { +const formatter: SeriesFormatter<'line'> = (params, dataset) => { const { seriesOrder, series } = params; const stackingGroups = getStackingGroups({ ...params, defaultStrategy: { stackOffset: 'none' } }); diff --git a/packages/x-charts/src/LineChart/getColor.ts b/packages/x-charts/src/LineChart/getColor.ts index 07207a177cf9..7fe1d08b81fe 100644 --- a/packages/x-charts/src/LineChart/getColor.ts +++ b/packages/x-charts/src/LineChart/getColor.ts @@ -1,11 +1,6 @@ -import { AxisDefaultized } from '../models/axis'; -import { DefaultizedLineSeriesType } from '../models/seriesType/line'; +import { ColorProcessor } from '../context/PluginProvider/ColorProcessor.types'; -export default function getColor( - series: DefaultizedLineSeriesType, - xAxis?: AxisDefaultized, - yAxis?: AxisDefaultized, -) { +const getColor: ColorProcessor<'line'> = (series, xAxis, yAxis) => { const yColorScale = yAxis?.colorScale; const xColorScale = xAxis?.colorScale; @@ -31,4 +26,6 @@ export default function getColor( } return () => series.color; -} +}; + +export default getColor; diff --git a/packages/x-charts/src/LineChart/legend.ts b/packages/x-charts/src/LineChart/legend.ts index 06b3323fe0c3..99038fee1a3c 100644 --- a/packages/x-charts/src/LineChart/legend.ts +++ b/packages/x-charts/src/LineChart/legend.ts @@ -1,6 +1,6 @@ import { LegendItemParams } from '../ChartsLegend/chartsLegend.types'; import { getLabel } from '../internals/getLabel'; -import { LegendGetter } from '../models/seriesType/config'; +import { LegendGetter } from '../context/PluginProvider'; const legendGetter: LegendGetter<'line'> = (params) => { const { seriesOrder, series } = params; diff --git a/packages/x-charts/src/LineChart/plugin.ts b/packages/x-charts/src/LineChart/plugin.ts index bc799c54b1ec..8acf2ee73da9 100644 --- a/packages/x-charts/src/LineChart/plugin.ts +++ b/packages/x-charts/src/LineChart/plugin.ts @@ -1,9 +1,9 @@ -import { ChartsPluginType } from '../models/plugin'; +import type { ChartsPlugin } from '../context/PluginProvider'; import { getExtremumX, getExtremumY } from './extremums'; import formatter from './formatter'; import getColor from './getColor'; -export const plugin: ChartsPluginType<'line'> = { +export const plugin: ChartsPlugin<'line'> = { seriesType: 'line', colorProcessor: getColor, seriesFormatter: formatter, diff --git a/packages/x-charts/src/PieChart/formatter.ts b/packages/x-charts/src/PieChart/formatter.ts index 5e7467c56b0c..a8c46b2e369b 100644 --- a/packages/x-charts/src/PieChart/formatter.ts +++ b/packages/x-charts/src/PieChart/formatter.ts @@ -1,8 +1,9 @@ import { pie as d3Pie } from '@mui/x-charts-vendor/d3-shape'; -import { ChartSeriesDefaultized, Formatter } from '../models/seriesType/config'; +import { ChartSeriesDefaultized } from '../models/seriesType/config'; import { ChartsPieSorting, PieValueType } from '../models/seriesType/pie'; import { SeriesId } from '../models/seriesType/common'; import { getLabel } from '../internals/getLabel'; +import { SeriesFormatter } from '../context/PluginProvider/SeriesFormatter.types'; const getSortingComparator = (comparator: ChartsPieSorting = 'none') => { if (typeof comparator === 'function') { @@ -20,7 +21,7 @@ const getSortingComparator = (comparator: ChartsPieSorting = 'none') => { } }; -const formatter: Formatter<'pie'> = (params) => { +const formatter: SeriesFormatter<'pie'> = (params) => { const { seriesOrder, series } = params; const defaultizedSeries: Record> = {}; diff --git a/packages/x-charts/src/PieChart/getColor.ts b/packages/x-charts/src/PieChart/getColor.ts index 937bd6d45407..d66320a4e00c 100644 --- a/packages/x-charts/src/PieChart/getColor.ts +++ b/packages/x-charts/src/PieChart/getColor.ts @@ -1,7 +1,9 @@ -import { DefaultizedPieSeriesType } from '../models/seriesType/pie'; +import { ColorProcessor } from '../context/PluginProvider/ColorProcessor.types'; -export default function getColor(series: DefaultizedPieSeriesType) { +const getColor: ColorProcessor<'pie'> = (series) => { return (dataIndex: number) => { return series.data[dataIndex].color; }; -} +}; + +export default getColor; diff --git a/packages/x-charts/src/PieChart/legend.ts b/packages/x-charts/src/PieChart/legend.ts index 0308138b7a9a..a3c90e5df464 100644 --- a/packages/x-charts/src/PieChart/legend.ts +++ b/packages/x-charts/src/PieChart/legend.ts @@ -1,6 +1,6 @@ import { LegendItemParams } from '../ChartsLegend/chartsLegend.types'; import { getLabel } from '../internals/getLabel'; -import { LegendGetter } from '../models/seriesType/config'; +import { LegendGetter } from '../context/PluginProvider'; const legendGetter: LegendGetter<'pie'> = (params) => { const { seriesOrder, series } = params; diff --git a/packages/x-charts/src/PieChart/plugin.ts b/packages/x-charts/src/PieChart/plugin.ts index 53962ded6764..8b4104ef9bc1 100644 --- a/packages/x-charts/src/PieChart/plugin.ts +++ b/packages/x-charts/src/PieChart/plugin.ts @@ -1,8 +1,8 @@ -import { ChartsPluginType } from '../models/plugin'; +import type { ChartsPlugin } from '../context/PluginProvider'; import formatter from './formatter'; import getColor from './getColor'; -export const plugin: ChartsPluginType<'pie'> = { +export const plugin: ChartsPlugin<'pie'> = { seriesType: 'pie', colorProcessor: getColor, seriesFormatter: formatter, diff --git a/packages/x-charts/src/ScatterChart/extremums.ts b/packages/x-charts/src/ScatterChart/extremums.ts index 8f0a5e0d6686..e63cad1b03b1 100644 --- a/packages/x-charts/src/ScatterChart/extremums.ts +++ b/packages/x-charts/src/ScatterChart/extremums.ts @@ -1,4 +1,7 @@ -import { ExtremumGetter, ExtremumGetterResult } from '../models/seriesType/config'; +import { + ExtremumGetter, + ExtremumGetterResult, +} from '../context/PluginProvider/ExtremumGetter.types'; const mergeMinMax = ( acc: ExtremumGetterResult, diff --git a/packages/x-charts/src/ScatterChart/formatter.ts b/packages/x-charts/src/ScatterChart/formatter.ts index 4f212f9afa8e..671b8fc4353d 100644 --- a/packages/x-charts/src/ScatterChart/formatter.ts +++ b/packages/x-charts/src/ScatterChart/formatter.ts @@ -1,7 +1,7 @@ import { defaultizeValueFormatter } from '../internals/defaultizeValueFormatter'; -import { Formatter } from '../models/seriesType/config'; +import { SeriesFormatter } from '../context/PluginProvider/SeriesFormatter.types'; -const formatter: Formatter<'scatter'> = ({ series, seriesOrder }) => { +const formatter: SeriesFormatter<'scatter'> = ({ series, seriesOrder }) => { return { series: defaultizeValueFormatter(series, (v) => `(${v.x}, ${v.y})`), seriesOrder, diff --git a/packages/x-charts/src/ScatterChart/getColor.ts b/packages/x-charts/src/ScatterChart/getColor.ts index 273a8b37c704..37b702d2875b 100644 --- a/packages/x-charts/src/ScatterChart/getColor.ts +++ b/packages/x-charts/src/ScatterChart/getColor.ts @@ -1,13 +1,6 @@ -import { AxisDefaultized } from '../models/axis'; -import { ZAxisDefaultized } from '../models/z-axis'; -import { DefaultizedScatterSeriesType } from '../models/seriesType/scatter'; +import { ColorProcessor } from '../context/PluginProvider/ColorProcessor.types'; -export default function getColor( - series: DefaultizedScatterSeriesType, - xAxis?: AxisDefaultized, - yAxis?: AxisDefaultized, - zAxis?: ZAxisDefaultized, -) { +const getColor: ColorProcessor<'scatter'> = (series, xAxis, yAxis, zAxis) => { const zColorScale = zAxis?.colorScale; const yColorScale = yAxis?.colorScale; const xColorScale = xAxis?.colorScale; @@ -50,4 +43,6 @@ export default function getColor( } return () => series.color; -} +}; + +export default getColor; diff --git a/packages/x-charts/src/ScatterChart/legend.ts b/packages/x-charts/src/ScatterChart/legend.ts index fc4fbfdabc20..5e60c7db3644 100644 --- a/packages/x-charts/src/ScatterChart/legend.ts +++ b/packages/x-charts/src/ScatterChart/legend.ts @@ -1,6 +1,6 @@ import { LegendItemParams } from '../ChartsLegend/chartsLegend.types'; import { getLabel } from '../internals/getLabel'; -import { LegendGetter } from '../models/seriesType/config'; +import { LegendGetter } from '../context/PluginProvider'; const legendGetter: LegendGetter<'scatter'> = (params) => { const { seriesOrder, series } = params; diff --git a/packages/x-charts/src/ScatterChart/plugin.ts b/packages/x-charts/src/ScatterChart/plugin.ts index ca77573981a1..84bf6a862076 100644 --- a/packages/x-charts/src/ScatterChart/plugin.ts +++ b/packages/x-charts/src/ScatterChart/plugin.ts @@ -1,9 +1,9 @@ -import { ChartsPluginType } from '../models/plugin'; +import type { ChartsPlugin } from '../context/PluginProvider'; import { getExtremumX, getExtremumY } from './extremums'; import formatter from './formatter'; import getColor from './getColor'; -export const plugin: ChartsPluginType<'scatter'> = { +export const plugin: ChartsPlugin<'scatter'> = { seriesType: 'scatter', seriesFormatter: formatter, colorProcessor: getColor, diff --git a/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx b/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx index 10b509ffe3f0..52e8c38cac93 100644 --- a/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx +++ b/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx @@ -5,7 +5,8 @@ import { useDrawingArea } from '../../hooks/useDrawingArea'; import { useSeries } from '../../hooks/useSeries'; import { CartesianContext } from './CartesianContext'; import { computeValue } from './computeValue'; -import { ExtremumGettersConfig } from '../../models'; +import { useXExtremumGetter } from '../PluginProvider/useXExtremumGetter'; +import { useYExtremumGetter } from '../PluginProvider'; export type CartesianContextProviderProps = { /** @@ -24,22 +25,16 @@ export type CartesianContextProviderProps = { * An array of objects that can be used to populate series and axes data using their `dataKey` property. */ dataset?: DatasetType; - /** - * An object with x-axis extremum getters per series type. - */ - xExtremumGetters: ExtremumGettersConfig; - /** - * An object with y-axis extremum getters per series type. - */ - yExtremumGetters: ExtremumGettersConfig; children: React.ReactNode; }; function CartesianContextProvider(props: CartesianContextProviderProps) { - const { xAxis, yAxis, dataset, xExtremumGetters, yExtremumGetters, children } = props; + const { xAxis, yAxis, dataset, children } = props; const formattedSeries = useSeries(); const drawingArea = useDrawingArea(); + const xExtremumGetters = useXExtremumGetter(); + const yExtremumGetters = useYExtremumGetter(); const xValues = React.useMemo( () => diff --git a/packages/x-charts/src/context/CartesianProvider/computeValue.ts b/packages/x-charts/src/context/CartesianProvider/computeValue.ts index ab0ee067fbee..4b8645c185de 100644 --- a/packages/x-charts/src/context/CartesianProvider/computeValue.ts +++ b/packages/x-charts/src/context/CartesianProvider/computeValue.ts @@ -8,11 +8,7 @@ import { isPointScaleConfig, AxisId, } from '../../models/axis'; -import { - CartesianChartSeriesType, - DatasetType, - ExtremumGetter, -} from '../../models/seriesType/config'; +import { CartesianChartSeriesType, DatasetType } from '../../models/seriesType/config'; import { DefaultizedAxisConfig } from './CartesianContext'; import { getColorScale, getOrdinalColorScale } from '../../internals/colorScale'; import { getTickNumber } from '../../hooks/useTicks'; @@ -21,6 +17,7 @@ import { DrawingArea } from '../DrawingProvider'; import { FormattedSeries } from '../SeriesProvider'; import { getAxisExtremum } from './getAxisExtremum'; import { normalizeAxis } from './normalizeAxis'; +import { ExtremumGetter } from '../PluginProvider'; const getRange = (drawingArea: DrawingArea, axisDirection: 'x' | 'y', isReverse?: boolean) => { const range = diff --git a/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts b/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts index bcfcfb36cd7d..be7839633c47 100644 --- a/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts +++ b/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts @@ -1,6 +1,7 @@ -import { AxisConfig, ExtremumGettersConfig } from '../../models'; -import { CartesianChartSeriesType, ExtremumGetterResult } from '../../models/seriesType/config'; +import { AxisConfig } from '../../models'; +import { CartesianChartSeriesType } from '../../models/seriesType/config'; import { FormattedSeries } from '../SeriesProvider'; +import { ExtremumGettersConfig, ExtremumGetterResult } from '../PluginProvider'; const axisExtremumCallback = ( acc: ExtremumGetterResult, diff --git a/packages/x-charts/src/context/ColorProvider.tsx b/packages/x-charts/src/context/ColorProvider.tsx deleted file mode 100644 index e7061912c086..000000000000 --- a/packages/x-charts/src/context/ColorProvider.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from 'react'; -import { ColorProcessorsConfig } from '../models'; -import { ChartSeriesType } from '../models/seriesType/config'; - -export interface ColorProviderProps { - children: React.ReactNode; - /** - * A mapping defining for each series type how to get item colors. - */ - colorProcessors: ColorProcessorsConfig; -} -export const ColorContext = React.createContext({}); - -if (process.env.NODE_ENV !== 'production') { - ColorContext.displayName = 'ColorContext'; -} - -export function ColorProvider(props: ColorProviderProps) { - const { colorProcessors, children } = props; - - return {children}; -} diff --git a/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx b/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx index 3008b3a3801d..ac69895cf5e7 100644 --- a/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx +++ b/packages/x-charts/src/context/HighlightedProvider/useHighlighted.test.tsx @@ -4,6 +4,7 @@ import { ErrorBoundary, createRenderer } from '@mui/internal-test-utils'; import { useHighlighted } from './useHighlighted'; import { HighlightedProvider } from './HighlightedProvider'; import { SeriesProvider } from '../SeriesProvider'; +import { PluginProvider } from '../PluginProvider'; function UseHighlighted() { const { highlightedItem } = useHighlighted(); @@ -42,11 +43,13 @@ describe('useHighlighted', () => { it('should not throw an error when parent context is present', () => { const { getByText } = render( - - - - - , + + + + + + + , ); expect(getByText('test-id')).toBeVisible(); diff --git a/packages/x-charts/src/context/PluginProvider/ColorProcessor.types.ts b/packages/x-charts/src/context/PluginProvider/ColorProcessor.types.ts new file mode 100644 index 000000000000..d33778d9d556 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/ColorProcessor.types.ts @@ -0,0 +1,15 @@ +import type { AxisDefaultized } from '../../models/axis'; +import type { DefaultizedSeriesType } from '../../models/seriesType'; +import type { ZAxisDefaultized } from '../../models/z-axis'; +import type { ChartSeriesType } from '../../models/seriesType/config'; + +export type ColorProcessor = ( + series: DefaultizedSeriesType, + xAxis?: AxisDefaultized, + yAxis?: AxisDefaultized, + zAxis?: ZAxisDefaultized, +) => (dataIndex: number) => string; + +export type ColorProcessorsConfig = { + [Key in T]?: ColorProcessor; +}; diff --git a/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts b/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts new file mode 100644 index 000000000000..a1cda8d39331 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts @@ -0,0 +1,23 @@ +import type { + CartesianChartSeriesType, + ChartSeries, + ChartSeriesType, +} from '../../models/seriesType/config'; +import type { AxisConfig } from '../../models/axis'; +import type { SeriesId } from '../../models/seriesType/common'; + +export type ExtremumGettersConfig = { + [K in T]?: ExtremumGetter; +}; + +type ExtremumGetterParams = { + series: Record>; + axis: AxisConfig; + isDefaultAxis: boolean; +}; + +export type ExtremumGetterResult = [number, number] | [null, null]; + +export type ExtremumGetter = ( + params: ExtremumGetterParams, +) => ExtremumGetterResult; diff --git a/packages/x-charts/src/context/PluginProvider/Plugin.types.ts b/packages/x-charts/src/context/PluginProvider/Plugin.types.ts new file mode 100644 index 000000000000..d175ba511cde --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/Plugin.types.ts @@ -0,0 +1,30 @@ +import type { ChartSeriesType } from '../../models/seriesType/config'; +import type { ColorProcessor, ColorProcessorsConfig } from './ColorProcessor.types'; +import type { ExtremumGetter, ExtremumGettersConfig } from './ExtremumGetter.types'; +import type { SeriesFormatter, SeriesFormatterConfig } from './SeriesFormatter.types'; + +export type PluginProviderProps = { + /** + * An array of plugins defining how to preprocess data. + * If not provided, the container supports line, bar, scatter and pie charts. + */ + plugins?: ChartsPlugin[]; + children: React.ReactNode; +}; + +export type PluginContextState = { + seriesFormatters: SeriesFormatterConfig; + colorProcessors: ColorProcessorsConfig; + xExtremumGetters: ExtremumGettersConfig; + yExtremumGetters: ExtremumGettersConfig; +}; + +export type ChartsPlugin = T extends ChartSeriesType + ? { + seriesType: T; + seriesFormatter: SeriesFormatter; + colorProcessor: ColorProcessor; + xExtremumGetter?: ExtremumGetter; + yExtremumGetter?: ExtremumGetter; + } + : never; diff --git a/packages/x-charts/src/context/PluginProvider/PluginContext.ts b/packages/x-charts/src/context/PluginProvider/PluginContext.ts new file mode 100644 index 000000000000..5cce0406b858 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/PluginContext.ts @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { Initializable } from '../context.types'; +import { PluginContextState } from './Plugin.types'; + +export const PluginContext = React.createContext>({ + isInitialized: false, + data: { + colorProcessors: {}, + seriesFormatters: {}, + xExtremumGetters: {}, + yExtremumGetters: {}, + }, +}); + +if (process.env.NODE_ENV !== 'production') { + PluginContext.displayName = 'PluginContext'; +} diff --git a/packages/x-charts/src/context/PluginProvider/PluginProvider.tsx b/packages/x-charts/src/context/PluginProvider/PluginProvider.tsx new file mode 100644 index 000000000000..a9b860eb45b7 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/PluginProvider.tsx @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { PluginProviderProps } from './Plugin.types'; +import { PluginContext } from './PluginContext'; +import { mergePlugins } from './mergePlugins'; + +function PluginProvider(props: PluginProviderProps) { + const { children, plugins } = props; + + const formattedSeries = React.useMemo( + () => ({ + isInitialized: true, + data: mergePlugins(plugins), + }), + [plugins], + ); + + return {children}; +} + +export { PluginProvider }; diff --git a/packages/x-charts/src/context/PluginProvider/SeriesFormatter.types.ts b/packages/x-charts/src/context/PluginProvider/SeriesFormatter.types.ts new file mode 100644 index 000000000000..6462da81a53b --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/SeriesFormatter.types.ts @@ -0,0 +1,37 @@ +import type { + ChartSeriesDefaultized, + ChartSeriesType, + ChartsSeriesConfig, + DatasetType, +} from '../../models/seriesType/config'; +import type { SeriesId } from '../../models/seriesType/common'; +import type { StackingGroupsType } from '../../internals/stackSeries'; +import type { LegendItemParams } from '../../ChartsLegend/chartsLegend.types'; + +export type SeriesFormatterParams = { + series: Record; + seriesOrder: SeriesId[]; +}; + +export type SeriesFormatterResult = { + series: Record>; + seriesOrder: SeriesId[]; +} & (ChartsSeriesConfig[T] extends { + canBeStacked: true; +} + ? { stackingGroups: StackingGroupsType } + : {}); + +export type SeriesFormatter = ( + params: SeriesFormatterParams, + dataset?: DatasetType, +) => SeriesFormatterResult; + +export type LegendGetter = ( + series: SeriesFormatterResult, +) => LegendItemParams[]; + +export type SeriesFormatterConfig = { + // TODO replace the function type by Formatter + [K in T]?: (series: SeriesFormatterParams, dataset?: DatasetType) => any; +}; diff --git a/packages/x-charts/src/context/PluginProvider/index.ts b/packages/x-charts/src/context/PluginProvider/index.ts new file mode 100644 index 000000000000..a23ee0a4db56 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/index.ts @@ -0,0 +1,10 @@ +export * from './PluginProvider'; +export * from './Plugin.types'; +export * from './PluginContext'; +export * from './ColorProcessor.types'; +export * from './SeriesFormatter.types'; +export * from './ExtremumGetter.types'; +export * from './useColorProcessor'; +export * from './useSeriesFormatter'; +export * from './useXExtremumGetter'; +export * from './useYExtremumGetter'; diff --git a/packages/x-charts/src/context/PluginProvider/mergePlugins.ts b/packages/x-charts/src/context/PluginProvider/mergePlugins.ts new file mode 100644 index 000000000000..676daef9c9bc --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/mergePlugins.ts @@ -0,0 +1,44 @@ +import { ChartsPlugin } from './Plugin.types'; +import { ChartSeriesType } from '../../models/seriesType/config'; +import { SeriesFormatter, SeriesFormatterConfig } from './SeriesFormatter.types'; +import { ColorProcessor, ColorProcessorsConfig } from './ColorProcessor.types'; +import { ExtremumGetter, ExtremumGettersConfig } from './ExtremumGetter.types'; +import { plugin as barPlugin } from '../../BarChart/plugin'; +import { plugin as scatterPlugin } from '../../ScatterChart/plugin'; +import { plugin as linePlugin } from '../../LineChart/plugin'; +import { plugin as piePlugin } from '../../PieChart/plugin'; + +export const defaultPlugins = [barPlugin, scatterPlugin, linePlugin, piePlugin]; + +export function mergePlugins(plugins?: ChartsPlugin[]) { + const defaultizedPlugins = plugins ?? defaultPlugins; + + const seriesFormatters: SeriesFormatterConfig = {}; + const colorProcessors: ColorProcessorsConfig = {}; + const xExtremumGetters: ExtremumGettersConfig = {}; + const yExtremumGetters: ExtremumGettersConfig = {}; + + for (let i = 0; i < defaultizedPlugins.length; i += 1) { + const plugin = defaultizedPlugins[i]; + const seriesType = plugin.seriesType; + + seriesFormatters[seriesType] = plugin.seriesFormatter as SeriesFormatter; + + colorProcessors[seriesType] = plugin.colorProcessor as ColorProcessor; + + if (plugin.xExtremumGetter) { + xExtremumGetters[seriesType] = plugin.xExtremumGetter as ExtremumGetter; + } + + if (plugin.yExtremumGetter) { + yExtremumGetters[seriesType] = plugin.yExtremumGetter as ExtremumGetter; + } + } + + return { + seriesFormatters, + colorProcessors, + xExtremumGetters, + yExtremumGetters, + }; +} diff --git a/packages/x-charts/src/context/PluginProvider/useColorProcessor.ts b/packages/x-charts/src/context/PluginProvider/useColorProcessor.ts new file mode 100644 index 000000000000..6ce085435928 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/useColorProcessor.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { ChartSeriesType } from '../../models/seriesType/config'; +import { PluginContext } from './PluginContext'; +import { ColorProcessorsConfig } from './ColorProcessor.types'; + +export function useColorProcessor( + seriesType: T, +): ColorProcessorsConfig[T]; +export function useColorProcessor(): ColorProcessorsConfig; +export function useColorProcessor(seriesType?: ChartSeriesType) { + const { isInitialized, data } = React.useContext(PluginContext); + + if (!isInitialized) { + throw new Error( + [ + 'MUI X: Could not find the plugin context.', + 'It looks like you rendered your component outside of a ChartsContainer parent component.', + ].join('\n'), + ); + } + + if (!seriesType) { + return data.colorProcessors; + } + + return data.colorProcessors[seriesType]; +} diff --git a/packages/x-charts/src/context/PluginProvider/useSeriesFormatter.ts b/packages/x-charts/src/context/PluginProvider/useSeriesFormatter.ts new file mode 100644 index 000000000000..9185810ee176 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/useSeriesFormatter.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { ChartSeriesType } from '../../models/seriesType/config'; +import { PluginContext } from './PluginContext'; +import { SeriesFormatterConfig } from './SeriesFormatter.types'; + +export function useSeriesFormatter( + seriesType: T, +): SeriesFormatterConfig[T]; +export function useSeriesFormatter(): SeriesFormatterConfig; +export function useSeriesFormatter(seriesType?: ChartSeriesType) { + const { isInitialized, data } = React.useContext(PluginContext); + + if (!isInitialized) { + throw new Error( + [ + 'MUI X: Could not find the plugin context.', + 'It looks like you rendered your component outside of a ChartsContainer parent component.', + ].join('\n'), + ); + } + + if (!seriesType) { + return data.seriesFormatters; + } + + return data.seriesFormatters[seriesType]; +} diff --git a/packages/x-charts/src/context/PluginProvider/useXExtremumGetter.ts b/packages/x-charts/src/context/PluginProvider/useXExtremumGetter.ts new file mode 100644 index 000000000000..f9b7f8a80d35 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/useXExtremumGetter.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { ChartSeriesType } from '../../models/seriesType/config'; +import { PluginContext } from './PluginContext'; +import { ExtremumGettersConfig } from './ExtremumGetter.types'; + +export function useXExtremumGetter( + seriesType: T, +): ExtremumGettersConfig[T]; +export function useXExtremumGetter(): ExtremumGettersConfig; +export function useXExtremumGetter(seriesType?: ChartSeriesType) { + const { isInitialized, data } = React.useContext(PluginContext); + + if (!isInitialized) { + throw new Error( + [ + 'MUI X: Could not find the plugin context.', + 'It looks like you rendered your component outside of a ChartsContainer parent component.', + ].join('\n'), + ); + } + + if (!seriesType) { + return data.xExtremumGetters; + } + + return data.xExtremumGetters[seriesType]; +} diff --git a/packages/x-charts/src/context/PluginProvider/useYExtremumGetter.ts b/packages/x-charts/src/context/PluginProvider/useYExtremumGetter.ts new file mode 100644 index 000000000000..bc5cd0293223 --- /dev/null +++ b/packages/x-charts/src/context/PluginProvider/useYExtremumGetter.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { ChartSeriesType } from '../../models/seriesType/config'; +import { PluginContext } from './PluginContext'; +import { ExtremumGettersConfig } from './ExtremumGetter.types'; + +export function useYExtremumGetter( + seriesType: T, +): ExtremumGettersConfig[T]; +export function useYExtremumGetter(): ExtremumGettersConfig; +export function useYExtremumGetter(seriesType?: ChartSeriesType) { + const { isInitialized, data } = React.useContext(PluginContext); + + if (!isInitialized) { + throw new Error( + [ + 'MUI X: Could not find the plugin context.', + 'It looks like you rendered your component outside of a ChartsContainer parent component.', + ].join('\n'), + ); + } + + if (!seriesType) { + return data.yExtremumGetters; + } + + return data.yExtremumGetters[seriesType]; +} diff --git a/packages/x-charts/src/context/SeriesProvider/Series.types.ts b/packages/x-charts/src/context/SeriesProvider/Series.types.ts index ce863244ab65..bdf501919690 100644 --- a/packages/x-charts/src/context/SeriesProvider/Series.types.ts +++ b/packages/x-charts/src/context/SeriesProvider/Series.types.ts @@ -1,18 +1,14 @@ import * as React from 'react'; import { AllSeriesType } from '../../models/seriesType'; -import { - ChartSeriesType, - DatasetType, - FormatterParams, - FormatterResult, -} from '../../models/seriesType/config'; +import { ChartSeriesType, DatasetType } from '../../models/seriesType/config'; import { ChartsColorPalette } from '../../colorPalettes'; +import { SeriesFormatterResult } from '../PluginProvider'; export type SeriesFormatterType = ( series: AllSeriesType[], colors: string[], dataset?: DatasetType, -) => { [type in T]?: FormatterResult }; +) => { [type in T]?: SeriesFormatterResult }; export type SeriesProviderProps = { dataset?: DatasetType; @@ -27,16 +23,7 @@ export type SeriesProviderProps = { * @default blueberryTwilightPalette */ colors?: ChartsColorPalette; - /** - * Preprocessors for each series types. - */ - seriesFormatters: SeriesFormatterConfig; children: React.ReactNode; }; -export type FormattedSeries = { [type in ChartSeriesType]?: FormatterResult }; - -export type SeriesFormatterConfig = { - // TODO replace the function type by Formatter - [K in T]?: (series: FormatterParams, dataset?: DatasetType) => any; -}; +export type FormattedSeries = { [type in ChartSeriesType]?: SeriesFormatterResult }; diff --git a/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx b/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx index 9925208933bc..58741372f52e 100644 --- a/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx +++ b/packages/x-charts/src/context/SeriesProvider/SeriesProvider.tsx @@ -5,9 +5,12 @@ import { blueberryTwilightPalette } from '../../colorPalettes'; import { SeriesProviderProps } from './Series.types'; import { SeriesContext } from './SeriesContext'; import { preprocessSeries } from './processSeries'; +import { useSeriesFormatter } from '../PluginProvider'; function SeriesProvider(props: SeriesProviderProps) { - const { series, dataset, colors = blueberryTwilightPalette, seriesFormatters, children } = props; + const { series, dataset, colors = blueberryTwilightPalette, children } = props; + + const seriesFormatters = useSeriesFormatter(); const theme = useTheme(); diff --git a/packages/x-charts/src/context/SeriesProvider/processSeries.ts b/packages/x-charts/src/context/SeriesProvider/processSeries.ts index 7f00c1e0b229..de2ce7fff482 100644 --- a/packages/x-charts/src/context/SeriesProvider/processSeries.ts +++ b/packages/x-charts/src/context/SeriesProvider/processSeries.ts @@ -1,7 +1,8 @@ import { AllSeriesType } from '../../models/seriesType'; import { defaultizeColor } from '../../internals/defaultizeColor'; -import { ChartSeriesType, DatasetType, FormatterParams } from '../../models/seriesType/config'; -import { FormattedSeries, SeriesFormatterConfig } from './Series.types'; +import { ChartSeriesType, DatasetType } from '../../models/seriesType/config'; +import { FormattedSeries } from './Series.types'; +import { SeriesFormatterConfig, SeriesFormatterParams } from '../PluginProvider'; /** * This methods is the interface between what the developer is providing and what components receives @@ -23,7 +24,7 @@ export const preprocessSeries = ({ dataset?: DatasetType; }) => { // Group series by type - const seriesGroups: { [type in ChartSeriesType]?: FormatterParams } = {}; + const seriesGroups: { [type in ChartSeriesType]?: SeriesFormatterParams } = {}; series.forEach((seriesData, seriesIndex: number) => { const { id = `auto-generated-id-${seriesIndex}`, type } = seriesData; diff --git a/packages/x-charts/src/hooks/useColor.ts b/packages/x-charts/src/hooks/useColor.ts deleted file mode 100644 index 68b6ecc59fa5..000000000000 --- a/packages/x-charts/src/hooks/useColor.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from 'react'; -import { ChartSeriesType } from '../models/seriesType/config'; -import { ColorContext } from '../context/ColorProvider'; -import { ColorProcessorsConfig } from '../models/plugin'; - -export function useColorProcessor( - seriesType: T, -): ColorProcessorsConfig; -export function useColorProcessor(): ColorProcessorsConfig; -export function useColorProcessor(seriesType?: ChartSeriesType) { - const colorProcessors = React.useContext(ColorContext); - - if (!seriesType) { - return colorProcessors; - } - - return colorProcessors[seriesType]; -} diff --git a/packages/x-charts/src/hooks/useSeries.test.tsx b/packages/x-charts/src/hooks/useSeries.test.tsx index d4def2d8df7c..7a8d6f15a8f8 100644 --- a/packages/x-charts/src/hooks/useSeries.test.tsx +++ b/packages/x-charts/src/hooks/useSeries.test.tsx @@ -2,8 +2,8 @@ import * as React from 'react'; import { expect } from 'chai'; import { ErrorBoundary, createRenderer } from '@mui/internal-test-utils'; import { useSeries } from './useSeries'; -import barFormatter from '../BarChart/formatter'; import { SeriesProvider } from '../context/SeriesProvider'; +import { PluginProvider } from '../internals'; function UseSeries() { const { bar } = useSeries(); @@ -42,12 +42,11 @@ describe('useSeries', () => { it('should not throw an error when parent context is present', () => { const { getByText } = render( - - - , + + + + + , ); expect(getByText('test-id')).toBeVisible(); diff --git a/packages/x-charts/src/internals/index.ts b/packages/x-charts/src/internals/index.ts index 193cc1769bb5..f4020f5d0918 100644 --- a/packages/x-charts/src/internals/index.ts +++ b/packages/x-charts/src/internals/index.ts @@ -26,10 +26,10 @@ export * from './isDefined'; export * from '../context/CartesianProvider'; export * from '../context/DrawingProvider'; -export * from '../context/ColorProvider'; export * from '../context/InteractionProvider'; export * from '../context/SeriesProvider'; export * from '../context/ZAxisContextProvider'; +export * from '../context/PluginProvider'; export type * from '../context/context.types'; // series configuration diff --git a/packages/x-charts/src/models/index.ts b/packages/x-charts/src/models/index.ts index 9f82bffa3f6a..abb5d36002f6 100644 --- a/packages/x-charts/src/models/index.ts +++ b/packages/x-charts/src/models/index.ts @@ -1,7 +1,6 @@ export * from './seriesType'; export * from './layout'; export * from './stacking'; -export * from './plugin'; export type { AxisConfig, ChartsYAxisProps, diff --git a/packages/x-charts/src/models/plugin.ts b/packages/x-charts/src/models/plugin.ts deleted file mode 100644 index 49e04baa8a4f..000000000000 --- a/packages/x-charts/src/models/plugin.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { - CartesianChartSeriesType, - ChartSeriesType, - ExtremumGetter, - Formatter, -} from './seriesType/config'; -import { AxisDefaultized } from './axis'; -import { DefaultizedSeriesType } from './seriesType'; -import { ZAxisDefaultized } from './z-axis'; - -type ColorProcessor = ( - series: DefaultizedSeriesType, - xAxis?: AxisDefaultized, - yAxis?: AxisDefaultized, - zAxis?: ZAxisDefaultized, -) => (dataIndex: number) => string; - -export type ColorProcessorsConfig = { - [Key in T]?: ColorProcessor; -}; - -export type ChartsPluginType = T extends ChartSeriesType - ? { - seriesType: T; - seriesFormatter: Formatter; - colorProcessor: ColorProcessor; - xExtremumGetter?: ExtremumGetter; - yExtremumGetter?: ExtremumGetter; - } - : never; - -export type ExtremumGettersConfig = { - [K in T]?: ExtremumGetter; -}; diff --git a/packages/x-charts/src/models/seriesType/config.ts b/packages/x-charts/src/models/seriesType/config.ts index e8c4cef02883..298350f00581 100644 --- a/packages/x-charts/src/models/seriesType/config.ts +++ b/packages/x-charts/src/models/seriesType/config.ts @@ -2,11 +2,7 @@ import { ScatterSeriesType, DefaultizedScatterSeriesType, ScatterItemIdentifier import { LineSeriesType, DefaultizedLineSeriesType, LineItemIdentifier } from './line'; import { BarItemIdentifier, BarSeriesType, DefaultizedBarSeriesType } from './bar'; import { PieSeriesType, DefaultizedPieSeriesType, PieItemIdentifier, PieValueType } from './pie'; -import { AxisConfig } from '../axis'; import { DefaultizedProps, MakeOptional } from '../helpers'; -import { StackingGroupsType } from '../../internals/stackSeries'; -import { SeriesId } from './common'; -import { LegendItemParams } from '../../ChartsLegend/chartsLegend.types'; export interface ChartsSeriesConfig { bar: { @@ -82,42 +78,7 @@ export type ChartSeriesDefaultized = ChartsSeriesConf export type ChartItemIdentifier = ChartsSeriesConfig[T]['itemIdentifier']; -type ExtremumGetterParams = { - series: Record>; - axis: AxisConfig; - isDefaultAxis: boolean; -}; - -export type ExtremumGetterResult = [number, number] | [null, null]; - -export type ExtremumGetter = ( - params: ExtremumGetterParams, -) => ExtremumGetterResult; - -export type FormatterParams = { - series: Record; - seriesOrder: SeriesId[]; -}; - -export type FormatterResult = { - series: Record>; - seriesOrder: SeriesId[]; -} & (ChartsSeriesConfig[T] extends { - canBeStacked: true; -} - ? { stackingGroups: StackingGroupsType } - : {}); - export type DatasetElementType = { [key: string]: T; }; export type DatasetType = DatasetElementType[]; - -export type Formatter = ( - params: FormatterParams, - dataset?: DatasetType, -) => FormatterResult; - -export type LegendGetter = ( - series: FormatterResult, -) => LegendItemParams[]; diff --git a/scripts/x-charts-pro.exports.json b/scripts/x-charts-pro.exports.json index 7da58b547b02..e77f1a8c981a 100644 --- a/scripts/x-charts-pro.exports.json +++ b/scripts/x-charts-pro.exports.json @@ -90,7 +90,6 @@ { "name": "ChartsOnAxisClickHandler", "kind": "Function" }, { "name": "ChartsOnAxisClickHandlerProps", "kind": "Interface" }, { "name": "ChartsPieSorting", "kind": "TypeAlias" }, - { "name": "ChartsPluginType", "kind": "TypeAlias" }, { "name": "ChartsReferenceLine", "kind": "Function" }, { "name": "ChartsReferenceLineClasses", "kind": "Interface" }, { "name": "ChartsReferenceLineClassKey", "kind": "TypeAlias" }, @@ -120,7 +119,6 @@ { "name": "cheerfulFiestaPalette", "kind": "Variable" }, { "name": "cheerfulFiestaPaletteDark", "kind": "Variable" }, { "name": "cheerfulFiestaPaletteLight", "kind": "Variable" }, - { "name": "ColorProcessorsConfig", "kind": "TypeAlias" }, { "name": "ComputedPieRadius", "kind": "Interface" }, { "name": "ContinuousColorLegend", "kind": "Function" }, { "name": "ContinuousColorLegendProps", "kind": "Interface" }, @@ -140,7 +138,6 @@ { "name": "DefaultizedPieValueType", "kind": "TypeAlias" }, { "name": "DefaultizedScatterSeriesType", "kind": "Interface" }, { "name": "DefaultizedSeriesType", "kind": "TypeAlias" }, - { "name": "ExtremumGettersConfig", "kind": "TypeAlias" }, { "name": "FadeOptions", "kind": "TypeAlias" }, { "name": "Gauge", "kind": "Variable" }, { "name": "gaugeClasses", "kind": "Variable" }, diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index 112f775b22df..0db09b39d5bd 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -88,7 +88,6 @@ { "name": "ChartsOnAxisClickHandler", "kind": "Function" }, { "name": "ChartsOnAxisClickHandlerProps", "kind": "Interface" }, { "name": "ChartsPieSorting", "kind": "TypeAlias" }, - { "name": "ChartsPluginType", "kind": "TypeAlias" }, { "name": "ChartsReferenceLine", "kind": "Function" }, { "name": "ChartsReferenceLineClasses", "kind": "Interface" }, { "name": "ChartsReferenceLineClassKey", "kind": "TypeAlias" }, @@ -118,7 +117,6 @@ { "name": "cheerfulFiestaPalette", "kind": "Variable" }, { "name": "cheerfulFiestaPaletteDark", "kind": "Variable" }, { "name": "cheerfulFiestaPaletteLight", "kind": "Variable" }, - { "name": "ColorProcessorsConfig", "kind": "TypeAlias" }, { "name": "ComputedPieRadius", "kind": "Interface" }, { "name": "ContinuousColorLegend", "kind": "Function" }, { "name": "ContinuousColorLegendProps", "kind": "Interface" }, @@ -137,7 +135,6 @@ { "name": "DefaultizedPieValueType", "kind": "TypeAlias" }, { "name": "DefaultizedScatterSeriesType", "kind": "Interface" }, { "name": "DefaultizedSeriesType", "kind": "TypeAlias" }, - { "name": "ExtremumGettersConfig", "kind": "TypeAlias" }, { "name": "FadeOptions", "kind": "TypeAlias" }, { "name": "Gauge", "kind": "Variable" }, { "name": "gaugeClasses", "kind": "Variable" }, From d54212de3e2e5f004892a0d9dce8cfb073b7a330 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:29:04 +0200 Subject: [PATCH 728/912] Bump D3 (#14094) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/x-charts-vendor/package.json | 8 ++++---- pnpm-lock.yaml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index aadffa3ba0a1..4f58a7096bd3 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -42,13 +42,13 @@ }, "devDependencies": { "@babel/plugin-transform-runtime": "^7.24.7", - "@types/d3-array": "^3.0.3", + "@types/d3-array": "^3.2.1", "@types/d3-format": "^3.0.4", - "@types/d3-path": "^3.0.1", + "@types/d3-path": "^3.1.0", "@types/d3-time-format": "^4.0.3", - "d3-array": "^3.1.6", + "d3-array": "^3.2.4", "d3-format": "^3.1.0", - "d3-path": "^3.0.1", + "d3-path": "^3.1.0", "d3-time-format": "^4.1.0", "execa": "^9.3.0", "internmap": "^2.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86a5d3a8f25e..c047d334927b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -882,25 +882,25 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@types/d3-array': - specifier: ^3.0.3 + specifier: ^3.2.1 version: 3.2.1 '@types/d3-format': specifier: ^3.0.4 version: 3.0.4 '@types/d3-path': - specifier: ^3.0.1 + specifier: ^3.1.0 version: 3.1.0 '@types/d3-time-format': specifier: ^4.0.3 version: 4.0.3 d3-array: - specifier: ^3.1.6 + specifier: ^3.2.4 version: 3.2.4 d3-format: specifier: ^3.1.0 version: 3.1.0 d3-path: - specifier: ^3.0.1 + specifier: ^3.1.0 version: 3.1.0 d3-time-format: specifier: ^4.1.0 From 2a1e00ad72bf67a76cae9a351a0a41d933286f36 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:29:47 +0200 Subject: [PATCH 729/912] Bump @codspeed/vitest-plugin to ^3.1.1 (#14087) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 18 +++++++++--------- test/performance-charts/package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c047d334927b..7e340ce7ed51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1551,8 +1551,8 @@ importers: test/performance-charts: devDependencies: '@codspeed/vitest-plugin': - specifier: ^3.1.0 - version: 3.1.0(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0)) + specifier: ^3.1.1 + version: 3.1.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0)) '@emotion/react': specifier: ^11.11.4 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -2405,11 +2405,11 @@ packages: '@bundled-es-modules/statuses@1.0.1': resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} - '@codspeed/core@3.1.0': - resolution: {integrity: sha512-oYd7X46QhnRkgRbZkqAoX9i3Fwm17FpunK4Ee5RdrvRYR0Xr93ewH8/O5g6uyTPDOOqDEv1v2KRYtWhVgN+2VQ==} + '@codspeed/core@3.1.1': + resolution: {integrity: sha512-ONhERVDAtkm0nc+FYPivDozoMOlNUP2BWRBFDJYATGA18Iap5Kd2mZ1/Lwz54RB5+g+3YDOpsvotHa4hd3Q+7Q==} - '@codspeed/vitest-plugin@3.1.0': - resolution: {integrity: sha512-ms11tUytiQTgB+idxZRUuCUQfgz4LaKTDJCLYm5VTSpOCUU7D5+QWvJnA8X8B9glPfR5siIK8RxrnZP4yuysKQ==} + '@codspeed/vitest-plugin@3.1.1': + resolution: {integrity: sha512-/PJUgxIfuRqpBSbaD8bgWXtbXxCqgnW89dzr3220fMkx/LA6z6oUb4tJGjeVsOWAzAgu0VBdSA+8hC+7D9BIuQ==} peerDependencies: vite: ^4.2.0 || ^5.0.0 vitest: '>=1.2.2' @@ -11152,7 +11152,7 @@ snapshots: statuses: 2.0.1 optional: true - '@codspeed/core@3.1.0': + '@codspeed/core@3.1.1': dependencies: axios: 1.7.2(debug@4.3.5) find-up: 6.3.0 @@ -11161,9 +11161,9 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.0(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0))': dependencies: - '@codspeed/core': 3.1.0 + '@codspeed/core': 3.1.1 vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) transitivePeerDependencies: diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index cf2d27c5edd5..ec98d313569c 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -7,7 +7,7 @@ "test:performance": "vitest bench" }, "devDependencies": { - "@codspeed/vitest-plugin": "^3.1.0", + "@codspeed/vitest-plugin": "^3.1.1", "@emotion/react": "^11.11.4", "@mui/x-charts": "workspace:*", "@mui/x-charts-pro": "workspace:*", From 0de53a95a7552142092be015c2b1fb5dc8189cdc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:37:54 +0200 Subject: [PATCH 730/912] Bump CodSpeedHQ/action digest to 86517f4 (#14085) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/codspeed.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index bfd31d7482a8..3f56d206a17d 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -48,7 +48,7 @@ jobs: - run: pnpm --filter @mui/x-charts build - run: pnpm --filter @mui/x-charts-pro build - name: Run benchmarks - uses: CodSpeedHQ/action@a58b84c0b61569a9cbb7cfb378cc849d65cf1ce5 + uses: CodSpeedHQ/action@86517f4abbb50982006ed33de6c22a586c7e11a1 with: run: pnpm --filter @mui-x-internal/performance-charts test:performance token: ${{ secrets.CODSPEED_TOKEN }} From fb458e578cc52234ad1edbf5525882309c3c482c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 12:44:50 +0200 Subject: [PATCH 731/912] Bump @vitest/ui to 2.0.5 (#14093) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 55 ++++++++++++++++++---------- test/performance-charts/package.json | 2 +- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7e340ce7ed51..20305cd7e0a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1552,7 +1552,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0)) + version: 3.1.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@emotion/react': specifier: ^11.11.4 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) @@ -1564,7 +1564,7 @@ importers: version: link:../../packages/x-charts-pro/build '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0)) + version: 6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@testing-library/react': specifier: ^16.0.0 version: 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1578,8 +1578,8 @@ importers: specifier: ^3.7.0 version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0)) '@vitest/ui': - specifier: 2.0.4 - version: 2.0.4(vitest@2.0.4) + specifier: 2.0.5 + version: 2.0.5(vitest@2.0.4) jsdom: specifier: ^24.1.1 version: 24.1.1 @@ -1591,7 +1591,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: 2.0.4 - version: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + version: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) packages: @@ -4245,6 +4245,9 @@ packages: '@vitest/pretty-format@2.0.4': resolution: {integrity: sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==} + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + '@vitest/runner@2.0.4': resolution: {integrity: sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==} @@ -4254,14 +4257,17 @@ packages: '@vitest/spy@2.0.4': resolution: {integrity: sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==} - '@vitest/ui@2.0.4': - resolution: {integrity: sha512-9SNE9ve3kgDkVTxJsY7BjqSwyqDVRJbq/AHVHZs+V0vmr/0cCX6yGT6nOahSXEsXFtKAsvRtBXKlTgr+5njzZQ==} + '@vitest/ui@2.0.5': + resolution: {integrity: sha512-m+ZpVt/PVi/nbeRKEjdiYeoh0aOfI9zr3Ria9LO7V2PlMETtAXJS3uETEZkc8Be2oOl8mhd7Ew+5SRBXRYncNw==} peerDependencies: - vitest: 2.0.4 + vitest: 2.0.5 '@vitest/utils@2.0.4': resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -11161,11 +11167,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': dependencies: '@codspeed/core': 3.1.1 vite: 5.3.4(@types/node@18.19.42)(terser@5.27.0) - vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) transitivePeerDependencies: - debug @@ -12819,7 +12825,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0))': + '@testing-library/jest-dom@6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.25.0 @@ -12830,7 +12836,7 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 optionalDependencies: - vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) '@testing-library/react@16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -13247,7 +13253,7 @@ snapshots: magic-string: 0.30.10 msw: 2.3.2(typescript@5.5.4) sirv: 2.0.4 - vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -13266,6 +13272,10 @@ snapshots: dependencies: tinyrainbow: 1.2.0 + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + '@vitest/runner@2.0.4': dependencies: '@vitest/utils': 2.0.4 @@ -13281,16 +13291,16 @@ snapshots: dependencies: tinyspy: 3.0.0 - '@vitest/ui@2.0.4(vitest@2.0.4)': + '@vitest/ui@2.0.5(vitest@2.0.4)': dependencies: - '@vitest/utils': 2.0.4 + '@vitest/utils': 2.0.5 fast-glob: 3.3.2 fflate: 0.8.2 flatted: 3.3.1 pathe: 1.1.2 sirv: 2.0.4 tinyrainbow: 1.2.0 - vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) '@vitest/utils@2.0.4': dependencies: @@ -13299,6 +13309,13 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.1 + tinyrainbow: 1.2.0 + '@webassemblyjs/ast@1.12.1': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 @@ -19732,11 +19749,11 @@ snapshots: fsevents: 2.3.3 terser: 5.27.0 - vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.4)(jsdom@24.1.1)(terser@5.27.0): + vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.4 - '@vitest/pretty-format': 2.0.4 + '@vitest/pretty-format': 2.0.5 '@vitest/runner': 2.0.4 '@vitest/snapshot': 2.0.4 '@vitest/spy': 2.0.4 @@ -19756,7 +19773,7 @@ snapshots: optionalDependencies: '@types/node': 18.19.42 '@vitest/browser': 2.0.4(typescript@5.5.4)(vitest@2.0.4) - '@vitest/ui': 2.0.4(vitest@2.0.4) + '@vitest/ui': 2.0.5(vitest@2.0.4) jsdom: 24.1.1 transitivePeerDependencies: - less diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index ec98d313569c..40ddd61dcdeb 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -16,7 +16,7 @@ "@testing-library/user-event": "^14.5.2", "@vitejs/plugin-react": "^4.3.1", "@vitejs/plugin-react-swc": "^3.7.0", - "@vitest/ui": "2.0.4", + "@vitest/ui": "2.0.5", "jsdom": "^24.1.1", "react": "^18.3.1", "react-dom": "^18.3.1", From 2c54b97b242e68ddcf21536984e8a59ce35c221c Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Mon, 5 Aug 2024 17:14:08 +0200 Subject: [PATCH 732/912] [charts-pro] Release the pro package in alpha (#13859) Co-authored-by: Jose Quintas --- docs/data/charts-component-api-pages.ts | 5 -- .../charts/getting-started/getting-started.md | 17 +---- docs/data/charts/heatmap/BasicHeatmap.js | 1 - docs/data/charts/heatmap/BasicHeatmap.tsx | 1 - docs/data/charts/heatmap/ColorConfig.js | 1 - docs/data/charts/heatmap/ColorConfig.tsx | 1 - docs/data/charts/heatmap/CustomItem.js | 1 - docs/data/charts/heatmap/CustomItem.tsx | 1 - docs/data/charts/heatmap/HighlightClasses.js | 1 - docs/data/charts/heatmap/HighlightClasses.tsx | 1 - docs/data/charts/heatmap/HighlightHeatmap.js | 1 - docs/data/charts/heatmap/HighlightHeatmap.tsx | 1 - docs/data/charts/heatmap/heatmap.md | 11 +--- docs/data/charts/zoom-and-pan/zoom-and-pan.md | 9 +-- docs/data/introduction/licensing/licensing.md | 1 + docs/data/pages.ts | 4 +- docs/pages/x/api/charts/bar-chart-pro.json | 2 +- .../x/api/charts/default-heatmap-tooltip.json | 2 +- docs/pages/x/api/charts/heatmap-item.js | 23 ------- docs/pages/x/api/charts/heatmap-item.json | 29 --------- docs/pages/x/api/charts/heatmap-plot.json | 2 +- docs/pages/x/api/charts/heatmap.json | 62 ++----------------- docs/pages/x/api/charts/line-chart-pro.json | 2 +- .../pages/x/api/charts/scatter-chart-pro.json | 2 +- docs/pages/x/react-charts/heatmap.js | 2 +- docs/pages/x/react-charts/zoom-and-pan.js | 2 +- .../modules/components/ChartComponentsGrid.js | 1 - .../ChartsInstallationInstructions.js | 13 ++++ .../charts/heatmap-item/heatmap-item.json | 9 --- .../api-docs/charts/heatmap/heatmap.json | 12 +--- package.json | 2 +- packages/x-charts-pro/package.json | 17 +---- .../x-charts-pro/src/Heatmap/HeatmapItem.tsx | 3 + packages/x-charts-pro/src/Heatmap/index.ts | 7 ++- packages/x-charts/package.json | 2 +- scripts/releaseChangelog.mjs | 9 +++ scripts/x-charts-pro.exports.json | 9 --- 37 files changed, 55 insertions(+), 214 deletions(-) delete mode 100644 docs/pages/x/api/charts/heatmap-item.js delete mode 100644 docs/pages/x/api/charts/heatmap-item.json create mode 100644 docs/src/modules/components/ChartsInstallationInstructions.js delete mode 100644 docs/translations/api-docs/charts/heatmap-item/heatmap-item.json diff --git a/docs/data/charts-component-api-pages.ts b/docs/data/charts-component-api-pages.ts index 4619cc2c0ffa..aaaa09657dbe 100644 --- a/docs/data/charts-component-api-pages.ts +++ b/docs/data/charts-component-api-pages.ts @@ -133,11 +133,6 @@ const apiPages: MuiPage[] = [ title: 'Heatmap', plan: 'pro', }, - { - pathname: '/x/api/charts/heatmap-item', - title: 'HeatmapItem', - plan: 'pro', - }, { pathname: '/x/api/charts/heatmap-plot', title: 'HeatmapPlot', diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index 3404ac1465d7..fbd74b8ecb3d 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -10,24 +10,11 @@ packageName: '@mui/x-charts' ## Installation -Run one of the following commands to add the MUI X Charts to your project: +Using your favorite package manager, install `@mui/x-charts-pro` for the commercial version, or `@mui/x-charts` for the free community version. - -```bash npm -npm install @mui/x-charts -``` - -```bash pnpm -pnpm add @mui/x-charts -``` - -```bash yarn -yarn add @mui/x-charts -``` - - +{{"component": "modules/components/ChartsInstallationInstructions.js"}} The Charts package has a peer dependency on `@mui/material`. If you are not already using it in your project, you can install it with: diff --git a/docs/data/charts/heatmap/BasicHeatmap.js b/docs/data/charts/heatmap/BasicHeatmap.js index c8f6bb82978e..38f200e412b9 100644 --- a/docs/data/charts/heatmap/BasicHeatmap.js +++ b/docs/data/charts/heatmap/BasicHeatmap.js @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/BasicHeatmap.tsx b/docs/data/charts/heatmap/BasicHeatmap.tsx index c8f6bb82978e..38f200e412b9 100644 --- a/docs/data/charts/heatmap/BasicHeatmap.tsx +++ b/docs/data/charts/heatmap/BasicHeatmap.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/ColorConfig.js b/docs/data/charts/heatmap/ColorConfig.js index 55a8402f9a85..b20e75a7a118 100644 --- a/docs/data/charts/heatmap/ColorConfig.js +++ b/docs/data/charts/heatmap/ColorConfig.js @@ -1,6 +1,5 @@ import * as React from 'react'; import { interpolateBlues } from 'd3-scale-chromatic'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; const dataset = [ diff --git a/docs/data/charts/heatmap/ColorConfig.tsx b/docs/data/charts/heatmap/ColorConfig.tsx index abcbca1cd00a..ee09304de139 100644 --- a/docs/data/charts/heatmap/ColorConfig.tsx +++ b/docs/data/charts/heatmap/ColorConfig.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import { interpolateBlues } from 'd3-scale-chromatic'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { HeatmapValueType } from '@mui/x-charts-pro/models'; diff --git a/docs/data/charts/heatmap/CustomItem.js b/docs/data/charts/heatmap/CustomItem.js index 71f0cabfce04..62233cd7feb1 100644 --- a/docs/data/charts/heatmap/CustomItem.js +++ b/docs/data/charts/heatmap/CustomItem.js @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/CustomItem.tsx b/docs/data/charts/heatmap/CustomItem.tsx index 9dd103db3c4f..dd0dbff5ef82 100644 --- a/docs/data/charts/heatmap/CustomItem.tsx +++ b/docs/data/charts/heatmap/CustomItem.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/HighlightClasses.js b/docs/data/charts/heatmap/HighlightClasses.js index e55c6b195f5b..d8dfef304f66 100644 --- a/docs/data/charts/heatmap/HighlightClasses.js +++ b/docs/data/charts/heatmap/HighlightClasses.js @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap, heatmapClasses } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/HighlightClasses.tsx b/docs/data/charts/heatmap/HighlightClasses.tsx index e55c6b195f5b..d8dfef304f66 100644 --- a/docs/data/charts/heatmap/HighlightClasses.tsx +++ b/docs/data/charts/heatmap/HighlightClasses.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap, heatmapClasses } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/HighlightHeatmap.js b/docs/data/charts/heatmap/HighlightHeatmap.js index abdbd1b89f48..d122adfd2b0a 100644 --- a/docs/data/charts/heatmap/HighlightHeatmap.js +++ b/docs/data/charts/heatmap/HighlightHeatmap.js @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/HighlightHeatmap.tsx b/docs/data/charts/heatmap/HighlightHeatmap.tsx index abdbd1b89f48..d122adfd2b0a 100644 --- a/docs/data/charts/heatmap/HighlightHeatmap.tsx +++ b/docs/data/charts/heatmap/HighlightHeatmap.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import Box from '@mui/material/Box'; -import '@mui/x-charts-pro/typeOverloads'; import { Heatmap } from '@mui/x-charts-pro/Heatmap'; import { data } from './dumbData'; diff --git a/docs/data/charts/heatmap/heatmap.md b/docs/data/charts/heatmap/heatmap.md index b334ca1df7d7..f33f20a988aa 100644 --- a/docs/data/charts/heatmap/heatmap.md +++ b/docs/data/charts/heatmap/heatmap.md @@ -1,20 +1,13 @@ --- title: React Heatmap chart productId: x-charts -components: Heatmap, HeatmapPlot, HeatmapItem, DefaultHeatmapTooltip +components: Heatmap, HeatmapPlot, DefaultHeatmapTooltip --- -# Charts - Heatmap [](/x/introduction/licensing/#pro-plan 'Pro plan') 🚧 +# Charts - Heatmap [](/x/introduction/licensing/#pro-plan 'Pro plan')

    Heatmap charts visually represents data with color variations to highlight patterns and trends across two dimensions.

    -:::warning -The Heatmap Chart component is part of the pro package which is **not yet** released. - -You can test demos. -Don't hesitate to open issues to give feedback. -::: - ## Basics The Heatmap requires two axes with `data` properties. diff --git a/docs/data/charts/zoom-and-pan/zoom-and-pan.md b/docs/data/charts/zoom-and-pan/zoom-and-pan.md index 389b055de099..4c2c5082cc15 100644 --- a/docs/data/charts/zoom-and-pan/zoom-and-pan.md +++ b/docs/data/charts/zoom-and-pan/zoom-and-pan.md @@ -4,17 +4,10 @@ productId: x-charts components: ScatterChartPro, BarChartPro, LineChartPro --- -# Zoom & Pan [](/x/introduction/licensing/#pro-plan 'Pro plan') 🚧 +# Zoom & Pan [](/x/introduction/licensing/#pro-plan 'Pro plan')

    Enables zooming and panning on specific charts or axis.

    -:::warning -The zoom feature is part of the pro package which is **not yet** released. - -You can test demos. -Don't hesitate to open issues to give feedback. -::: - Zooming is possible on the **Pro**[](/x/introduction/licensing/#pro-plan 'Pro plan') versions of the charts: ``, ``, ``. ## Basic usage diff --git a/docs/data/introduction/licensing/licensing.md b/docs/data/introduction/licensing/licensing.md index fccbdc844284..14142fdb118c 100644 --- a/docs/data/introduction/licensing/licensing.md +++ b/docs/data/introduction/licensing/licensing.md @@ -44,6 +44,7 @@ These are the Pro npm packages: - [`@mui/x-data-grid-pro`](https://www.npmjs.com/package/@mui/x-data-grid-pro) - [`@mui/x-date-pickers-pro`](https://www.npmjs.com/package/@mui/x-date-pickers-pro) - [`@mui/x-tree-view-pro`](https://www.npmjs.com/package/@mui/x-tree-view-pro) +- [`@mui/x-charts-pro`](https://www.npmjs.com/package/@mui/x-charts-pro) ### Premium plan diff --git a/docs/data/pages.ts b/docs/data/pages.ts index ae5de4cf9b6b..62ed986c8ca8 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -428,7 +428,7 @@ const pages: MuiPage[] = [ pathname: '/x/react-charts/heatmap', title: 'Heatmap', plan: 'pro', - planned: true, + unstable: true, }, { pathname: '/x/react-charts/common-features', @@ -446,7 +446,7 @@ const pages: MuiPage[] = [ pathname: '/x/react-charts/zoom-and-pan', title: 'Zoom & Pan', plan: 'pro', - planned: true, + unstable: true, }, ], }, diff --git a/docs/pages/x/api/charts/bar-chart-pro.json b/docs/pages/x/api/charts/bar-chart-pro.json index 56b7b863b87c..141bd308bd16 100644 --- a/docs/pages/x/api/charts/bar-chart-pro.json +++ b/docs/pages/x/api/charts/bar-chart-pro.json @@ -118,6 +118,6 @@ "muiName": "MuiBarChartPro", "filename": "/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/charts/default-heatmap-tooltip.json b/docs/pages/x/api/charts/default-heatmap-tooltip.json index fc5ce2bb3c83..caa6575ad64c 100644 --- a/docs/pages/x/api/charts/default-heatmap-tooltip.json +++ b/docs/pages/x/api/charts/default-heatmap-tooltip.json @@ -81,6 +81,6 @@ "muiName": "MuiDefaultHeatmapTooltip", "filename": "/packages/x-charts-pro/src/Heatmap/DefaultHeatmapTooltip.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/charts/heatmap-item.js b/docs/pages/x/api/charts/heatmap-item.js deleted file mode 100644 index 208c470c1139..000000000000 --- a/docs/pages/x/api/charts/heatmap-item.js +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react'; -import ApiPage from 'docs/src/modules/components/ApiPage'; -import mapApiPageTranslations from 'docs/src/modules/utils/mapApiPageTranslations'; -import jsonPageContent from './heatmap-item.json'; - -export default function Page(props) { - const { descriptions, pageContent } = props; - return ; -} - -Page.getInitialProps = () => { - const req = require.context( - 'docsx/translations/api-docs/charts/heatmap-item', - false, - /\.\/heatmap-item.*.json$/, - ); - const descriptions = mapApiPageTranslations(req); - - return { - descriptions, - pageContent: jsonPageContent, - }; -}; diff --git a/docs/pages/x/api/charts/heatmap-item.json b/docs/pages/x/api/charts/heatmap-item.json deleted file mode 100644 index e05b59240c97..000000000000 --- a/docs/pages/x/api/charts/heatmap-item.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "props": { - "slotProps": { "type": { "name": "object" }, "default": "{}" }, - "slots": { - "type": { "name": "object" }, - "default": "{}", - "additionalInfo": { "slotsApi": true } - } - }, - "name": "HeatmapItem", - "imports": [ - "import { HeatmapItem } from '@mui/x-charts-pro/Heatmap';", - "import { HeatmapItem } from '@mui/x-charts-pro';" - ], - "slots": [ - { - "name": "cell", - "description": "The component that renders the heatmap cell.", - "default": "HeatmapCell", - "class": null - } - ], - "classes": [], - "muiName": "MuiHeatmapItem", - "filename": "/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx", - "inheritance": null, - "demos": "", - "cssComponent": false -} diff --git a/docs/pages/x/api/charts/heatmap-plot.json b/docs/pages/x/api/charts/heatmap-plot.json index 63eddc26e7d7..e4f2afd00d55 100644 --- a/docs/pages/x/api/charts/heatmap-plot.json +++ b/docs/pages/x/api/charts/heatmap-plot.json @@ -16,6 +16,6 @@ "muiName": "MuiHeatmapPlot", "filename": "/packages/x-charts-pro/src/Heatmap/HeatmapPlot.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/charts/heatmap.json b/docs/pages/x/api/charts/heatmap.json index fb2e2656976a..a80558e10116 100644 --- a/docs/pages/x/api/charts/heatmap.json +++ b/docs/pages/x/api/charts/heatmap.json @@ -95,63 +95,13 @@ "import { Heatmap } from '@mui/x-charts-pro/Heatmap';", "import { Heatmap } from '@mui/x-charts-pro';" ], - "slots": [ - { - "name": "axisLabel", - "description": "Custom component for axis label.", - "default": "ChartsText", - "class": null - }, - { - "name": "axisLine", - "description": "Custom component for the axis main line.", - "default": "'line'", - "class": null - }, - { - "name": "axisTick", - "description": "Custom component for the axis tick.", - "default": "'line'", - "class": null - }, - { - "name": "axisTickLabel", - "description": "Custom component for tick label.", - "default": "ChartsText", - "class": null - }, - { - "name": "cell", - "description": "The component that renders the heatmap cell.", - "default": "HeatmapCell", - "class": "MuiHeatmap-cell" - }, - { - "name": "itemContent", - "description": "Custom component for displaying tooltip content when triggered by item event.", - "default": "DefaultChartsItemTooltipContent", - "class": null - }, - { - "name": "loadingOverlay", - "description": "Overlay component rendered when the chart is in a loading state.", - "default": "ChartsLoadingOverlay", - "class": null - }, + "classes": [ { - "name": "noDataOverlay", - "description": "Overlay component rendered when the chart has no data to display.", - "default": "ChartsNoDataOverlay", - "class": null + "key": "cell", + "className": "MuiHeatmap-cell", + "description": "Styles applied to the heatmap cells.", + "isGlobal": false }, - { - "name": "popper", - "description": "Custom component for the tooltip popper.", - "default": "ChartsTooltipRoot", - "class": null - } - ], - "classes": [ { "key": "faded", "className": "MuiHeatmap-faded", @@ -168,6 +118,6 @@ "muiName": "MuiHeatmap", "filename": "/packages/x-charts-pro/src/Heatmap/Heatmap.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/charts/line-chart-pro.json b/docs/pages/x/api/charts/line-chart-pro.json index 112114368dc4..6b2c4e32e046 100644 --- a/docs/pages/x/api/charts/line-chart-pro.json +++ b/docs/pages/x/api/charts/line-chart-pro.json @@ -111,6 +111,6 @@ "muiName": "MuiLineChartPro", "filename": "/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/api/charts/scatter-chart-pro.json b/docs/pages/x/api/charts/scatter-chart-pro.json index 17da9ca377a6..f1b2cc769bf9 100644 --- a/docs/pages/x/api/charts/scatter-chart-pro.json +++ b/docs/pages/x/api/charts/scatter-chart-pro.json @@ -127,6 +127,6 @@ "muiName": "MuiScatterChartPro", "filename": "/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx", "inheritance": null, - "demos": "", + "demos": "", "cssComponent": false } diff --git a/docs/pages/x/react-charts/heatmap.js b/docs/pages/x/react-charts/heatmap.js index 64f12f23f6ea..0afdda688028 100644 --- a/docs/pages/x/react-charts/heatmap.js +++ b/docs/pages/x/react-charts/heatmap.js @@ -3,5 +3,5 @@ import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; import * as pageProps from 'docsx/data/charts/heatmap/heatmap.md?muiMarkdown'; export default function Page() { - return ; + return ; } diff --git a/docs/pages/x/react-charts/zoom-and-pan.js b/docs/pages/x/react-charts/zoom-and-pan.js index 4a2393ba8b38..f66861bb5a5d 100644 --- a/docs/pages/x/react-charts/zoom-and-pan.js +++ b/docs/pages/x/react-charts/zoom-and-pan.js @@ -3,5 +3,5 @@ import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; import * as pageProps from 'docsx/data/charts/zoom-and-pan/zoom-and-pan.md?muiMarkdown'; export default function Page() { - return ; + return ; } diff --git a/docs/src/modules/components/ChartComponentsGrid.js b/docs/src/modules/components/ChartComponentsGrid.js index 8752ad0ec1fc..21fed83ce16d 100644 --- a/docs/src/modules/components/ChartComponentsGrid.js +++ b/docs/src/modules/components/ChartComponentsGrid.js @@ -65,7 +65,6 @@ function getComponents() { srcLight: '/static/x/component-illustrations/heatmap-light.png', srcDark: '/static/x/component-illustrations/heatmap-dark.png', href: '/x/react-charts/heatmap/', - planned: true, pro: true, }, { diff --git a/docs/src/modules/components/ChartsInstallationInstructions.js b/docs/src/modules/components/ChartsInstallationInstructions.js new file mode 100644 index 000000000000..b11fd2a21135 --- /dev/null +++ b/docs/src/modules/components/ChartsInstallationInstructions.js @@ -0,0 +1,13 @@ +import * as React from 'react'; +import InstallationInstructions from './InstallationInstructions'; + +// #default-branch-switch + +const packages = { + Community: '@mui/x-charts', + Pro: '@mui/x-charts-pro', +}; + +export default function DataGridInstallationInstructions() { + return ; +} diff --git a/docs/translations/api-docs/charts/heatmap-item/heatmap-item.json b/docs/translations/api-docs/charts/heatmap-item/heatmap-item.json deleted file mode 100644 index e14233d82340..000000000000 --- a/docs/translations/api-docs/charts/heatmap-item/heatmap-item.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "componentDescription": "", - "propDescriptions": { - "slotProps": { "description": "The props used for each component slot." }, - "slots": { "description": "Overridable component slots." } - }, - "classDescriptions": {}, - "slotDescriptions": { "cell": "The component that renders the heatmap cell." } -} diff --git a/docs/translations/api-docs/charts/heatmap/heatmap.json b/docs/translations/api-docs/charts/heatmap/heatmap.json index f5ad8fd40997..8db3fec541fc 100644 --- a/docs/translations/api-docs/charts/heatmap/heatmap.json +++ b/docs/translations/api-docs/charts/heatmap/heatmap.json @@ -62,6 +62,7 @@ "zAxis": { "description": "The configuration of the z-axes." } }, "classDescriptions": { + "cell": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the heatmap cells" }, "faded": { "description": "Styles applied to {{nodeName}} if {{conditions}}.", "nodeName": "the cell element", @@ -72,16 +73,5 @@ "nodeName": "the cell element", "conditions": "highlighted" } - }, - "slotDescriptions": { - "axisLabel": "Custom component for axis label.", - "axisLine": "Custom component for the axis main line.", - "axisTick": "Custom component for the axis tick.", - "axisTickLabel": "Custom component for tick label.", - "cell": "The component that renders the heatmap cell.", - "itemContent": "Custom component for displaying tooltip content when triggered by item event.", - "loadingOverlay": "Overlay component rendered when the chart is in a loading state.", - "noDataOverlay": "Overlay component rendered when the chart has no data to display.", - "popper": "Custom component for the tooltip popper." } } diff --git a/package.json b/package.json index ad0c4abefdf5..8d00c1f5be0d 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "typescript": "lerna run --no-bail --parallel typescript", "typescript:ci": "lerna run --concurrency 3 --no-bail --no-sort typescript", "use-react-version": "node scripts/useReactVersion.mjs", - "build:codesandbox": "pnpm release:build", + "build:codesandbox": "lerna run --concurrency 3 --no-private --scope \"@mui/*\" build", "install:codesandbox": "pnpm install --no-frozen-lockfile", "release:changelog": "node scripts/releaseChangelog.mjs", "release:version": "lerna version --exact --no-changelog --no-push --no-git-tag-version --no-private", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 6f81dc767fdc..28536720a38f 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -1,10 +1,9 @@ { "name": "@mui/x-charts-pro", - "version": "7.7.0", - "private": true, + "version": "7.0.0-alpha.0", "description": "The Pro plan edition of the Charts components (MUI X).", "author": "MUI Team", - "main": "./src/index.ts", + "main": "src/index.ts", "license": "SEE LICENSE IN LICENSE", "bugs": { "url": "https://github.com/mui/mui-x/issues" @@ -73,18 +72,6 @@ "csstype": "^3.1.3", "rimraf": "^5.0.9" }, - "exports": { - ".": { - "types": "./index.d.ts", - "import": "./esm/index.js", - "default": "./esm/index.js" - }, - "./*": { - "types": "./*/index.d.ts", - "import": "./esm/*/index.js", - "default": "./esm/*/index.js" - } - }, "engines": { "node": ">=14.0.0" } diff --git a/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx b/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx index 5b36445c5aa9..c1e035685b8f 100644 --- a/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx +++ b/packages/x-charts-pro/src/Heatmap/HeatmapItem.tsx @@ -70,6 +70,9 @@ const useUtilityClasses = (ownerState: HeatmapItemOwnerState) => { return composeClasses(slots, getHeatmapUtilityClass, classes); }; +/** + * @ignore - internal component. + */ function HeatmapItem(props: HeatmapItemProps) { const { seriesId, dataIndex, color, value, slotProps = {}, slots = {}, ...other } = props; diff --git a/packages/x-charts-pro/src/Heatmap/index.ts b/packages/x-charts-pro/src/Heatmap/index.ts index ee97c0d75d3c..ceba96993d01 100644 --- a/packages/x-charts-pro/src/Heatmap/index.ts +++ b/packages/x-charts-pro/src/Heatmap/index.ts @@ -1,5 +1,6 @@ -export * from './Heatmap'; -export * from './HeatmapPlot'; -export * from './HeatmapItem'; +import type {} from '../typeOverloads'; + +export { Heatmap } from './Heatmap'; +export { HeatmapPlot } from './HeatmapPlot'; export * from './DefaultHeatmapTooltip'; export * from './heatmapClasses'; diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 7ee9390fb6d0..c6e011cbc4f2 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -3,7 +3,7 @@ "version": "7.12.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", - "main": "./src/index.js", + "main": "src/index.js", "license": "MIT", "bugs": { "url": "https://github.com/mui/mui-x/issues" diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index 7c2867817cc9..18cf5e6de253 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -157,6 +157,7 @@ async function main(argv) { const pickersCommits = []; const pickersProCommits = []; const chartsCommits = []; + const chartsProCommits = []; const treeViewCommits = []; const coreCommits = []; const docsCommits = []; @@ -189,6 +190,9 @@ async function main(argv) { case 'DateTimeRangePicker': pickersProCommits.push(commitItem); break; + case 'charts-pro': + chartsProCommits.push(commitItem); + break; case 'charts': chartsCommits.push(commitItem); break; @@ -312,6 +316,11 @@ ${logChangelogSection(pickersProCommits)} ${logChangelogSection(chartsCommits)} +#### \`@mui/x-date-charts-pro@__VERSION-ALPHA__\` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in \`@mui/x-charts@__VERSION__\`${chartsProCommits.length > 0 ? ', plus:\n' : '.'} +${logChangelogSection(chartsProCommits)} + ### Tree View #### \`@mui/x-tree-view@__VERSION__\` diff --git a/scripts/x-charts-pro.exports.json b/scripts/x-charts-pro.exports.json index e77f1a8c981a..b4aba91475fb 100644 --- a/scripts/x-charts-pro.exports.json +++ b/scripts/x-charts-pro.exports.json @@ -174,16 +174,7 @@ { "name": "heatmapClasses", "kind": "Variable" }, { "name": "HeatmapClasses", "kind": "Interface" }, { "name": "HeatmapClassKey", "kind": "TypeAlias" }, - { "name": "HeatmapItem", "kind": "Function" }, - { "name": "HeatmapItemOwnerState", "kind": "Interface" }, - { "name": "HeatmapItemProps", "kind": "Interface" }, - { "name": "HeatmapItemSlotProps", "kind": "Interface" }, - { "name": "HeatmapItemSlots", "kind": "Interface" }, { "name": "HeatmapPlot", "kind": "Function" }, - { "name": "HeatmapPlotProps", "kind": "Interface" }, - { "name": "HeatmapProps", "kind": "Interface" }, - { "name": "HeatmapSlotProps", "kind": "Interface" }, - { "name": "HeatmapSlots", "kind": "Interface" }, { "name": "HighlightedContext", "kind": "Variable" }, { "name": "HighlightedProvider", "kind": "Function" }, { "name": "HighlightedProviderProps", "kind": "TypeAlias" }, From 402224106a566b5ae5964ef0c6ec98e3034c58bc Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 6 Aug 2024 10:59:08 +0200 Subject: [PATCH 733/912] [code-infra] Use concurrency 1 in CircleCI (#14110) Signed-off-by: Jose C Quintas Jr --- .circleci/config.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 532a93a8a44f..53f9f97eed6c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -253,7 +253,7 @@ jobs: name: Tests TypeScript definitions command: pnpm typescript:ci environment: - NODE_OPTIONS: --max-old-space-size=1536 + NODE_OPTIONS: --max-old-space-size=3584 test_e2e: <<: *default-job docker: diff --git a/package.json b/package.json index 8d00c1f5be0d..1967ff6c811c 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "test:regressions:server": "serve test/regressions -p 5001", "test:argos": "node ./scripts/pushArgos.mjs", "typescript": "lerna run --no-bail --parallel typescript", - "typescript:ci": "lerna run --concurrency 3 --no-bail --no-sort typescript", + "typescript:ci": "lerna run --concurrency 1 --no-bail --no-sort typescript", "use-react-version": "node scripts/useReactVersion.mjs", "build:codesandbox": "lerna run --concurrency 3 --no-private --scope \"@mui/*\" build", "install:codesandbox": "pnpm install --no-frozen-lockfile", From 734d8c013b18b3639857932f60bff2dd212e79f7 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Tue, 6 Aug 2024 15:31:36 +0200 Subject: [PATCH 734/912] [docs] Disable ad in `Rich Tree View-Ordering` page (#14123) --- docs/pages/x/react-tree-view/rich-tree-view/ordering.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/x/react-tree-view/rich-tree-view/ordering.js b/docs/pages/x/react-tree-view/rich-tree-view/ordering.js index 72994d240844..22564110f1a4 100644 --- a/docs/pages/x/react-tree-view/rich-tree-view/ordering.js +++ b/docs/pages/x/react-tree-view/rich-tree-view/ordering.js @@ -3,5 +3,5 @@ import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; import * as pageProps from 'docsx/data/tree-view/rich-tree-view/ordering/ordering.md?muiMarkdown'; export default function Page() { - return ; + return ; } From 9e59066c34a970b8c279ff47254ccc79ae181023 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Tue, 6 Aug 2024 16:58:53 +0200 Subject: [PATCH 735/912] [CHANGELOG] Polish details A continuation on https://github.com/mui/mui-x/pull/14064 --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2da1e48cfc59..e86dfe05c0d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,9 +24,9 @@ We'd like to offer a big thanks to the 12 contributors who made this release pos - 🎁 Introduce [item reordering using drag and drop](https://mui.com/x/react-tree-view/rich-tree-view/ordering/) on the `RichTreeViewPro` component - Item reordering using drag and drop + Item reordering using drag and drop -- 📦 Support Common JS bundle out of the box on `@mui/x-charts` by adding vendored D3 dependencies. +- 📦 Support CommonJS bundle out of the box on `@mui/x-charts` by adding vendored D3 dependencies. - This modifies how the package imports D3.js. It will impact you if you use `d3` packages installed by `@mui/x-charts` and don't have them in your `package.json`. You shouldn't be affected otherwise. - For more context, the initial issue is caused by D3 only exporting ESM. From 36ec2d77035f1fb32f1c52883c500e2c8e4b1324 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Wed, 7 Aug 2024 14:16:59 +0500 Subject: [PATCH 736/912] [docs] Add a warning to promote the usage of `updateRows` (#14027) --- docs/data/data-grid/row-updates/row-updates.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/data/data-grid/row-updates/row-updates.md b/docs/data/data-grid/row-updates/row-updates.md index e1b8e9680284..8b32b73b6fd1 100644 --- a/docs/data/data-grid/row-updates/row-updates.md +++ b/docs/data/data-grid/row-updates/row-updates.md @@ -12,6 +12,11 @@ It replaces the previous values. This approach has some drawbacks: {{"demo": "UpdateRowsProp.js", "bg": "inline"}} +:::warning +Updating the `rows` prop causes the Data Grid to recompute the row tree, resulting in losing the current tree information like the expanded rows state. +Unless the recomputation is explicitly required, the API method `updateRows` should be used. +::: + ## The `updateRows` method If you want to only update part of the rows, you can use the `apiRef.current.updateRows` method. From 883d1f82e249b977f72f083119c6ac014bed183e Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Wed, 7 Aug 2024 14:36:42 +0500 Subject: [PATCH 737/912] [DataGrid] Fix `checkboxSelectionVisibleOnly` behavior with server-side pagination (#14083) --- .../tests/rowSelection.DataGridPro.test.tsx | 43 +++++++++++++++++++ .../rowSelection/useGridRowSelection.ts | 12 +++--- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/packages/x-data-grid-pro/src/tests/rowSelection.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/rowSelection.DataGridPro.test.tsx index 3c5eda242358..8d0af590260d 100644 --- a/packages/x-data-grid-pro/src/tests/rowSelection.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/rowSelection.DataGridPro.test.tsx @@ -210,6 +210,49 @@ describe(' - Row selection', () => { }); expect(selectAllCheckbox).to.have.attr('data-indeterminate', 'false'); }); + + it('should allow to select all the current page rows when props.paginationMode="server"', () => { + function TestDataGridSelectionServerSide({ + rowLength = 4, + }: Omit & + Partial> & { rowLength?: number }) { + apiRef = useGridApiRef(); + const paginationModel = { pageSize: 2, page: 1 }; + + const data = React.useMemo(() => getBasicGridData(rowLength, 2), [rowLength]); + + const rows = data.rows.slice( + paginationModel.pageSize * paginationModel.page, + paginationModel.pageSize * (paginationModel.page + 1), + ); + + return ( +
    + +
    + ); + } + render(); + + const selectAllCheckbox = screen.getByRole('checkbox', { + name: /select all rows/i, + }); + + fireEvent.click(selectAllCheckbox); + expect(apiRef.current.getSelectedRows()).to.have.length(2); + }); }); describe('apiRef: getSelectedRows', () => { diff --git a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts index 2888ec5929a1..fe7495699b33 100644 --- a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts +++ b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts @@ -443,17 +443,15 @@ export const useGridRowSelection = ( GridEventListener<'headerSelectionCheckboxChange'> >( (params) => { - const shouldLimitSelectionToCurrentPage = - props.checkboxSelectionVisibleOnly && props.pagination; - - const rowsToBeSelected = shouldLimitSelectionToCurrentPage - ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) - : gridExpandedSortedRowIdsSelector(apiRef); + const rowsToBeSelected = + props.pagination && props.checkboxSelectionVisibleOnly && props.paginationMode === 'client' + ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) + : gridExpandedSortedRowIdsSelector(apiRef); const filterModel = gridFilterModelSelector(apiRef); apiRef.current.selectRows(rowsToBeSelected, params.value, filterModel?.items.length > 0); }, - [apiRef, props.checkboxSelectionVisibleOnly, props.pagination], + [apiRef, props.checkboxSelectionVisibleOnly, props.pagination, props.paginationMode], ); const handleCellKeyDown = React.useCallback>( From 49d196f5b43556364ec65887a5a7413711d2da88 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Wed, 7 Aug 2024 15:46:13 +0200 Subject: [PATCH 738/912] [infra] Re-added the removal of `Latest Version` section (#14132) --- scripts/githubActions/issueBodyCleanup.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/githubActions/issueBodyCleanup.js b/scripts/githubActions/issueBodyCleanup.js index 91d251828f51..98156d6305ea 100644 --- a/scripts/githubActions/issueBodyCleanup.js +++ b/scripts/githubActions/issueBodyCleanup.js @@ -26,7 +26,11 @@ module.exports = async ({ core, context, github }) => { const lines = issue.data.body.split('\n'); + // this is here to remove this section from the issue body + extractInputSection(lines, 'Latest version'); + const searchKeywords = extractInputSection(lines, 'Search keywords'); + const products = extractInputSection(lines, 'Affected products'); // get the order id and set it as an output for the support label step let orderID = extractInputSection(lines, 'Order ID or Support key'); @@ -36,8 +40,6 @@ module.exports = async ({ core, context, github }) => { core.setOutput('ORDER_ID', orderID); - const products = extractInputSection(lines, 'Affected products'); - // debug log all values core.debug(`>>> Search Keywords: ${searchKeywords}`); core.debug(`>>> Order ID: ${orderID}`); From d7043ddc9fe2ad867436f35e79c3e7db01ef8e80 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Wed, 7 Aug 2024 16:16:42 +0200 Subject: [PATCH 739/912] [DataGrid] Support Yarn PnP (#14126) --- packages/x-data-grid-generator/package.json | 10 +++++++++ packages/x-data-grid-premium/package.json | 10 +++++++++ packages/x-data-grid-pro/package.json | 10 +++++++++ packages/x-data-grid/package.json | 10 +++++++++ packages/x-tree-view-pro/package.json | 8 +++++++ packages/x-tree-view/package.json | 8 +++++++ pnpm-lock.yaml | 24 +++++++++++++++++++++ 7 files changed, 80 insertions(+) diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 11da83bbec09..8c06b4881ce7 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -44,10 +44,20 @@ "rimraf": "^5.0.9" }, "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", "@mui/icons-material": "^5.4.1", "@mui/material": "^5.15.14", "react": "^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + }, "engines": { "node": ">=14.0.0" } diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 357adba42c5d..b3ee6b5cd566 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -57,10 +57,20 @@ "reselect": "^4.1.8" }, "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", "@mui/material": "^5.15.14", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 97fb042a5ed2..9e474409fadf 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -55,10 +55,20 @@ "reselect": "^4.1.8" }, "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", "@mui/material": "^5.15.14", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 4018bbb601cb..52d8c9cf88f1 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -56,10 +56,20 @@ "reselect": "^4.1.8" }, "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", "@mui/material": "^5.15.14", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", "@mui/joy": "^5.0.0-beta.48", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index b2f2f014f6d1..aeb8fb154b44 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -60,6 +60,14 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", "@types/prop-types": "^15.7.12", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 0ab596434f56..ffb743b995f3 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -59,6 +59,14 @@ "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + }, "devDependencies": { "@mui/internal-test-utils": "^1.0.5", "@types/prop-types": "^15.7.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20305cd7e0a3..4e9482e02060 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -952,6 +952,12 @@ importers: '@babel/runtime': specifier: ^7.25.0 version: 7.25.0 + '@emotion/react': + specifier: ^11.9.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1002,6 +1008,12 @@ importers: '@babel/runtime': specifier: ^7.25.0 version: 7.25.0 + '@emotion/react': + specifier: ^11.9.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/icons-material': specifier: ^5.4.1 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) @@ -1037,6 +1049,12 @@ importers: '@babel/runtime': specifier: ^7.25.0 version: 7.25.0 + '@emotion/react': + specifier: ^11.9.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1099,6 +1117,12 @@ importers: '@babel/runtime': specifier: ^7.25.0 version: 7.25.0 + '@emotion/react': + specifier: ^11.9.0 + version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) From 0c309467e5d5e470c06ef02e8561f6c09c2f58b8 Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Wed, 7 Aug 2024 18:36:58 +0300 Subject: [PATCH 740/912] [docs] Redesign Date and Time Pickers overview page (#13241) Signed-off-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Arthur Suh Balduini <34691066+arthurbalduini@users.noreply.github.com> Co-authored-by: Kenan Yusuf Co-authored-by: Sycamore <71297412+samuelsycamore@users.noreply.github.com> Co-authored-by: Lukas Tyla --- .../base-concepts/base-concepts.md | 45 ++ .../getting-started/getting-started.md | 2 +- .../overview/CommonlyUsedComponents.js | 112 ---- .../overview/CommonlyUsedComponents.tsx | 120 ----- docs/data/date-pickers/overview/overview.md | 70 +-- docs/pages/x/react-date-pickers/index.js | 2 +- .../static/x/date-libraries/datefns.png | Bin 0 -> 1098 bytes docs/public/static/x/date-libraries/dayjs.png | Bin 0 -> 687 bytes docs/public/static/x/date-libraries/luxon.png | Bin 0 -> 2825 bytes .../static/x/date-libraries/momentjs.png | Bin 0 -> 1593 bytes .../components/overview/CommunityOrPro.tsx | 81 +++ .../components/overview/DateLibraries.tsx | 114 ++++ .../components/overview/FeatureHighlight.tsx | 72 +++ .../modules/components/overview/InfoCard.tsx | 107 ++++ .../overview/Internationalization.tsx | 387 ++++++++++++++ .../modules/components/overview/Keyboard.tsx | 503 ++++++++++++++++++ .../modules/components/overview/MainDemo.tsx | 125 +++++ .../components/overview/WorldMapSvg.tsx | 123 +++++ .../src/modules/components/overview/XLogo.tsx | 29 + .../components/overview/mainDemo/Birthday.tsx | 34 ++ .../components/overview/mainDemo/Clock.tsx | 52 ++ .../mainDemo/DateRangeWithShortcuts.tsx | 114 ++++ .../overview/mainDemo/DigitalClock.tsx | 67 +++ .../overview/mainDemo/FlightPicker.tsx | 31 ++ .../overview/mainDemo/PickerButton.tsx | 71 +++ .../overview/mainDemo/ThemeToggleGroup.tsx | 63 +++ .../src/PickersTextField/PickersTextField.tsx | 1 + 27 files changed, 2030 insertions(+), 295 deletions(-) delete mode 100644 docs/data/date-pickers/overview/CommonlyUsedComponents.js delete mode 100644 docs/data/date-pickers/overview/CommonlyUsedComponents.tsx create mode 100644 docs/public/static/x/date-libraries/datefns.png create mode 100644 docs/public/static/x/date-libraries/dayjs.png create mode 100644 docs/public/static/x/date-libraries/luxon.png create mode 100644 docs/public/static/x/date-libraries/momentjs.png create mode 100644 docs/src/modules/components/overview/CommunityOrPro.tsx create mode 100644 docs/src/modules/components/overview/DateLibraries.tsx create mode 100644 docs/src/modules/components/overview/FeatureHighlight.tsx create mode 100644 docs/src/modules/components/overview/InfoCard.tsx create mode 100644 docs/src/modules/components/overview/Internationalization.tsx create mode 100644 docs/src/modules/components/overview/Keyboard.tsx create mode 100644 docs/src/modules/components/overview/MainDemo.tsx create mode 100644 docs/src/modules/components/overview/WorldMapSvg.tsx create mode 100644 docs/src/modules/components/overview/XLogo.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/Birthday.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/Clock.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/DateRangeWithShortcuts.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/DigitalClock.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/FlightPicker.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/PickerButton.tsx create mode 100644 docs/src/modules/components/overview/mainDemo/ThemeToggleGroup.tsx diff --git a/docs/data/date-pickers/base-concepts/base-concepts.md b/docs/data/date-pickers/base-concepts/base-concepts.md index cf175fda55da..636aa7f934ca 100644 --- a/docs/data/date-pickers/base-concepts/base-concepts.md +++ b/docs/data/date-pickers/base-concepts/base-concepts.md @@ -29,6 +29,51 @@ import { DatePicker } from '@mui/x-date-pickers'; import { DatePicker } from '@mui/x-date-pickers-pro'; ``` +## Date library + +The Date and Time Pickers are focused on UI/UX and, like most other picker components available, require a third-party library to format, parse, and mutate dates. + +MUI's components let you choose which library you prefer for this purpose. +This gives you the flexibility to implement any date library you may already be using in your application, without adding an extra one to your bundle. + +To achieve this, both `@mui/x-date-pickers` and `@mui/x-date-pickers-pro` export a set of **adapters** that expose the date manipulation libraries under a unified API. + +### Available libraries + +The Date and Time Pickers currently support the following date libraries: + +- [Day.js](https://day.js.org/) +- [date-fns](https://date-fns.org/) +- [Luxon](https://moment.github.io/luxon/#/) +- [Moment.js](https://momentjs.com/) + +:::info +If you are using a non-Gregorian calendar (such as Jalali or Hijri), please refer to the [Support for other calendar systems](/x/react-date-pickers/calendar-systems/) page. +::: + +### Recommended library + +If you are already using one of the libraries listed above in your application, then you can keep using it with the Date and Time Pickers as well. +This will avoid bundling two libraries. + +If you don't have your own requirements or don't manipulate dates outside of MUI X components, then the recommendation is to use `dayjs` because it has the smallest impact on your application's bundle size. + +Here is the weight added to your gzipped bundle size by each of these libraries when used inside the Date and Time Pickers: + +| Library | Gzipped size | +| :---------------- | -----------: | +| `dayjs@1.11.5` | 6.77 kB | +| `date-fns@2.29.3` | 19.39 kB | +| `luxon@3.0.4` | 23.26 kB | +| `moment@2.29.4` | 20.78 kB | + +:::info +The results above were obtained in October 2022 with the latest version of each library. +The bundling of the JavaScript modules was done by a Create React App, and no locale was loaded for any of the libraries. + +The results may vary in your application depending on the version of each library, the locale, and the bundler used. +::: + ## Other components ### Choose interaction style diff --git a/docs/data/date-pickers/getting-started/getting-started.md b/docs/data/date-pickers/getting-started/getting-started.md index 7572576f22f6..d47244fe608f 100644 --- a/docs/data/date-pickers/getting-started/getting-started.md +++ b/docs/data/date-pickers/getting-started/getting-started.md @@ -24,7 +24,7 @@ Using your favorite package manager, install: :::info If you need more information about the date library supported by the Date and Time Pickers, -take a look at the [dedicated section](/x/react-date-pickers/#date-library) +take a look at the [dedicated section](/x/react-date-pickers/base-concepts/#date-library) ::: The Date and Time Pickers package has a peer dependency on `@mui/material`. diff --git a/docs/data/date-pickers/overview/CommonlyUsedComponents.js b/docs/data/date-pickers/overview/CommonlyUsedComponents.js deleted file mode 100644 index b1ddcc788f64..000000000000 --- a/docs/data/date-pickers/overview/CommonlyUsedComponents.js +++ /dev/null @@ -1,112 +0,0 @@ -import * as React from 'react'; -import { styled } from '@mui/material/styles'; -import Tooltip from '@mui/material/Tooltip'; -import Stack from '@mui/material/Stack'; -import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; -import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; -import { DatePicker } from '@mui/x-date-pickers/DatePicker'; -import { TimePicker } from '@mui/x-date-pickers/TimePicker'; -import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; -import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; - -const ProSpan = styled('span')({ - display: 'inline-block', - height: '1em', - width: '1em', - verticalAlign: 'middle', - marginLeft: '0.3em', - marginBottom: '0.08em', - backgroundSize: 'contain', - backgroundRepeat: 'no-repeat', - backgroundImage: 'url(https://mui.com/static/x/pro.svg)', -}); - -function Label({ componentName, valueType, isProOnly }) { - const content = ( - - {componentName} for {valueType} editing - - ); - - if (isProOnly) { - return ( - - - - - - - {content} - - ); - } - - return content; -} - -export default function CommonlyUsedComponents() { - return ( - - - }> - - - }> - - - } - > - - - - } - component="DateRangePicker" - > - - - - } - component="DateTimeRangePicker" - > - - - - - ); -} diff --git a/docs/data/date-pickers/overview/CommonlyUsedComponents.tsx b/docs/data/date-pickers/overview/CommonlyUsedComponents.tsx deleted file mode 100644 index 81fe975bc477..000000000000 --- a/docs/data/date-pickers/overview/CommonlyUsedComponents.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import * as React from 'react'; -import { styled } from '@mui/material/styles'; -import Tooltip from '@mui/material/Tooltip'; -import Stack from '@mui/material/Stack'; -import { DemoContainer, DemoItem } from '@mui/x-date-pickers/internals/demo'; -import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; -import { DatePicker } from '@mui/x-date-pickers/DatePicker'; -import { TimePicker } from '@mui/x-date-pickers/TimePicker'; -import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; -import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; - -const ProSpan = styled('span')({ - display: 'inline-block', - height: '1em', - width: '1em', - verticalAlign: 'middle', - marginLeft: '0.3em', - marginBottom: '0.08em', - backgroundSize: 'contain', - backgroundRepeat: 'no-repeat', - backgroundImage: 'url(https://mui.com/static/x/pro.svg)', -}); - -function Label({ - componentName, - valueType, - isProOnly, -}: { - componentName: string; - valueType: string; - isProOnly?: boolean; -}) { - const content = ( - - {componentName} for {valueType} editing - - ); - - if (isProOnly) { - return ( - - - - - - - {content} - - ); - } - - return content; -} - -export default function CommonlyUsedComponents() { - return ( - - - }> - - - }> - - - } - > - - - - } - component="DateRangePicker" - > - - - - } - component="DateTimeRangePicker" - > - - - - - ); -} diff --git a/docs/data/date-pickers/overview/overview.md b/docs/data/date-pickers/overview/overview.md index 8c73477e1a0a..f3cd40be4bc7 100644 --- a/docs/data/date-pickers/overview/overview.md +++ b/docs/data/date-pickers/overview/overview.md @@ -7,68 +7,16 @@ materialDesign: https://m2.material.io/components/date-pickers waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/datepicker-dialog/ --- -# MUI X Date and Time Pickers - -

    These react date picker and time picker components let users select date or time values.

    - -{{"component": "@mui/docs/ComponentLinkHeader"}} - -## Overview - -{{"demo": "CommonlyUsedComponents.js"}} - -## Community or Pro plan? - -The Date and Time Pickers are available in two packages: - -- `@mui/x-date-pickers`, which is MIT licensed (free forever) and contains all the components to edit a date and/or a time. -- `@mui/x-date-pickers-pro`, which is [commercially licensed](/x/introduction/licensing/#pro-plan) and contains additional components to edit date and/or time ranges. - -## Date library - -The Date and Time Pickers are focused on UI/UX and, like most other picker components available, require a third-party library to format, parse, and mutate dates. - -MUI's components let you choose which library you prefer for this purpose. -This gives you the flexibility to implement any date library you may already be using in your application, without adding an extra one to your bundle. +{{"component": "modules/components/overview/XLogo.tsx"}} -To achieve this, both `@mui/x-date-pickers` and `@mui/x-date-pickers-pro` export a set of **adapters** that expose the date manipulation libraries under a unified API. - -### Available libraries - -The Date and Time Pickers currently support the following date libraries: - -- [Day.js](https://day.js.org/) -- [date-fns](https://date-fns.org/) -- [Luxon](https://moment.github.io/luxon/#/) -- [Moment.js](https://momentjs.com/) - -:::info -If you are using a non-Gregorian calendar (such as Jalali or Hijri), please refer to the [Support for other calendar systems](/x/react-date-pickers/calendar-systems/) page. -::: - -### Recommended library - -If you are already using one of the libraries listed above in your application, then you can keep using it with the Date and Time Pickers as well. -This will avoid bundling two libraries. - -If you don't have your own requirements or don't manipulate dates outside of MUI X components, then the recommendation is to use `dayjs` because it has the smallest impact on your application's bundle size. - -Here is the weight added to your gzipped bundle size by each of these libraries when used inside the Date and Time Pickers: - -| Library | Gzipped size | -| :---------------- | -----------: | -| `dayjs@1.11.5` | 6.77 kB | -| `date-fns@2.29.3` | 19.39 kB | -| `luxon@3.0.4` | 23.26 kB | -| `moment@2.29.4` | 20.78 kB | - -:::info -The results above were obtained in October 2022 with the latest version of each library. -The bundling of the JavaScript modules was done by a Create React App, and no locale was loaded for any of the libraries. +# MUI X Date and Time Pickers -The results may vary in your application depending on the version of each library, the locale, and the bundler used. -::: +

    A collection of React UI components for selecting dates, times, and ranges.

    -## What's next? +{{"component": "modules/components/overview/MainDemo.tsx"}} -Continue to the [next page](/x/react-date-pickers/getting-started/) and learn how to prepare your application for the Date and Time Pickers. +{{"component": "modules/components/overview/FeatureHighlight.tsx"}} +{{"component": "modules/components/overview/CommunityOrPro.tsx"}} +{{"component": "modules/components/overview/Keyboard.tsx"}} +{{"component": "modules/components/overview/Internationalization.tsx"}} +{{"component": "modules/components/overview/DateLibraries.tsx"}} diff --git a/docs/pages/x/react-date-pickers/index.js b/docs/pages/x/react-date-pickers/index.js index b3933fe81dc2..204ca09b82db 100644 --- a/docs/pages/x/react-date-pickers/index.js +++ b/docs/pages/x/react-date-pickers/index.js @@ -3,5 +3,5 @@ import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; import * as pageProps from 'docsx/data/date-pickers/overview/overview.md?muiMarkdown'; export default function Page() { - return ; + return ; } diff --git a/docs/public/static/x/date-libraries/datefns.png b/docs/public/static/x/date-libraries/datefns.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1beba7507eb183ec1040d6f9631bea7f77d093 GIT binary patch literal 1098 zcmV-Q1hxB#P)Px(1W80eR9Fe^SIuiAMHDZ;V3Y28uNM(f5yhJxM9Cs}GG1iW6$ObN6qfZQ2sSyoZ-;|~xKK}1x%_;Fc8_poYUJqU(?s3@*dlf0Rl>F(*y zs0cEF=2gA-`~BXVSE=f1#>Ri+4vaf6?!bTFfr$IFnup3f3HtR>D@q_dOga&l%SYMF z#HdG!t9v!bbEFr6|2AXnl3mL5;1Tx^k(jZodn(ht zXm1pO|9Ttb=Lw3Xo;Q1R+FQCoqueCjCi>53BMZEyQ?^jdgX4LW7SumA3EMnu=V5IB zx?6pi3N$wIg1hW^sjg4fjjFv|EPB#yT^LhGx{$*BiG|E4Ss66>xA0T5gtU$Xsg~4}bP7+P1 z-A8$hRT%E0Sgvhy@t{pwgSk6$!8?Jx0*4i6sI99)S7Z1y<%_|OigK|Sy&!xXv3w_(Z~=fHDW|%>By}66P@E=#1jUc$ zYP2hX0d{h>Hzpq1^x8V7i$52Q-R{ zB-X-u`R|57v7Nbj(`fA7m=X{&2U^aZpr})U35qTAK~;{KM#U3L*J+gJNiX8{m(!>b zJPoKkeu7u#&9me@b+GWX&&jdq9)5&$PQvWb88&lS4s`4ucVOIs|4j$}0=(CVeR<{{ Qr~m)}07*qoM6N<$f}gJts{jB1 literal 0 HcmV?d00001 diff --git a/docs/public/static/x/date-libraries/dayjs.png b/docs/public/static/x/date-libraries/dayjs.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb9630fbee36d8a1504465762a8a8c53f0ddbba GIT binary patch literal 687 zcmV;g0#N;lP)Px%X-PyuR9Fe^mT6B@K@^7j10^nr7~|4X2wG*4vbZ5iAfkza35W|ZV5`NLN+GBa z1tC(@LR3n`rY^ySsDv2&2ag%YxpRk9J~&_cVQw;+d(X_7dFDOm+)N-)><_^$6mts{ zGn`;^fVL5G3OWUC6|nVpIp`F$RlwHY<)Bm0RsmaoorB33EG@{k_!6#NEPPMAa|4bZ z&|}9V@OV^zi~D7L7^cS|RASoI-E(RTYWK^r@HQB_4f!{aTZH}|!$$*F?0`eNWjlEo z#!~QX%9u=eE994;snWE+%|d&lwq>3|XRH2JV5Pxu=_MUX{M1O!1qQRuM9qM#_7h)4^# zq0zAP>qetS#jO-~5P8jLCNrs;OdK_-NhT&SshMPwN>!rKnn{fsoZ-xz4;vw(29o>< zRbB6K-@EraeebuN^R-6vYy5kC2kaWE5TqKRGbyNTRPeq@!F7`XcU1*dL&P*d_5aW?8(7Q_@&sF1D)rcA% zNoDSzFzGpOIl>_}V-VuG7)6UtbpZ22aGm{MwCJSFea3pYti?6yvvTZ49J;U@Lw*!U zejC+@L#l%2jTt749_ommPyGfjjt|80n4Ks|tM4*6Ghoimh^~gaeHeN^)eEDCI)FA* zeM@tb0X0wD$u~;T*JPAqm5DqS`q>QEc$B1eAD9`S`O3ApX5ZceKpUHuHpx!%xEmkm zld6Iw)qtDERqtTbPzM1wFJKjP$)~%$Yi3YCymHNX0r_HsK~|ajHbH)S&VWUo9yP;W zRq!F5m;S*cnBki6i-0qO)g_-28+0N2=e$ANCI#0XN6$^HCX}4+P#ql%6CNo7tRdWlmbV%kVBkY-k^?8?IZD|We+R}N|T{6U7neGyY z_>c`KK86mP0XO z$V7NKMafvW&kCf3zXHDdxV6mBXqzRJSWJ4{A`8+q8KJ8yzb!?*zlAjtLN`5fv8)BJ zA;c>kK9ge*De-#r>#N!>~(0=w?LPC5^nZkC`vw#5U(W& z_FRnB3AG*Ua2K;<_h7K~2*Faj`36h|9Mz}>ymxT@m$2+-gE7OL9xD8)5#{iA)ndXJ zPozbbqrT#M?ACpR$>V3DJo}I0FEiW{P*eIjTqevysCNcVZv7`Xwzv3G6eJ#jhhqc| ztovN%rp+yvwYX+V__hupNidkSN!7?FiH$pWg9MWtjx@>a54^_CDu%c7JnYtejDzdH zfHtHAf$mAD%zX>{*L{vzo+&u6?jP8^?1Jz;hv$6}G&My4Zq51wl$Dn-$0rjfUcQB` zD}FC?7e`iz@z-=8i%Y}>m0)eknKrx5WBmmSpOffnNYR!2D-z=5a%O;wBlU0^>yOFf z1H~sQ^Dd&k{4Ta-y$L^;h0y0+#OZC{k=x0U@(YX~(+ZnfJD=$-ttGrP0PVyX2H4zQ+73+`+p7kTjixtR4hdn0Op+lV)Q>x{704 zZemx_N0{rEg((w*kvV@m>MHIC0HI1`$qKNqPa5uS=OQQ9N^3Ri<_MSWs!Jet`a0tgs!Ry2} z-Hcdv7s(Odcn~E09|TFbPZnNY{)QM~6xNpAz?RH6P>^_7{L2ig{q@zt4=`lVXyJ`a zGwq)}xNkw};(A$|QQD}q$a}OE;hQA^+F6hstu4EbaUFY-T1hQjycUY4)Je}sk!#-Rjg6+Ujf`zHCQI8WE z>Q-~2w&-Ii8Y0SnB{uxuH_lczV|&40ke_fE;l3-RR=26M`@Uxe%0%t!vH&rGg%Y*q z@%GoV72hMuKL_DH%aI>{5IYM0iu#IXY{)QyHmP6w_qCD$s;{`yqB2ploKWLZ8nVo= z+@we9F~W8t=p!LsX<%v~q1?IV18iK{gi~7|_ObRrI=ip0xGPL$@7hmMmG@^Xj;s`w z=QDXe#td`Dl1K&9oT6Gwopv8oJ+4csd%Xg7ssUH1by=uwo*ssRgj$4pFGJbV^EkZm zD=7Jw5fiu?)10G_9<7&z+Zl+*jZwho#O{&ci1N=BF-AWuTXr4+t_c#wRs(GDjFp|} zZVLT36%1}=G@a0`yto7KaG29pzBXrG=rnyi4pe8)m1J`RmH>uxS(Q$`z}X-TfAH|q76d1bSbB>HuW@CzH|T_<6M6ityGJJfx1@Ve_vly zc18!}iw#O#!z$@A++@GTjOU?iSA{#ZL{98JB+uD~mqONKL12-5sO~t%XPqfSj&)18 z6S1^D4APfr-jvZK0-i@eB0;4`0&8YGUA=N{X3S3UZ)#zl5^bnTOS7ur&=Xr9<}E$9 z70+@4{fiAA3V8+&i(HUWE zospI?p-TI0_D1o&;zzXKvKQ{T-+qe{#m2cL6!T}UmH;DJ?pFKF402y7`m$eRGTGlp7?B-$|B z>-Lpl|JW9AzfM}f{n!F_mBRmvwSe1yBPMfm6P-ez#hfhY#Fks4F({46%8H2r>8|2>l)wdS88&hCI+ bckKTUBf{D9*;@7V00000NkvXXu0mjf#eHl< literal 0 HcmV?d00001 diff --git a/docs/public/static/x/date-libraries/momentjs.png b/docs/public/static/x/date-libraries/momentjs.png new file mode 100644 index 0000000000000000000000000000000000000000..32d3732df27cfc0f6eea86e79af7089b14821248 GIT binary patch literal 1593 zcmV-92FCe`P)Px)^GQTOR9Fe!ncr`dRT#(1g+EYCxX_`42vLk?2?PT@=iLU$zz~BF-20YAooUbW zmY&lxC9<2{fKV=siIlykb6a~F+z{inc;O5e1QWA=U|bmk3+!e?eq0a~LZJG*?P=e3 zU3t3>NNm!)Z%)s7&gVSm*YkZE2>c&E>ksaFj*943%GpsGhqF|`Wh(4h8fW*3fCq+v zYgE7#iNkqAz%g9g^Qm!K0-a`dDH_x76sfHoZ0|tj*s*Fu<;gMav!^3N> ztUP5YdCO8VU-8X2ojv1&8!E~Qb?#bOIo_Rd*3r1Vj|!Of+9raX+XS%EFX%EN;3uyE zD&WkH!-rRga?Xj6lK<2Ia6#LW$!D>Xg?`6!Gb@kpOeR}{)w9FxiOoX1@JL8Q*eNd@ z5s<`@o64QWN{>}}&<~&sspK@;#3RVtmm%1cU~iegTUf zzSgaV-ZZ#<#M`HlSYYFHe71ir?yPcUrf`&&l5<6aOAUzjuI$OC-!eFyD)$RFXzY_! z^E^p~tvr>cw;ek4nx*8lU${khP!ISLu5a(gAv`iv0f>jD_YgMX_D5z;9&ZG$3BbIm zYvy-fPB#*fyl(4^%|9YYr;lCI%$|H!3OKnMA-9GjpQFRPyeV2E>EEd)!$`h5c6< zGQ2fF1$$4Kgb1Y>9`nqX<~KHMVdFhm>>rX#s{*dYHsnL<15I zX9Gmo7j;39+Z~}?dh#g(PGMxEd5C~ZfnxOQ2A^yCdzND)^0WXgCGT|g^{vo=RKRQi z14vzf+Zrn^2sn}oZdU44r`!vO&O_Q+4Tw>(-@w36XN}i!?qSHKc`!BzP{A(i0$iY$k{25{Tot(bn95px zgj9OcNU%=LgUS#$$&b1q$bnlbJzA^rlPEJY&S}Dq3@cROp8|mk{E1rHzQumni>^bQ51QjjmQ3OX65%J zfy%F#5a4VkptBK}Ehzs07kW>n)|yH_Y<|l8Z=T(w&Kt!vihF4g!A46*S!Xob>J3}6aB$R_JS73j34GgUDqvV<$gsJ58&g4L=H{_=RzAJf8 zzo1a@CWTPQ6eH{F%|g^^KZku(Xk-qv^SoDvWOmt$kSDQd5~ZP~9N)^W4ou}n%gXDn z?DVdG+#nqKG*8WEbv}l~3c|fng;yWcxm1vwm717v$kc@L7Glzf2>8|ONtC2J2R?7L zluXs{xc;uilfle6CwCm~Uv0!Iv~Zqs_Pdv(?t2%&^He}}CTf}pw%c8oIXT{-ZnBa0-^rsAJQa4j!jOB2vWZ|EtZ?Q;%f8IerzT2-oSd|jbFb{( zG{%${t&B5jW@V%xhN9c?Zk=b3!-%h>QHiSR1s5&lb}1y&9Tcu4Hinmbd!OBbDLdWt z?P&BRdLXh96PUymL0+X+xGC_&AUtwVw`uCxDZ;N)!Mv%F#`4qp`Vx>QoINC*Wj2Px zElokyYK-R-8uto)?a@a+*-gUXB;H!JY%gtDKEDkAS_sDNBZYNkPZ@ETE9e_`pK^@S r*=5Sv&+cCpBD%G$r^iihHVX1DR1Mj+GYSd`00000NkvXXu0mjfZU+bT literal 0 HcmV?d00001 diff --git a/docs/src/modules/components/overview/CommunityOrPro.tsx b/docs/src/modules/components/overview/CommunityOrPro.tsx new file mode 100644 index 000000000000..7e6dcbf3de21 --- /dev/null +++ b/docs/src/modules/components/overview/CommunityOrPro.tsx @@ -0,0 +1,81 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Divider from '@mui/material/Divider'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; +import InfoCard from './InfoCard'; + +export default function CommunityOrPro() { + return ( + + + + + + + Community and Pro + + + Two packages for every need + + + Start with the free-forever Community version, then upgrade to Pro when you are ready + for additional features and components. + + + + + + + + } + description={[ + 'Free forever under an MIT license. Includes Date Pickers, Time Pickers, and Date Time Pickers.', + ]} + backgroundColor="subtle" + link="/pricing" + /> + + + } + description={[ + 'Requires a commercial license. Includes all Community components plus the Date and Time Range Pickers.', + ]} + backgroundColor="subtle" + link="/pricing" + /> + + + + + ); +} diff --git a/docs/src/modules/components/overview/DateLibraries.tsx b/docs/src/modules/components/overview/DateLibraries.tsx new file mode 100644 index 000000000000..139365eac622 --- /dev/null +++ b/docs/src/modules/components/overview/DateLibraries.tsx @@ -0,0 +1,114 @@ +import * as React from 'react'; +// @ts-ignore +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; +import { HighlightedCode } from '@mui/docs/HighlightedCode'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Divider from '@mui/material/Divider'; +import Stack from '@mui/material/Stack'; +import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'; +import ToggleButton from '@mui/material/ToggleButton'; +import Typography from '@mui/material/Typography'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; + +const dateLibraries = [ + { + name: 'Dayjs', + link: '/static/x/date-libraries/dayjs.png', + adapter: 'AdapterDayjs', + value: "dayjs('2024-04-17')", + }, + { + name: 'Luxon', + link: '/static/x/date-libraries/luxon.png', + adapter: 'AdapterLuxon', + value: "DateTime.fromISO('2024-04-17')", + }, + { + name: 'date-fns', + link: '/static/x/date-libraries/datefns.png', + adapter: 'AdapterDateFns', + value: "new Date('2024-04-17')", + }, + { + name: 'Moment.js', + link: '/static/x/date-libraries/momentjs.png', + adapter: 'AdapterMoment', + value: "moment('2024-04-17')", + }, +]; + +export default function DateLibraries() { + const [selectedLibrary, setSelectedLibrary] = React.useState(0); + + const handleLibrarySwitch = (_event: React.MouseEvent, library: number) => { + if (library !== null) { + setSelectedLibrary(library); + } + }; + return ( + + + + + + Use your favorite date library + + } + description="MUI X Date Pickers integrate smoothly with the most popular date libraries available." + /> + + + + + {dateLibraries.map((library, index) => ( + + {library.name} + {library.name} + + ))} + + + + + `, + ` `, + ``, + ].join('\n')} + language="jsx" + copyButtonHidden + /> + + + + + ); +} diff --git a/docs/src/modules/components/overview/FeatureHighlight.tsx b/docs/src/modules/components/overview/FeatureHighlight.tsx new file mode 100644 index 000000000000..684d7972340e --- /dev/null +++ b/docs/src/modules/components/overview/FeatureHighlight.tsx @@ -0,0 +1,72 @@ +import * as React from 'react'; +import Divider from '@mui/material/Divider'; +import Typography from '@mui/material/Typography'; +import Stack from '@mui/material/Stack'; +import FormatPaintIcon from '@mui/icons-material/FormatPaint'; +import AccessibilityNewIcon from '@mui/icons-material/AccessibilityNew'; +import LanguageIcon from '@mui/icons-material/Language'; +import InfoCard from './InfoCard'; + +const featuredItems = [ + { + title: 'Highly customizable', + description: + 'Start with our meticulous Material Design implementation, or go fully custom with your own design system.', + icon: , + }, + { + title: 'Accessibility', + description: + 'We are committed to meeting or exceeding global standards for accessibility, and we provide thorough guidance on best practices in our documentation.', + icon: , + }, + { + title: 'Internationalization', + description: + 'Serve the needs of users all around the world with built-in support for multiple time zones, languages, and date formats.', + icon: , + }, +]; + +export default function FeatureHighlight() { + return ( + + + + + + Using MUI X Date Pickers + + + First-class developer experience + + + MUI X Date and Time Pickers are designed to be delightful and intuitive for developers + and users alike. + + + + {featuredItems.map(({ title, description, icon }, index) => ( + + ))} + + + + ); +} diff --git a/docs/src/modules/components/overview/InfoCard.tsx b/docs/src/modules/components/overview/InfoCard.tsx new file mode 100644 index 000000000000..aaaebb419a61 --- /dev/null +++ b/docs/src/modules/components/overview/InfoCard.tsx @@ -0,0 +1,107 @@ +import * as React from 'react'; +import { alpha } from '@mui/material/styles'; +import Link from '@mui/material/Link'; +import Typography from '@mui/material/Typography'; +import Stack from '@mui/material/Stack'; +import Paper from '@mui/material/Paper'; + +type InfoCardProps = { + title: string; + description?: string | string[]; + icon?: React.ReactNode; + onClick?: () => void; + active?: boolean; + backgroundColor?: 'gradient' | 'subtle'; + link?: string; +}; +export default function InfoCard({ + title, + description, + icon: Icon, + onClick, + active, + backgroundColor = 'gradient', + link, +}: InfoCardProps) { + const clickable = Boolean(onClick); + + return ( + ({ + p: 2.5, + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + textAlign: 'left', + flexGrow: 1, + height: '100%', + boxShadow: 'transparent', + background: + backgroundColor === 'gradient' + ? `${(theme.vars || theme).palette.gradients.linearSubtle}` + : 'transparent', + ...(clickable && { + cursor: 'pointer', + '&:hover': { + opacity: 1, + boxShadow: `0px 2px 30px 0px ${alpha(theme.palette.primary[50], 0.3)} inset, 0px 1px 6px 0px ${theme.palette.primary[100]}`, + borderColor: 'primary.100', + ...(active && { + borderColor: 'primary.300', + }), + }, + ...(active && { + boxShadow: `0px 2px 30px 0px ${alpha(theme.palette.primary[50], 0.3)} inset, 0px 1px 6px 0px ${theme.palette.primary[100]}`, + borderColor: 'primary.200', + }), + ...(!active && { borderColor: 'grey.300', opacity: 0.7 }), + }), + ...theme.applyDarkStyles({ + bgcolor: alpha(theme.palette.primaryDark[800], 0.25), + background: `${(theme.vars || theme).palette.gradients.linearSubtle}`, + borderColor: 'primaryDark.700', + ...(clickable && { + '&:hover': { + boxShadow: `0px 2px 30px 0px ${alpha(theme.palette.primary[800], 0.1)} inset, 0px 1px 6px 0px ${theme.palette.primary[900]}`, + + borderColor: 'primary.300', + }, + ...(active && { + boxShadow: `0px 2px 30px 0px ${alpha(theme.palette.primary[800], 0.1)} inset, 0px 1px 6px 0px ${theme.palette.primary[900]}`, + borderColor: 'primary.100', + }), + }), + }), + })} + > + + {Icon} + + {title} + + + {description && typeof description === 'string' && ( + + {description} + + )} + {description && + typeof description === 'object' && + description.map((item, index) => ( + + {item} + + ))} + + ); +} diff --git a/docs/src/modules/components/overview/Internationalization.tsx b/docs/src/modules/components/overview/Internationalization.tsx new file mode 100644 index 000000000000..5f5353a4e952 --- /dev/null +++ b/docs/src/modules/components/overview/Internationalization.tsx @@ -0,0 +1,387 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import 'dayjs/locale/ro'; +import 'dayjs/locale/zh-cn'; +import utc from 'dayjs/plugin/utc'; +import timezone from 'dayjs/plugin/timezone'; +import { styled, createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; +// @ts-ignore +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Divider from '@mui/material/Divider'; +import Paper from '@mui/material/Paper'; +import Stack from '@mui/material/Stack'; +import MuiToggleButtonGroup, { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup'; +import MuiToggleButton from '@mui/material/ToggleButton'; +import Typography from '@mui/material/Typography'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; +import { + DateTimeRangePicker, + DateTimeField, + DatePicker, + DateTimeValidationError, + DateCalendar, +} from '@mui/x-date-pickers-pro'; +import { AdapterDayjs } from '@mui/x-date-pickers-pro/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers-pro/LocalizationProvider'; +import { roRO, enUS, zhCN } from '@mui/x-date-pickers-pro/locales'; +import InfoCard from './InfoCard'; +import WorldMapSvg, { ContinentClickHandler } from './WorldMapSvg'; + +dayjs.extend(utc); +dayjs.extend(timezone); + +const internationalizationFeatures = [ + { + title: 'Support for multiple timezones', + description: 'Accommodate global users and events in any geographical location.', + }, + { + title: 'Support for multiple languages', + description: + "Meet users where they're at with support for common date formats and languages used around the world.", + }, + { + title: 'Validation and error handling', + description: 'We have all use cases covered for you and your end users.', + }, +]; + +function DemoWrapper({ + children, + controls: ToolbarControls, + link, +}: { + children: React.ReactNode; + controls?: React.ReactNode; + link: string; +}) { + return ( + ({ + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + border: '1px solid', + borderColor: 'divider', + borderRadius: 1, + flexGrow: 1, + width: '100%', + justifyContent: 'space-between', + background: (brandingTheme.vars || brandingTheme).palette.gradients.linearSubtle, + })} + > + {children} + + ({ + width: '100%', + border: '1px solid transparent', + borderTopColor: 'divider', + borderTopLeftRadius: 0, + borderTopRightRadius: 0, + display: 'flex', + padding: brandingTheme.spacing(1), + justifyContent: 'flex-end', + alignItems: { md: 'center' }, + gap: 2, + })} + > + {ToolbarControls} + + + + ); +} + +function TimezonesDemo() { + const [selectedTimezone, setSelectedTimezone] = React.useState(null); + const brandingTheme = useTheme(); + const theme = createTheme({ palette: { mode: brandingTheme.palette.mode } }); + + const handleContinentClick: ContinentClickHandler = (e, newTimezone) => { + if (selectedTimezone === newTimezone) { + setSelectedTimezone(null); + } else { + setSelectedTimezone(newTimezone); + } + }; + + return ( + + + + + {selectedTimezone ? `Selected timezone: ${selectedTimezone}` : 'Select timezone'} + + + + + + + + + + + + + ); +} + +type Languages = 'en' | 'ro' | 'zh-cn'; +const locales = { + ro: roRO, + en: enUS, + 'zh-cn': zhCN, +}; + +const ToggleButton = styled(MuiToggleButton)({ + borderColor: 'transparent', + padding: '5px 8px', +}); +const ToggleButtonGroup = styled(MuiToggleButtonGroup)(({ theme }) => ({ + gap: theme.spacing(1), + [`& .${toggleButtonGroupClasses.firstButton}, & .${toggleButtonGroupClasses.lastButton},& .${toggleButtonGroupClasses.middleButton} `]: + { + borderRadius: theme.shape.borderRadius, + }, +})); + +function Controls({ + selectedLanguage, + handleLanguageSwitch, +}: { + selectedLanguage: Languages; + handleLanguageSwitch: (event: React.MouseEvent, newLanguage: Languages) => void; +}) { + return ( + + + + Română + + + English + + + 日本語 + + + + ); +} + +function LanguagesDemo() { + const brandingTheme = useTheme(); + const [selectedLanguage, setSelectedLanguage] = React.useState('zh-cn'); + + const theme = createTheme({ palette: { mode: brandingTheme.palette.mode } }); + + const handleLanguageSwitch = (_event: React.MouseEvent, newLanguage: Languages) => { + if (newLanguage !== null) { + setSelectedLanguage(newLanguage); + } + }; + + return ( + + + } + link="/x/react-date-pickers/localization" + > + + + + + + + + + + + + ); +} + +const startOfQ12022 = dayjs('2024-01-01T00:00:00.000'); +const endOfQ12022 = dayjs('2024-03-31T23:59:59.999'); +const fiveAM = dayjs().set('hour', 5).startOf('hour'); +const nineAM = dayjs().set('hour', 9).startOf('hour'); + +const getError = (error: DateTimeValidationError | null) => { + switch (error) { + case 'maxDate': + case 'minDate': { + return 'Please select a date in the first quarter of 2024'; + } + + case 'invalidDate': { + return 'Your date is not valid'; + } + + default: { + return ''; + } + } +}; + +function ValidationDemo() { + const brandingTheme = useTheme(); + const [fieldError, setFieldError] = React.useState(null); + const [pickerError, setPickerError] = React.useState(null); + + const theme = createTheme({ palette: { mode: brandingTheme.palette.mode } }); + + return ( + + + + + setFieldError(newError)} + slotProps={{ + textField: { + helperText: getError(fieldError), + fullWidth: true, + }, + }} + minDate={startOfQ12022} + maxDate={endOfQ12022} + /> + setPickerError(newError)} + slotProps={{ + textField: { + helperText: getError(pickerError), + fullWidth: true, + }, + }} + minDate={startOfQ12022} + maxDate={endOfQ12022} + /> + + + + + + ); +} + +export default function Internationalization() { + const [activeItem, setActiveItem] = React.useState(0); + + return ( + + + + + + {internationalizationFeatures[activeItem].title} + + } + /> + {internationalizationFeatures.map(({ title, description }, index) => ( + setActiveItem(index)} + backgroundColor="subtle" + /> + ))} + + + {activeItem === 0 && } + {activeItem === 1 && } + {activeItem === 2 && } + + + + ); +} diff --git a/docs/src/modules/components/overview/Keyboard.tsx b/docs/src/modules/components/overview/Keyboard.tsx new file mode 100644 index 000000000000..a587bf3f0164 --- /dev/null +++ b/docs/src/modules/components/overview/Keyboard.tsx @@ -0,0 +1,503 @@ +import * as React from 'react'; +import clsx from 'clsx'; +import dayjs from 'dayjs'; +// @ts-ignore +import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; +import Button from '@mui/material/Button'; +import Divider from '@mui/material/Divider'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; +import { styled, alpha, createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { DateField } from '@mui/x-date-pickers/DateField'; +import { FieldSelectedSections } from '@mui/x-date-pickers/models'; + +type KeyType = { + label: string; + showLabel?: boolean; + width?: number; + displayedLabel?: string; + location?: number; + shouldSelect?: boolean; + code?: string; + keyCode?: number; + height?: number; + x?: number; + y?: number; + keyType?: 'navigate-left' | 'navigate-right' | 'input'; +}; + +const keys: KeyType[][] = [ + [ + { label: 'Escape', width: 43, showLabel: true, displayedLabel: 'Esc', shouldSelect: true }, + { label: 'f1', width: 23, showLabel: false }, + { label: 'f2', width: 23, showLabel: false }, + { label: 'f3', width: 23, showLabel: false }, + { label: 'f4', width: 23, showLabel: false }, + { label: 'f5', width: 23, showLabel: false }, + { label: 'f6', width: 23, showLabel: false }, + { label: 'f7', width: 23, showLabel: false }, + { label: 'f8', width: 23, showLabel: false }, + { label: 'f9', width: 23, showLabel: false }, + { label: 'f10', width: 23, showLabel: false }, + { label: 'f11', width: 23, showLabel: false }, + { label: 'f12', width: 23, showLabel: false }, + { label: 'Delete', width: 23, showLabel: true, shouldSelect: true, displayedLabel: 'Del' }, + ], + [ + { label: '`', width: 23, showLabel: true }, + { + label: '1', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit1', + keyCode: 49, + keyType: 'input', + }, + { + label: '2', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit2', + keyCode: 50, + keyType: 'input', + }, + { + label: '3', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit3', + keyCode: 51, + keyType: 'input', + }, + { + label: '4', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit4', + keyCode: 52, + keyType: 'input', + }, + { + label: '5', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit5', + keyCode: 53, + keyType: 'input', + }, + { + label: '6', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit6', + keyCode: 54, + keyType: 'input', + }, + { + label: '7', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit7', + keyCode: 55, + keyType: 'input', + }, + { + label: '8', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit8', + keyCode: 56, + keyType: 'input', + }, + { + label: '9', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit9', + keyCode: 57, + keyType: 'input', + }, + { + label: '0', + width: 23, + showLabel: true, + shouldSelect: true, + code: 'Digit0', + keyCode: 58, + keyType: 'input', + }, + { label: '-', width: 23, showLabel: false }, + { label: '=', width: 23, showLabel: false }, + { + label: 'Backspace', + displayedLabel: 'Back', + width: 43, + showLabel: true, + code: 'Backspace', + keyCode: 8, + shouldSelect: true, + }, + ], + [ + { label: 'Tab', width: 43, showLabel: true, shouldSelect: true }, + { label: 'q', width: 23, showLabel: false }, + { label: 'w', width: 23, showLabel: false }, + { label: 'e', width: 23, showLabel: false }, + { label: 'r', width: 23, showLabel: false }, + { label: 't', width: 23, showLabel: false }, + { label: 'y', width: 23, showLabel: false }, + { label: 'u', width: 23, showLabel: false }, + { label: 'i', width: 23, showLabel: false }, + { label: 'o', width: 23, showLabel: false }, + { label: 'p', width: 23, showLabel: false }, + { label: '[', width: 23, showLabel: false }, + { label: ']', width: 23, showLabel: false }, + { label: '\\', width: 23, showLabel: false }, + ], + [ + { label: 'CapsLock', width: 49, showLabel: true, displayedLabel: 'Caps', shouldSelect: true }, + { label: 'a', width: 23, showLabel: false }, + { label: 's', width: 23, showLabel: false }, + { label: 'd', width: 23, showLabel: false }, + { label: 'f', width: 23, showLabel: false }, + { label: 'g', width: 23, showLabel: false }, + { label: 'h', width: 23, showLabel: false }, + { label: 'j', width: 23, showLabel: false }, + { label: 'k', width: 23, showLabel: false }, + { label: 'l', width: 23, showLabel: false }, + { label: ';', width: 23, showLabel: false }, + { label: "'", width: 23, showLabel: false }, + { label: 'Enter', width: 45, showLabel: true, shouldSelect: true }, + ], + [ + { label: 'Shift', width: 59, showLabel: true, location: 1 }, + { label: 'z', width: 23, showLabel: false }, + { label: 'x', width: 23, showLabel: false }, + { label: 'c', width: 23, showLabel: false }, + { label: 'v', width: 23, showLabel: false }, + { label: 'b', width: 23, showLabel: false }, + { label: 'n', width: 23, showLabel: false }, + { label: 'm', width: 23, showLabel: false }, + { label: ',', width: 23, showLabel: false }, + { label: '.', width: 23, showLabel: false }, + { label: '/', width: 23, showLabel: true }, + { label: 'Shift', width: 63, showLabel: true, location: 2 }, + ], + [ + { label: 'Control', width: 43, showLabel: true, location: 1, displayedLabel: 'Ctrl' }, + { label: 'Meta', width: 29, showLabel: false }, + { label: 'Alt', width: 42, showLabel: true, location: 1 }, + { label: ' ', width: 119, showLabel: false, displayedLabel: 'Space' }, + { label: 'Alt', width: 42, showLabel: true, location: 2 }, + { label: 'Control', width: 23, showLabel: true, location: 2, displayedLabel: 'Ctrl' }, + ], +]; + +const arrowKeys: KeyType[] = [ + { + label: 'ArrowLeft', + width: 23, + height: 9, + showLabel: false, + shouldSelect: true, + x: 340.5, + y: 166.5, + keyType: 'navigate-left', + }, + { + label: 'ArrowUp', + width: 23, + height: 9, + showLabel: false, + shouldSelect: true, + x: 368.5, + y: 152.5, + }, + { + label: 'ArrowDown', + width: 23, + height: 9, + showLabel: false, + shouldSelect: true, + x: 368.5, + y: 166.5, + }, + { + label: 'ArrowRight', + width: 23, + height: 9, + showLabel: false, + shouldSelect: true, + x: 396.5, + y: 166.5, + keyType: 'navigate-right', + }, +]; + +const RootRectangle = styled('rect')(({ theme }) => ({ + fill: 'white', + stroke: theme.palette.grey[500], + ...(theme.palette.mode === 'dark' && { + stroke: theme.palette.grey[600], + fill: theme.palette.background.paper, + }), +})); +const KeyRoot = styled('g')(({ theme }) => ({ + cursor: 'pointer', + '&:not(.selected):hover ': { '& .key-rect': { fill: theme.palette.action.hover } }, + '&.selected': { '& .key-rect': { fill: alpha(theme.palette.primary.main, 0.2) } }, +})); +const KeyRectangle = styled('rect')(({ theme }) => ({ + fill: 'white', + stroke: theme.palette.grey[500], + ...(theme.palette.mode === 'dark' && { + stroke: theme.palette.grey[600], + fill: theme.palette.background.paper, + }), +})); +const KeyText = styled('text')(({ theme }) => ({ + fill: theme.palette.grey[800], + fontSize: 9, + fontFamily: 'IBM Plex Sans', + ...(theme.palette.mode === 'dark' && { fill: theme.palette.text.primary }), +})); + +type KeyboardSvgProps = { + handleKeySelection: HandleKeySelection; + selectedKey: SelectedKey | null; +}; + +export function KeyboardSvg({ selectedKey, handleKeySelection }: KeyboardSvgProps) { + return ( + + + + + + {keys.map((row, rowIndex) => { + let xPosition = 12.5; + const yPosition = 12.5 + rowIndex * 28; + return ( + + {row.map( + ( + { + label, + displayedLabel, + showLabel, + width = 23, + location = 0, + shouldSelect = false, + code, + keyCode, + }, + keyIndex, + ) => { + const textXPosition = xPosition + width / 2; + const textYPosition = yPosition + 11.5; + const keyComponent = ( + { + if (shouldSelect) { + e.preventDefault(); + + handleKeySelection(e, { + key: label, + location: location || 0, + code: code || label, + keyCode: keyCode || 0, + }); + } + }} + onMouseUp={(e) => { + if (shouldSelect) { + handleKeySelection(e, null); + } + }} + > + + {showLabel && ( + + {displayedLabel || label} + + )} + + ); + xPosition = xPosition + width + 5; + + return keyComponent; + }, + )} + + ); + })} + {arrowKeys.map( + ({ label: key, location = 0, code = key, keyCode, width, height, x, y }, keyIndex) => { + return ( + { + e.preventDefault(); + handleKeySelection(e, { key, location, code, keyCode }); + }} + onMouseUp={(e) => { + handleKeySelection(e, null); + }} + > + + + ); + }, + )} + + ); +} + +type SelectedKey = { + key: string; + location?: number; + code?: string; + keyCode?: number; +}; +type HandleKeySelection = (e: React.SyntheticEvent, key: SelectedKey | null) => void; + +export default function Keyboard() { + const [selectedKey, setSelectedKey] = React.useState(null); + const ref = React.useRef(null); + const selectedSection = React.useRef(0); + + const brandingTheme = useTheme(); + const theme = createTheme({ palette: { mode: brandingTheme.palette.mode } }); + + const handleKeySelection = (e: React.SyntheticEvent, key: SelectedKey | null) => { + const sectionContent = (ref.current as any).querySelector( + `.MuiPickersSectionList-section[data-sectionindex="${selectedSection.current || 0}"] .MuiPickersSectionList-sectionContent`, + ); + sectionContent.focus(); + + if (key) { + const event = new KeyboardEvent('keydown', { + ...key, + bubbles: true, + cancelable: true, + }); + + sectionContent.dispatchEvent(event); + + if (key.key === 'Backspace') { + sectionContent.textContent = ''; + const inputEvent = new InputEvent('input', { + data: '', + inputType: 'insertText', + bubbles: true, + cancelable: true, + }); + + sectionContent.dispatchEvent(inputEvent); + } else if (key?.keyCode && key?.keyCode >= 49 && key?.keyCode <= 58) { + sectionContent.textContent = key.key; + const inputEvent = new InputEvent('input', { + data: key.key, + inputType: 'insertText', + bubbles: true, + cancelable: true, + }); + sectionContent.dispatchEvent(inputEvent); + } + } + setSelectedKey(key); + }; + + return ( + + + + + + Assistive technology support + + } + description="The MUI X Date Pickers feature advanced keyboard support that's compliant with WCAG and WAI-ARIA standards, so users who require assistive technology can navigate your interface with ease." + /> + + + + + + { + setSelectedKey({ + key: e.key, + code: e.code, + location: e.location, + }); + }} + onKeyUp={() => { + setSelectedKey(null); + }} + enableAccessibleFieldDOMStructure + onSelectedSectionsChange={(newSelectedSection) => { + selectedSection.current = newSelectedSection; + }} + /> + + + + + + ); +} diff --git a/docs/src/modules/components/overview/MainDemo.tsx b/docs/src/modules/components/overview/MainDemo.tsx new file mode 100644 index 000000000000..279e80189673 --- /dev/null +++ b/docs/src/modules/components/overview/MainDemo.tsx @@ -0,0 +1,125 @@ +import * as React from 'react'; +import { useTheme, ThemeProvider, createTheme, Theme, Components } from '@mui/material/styles'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import Stack from '@mui/material/Stack'; +import Paper from '@mui/material/Paper'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import FlightPicker from './mainDemo/FlightPicker'; +import ThemeToggleGroup from './mainDemo/ThemeToggleGroup'; +import Clock from './mainDemo/Clock'; +import Birthday from './mainDemo/Birthday'; +import DigitalClock from './mainDemo/DigitalClock'; +import DateRangeWithShortcuts from './mainDemo/DateRangeWithShortcuts'; +import PickerButton from './mainDemo/PickerButton'; +import '@mui/x-date-pickers-pro/themeAugmentation'; + +const components: Components = { + MuiPickersDay: { + styleOverrides: { + root: { + fontWeight: 400, + }, + today: ({ theme }) => ({ + fontWeight: 600, + borderColor: theme.palette.primary.light, + }), + }, + }, + MuiPickersMonth: { + styleOverrides: { + monthButton: ({ theme }) => ({ + fontWeight: 400, + fontSize: '0.875rem', + borderRadius: theme.shape.borderRadius, + height: 28, + width: 64, + }), + }, + }, + MuiPickersYear: { + styleOverrides: { + yearButton: ({ theme }) => ({ + fontWeight: 400, + fontSize: '0.875rem', + borderRadius: theme.shape.borderRadius, + height: 28, + width: 64, + }), + }, + }, + MuiPickersToolbar: { styleOverrides: { content: { justifyContent: 'space-between' } } }, + MuiTimePickerToolbar: { + styleOverrides: { + ampmSelection: { marginRight: 0 }, + }, + }, + MuiButton: { + styleOverrides: { + root: ({ theme, ownerState }) => ({ + ...(ownerState.size === 'medium' && { + padding: theme.spacing('6px', '8px'), + }), + }), + }, + }, +}; + +export default function MainDemo() { + const brandingTheme = useTheme(); + const isMobile = useMediaQuery(brandingTheme.breakpoints.down('sm')); + const isTablet = useMediaQuery(brandingTheme.breakpoints.up('md')); + const isDesktop = useMediaQuery(brandingTheme.breakpoints.up('xl')); + + const [showCustomTheme, setShowCustomTheme] = React.useState(false); + + const toggleCustomTheme = () => { + setShowCustomTheme((prev) => !prev); + }; + + const theme = createTheme({ palette: { mode: brandingTheme.palette.mode } }); + const customTheme = createTheme(brandingTheme, { + components, + shape: { borderRadius: 8 }, + typography: { fontFamily: ['"Inter", "sans-serif"'].join(',') }, + }); + + return ( + + + + + + + + + + + + {isTablet && ( + + + + + )} + + + {isDesktop && ( + + + + + )} + + + + + ); +} diff --git a/docs/src/modules/components/overview/WorldMapSvg.tsx b/docs/src/modules/components/overview/WorldMapSvg.tsx new file mode 100644 index 000000000000..9818f694d745 --- /dev/null +++ b/docs/src/modules/components/overview/WorldMapSvg.tsx @@ -0,0 +1,123 @@ +import * as React from 'react'; +import { styled, useTheme } from '@mui/material/styles'; +import clsx from 'clsx'; + +const Continent = styled('g')(({ theme }) => ({ + cursor: 'pointer', + opacity: 0.9, + '&:hover ': { opacity: 1 }, + '&.selected': { + fill: theme.palette.primary.main, + }, +})); + +export type ContinentClickHandler = (event: React.MouseEvent, timezone: string) => void; + +type WorldMapSvgProps = { + onClickContinent: ContinentClickHandler; + selectedTimezone: string | null; +}; + +export default function WorldMapSvg({ onClickContinent, selectedTimezone }: WorldMapSvgProps) { + const brandingTheme = useTheme(); + + const getMapBaseColor = (lightness: number, opacity: number = 1) => { + return brandingTheme.palette.mode === 'light' + ? `hsla(210,20%,${lightness}%, ${opacity * 100}%)` + : `hsla(210,20%,${lightness}%, ${opacity * 100}%)`; + }; + + const timezones: { [key: string]: string } = { + europe: 'Europe/Paris', + asia: 'Asia/Hong_kong', + southAmerica: 'America/Sao_Paulo', + northAmerica: 'America/Chicago', + africa: 'Africa/Casablanca', + australia: 'Australia/Brisbane', + }; + // TODO: simplify SVG + return ( + + onClickContinent(e, timezones.northAmerica)} + > + + + + + + + + + + + onClickContinent(e, timezones.southAmerica)} + > + + + onClickContinent(e, timezones.europe)} + > + + + + + + + + + + + + + onClickContinent(e, timezones.asia)} + > + + + + + + + + + + + + + + + + + + + + onClickContinent(e, timezones.africa)} + > + + + + onClickContinent(e, timezones.australia)} + > + + + + + + ); +} diff --git a/docs/src/modules/components/overview/XLogo.tsx b/docs/src/modules/components/overview/XLogo.tsx new file mode 100644 index 000000000000..472fb773d5bb --- /dev/null +++ b/docs/src/modules/components/overview/XLogo.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import Typography from '@mui/material/Typography'; +// @ts-ignore +import IconImage from 'docs/src/components/icon/IconImage'; + +export default function XLogo() { + return ( + ({ + color: 'primary.600', + display: 'flex', + alignItems: 'center', + justifyContent: { xs: 'center', md: 'flex-start' }, + '& > *': { mr: 1 }, + ...theme.applyDarkStyles({ + color: 'primary.400', + }), + }), + ]} + > + MUI X + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/Birthday.tsx b/docs/src/modules/components/overview/mainDemo/Birthday.tsx new file mode 100644 index 000000000000..80d58a8139fe --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/Birthday.tsx @@ -0,0 +1,34 @@ +import * as React from 'react'; +import dayjs from 'dayjs'; +import Button from '@mui/material/Button'; +import Card from '@mui/material/Card'; +import Stack from '@mui/material/Stack'; +import InputAdornment from '@mui/material/InputAdornment'; +import CakeIcon from '@mui/icons-material/Cake'; +import { DateField } from '@mui/x-date-pickers/DateField'; + +export default function Birthday() { + return ( + + + + + + ), + }} + /> + + + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/Clock.tsx b/docs/src/modules/components/overview/mainDemo/Clock.tsx new file mode 100644 index 000000000000..2b1b1d5eb80b --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/Clock.tsx @@ -0,0 +1,52 @@ +import * as React from 'react'; +import dayjs, { Dayjs } from 'dayjs'; +import { styled } from '@mui/material/styles'; +import Card from '@mui/material/Card'; +import { StaticTimePicker } from '@mui/x-date-pickers/StaticTimePicker'; +import { + PickersLayoutProps, + usePickerLayout, + pickersLayoutClasses, + PickersLayoutRoot, + PickersLayoutContentWrapper, +} from '@mui/x-date-pickers/PickersLayout'; +import { TimeView } from '@mui/x-date-pickers/models'; + +const StyledLayout = styled(PickersLayoutRoot)({ + overflow: 'auto', + minWidth: 'fit-content', + [`.${pickersLayoutClasses.toolbar}`]: { + padding: '4px 16px', + }, + [`.${pickersLayoutClasses.contentWrapper}`]: { + '& .MuiTimeClock-root': { + width: 'fit-content', + }, + '& .MuiPickersArrowSwitcher-root': { + justifyContent: 'space-between', + width: '100%', + right: 0, + top: '2px', + }, + }, +}); + +function CustomLayout(props: PickersLayoutProps) { + const { actionBar, content, toolbar } = usePickerLayout(props); + return ( + + {toolbar} + + {content} + {actionBar} + + + ); +} +export default function Clock() { + return ( + + + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/DateRangeWithShortcuts.tsx b/docs/src/modules/components/overview/mainDemo/DateRangeWithShortcuts.tsx new file mode 100644 index 000000000000..a197487ce22d --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/DateRangeWithShortcuts.tsx @@ -0,0 +1,114 @@ +import * as React from 'react'; +import dayjs, { Dayjs } from 'dayjs'; +import { useTheme } from '@mui/material/styles'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import Card from '@mui/material/Card'; +import { StaticDateRangePicker } from '@mui/x-date-pickers-pro/StaticDateRangePicker'; +import { PickersShortcutsItem } from '@mui/x-date-pickers/PickersShortcuts'; +import { + PickersLayoutProps, + usePickerLayout, + pickersLayoutClasses, + PickersLayoutRoot, + PickersLayoutContentWrapper, +} from '@mui/x-date-pickers/PickersLayout'; +import { DateRange } from '@mui/x-date-pickers-pro/models'; + +const shortcutsItems: PickersShortcutsItem>[] = [ + { + label: 'This Week', + getValue: () => { + const today = dayjs(); + return [today.startOf('week'), today.endOf('week')]; + }, + }, + { + label: 'Last Week', + getValue: () => { + const today = dayjs(); + const prevWeek = today.subtract(7, 'day'); + return [prevWeek.startOf('week'), prevWeek.endOf('week')]; + }, + }, + { + label: 'Last 7 Days', + getValue: () => { + const today = dayjs(); + return [today.subtract(7, 'day'), today]; + }, + }, + { + label: 'Current Month', + getValue: () => { + const today = dayjs(); + return [today.startOf('month'), today.endOf('month')]; + }, + }, + { + label: 'Next Month', + getValue: () => { + const today = dayjs(); + const startOfNextMonth = today.endOf('month').add(1, 'day'); + return [startOfNextMonth, startOfNextMonth.endOf('month')]; + }, + }, + { label: 'Reset', getValue: () => [null, null] }, +]; + +interface CustomLayoutProps extends PickersLayoutProps, Dayjs, 'day'> { + isHorizontal?: boolean; +} +function CustomLayout(props: CustomLayoutProps) { + const { isHorizontal, ...other } = props; + const { tabs, content, shortcuts } = usePickerLayout(other); + + return ( + + {shortcuts} + + {tabs} + {content} + + + ); +} + +export default function DateRangeWithShortcuts() { + const theme = useTheme(); + const showTwoCalendars = useMediaQuery('(min-width:700px)'); + const lgDown = useMediaQuery(theme.breakpoints.down('lg')); + const smUp = useMediaQuery(theme.breakpoints.up('sm')); + const xlDown = useMediaQuery(theme.breakpoints.down('xl')); + return ( + + + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx b/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx new file mode 100644 index 000000000000..a73e74007fca --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx @@ -0,0 +1,67 @@ +import * as React from 'react'; +import { Dayjs } from 'dayjs'; +import { styled } from '@mui/material/styles'; +import Card from '@mui/material/Card'; +import Paper from '@mui/material/Paper'; +import Typography from '@mui/material/Typography'; +import { StaticTimePicker } from '@mui/x-date-pickers/StaticTimePicker'; +import { + PickersLayoutProps, + usePickerLayout, + pickersLayoutClasses, + PickersLayoutRoot, + PickersLayoutContentWrapper, +} from '@mui/x-date-pickers/PickersLayout'; +import { renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers'; +import { TimeView } from '@mui/x-date-pickers/models'; +import { TimePickerViewRenderers } from '@mui/x-date-pickers/TimePicker/shared'; + +const StyledLayout = styled(PickersLayoutRoot)({ + overflow: 'auto', + [`.${pickersLayoutClasses.contentWrapper}`]: { + '& .MuiClock-root': { + width: 'fit-content', + }, + }, +}); + +function CustomLayout(props: PickersLayoutProps) { + const { actionBar, content } = usePickerLayout(props); + return ( + + + {content} + {actionBar} + + + ); +} +export default function DigitalClock() { + return ( + + + Book now! + + `1px solid ${theme.palette.divider}`, + flexWrap: 'wrap', + padding: 0, + }} + > + + } + /> + + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/FlightPicker.tsx b/docs/src/modules/components/overview/mainDemo/FlightPicker.tsx new file mode 100644 index 000000000000..d75649a27537 --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/FlightPicker.tsx @@ -0,0 +1,31 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import Typography from '@mui/material/Typography'; +import InputAdornment from '@mui/material/InputAdornment'; +import FlightLandIcon from '@mui/icons-material/FlightLand'; +import FlightTakeoffIcon from '@mui/icons-material/FlightTakeoff'; +import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker'; + +export default function FlightPicker() { + return ( + + + Book your flight + + ({ + label: position === 'start' ? 'Outbound' : 'Inbound', + InputProps: { + startAdornment: ( + + {position === 'start' ? : } + + ), + }, + }), + }} + /> + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/PickerButton.tsx b/docs/src/modules/components/overview/mainDemo/PickerButton.tsx new file mode 100644 index 000000000000..0dc82b364e0f --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/PickerButton.tsx @@ -0,0 +1,71 @@ +import * as React from 'react'; +import dayjs, { Dayjs } from 'dayjs'; +import Button from '@mui/material/Button'; +import Card from '@mui/material/Card'; +import CalendarTodayRoundedIcon from '@mui/icons-material/CalendarTodayRounded'; +import { UseDateFieldProps } from '@mui/x-date-pickers/DateField'; +import { DatePicker } from '@mui/x-date-pickers/DatePicker'; +import { + BaseSingleInputFieldProps, + DateValidationError, + FieldSection, +} from '@mui/x-date-pickers/models'; + +interface ButtonFieldProps + extends UseDateFieldProps, + BaseSingleInputFieldProps { + setOpen?: React.Dispatch>; +} + +function ButtonField(props: ButtonFieldProps) { + const { + setOpen, + label, + id, + disabled, + InputProps: { ref } = {}, + inputProps: { 'aria-label': ariaLabel } = {}, + } = props; + + return ( + + ); +} + +export default function PickerButton() { + const [value, setValue] = React.useState(dayjs('2023-04-17')); + const [open, setOpen] = React.useState(false); + + return ( + + setValue(newValue)} + slots={{ field: ButtonField }} + slotProps={{ + field: { setOpen } as any, + nextIconButton: { size: 'small' }, + previousIconButton: { size: 'small' }, + }} + open={open} + onClose={() => setOpen(false)} + onOpen={() => setOpen(true)} + views={['day', 'month', 'year']} + /> + + ); +} diff --git a/docs/src/modules/components/overview/mainDemo/ThemeToggleGroup.tsx b/docs/src/modules/components/overview/mainDemo/ThemeToggleGroup.tsx new file mode 100644 index 000000000000..5483088efd98 --- /dev/null +++ b/docs/src/modules/components/overview/mainDemo/ThemeToggleGroup.tsx @@ -0,0 +1,63 @@ +import * as React from 'react'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import { styled, useTheme } from '@mui/material/styles'; +import ToggleButton from '@mui/material/ToggleButton'; +import ToggleButtonGroup, { toggleButtonGroupClasses } from '@mui/material/ToggleButtonGroup'; +import Paper from '@mui/material/Paper'; +import SettingsSuggestIcon from '@mui/icons-material/SettingsSuggest'; +import AutoFixHighIcon from '@mui/icons-material/AutoFixHigh'; + +const StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({ + flexGrow: 1, + gap: theme.spacing(1), + padding: theme.spacing(0.8), + [`& .${toggleButtonGroupClasses.grouped}`]: { + border: 0, + borderRadius: theme.shape.borderRadius, + }, +})); + +export type ThemeToggleGroupProps = { + showCustomTheme: boolean; + toggleCustomTheme: () => void; +}; + +export default function ThemeToggleGroup({ + showCustomTheme, + toggleCustomTheme, +}: ThemeToggleGroupProps) { + const theme = useTheme(); + const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + + return ( + + { + if (newValue !== null) { + toggleCustomTheme(); + } + }} + exclusive + size="small" + > + + + {isMobile && 'Custom Theme'} + + + + {isMobile && 'Default Theme'} + + + + ); +} diff --git a/packages/x-date-pickers/src/PickersTextField/PickersTextField.tsx b/packages/x-date-pickers/src/PickersTextField/PickersTextField.tsx index 0303989d847c..1ba9e2b3f1d1 100644 --- a/packages/x-date-pickers/src/PickersTextField/PickersTextField.tsx +++ b/packages/x-date-pickers/src/PickersTextField/PickersTextField.tsx @@ -139,6 +139,7 @@ const PickersTextField = React.forwardRef(function PickersTextField( areAllSectionsEmpty={areAllSectionsEmpty} onClick={onClick} onKeyDown={onKeyDown} + onKeyUp={onKeyUp} onInput={onInput} onPaste={onPaste} endAdornment={endAdornment} From 524066379aaef3a5727eed04792a03cdbe6dfe90 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 15:10:34 +0300 Subject: [PATCH 741/912] Bump MUI Internal (#14002) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 4 +- package.json | 4 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 184 +++++++++++----------- 13 files changed, 108 insertions(+), 104 deletions(-) diff --git a/docs/package.json b/docs/package.json index 1c2da4954612..92f5045e333c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -101,8 +101,8 @@ "devDependencies": { "@babel/plugin-transform-react-constant-elements": "^7.25.1", "@babel/preset-typescript": "^7.24.7", - "@mui/internal-docs-utils": "^1.0.8", - "@mui/internal-scripts": "^1.0.13", + "@mui/internal-docs-utils": "^1.0.9", + "@mui/internal-scripts": "^1.0.15", "@types/chance": "^1.1.6", "@types/d3-scale": "^4.0.8", "@types/d3-scale-chromatic": "^3.0.3", diff --git a/package.json b/package.json index 1967ff6c811c..a4c83f09445d 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", "@mui/icons-material": "^5.16.5", - "@mui/internal-markdown": "^1.0.8", - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-markdown": "^1.0.9", + "@mui/internal-test-utils": "^1.0.7", "@mui/material": "^5.16.5", "@mui/monorepo": "github:mui/material-ui#4a82b6b0e0395db8fa0a0d49b6b76de4516b1579", "@mui/utils": "^5.16.5", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index c6e011cbc4f2..53f5cfd7e522 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -64,7 +64,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@react-spring/core": "^9.7.4", "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index b3ee6b5cd566..28bae5ce97c4 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -72,7 +72,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", "rimraf": "^5.0.9" diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 9e474409fadf..50eabac5b185 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.9" }, diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 52d8c9cf88f1..0edac7b73dd4 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -71,7 +71,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@mui/joy": "^5.0.0-beta.48", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 9ab8869c92ca..eb4b3ea06b02 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -95,7 +95,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 7c82a56b19af..5ab3558e3928 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -97,7 +97,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 405e3106e5d0..7386b4a7795d 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -48,7 +48,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "rimraf": "^5.0.9" }, "engines": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index dcc406c7f0b7..2684ce59039b 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -41,7 +41,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "rimraf": "^5.0.9" }, "engines": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index aeb8fb154b44..08f04e13a2ab 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -69,7 +69,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.9" }, diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index ffb743b995f3..ac6b7cb2367b 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -68,7 +68,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.5", + "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.9" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e9482e02060..2cc5fc96bbb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,11 +87,11 @@ importers: specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': - specifier: ^1.0.8 - version: 1.0.8 + specifier: ^1.0.9 + version: 1.0.9 '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -355,7 +355,7 @@ importers: version: 13.0.0 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 serve: specifier: ^14.2.3 version: 14.2.3 @@ -616,7 +616,7 @@ importers: version: 0.23.9 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -640,11 +640,11 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@mui/internal-docs-utils': - specifier: ^1.0.8 - version: 1.0.8 + specifier: ^1.0.9 + version: 1.0.9 '@mui/internal-scripts': - specifier: ^1.0.13 - version: 1.0.13 + specifier: ^1.0.15 + version: 1.0.15 '@types/chance': specifier: ^1.1.6 version: 1.1.6 @@ -746,8 +746,8 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -762,7 +762,7 @@ importers: version: 3.1.3 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-charts-pro: @@ -827,7 +827,7 @@ importers: version: 3.1.3 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-charts-vendor: @@ -913,7 +913,7 @@ importers: version: 2.0.3 rimraf: specifier: ^5.0.8 - version: 5.0.9 + version: 5.0.10 packages/x-codemod: dependencies: @@ -944,7 +944,7 @@ importers: version: 0.5.45 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-data-grid: @@ -987,8 +987,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1000,7 +1000,7 @@ importers: version: 15.7.12 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-data-grid-generator: @@ -1041,7 +1041,7 @@ importers: version: 1.1.6 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-data-grid-premium: @@ -1099,8 +1099,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1109,7 +1109,7 @@ importers: version: 2.30.0 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-data-grid-pro: @@ -1161,14 +1161,14 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-date-pickers: @@ -1211,8 +1211,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1251,7 +1251,7 @@ importers: version: 0.5.45 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-date-pickers-pro: @@ -1303,8 +1303,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1328,7 +1328,7 @@ importers: version: 2.30.1 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-internals: @@ -1344,11 +1344,11 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-license: @@ -1364,11 +1364,11 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-tree-view: @@ -1414,14 +1414,14 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 publishDirectory: build packages/x-tree-view-pro: @@ -1473,14 +1473,14 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.5 - version: 1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.7 + version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 rimraf: specifier: ^5.0.9 - version: 5.0.9 + version: 5.0.10 test: devDependencies: @@ -1591,10 +1591,10 @@ importers: version: 6.4.6(vitest@2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': specifier: ^14.5.2 - version: 14.5.2(@testing-library/dom@10.3.1) + version: 14.5.2(@testing-library/dom@10.4.0) '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.4(@types/node@18.19.42)(terser@5.27.0)) @@ -2981,17 +2981,17 @@ packages: '@types/react': optional: true - '@mui/internal-docs-utils@1.0.8': - resolution: {integrity: sha512-krfqmki6Fjlv3+RAAdcf8wB0sg6KF7s4RdT1X3iXuouCYDiQw/t7TiCUAiF7augBCRfPTiWh/FI8MTH4TRlGiQ==} + '@mui/internal-docs-utils@1.0.9': + resolution: {integrity: sha512-ml62NikMdZEimDhJGMtyGVilhLjK8AkiruojJ8OCArj8qsw0pUCr1L/2Xo7GLEg4K5EI3/vdITUU0RBKBwDl/g==} - '@mui/internal-markdown@1.0.8': - resolution: {integrity: sha512-OU/ieH8HhRbciy3fR5i8vSU/Z4wlfE+iwEFvrqP578jBeqg7X0gvev/uvv9d+FSgRnvgmWJzCYXEPlzlI3MmFA==} + '@mui/internal-markdown@1.0.9': + resolution: {integrity: sha512-YbX1+GAOoJ1iiwIDZEgKV8wo4PUabgKoKi/M/WX+BX346J0pHiVjaV1BpjkMw3RM2hy1RpqiVLPVb8McXINTKQ==} - '@mui/internal-scripts@1.0.13': - resolution: {integrity: sha512-3g8kl1UEFK6WxoHfstWMDZCW8DimVgfRDh/j2D0CNaKbupfmfdC5e6Of9KDKXV45ATs5LaYfozAKbxMQK7xyhA==} + '@mui/internal-scripts@1.0.15': + resolution: {integrity: sha512-sNEUPh5cEuJN20kC0N1kJdSfEw4ZZXuKP1Hsz8QWgKPQtlcmvRS30LGdNzHb9sS8dcFPqhITn+W2GAIxPCjuoA==} - '@mui/internal-test-utils@1.0.5': - resolution: {integrity: sha512-5reErcYMSi+PbcuHigno150UDii4pC9TYfL9sY1YcQUtDhQMdNkByvblQZw3X0K2h5puiBYs/cnj670J1JKztA==} + '@mui/internal-test-utils@1.0.7': + resolution: {integrity: sha512-KrPhm8QLYui8LCsuzV6VUDrfs6qIsqr96HTohEMUMnIApGdVOW2lxK4DAa6nwdOx0VW813OSgpcllFUW2jiUDw==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -3863,8 +3863,8 @@ packages: '@tanstack/query-core@5.51.15': resolution: {integrity: sha512-xyobHDJ0yhPE3+UkSQ2/4X1fLSg7ICJI5J1JyU9yf7F3deQfEwSImCDrB1WSRrauJkMtXW7YIEcC0oA6ZZWt5A==} - '@testing-library/dom@10.3.1': - resolution: {integrity: sha512-q/WL+vlXMpC0uXDyfsMtc1rmotzLV8Y0gq6q1gfrrDjQeHoeLrqHbxdPvPNAh1i+xuJl7+BezywcXArz7vLqKQ==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} '@testing-library/jest-dom@6.4.6': @@ -5592,6 +5592,9 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-accessibility-api@0.7.0: + resolution: {integrity: sha512-LjjdFmd9AITAet3Hy6Y6rwB7Sq1+x5NiwbOpnkLHC1bCXJqJKiV9DyppSSWobuSKvjKXt9G2u3hW402MPt6m+g==} + dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} @@ -7523,8 +7526,8 @@ packages: resolution: {integrity: sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==} engines: {node: '>=18'} - marked@13.0.2: - resolution: {integrity: sha512-J6CPjP8pS5sgrRqxVRvkCIkZ6MFdRIjDkwUwgJ9nL2fbmM6qGQeB2C16hi8Cc9BOzj6xXzy0jyi0iPIfnMHYzA==} + marked@13.0.3: + resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} engines: {node: '>= 18'} hasBin: true @@ -8354,8 +8357,8 @@ packages: engines: {node: '>=16'} hasBin: true - playwright-core@1.45.1: - resolution: {integrity: sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==} + playwright-core@1.46.0: + resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} engines: {node: '>=18'} hasBin: true @@ -8364,8 +8367,8 @@ packages: engines: {node: '>=16'} hasBin: true - playwright@1.45.1: - resolution: {integrity: sha512-Hjrgae4kpSQBr98nhCj3IScxVeVUixqj+5oyif8TdIn2opTCPEzqAqNMeK42i3cWDCVu9MI+ZsGWw+gVR4ISBg==} + playwright@1.46.0: + resolution: {integrity: sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==} engines: {node: '>=18'} hasBin: true @@ -8841,9 +8844,8 @@ packages: engines: {node: '>=14'} hasBin: true - rimraf@5.0.9: - resolution: {integrity: sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==} - engines: {node: 14 >=14.20 || 16 >=16.20 || >=18} + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true robust-predicates@3.0.2: @@ -11765,7 +11767,7 @@ snapshots: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/internal-markdown': 1.0.8 + '@mui/internal-markdown': 1.0.9 '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) chai: 5.1.1 @@ -11787,26 +11789,26 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/internal-docs-utils@1.0.8': + '@mui/internal-docs-utils@1.0.9': dependencies: - rimraf: 5.0.9 + rimraf: 5.0.10 typescript: 5.5.4 - '@mui/internal-markdown@1.0.8': + '@mui/internal-markdown@1.0.9': dependencies: '@babel/runtime': 7.25.0 lodash: 4.17.21 - marked: 13.0.2 + marked: 13.0.3 prismjs: 1.29.0 - '@mui/internal-scripts@1.0.13': + '@mui/internal-scripts@1.0.15': dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) '@babel/types': 7.25.2 - '@mui/internal-docs-utils': 1.0.8 + '@mui/internal-docs-utils': 1.0.9 doctrine: 3.0.0 lodash: 4.17.21 typescript: 5.5.4 @@ -11814,7 +11816,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.5(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) @@ -11822,18 +11824,18 @@ snapshots: '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@testing-library/dom': 10.3.1 - '@testing-library/react': 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) + '@testing-library/dom': 10.4.0 + '@testing-library/react': 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) chai: 4.5.0 chai-dom: 1.12.0(chai@4.5.0) - dom-accessibility-api: 0.6.3 + dom-accessibility-api: 0.7.0 format-util: 1.0.5 fs-extra: 11.2.0 jsdom: 24.1.1 lodash: 4.17.21 mocha: 10.7.0 - playwright: 1.45.1 + playwright: 1.46.0 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -12838,7 +12840,7 @@ snapshots: '@tanstack/query-core@5.51.15': {} - '@testing-library/dom@10.3.1': + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.25.0 @@ -12862,19 +12864,19 @@ snapshots: optionalDependencies: vitest: 2.0.4(@types/node@18.19.42)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) - '@testing-library/react@16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@testing-library/dom': 10.3.1 + '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@testing-library/user-event@14.5.2(@testing-library/dom@10.3.1)': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: - '@testing-library/dom': 10.3.1 + '@testing-library/dom': 10.4.0 '@tootallnate/once@2.0.0': {} @@ -13271,8 +13273,8 @@ snapshots: '@vitest/browser@2.0.4(typescript@5.5.4)(vitest@2.0.4)': dependencies: - '@testing-library/dom': 10.3.1 - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/utils': 2.0.4 magic-string: 0.30.10 msw: 2.3.2(typescript@5.5.4) @@ -14818,6 +14820,8 @@ snapshots: dom-accessibility-api@0.6.3: {} + dom-accessibility-api@0.7.0: {} + dom-converter@0.2.0: dependencies: utila: 0.4.0 @@ -17261,7 +17265,7 @@ snapshots: markdown-it: 14.1.0 markdownlint-micromark: 0.1.9 - marked@13.0.2: {} + marked@13.0.3: {} mdast-util-from-markdown@0.8.5: dependencies: @@ -18219,7 +18223,7 @@ snapshots: playwright-core@1.44.1: {} - playwright-core@1.45.1: {} + playwright-core@1.46.0: {} playwright@1.44.1: dependencies: @@ -18227,9 +18231,9 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - playwright@1.45.1: + playwright@1.46.0: dependencies: - playwright-core: 1.45.1 + playwright-core: 1.46.0 optionalDependencies: fsevents: 2.3.2 @@ -18733,7 +18737,7 @@ snapshots: dependencies: glob: 9.3.5 - rimraf@5.0.9: + rimraf@5.0.10: dependencies: glob: 10.3.10 From 668a1c6713e72bface1b6684a4a8949190dc1ee4 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 9 Aug 2024 02:52:44 -0400 Subject: [PATCH 742/912] v7.12.1 (#14134) Signed-off-by: Rom Grk Co-authored-by: Lukas Tyla Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Andrew Cherniavskii --- CHANGELOG.md | 68 +++++++++++++++++++++ package.json | 2 +- packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 13 files changed, 80 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e86dfe05c0d0..8a8cc2608487 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,74 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.12.1 + +_Aug 8, 2024_ + +We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨: + +- 🎨 Charts get a new component to display color mapping in the legend +- 🚀 The `@mui/x-charts-pro` is released in alpha version 🧪. This new package introduces two main features: + - The Heatmap component + - The zoom interaction on the bar, line, and scatter charts +- 🌍 Improve Dutch (nl-NL) locale on the Date and Time Pickers +- 🐞 Bugfixes + + + +### Data Grid + +#### `@mui/x-data-grid@7.12.1` + +- [DataGrid] Fix `checkboxSelectionVisibleOnly` behavior with server-side pagination (#14083) @MBilalShafi +- [DataGrid] Fix `columnHeadersContainerRef` being `undefined` before mount (#14051) @samwato +- [DataGrid] Support Yarn PnP (#14126) @cherniavskii + +#### `@mui/x-data-grid-pro@7.12.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.12.1`. + +#### `@mui/x-data-grid-premium@7.12.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.12.1`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.12.1` + +- [l10n] Improve Dutch (nlNL) locale (pickers) (#14036) @Robin1896 + +#### `@mui/x-date-pickers-pro@7.12.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.12.1`. + +### Charts + +#### `@mui/x-charts@7.12.1` + +- [charts] Fix charts vendor publish config (#14073) @JCQuintas +- [charts] Move `plugins` to `PluginProvider` (#14056) @JCQuintas + +#### `@mui/x-date-charts-pro@7.0.0-alpha.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@7.12.1`, plus: + +- [charts-pro] Release the pro package in alpha (#13859) @alexfauquette + +### Tree View + +#### `@mui/x-tree-view@7.12.1` + +### Docs + +- [docs] Add a warning to promote the usage of `updateRows` (#14027) @MBilalShafi +- [docs] Disable ad in `Rich Tree View-Ordering` page (#14123) @oliviertassinari +- [docs] Redesign Date and Time Pickers overview page (#13241) @noraleonte + +- [CHANGELOG] Polish details @oliviertassinari +- [code-infra] Use concurrency 1 in CircleCI (#14110) @JCQuintas +- [infra] Re-added the removal of `Latest Version` section (#14132) @michelengelen + ## 7.12.0 _Aug 1, 2024_ diff --git a/package.json b/package.json index a4c83f09445d..d914134ab1e6 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.12.0", + "version": "7.12.1", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 28536720a38f..079d1c21fa1c 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -43,8 +43,8 @@ "@mui/system": "^5.16.5", "@mui/utils": "^5.16.5", "@mui/x-charts": "workspace:*", - "@mui/x-license": "workspace:*", "@mui/x-charts-vendor": "workspace:*", + "@mui/x-license": "workspace:*", "@react-spring/rafz": "^9.7.4", "@react-spring/web": "^9.7.4", "clsx": "^2.1.1", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 4f58a7096bd3..a78dd99c1241 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-vendor", - "version": "7.12.0", + "version": "7.12.1", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", "main": "./index.js", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 53f5cfd7e522..6c57b507e823 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.12.0", + "version": "7.12.1", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 8c06b4881ce7..7cbdb21d2914 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.12.0", + "version": "7.12.1", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 28bae5ce97c4..680b3fff464e 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.12.0", + "version": "7.12.1", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 50eabac5b185..4a91fbf43a70 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.12.0", + "version": "7.12.1", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 0edac7b73dd4..0a49edebd274 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.12.0", + "version": "7.12.1", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index eb4b3ea06b02..182b43afdef2 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.12.0", + "version": "7.12.1", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 5ab3558e3928..3f6e479a6d38 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.12.0", + "version": "7.12.1", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 08f04e13a2ab..c973e1727d62 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.12.0", + "version": "7.12.1", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index ac6b7cb2367b..c2f079a791c4 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.12.0", + "version": "7.12.1", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From d6c7916cc783f4ac17a25ee7279c8137df5e0a4c Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Fri, 9 Aug 2024 15:11:29 +0200 Subject: [PATCH 743/912] [tree-view] Fix the `@mui/x-tree-view-pro` published folder (#14149) --- packages/x-tree-view-pro/package.json | 3 ++- pnpm-lock.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index c973e1727d62..d9f39b493099 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -15,7 +15,8 @@ }, "sideEffects": false, "publishConfig": { - "access": "public" + "access": "public", + "directory": "build" }, "keywords": [ "react", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2cc5fc96bbb6..086dbe63f1f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1481,6 +1481,7 @@ importers: rimraf: specifier: ^5.0.9 version: 5.0.10 + publishDirectory: build test: devDependencies: From 5ad5cf3876bc84391d4933e75c41b54913de6bf3 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Fri, 9 Aug 2024 16:31:53 +0300 Subject: [PATCH 744/912] [code-infra] Refactor Netlify `cache-docs` plugin setup (#14105) --- netlify.toml | 2 +- netlify/functions/deploy-succeeded.js | 2 -- packages/netlify-plugin-cache-docs/index.js | 1 + packages/netlify-plugin-cache-docs/manifest.yml | 1 + 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 packages/netlify-plugin-cache-docs/index.js create mode 100644 packages/netlify-plugin-cache-docs/manifest.yml diff --git a/netlify.toml b/netlify.toml index 767f5a910c79..25bf422e747a 100644 --- a/netlify.toml +++ b/netlify.toml @@ -13,4 +13,4 @@ PNPM_FLAGS = "--shamefully-hoist" [[plugins]] - package = "./node_modules/@mui/monorepo/packages/netlify-plugin-cache-docs" + package = "./packages/netlify-plugin-cache-docs" diff --git a/netlify/functions/deploy-succeeded.js b/netlify/functions/deploy-succeeded.js index d59ce476da81..ad2d1a868b5a 100644 --- a/netlify/functions/deploy-succeeded.js +++ b/netlify/functions/deploy-succeeded.js @@ -1,5 +1,3 @@ -const fetch = require('node-fetch'); - /** * @param {object} event * @param {string} event.body - https://jsoneditoronline.org/#left=cloud.fb1a4fa30a4f475fa6887071c682e2c1 diff --git a/packages/netlify-plugin-cache-docs/index.js b/packages/netlify-plugin-cache-docs/index.js new file mode 100644 index 000000000000..e8530f898af3 --- /dev/null +++ b/packages/netlify-plugin-cache-docs/index.js @@ -0,0 +1 @@ +module.exports = require('@mui/monorepo/packages/netlify-plugin-cache-docs'); diff --git a/packages/netlify-plugin-cache-docs/manifest.yml b/packages/netlify-plugin-cache-docs/manifest.yml new file mode 100644 index 000000000000..46be74dddcce --- /dev/null +++ b/packages/netlify-plugin-cache-docs/manifest.yml @@ -0,0 +1 @@ +name: netlify-plugin-cache-docs From 38184fe912eb201d29c8e31b8b11f0f0fd854c51 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Fri, 9 Aug 2024 15:32:02 +0200 Subject: [PATCH 745/912] [charts] Rename `CartesianContextProvider` to `CartesianProvider` (#14102) --- .../src/ChartContainerPro/ChartContainerPro.tsx | 16 ++++++++-------- .../useChartContainerProProps.ts | 4 ++-- .../CartesianProviderPro.tsx | 8 ++++---- .../src/ChartContainer/ChartContainer.tsx | 13 +++++-------- .../src/ChartContainer/useChartContainerProps.ts | 6 +++--- .../CartesianProvider/CartesianProvider.tsx | 6 +++--- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx index f6eb0236e4c0..ba1648b3768e 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx +++ b/packages/x-charts-pro/src/ChartContainerPro/ChartContainerPro.tsx @@ -12,7 +12,7 @@ import { } from '@mui/x-charts/internals'; import { useLicenseVerifier } from '@mui/x-license/useLicenseVerifier'; import { getReleaseInfo } from '../internals/utils/releaseInfo'; -import { CartesianContextProviderPro } from '../context/CartesianProviderPro'; +import { CartesianProviderPro } from '../context/CartesianProviderPro'; import { ZoomProps, ZoomProvider } from '../context/ZoomProvider'; import { useChartContainerProProps } from './useChartContainerProProps'; @@ -30,7 +30,7 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( seriesProviderProps, zAxisContextProps, highlightedProviderProps, - cartesianContextProps, + cartesianProviderProps, chartsSurfaceProps, pluginProviderProps, children, @@ -41,9 +41,9 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( return ( - - - + + + @@ -54,9 +54,9 @@ const ChartContainerPro = React.forwardRef(function ChartContainer( - - - + + + ); diff --git a/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts b/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts index a0c090029f9e..dd4318a09f67 100644 --- a/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts +++ b/packages/x-charts-pro/src/ChartContainerPro/useChartContainerProProps.ts @@ -12,7 +12,7 @@ export const useChartContainerProProps = ( children, drawingProviderProps, seriesProviderProps, - cartesianContextProps, + cartesianProviderProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, @@ -34,7 +34,7 @@ export const useChartContainerProProps = ( drawingProviderProps, pluginProviderProps, seriesProviderProps, - cartesianContextProps, + cartesianProviderProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, diff --git a/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx b/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx index 9b86a0394446..b8eaab185a90 100644 --- a/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx +++ b/packages/x-charts-pro/src/context/CartesianProviderPro/CartesianProviderPro.tsx @@ -3,7 +3,7 @@ import { useDrawingArea, useSeries, CartesianContext, - CartesianContextProviderProps, + CartesianProviderProps, cartesianProviderUtils, useXExtremumGetter, useYExtremumGetter, @@ -12,9 +12,9 @@ import { useZoom } from '../ZoomProvider/useZoom'; const { computeValue } = cartesianProviderUtils; -export interface CartesianContextProviderProProps extends CartesianContextProviderProps {} +export interface CartesianProviderProProps extends CartesianProviderProps {} -function CartesianContextProviderPro(props: CartesianContextProviderProProps) { +function CartesianProviderPro(props: CartesianProviderProProps) { const { xAxis, yAxis, dataset, children } = props; const formattedSeries = useSeries(); @@ -67,4 +67,4 @@ function CartesianContextProviderPro(props: CartesianContextProviderProProps) { return {children}; } -export { CartesianContextProviderPro }; +export { CartesianProviderPro }; diff --git a/packages/x-charts/src/ChartContainer/ChartContainer.tsx b/packages/x-charts/src/ChartContainer/ChartContainer.tsx index 786bf90b345d..1cb7df49329e 100644 --- a/packages/x-charts/src/ChartContainer/ChartContainer.tsx +++ b/packages/x-charts/src/ChartContainer/ChartContainer.tsx @@ -4,10 +4,7 @@ import { DrawingProvider, DrawingProviderProps } from '../context/DrawingProvide import { SeriesProvider, SeriesProviderProps } from '../context/SeriesProvider'; import { InteractionProvider } from '../context/InteractionProvider'; import { ChartsSurface, ChartsSurfaceProps } from '../ChartsSurface'; -import { - CartesianContextProvider, - CartesianContextProviderProps, -} from '../context/CartesianProvider'; +import { CartesianProvider, CartesianProviderProps } from '../context/CartesianProvider'; import { ChartsAxesGradients } from '../internals/components/ChartsAxesGradients'; import { HighlightedProvider, @@ -24,7 +21,7 @@ export type ChartContainerProps = Omit< ChartsSurfaceProps & Omit & Omit & - Pick & + Pick & ZAxisContextProviderProps & HighlightedProviderProps & PluginProviderProps, @@ -50,7 +47,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont children, drawingProviderProps, seriesProviderProps, - cartesianContextProps, + cartesianProviderProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, @@ -61,7 +58,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont - + @@ -72,7 +69,7 @@ const ChartContainer = React.forwardRef(function ChartContainer(props: ChartCont - + diff --git a/packages/x-charts/src/ChartContainer/useChartContainerProps.ts b/packages/x-charts/src/ChartContainer/useChartContainerProps.ts index 6b44c62859f0..e03a6dc9670e 100644 --- a/packages/x-charts/src/ChartContainer/useChartContainerProps.ts +++ b/packages/x-charts/src/ChartContainer/useChartContainerProps.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import useForkRef from '@mui/utils/useForkRef'; import type { DrawingProviderProps } from '../context/DrawingProvider'; -import type { CartesianContextProviderProps } from '../context/CartesianProvider'; +import type { CartesianProviderProps } from '../context/CartesianProvider'; import type { SeriesProviderProps } from '../context/SeriesProvider'; import type { ZAxisContextProviderProps } from '../context/ZAxisContextProvider'; import type { ChartContainerProps } from './ChartContainer'; @@ -59,7 +59,7 @@ export const useChartContainerProps = ( dataset, }; - const cartesianContextProps: Omit = { + const cartesianProviderProps: Omit = { xAxis: defaultizedXAxis, yAxis: defaultizedYAxis, dataset, @@ -90,7 +90,7 @@ export const useChartContainerProps = ( children, drawingProviderProps, seriesProviderProps, - cartesianContextProps, + cartesianProviderProps, zAxisContextProps, highlightedProviderProps, chartsSurfaceProps, diff --git a/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx b/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx index 52e8c38cac93..6faf85b6dd9a 100644 --- a/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx +++ b/packages/x-charts/src/context/CartesianProvider/CartesianProvider.tsx @@ -8,7 +8,7 @@ import { computeValue } from './computeValue'; import { useXExtremumGetter } from '../PluginProvider/useXExtremumGetter'; import { useYExtremumGetter } from '../PluginProvider'; -export type CartesianContextProviderProps = { +export type CartesianProviderProps = { /** * The configuration of the x-axes. * If not provided, a default axis config is used. @@ -28,7 +28,7 @@ export type CartesianContextProviderProps = { children: React.ReactNode; }; -function CartesianContextProvider(props: CartesianContextProviderProps) { +function CartesianProvider(props: CartesianProviderProps) { const { xAxis, yAxis, dataset, children } = props; const formattedSeries = useSeries(); @@ -78,4 +78,4 @@ function CartesianContextProvider(props: CartesianContextProviderProps) { return {children}; } -export { CartesianContextProvider }; +export { CartesianProvider }; From d5f2c0f0a3f0c0a2a1ad2f031be308b0345439f0 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Mon, 12 Aug 2024 16:54:07 +0200 Subject: [PATCH 746/912] [charts] Add `baseline` property to the `LineChart` `series` (#14153) Signed-off-by: Jose C Quintas Jr Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/charts/lines/AreaBaseline.js | 19 +++++++++++++++++++ docs/data/charts/lines/AreaBaseline.tsx | 19 +++++++++++++++++++ .../charts/lines/AreaBaseline.tsx.preview | 12 ++++++++++++ docs/data/charts/lines/lines.md | 14 ++++++++++++++ docs/pages/x/api/charts/line-series-type.json | 1 + .../api-docs/charts/line-series-type.json | 3 +++ packages/x-charts/src/LineChart/AreaPlot.tsx | 11 +++++++++++ packages/x-charts/src/LineChart/extremums.ts | 5 ++++- .../x-charts/src/models/seriesType/line.ts | 10 ++++++++++ 9 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 docs/data/charts/lines/AreaBaseline.js create mode 100644 docs/data/charts/lines/AreaBaseline.tsx create mode 100644 docs/data/charts/lines/AreaBaseline.tsx.preview diff --git a/docs/data/charts/lines/AreaBaseline.js b/docs/data/charts/lines/AreaBaseline.js new file mode 100644 index 000000000000..cbaa2965c408 --- /dev/null +++ b/docs/data/charts/lines/AreaBaseline.js @@ -0,0 +1,19 @@ +import * as React from 'react'; +import { LineChart } from '@mui/x-charts/LineChart'; + +export default function AreaBaseline() { + return ( + + ); +} diff --git a/docs/data/charts/lines/AreaBaseline.tsx b/docs/data/charts/lines/AreaBaseline.tsx new file mode 100644 index 000000000000..cbaa2965c408 --- /dev/null +++ b/docs/data/charts/lines/AreaBaseline.tsx @@ -0,0 +1,19 @@ +import * as React from 'react'; +import { LineChart } from '@mui/x-charts/LineChart'; + +export default function AreaBaseline() { + return ( + + ); +} diff --git a/docs/data/charts/lines/AreaBaseline.tsx.preview b/docs/data/charts/lines/AreaBaseline.tsx.preview new file mode 100644 index 000000000000..b5f56b85ada1 --- /dev/null +++ b/docs/data/charts/lines/AreaBaseline.tsx.preview @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/docs/data/charts/lines/lines.md b/docs/data/charts/lines/lines.md index 0ad25ce2f397..be651d4dd57a 100644 --- a/docs/data/charts/lines/lines.md +++ b/docs/data/charts/lines/lines.md @@ -175,6 +175,20 @@ Different series could even have different interpolations. {{"demo": "InterpolationDemoNoSnap.js", "hideToolbar": true}} +### Baseline + +The area chart draws a `baseline` on the Y axis `0`. +This is useful as a base value, but customized visualizations may require a different baseline. + +To get the area filling the space above or below the line, set `baseline` to `"min"` or `"max"`. +It is also possible to provide a `number` value to fix the baseline at the desired position. + +:::warning +The `baseline` should not be used with stacked areas, as it will not work as expected. +::: + +{{"demo": "AreaBaseline.js"}} + ### Optimization To show mark elements, use `showMark` series property. diff --git a/docs/pages/x/api/charts/line-series-type.json b/docs/pages/x/api/charts/line-series-type.json index 8043690cf449..61608bfce9c6 100644 --- a/docs/pages/x/api/charts/line-series-type.json +++ b/docs/pages/x/api/charts/line-series-type.json @@ -4,6 +4,7 @@ "properties": { "type": { "type": { "description": "'line'" }, "required": true }, "area": { "type": { "description": "boolean" } }, + "baseline": { "type": { "description": "number | 'min' | 'max'" }, "default": "0" }, "color": { "type": { "description": "string" } }, "connectNulls": { "type": { "description": "boolean" }, "default": "false" }, "curve": { "type": { "description": "CurveType" } }, diff --git a/docs/translations/api-docs/charts/line-series-type.json b/docs/translations/api-docs/charts/line-series-type.json index ff576209272d..824efbcd4acb 100644 --- a/docs/translations/api-docs/charts/line-series-type.json +++ b/docs/translations/api-docs/charts/line-series-type.json @@ -3,6 +3,9 @@ "propertiesDescriptions": { "type": { "description": "" }, "area": { "description": "" }, + "baseline": { + "description": "

    The value of the line at the base of the series area.

    - 'min' the area will fill the space under the line.
    - 'max' the area will fill the space above the line.
    - number the area will fill the space between this value and the line

    \n" + }, "color": { "description": "" }, "connectNulls": { "description": "If true, line and area connect points separated by null values." diff --git a/packages/x-charts/src/LineChart/AreaPlot.tsx b/packages/x-charts/src/LineChart/AreaPlot.tsx index 79412e5211e6..01956e3b847b 100644 --- a/packages/x-charts/src/LineChart/AreaPlot.tsx +++ b/packages/x-charts/src/LineChart/AreaPlot.tsx @@ -59,6 +59,7 @@ const useAggregatedData = () => { stackedData, data, connectNulls, + baseline, } = series[seriesId]; const xAxisId = xAxisIdProp ?? xAxisKey; @@ -97,6 +98,16 @@ const useAggregatedData = () => { .x((d) => xScale(d.x)) .defined((_, i) => connectNulls || data[i] != null) .y0((d) => { + if (typeof baseline === 'number') { + return yScale(baseline)!; + } + if (baseline === 'max') { + return yScale.range()[1]; + } + if (baseline === 'min') { + return yScale.range()[0]; + } + const value = d.y && yScale(d.y[0])!; if (Number.isNaN(value)) { return yScale.range()[0]; diff --git a/packages/x-charts/src/LineChart/extremums.ts b/packages/x-charts/src/LineChart/extremums.ts index e913bc31c26b..e0fdcfac51c0 100644 --- a/packages/x-charts/src/LineChart/extremums.ts +++ b/packages/x-charts/src/LineChart/extremums.ts @@ -43,8 +43,11 @@ export const getExtremumY: ExtremumGetter<'line'> = (params) => { const { area, stackedData } = series[seriesId]; const isArea = area !== undefined; + // Since this series is not used to display an area, we do not consider the base (the d[0]). const getValues: GetValuesTypes = - isArea && axis.scaleType !== 'log' ? (d) => d : (d) => [d[1], d[1]]; // Since this series is not used to display an area, we do not consider the base (the d[0]). + isArea && axis.scaleType !== 'log' && typeof series[seriesId].baseline !== 'string' + ? (d) => d + : (d) => [d[1], d[1]]; const seriesExtremums = getSeriesExtremums(getValues, stackedData); diff --git a/packages/x-charts/src/models/seriesType/line.ts b/packages/x-charts/src/models/seriesType/line.ts index 5e4a6f481da9..744749d66833 100644 --- a/packages/x-charts/src/models/seriesType/line.ts +++ b/packages/x-charts/src/models/seriesType/line.ts @@ -82,6 +82,16 @@ export interface LineSeriesType * @default 'none' */ stackOffset?: StackOffsetType; + /** + * The value of the line at the base of the series area. + * + * - `'min'` the area will fill the space **under** the line. + * - `'max'` the area will fill the space **above** the line. + * - `number` the area will fill the space between this value and the line + * + * @default 0 + */ + baseline?: number | 'min' | 'max'; } /** From 01fa734b06d14026353b0839f8a7fed0b8605e36 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 12 Aug 2024 17:26:59 +0200 Subject: [PATCH 747/912] [TreeView] Fix the parameters passed for the `canMoveItemToNewPosition` prop (#14176) --- .../rich-tree-view-pro/rich-tree-view-pro.json | 2 +- .../src/RichTreeViewPro/RichTreeViewPro.tsx | 2 +- .../useTreeViewItemsReordering.test.tsx | 17 +++++++++++++++++ .../useTreeViewItemsReordering.ts | 9 +++++---- .../useTreeViewItemsReordering.types.ts | 2 +- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json b/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json index bcd6e7bdb905..74eafcaa4e11 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json @@ -8,7 +8,7 @@ "description": "Used to determine if a given item can move to some new position.", "typeDescriptions": { "params": "The params describing the item re-ordering.", - "params.itemId": "The id of the item to check.", + "params.itemId": "The id of the item that is being moved to a new position.", "params.oldPosition": "The old position of the item.", "params.newPosition": "The new position of the item.", "boolean": "true if the item can move to the new position." diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx index e71cc8ed6534..6255b8ccdb25 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx @@ -195,7 +195,7 @@ RichTreeViewPro.propTypes = { /** * Used to determine if a given item can move to some new position. * @param {object} params The params describing the item re-ordering. - * @param {string} params.itemId The id of the item to check. + * @param {string} params.itemId The id of the item that is being moved to a new position. * @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item. * @param {TreeViewItemReorderPosition} params.newPosition The new position of the item. * @returns {boolean} `true` if the item can move to the new position. diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx index b316969dbc1f..9e01b6229860 100644 --- a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx @@ -180,6 +180,23 @@ describeTreeView< }); describe('canMoveItemToNewPosition prop', () => { + it('should call canMoveItemToNewPosition with the correct parameters', () => { + const canMoveItemToNewPosition = spy(); + const response = render({ + experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, + items: [{ id: '1' }, { id: '2' }, { id: '3' }], + itemsReordering: true, + canMoveItemToNewPosition, + }); + + dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + expect(canMoveItemToNewPosition.lastCall.firstArg).to.deep.equal({ + itemId: '1', + oldPosition: { parentId: null, index: 0 }, + newPosition: { parentId: null, index: 1 }, + }); + }); + it('should not allow to drop an item when canMoveItemToNewPosition returns false', () => { const response = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts index 91843a7b6dc4..a19c0c491e0e 100644 --- a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts @@ -55,18 +55,19 @@ export const useTreeViewItemsReordering: TreeViewPlugin { - if (!state.itemsReordering) { + const itemsReordering = state.itemsReordering; + if (!itemsReordering) { throw new Error('There is no ongoing reordering.'); } - if (itemId === state.itemsReordering.draggedItemId) { + if (itemId === itemsReordering.draggedItemId) { return {}; } const canMoveItemToNewPosition = params.canMoveItemToNewPosition; const targetItemMeta = instance.getItemMeta(itemId); const targetItemIndex = instance.getItemIndex(targetItemMeta.id); - const draggedItemMeta = instance.getItemMeta(state.itemsReordering.draggedItemId); + const draggedItemMeta = instance.getItemMeta(itemsReordering.draggedItemId); const draggedItemIndex = instance.getItemIndex(draggedItemMeta.id); const oldPosition: TreeViewItemReorderPosition = { @@ -84,7 +85,7 @@ export const useTreeViewItemsReordering: TreeViewPlugin Date: Mon, 12 Aug 2024 18:52:16 +0300 Subject: [PATCH 748/912] [pickers] Fix date and time merging to retain milliseconds (#14173) --- .../DateCalendar/tests/DateCalendar.test.tsx | 4 +- .../src/internals/utils/date-utils.test.ts | 60 ++++++++++++------- .../src/internals/utils/date-utils.ts | 1 + 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx index 5d4ff9b31eed..fb52644ced5b 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx @@ -247,7 +247,9 @@ describe('', () => { userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); - expect(onChange.lastCall.firstArg).toEqualDateTime(adapterToUse.date('2018-01-02T11:11:11')); + expect(onChange.lastCall.firstArg).toEqualDateTime( + adapterToUse.date('2018-01-02T11:11:11.111'), + ); }); it('should complete weeks when showDaysOutsideCurrentMonth=true', () => { diff --git a/packages/x-date-pickers/src/internals/utils/date-utils.test.ts b/packages/x-date-pickers/src/internals/utils/date-utils.test.ts index 6f7e2c855e30..a9d642959c4e 100644 --- a/packages/x-date-pickers/src/internals/utils/date-utils.test.ts +++ b/packages/x-date-pickers/src/internals/utils/date-utils.test.ts @@ -32,9 +32,9 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2000-01-01'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2000-01-01')); }); it('should return next 18th going from 10th', () => { @@ -47,9 +47,9 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2018-08-18'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2018-08-18')); }); it('should return previous 18th going from 1st', () => { @@ -62,9 +62,9 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2018-07-18'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2018-07-18')); }); it('should return future 18th if disablePast', () => { @@ -78,7 +78,7 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: true, timezone: 'default', - })!; + }); expect(adapterToUse.isBefore(result, today)).to.equal(false); expect(adapterToUse.isBefore(result, adapterToUse.addDays(today, 31))).to.equal(true); @@ -95,9 +95,9 @@ describe('findClosestEnabledDate', () => { disableFuture: true, disablePast: true, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, today)).to.equal(true); + expect(result).toEqualDateTime(today); }); it('should return now with given time part if disablePast and now is valid', () => { @@ -113,13 +113,13 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: true, timezone: 'default', - })!; + }); expect(result).toEqualDateTime(adapterToUse.addDays(tryDate, 1)); clock.reset(); }); - it('should fallback to today if disablePast+disableFuture and now is invalid', () => { + it('should return `null` when disablePast+disableFuture and now is invalid', () => { const today = adapterToUse.date(); const result = findClosestEnabledDate({ date: adapterToUse.date('2000-01-01'), @@ -132,7 +132,7 @@ describe('findClosestEnabledDate', () => { timezone: 'default', }); - expect(adapterToUse.isEqual(result, adapterToUse.date())); + expect(result).to.equal(null); }); it('should return minDate if it is after the date and valid', () => { @@ -145,9 +145,9 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2018-08-18'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2018-08-18')); }); it('should return next 18th after minDate', () => { @@ -160,9 +160,27 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); + + expect(result).toEqualDateTime(adapterToUse.date('2018-08-18')); + }); + + it('should keep the time of the `date` when `disablePast`', () => { + const clock = useFakeTimers({ now: new Date('2000-01-02T11:12:13.123Z') }); + + const result = findClosestEnabledDate({ + date: adapterToUse.date('2000-01-01T11:12:13.550Z'), + minDate: adapterToUse.date('1900-01-01'), + maxDate: adapterToUse.date('2100-01-01'), + utils: adapterToUse, + isDateDisabled: () => false, + disableFuture: false, + disablePast: true, + timezone: 'default', + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2018-08-18'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2000-01-02T11:12:13.550Z')); + clock.reset(); }); it('should return maxDate if it is before the date and valid', () => { @@ -175,9 +193,9 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2018-07-18'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2018-07-18')); }); it('should return previous 18th before maxDate', () => { @@ -190,9 +208,9 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); - expect(adapterToUse.isSameDay(result, adapterToUse.date('2018-07-18'))).to.equal(true); + expect(result).toEqualDateTime(adapterToUse.date('2018-07-18')); }); it('should return null if minDate is after maxDate', () => { @@ -205,7 +223,7 @@ describe('findClosestEnabledDate', () => { disableFuture: false, disablePast: false, timezone: 'default', - })!; + }); expect(result).to.equal(null); }); diff --git a/packages/x-date-pickers/src/internals/utils/date-utils.ts b/packages/x-date-pickers/src/internals/utils/date-utils.ts index 5f04069743a4..781ca434fba6 100644 --- a/packages/x-date-pickers/src/internals/utils/date-utils.ts +++ b/packages/x-date-pickers/src/internals/utils/date-utils.ts @@ -17,6 +17,7 @@ export const mergeDateAndTime = ( mergedDate = utils.setHours(mergedDate, utils.getHours(timeParam)); mergedDate = utils.setMinutes(mergedDate, utils.getMinutes(timeParam)); mergedDate = utils.setSeconds(mergedDate, utils.getSeconds(timeParam)); + mergedDate = utils.setMilliseconds(mergedDate, utils.getMilliseconds(timeParam)); return mergedDate; }; From fbed7b166d365f9c86c92f259ef861118ae8f38e Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Tue, 13 Aug 2024 13:52:36 +0200 Subject: [PATCH 749/912] [core] Fix Netlify build cache issue (#14182) --- netlify.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index 25bf422e747a..4d663716bd27 100644 --- a/netlify.toml +++ b/netlify.toml @@ -10,7 +10,6 @@ [build.environment] NODE_VERSION = "18" NODE_OPTIONS = "--max_old_space_size=4096" - PNPM_FLAGS = "--shamefully-hoist" [[plugins]] package = "./packages/netlify-plugin-cache-docs" From 471b11835999410f92c64c988f65b68c3de8e11f Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Tue, 13 Aug 2024 15:08:45 +0300 Subject: [PATCH 750/912] [TreeView] Add label editing feature (#13388) Signed-off-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Flavien DELANGLE --- docs/data/pages.ts | 1 + .../editing/ApiMethodUpdateItemLabel.js | 35 +++ .../editing/ApiMethodUpdateItemLabel.tsx | 35 +++ .../ApiMethodUpdateItemLabel.tsx.preview | 8 + .../rich-tree-view/editing/CustomBehavior.js | 44 ++++ .../rich-tree-view/editing/CustomBehavior.tsx | 47 ++++ .../editing/CustomBehavior.tsx.preview | 7 + .../editing/CustomLabelInput.js | 185 +++++++++++++ .../editing/CustomLabelInput.tsx | 217 ++++++++++++++++ .../editing/CustomLabelInput.tsx.preview | 8 + .../rich-tree-view/editing/EditLeaves.js | 54 ++++ .../rich-tree-view/editing/EditLeaves.tsx | 61 +++++ .../editing/EditLeaves.tsx.preview | 9 + .../rich-tree-view/editing/EditWithIcons.js | 117 +++++++++ .../rich-tree-view/editing/EditWithIcons.tsx | 149 +++++++++++ .../editing/EditWithIcons.tsx.preview | 8 + .../rich-tree-view/editing/EditingCallback.js | 33 +++ .../editing/EditingCallback.tsx | 35 +++ .../editing/LabelEditingAllItems.js | 17 ++ .../editing/LabelEditingAllItems.tsx | 17 ++ .../editing/LabelEditingAllItems.tsx.preview | 6 + .../editing/LabelEditingSomeItems.js | 17 ++ .../editing/LabelEditingSomeItems.tsx | 17 ++ .../editing/LabelEditingSomeItems.tsx.preview | 6 + .../rich-tree-view/editing/Validation.js | 108 ++++++++ .../rich-tree-view/editing/Validation.tsx | 117 +++++++++ .../editing/Validation.tsx.preview | 7 + .../editing/editableProducts.ts | 43 +++ .../rich-tree-view/editing/editing.md | 99 +++++++ .../rich-tree-view/editing/employees.ts | 37 +++ .../rich-tree-view/editing/products.ts | 37 +++ .../x/api/tree-view/rich-tree-view-pro.json | 12 +- .../pages/x/api/tree-view/rich-tree-view.json | 15 +- docs/pages/x/api/tree-view/tree-item-2.json | 18 ++ docs/pages/x/api/tree-view/tree-item.json | 18 ++ .../react-tree-view/rich-tree-view/editing.js | 7 + .../rich-tree-view-pro.json | 10 + .../rich-tree-view/rich-tree-view.json | 10 + .../tree-view/tree-item-2/tree-item-2.json | 10 + .../tree-view/tree-item/tree-item.json | 14 + .../RichTreeViewPro.plugins.ts | 4 + .../src/RichTreeViewPro/RichTreeViewPro.tsx | 18 ++ .../src/RichTreeView/RichTreeView.plugins.ts | 8 +- .../src/RichTreeView/RichTreeView.tsx | 18 ++ .../x-tree-view/src/TreeItem/TreeItem.tsx | 35 ++- .../src/TreeItem/TreeItemContent.tsx | 65 ++++- .../src/TreeItem/treeItemClasses.ts | 9 + .../src/TreeItem/useTreeItemState.ts | 55 +++- .../x-tree-view/src/TreeItem2/TreeItem2.tsx | 32 ++- .../src/TreeItem2/TreeItem2.types.ts | 6 + .../src/TreeItem2Icon/TreeItem2Icon.tsx | 2 + .../TreeItem2LabelInput.tsx | 20 ++ .../TreeItem2LabelInput.types.ts | 8 + .../src/TreeItem2LabelInput/index.ts | 2 + .../useTreeItem2Utils/useTreeItem2Utils.tsx | 60 ++++- packages/x-tree-view/src/internals/index.ts | 5 + .../src/internals/models/itemPlugin.ts | 2 + .../useTreeViewExpansion.ts | 6 +- .../useTreeViewExpansion.types.ts | 2 + .../useTreeViewFocus/useTreeViewFocus.ts | 2 + .../useTreeViewKeyboardNavigation.ts | 10 +- .../useTreeViewKeyboardNavigation.types.ts | 2 + .../plugins/useTreeViewLabel/index.ts | 5 + .../useTreeViewLabel.itemPlugin.ts | 52 ++++ .../useTreeViewLabel.test.tsx | 244 ++++++++++++++++++ .../useTreeViewLabel/useTreeViewLabel.ts | 105 ++++++++ .../useTreeViewLabel.types.ts | 80 ++++++ .../x-tree-view/src/useTreeItem2/index.ts | 1 + .../src/useTreeItem2/useTreeItem2.ts | 99 ++++++- .../src/useTreeItem2/useTreeItem2.types.ts | 53 +++- scripts/x-tree-view-pro.exports.json | 1 + scripts/x-tree-view.exports.json | 1 + .../describeTreeView/describeTreeView.tsx | 4 + .../describeTreeView.types.ts | 6 + 74 files changed, 2686 insertions(+), 31 deletions(-) create mode 100644 docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/CustomBehavior.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditLeaves.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditWithIcons.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditingCallback.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/EditingCallback.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/Validation.js create mode 100644 docs/data/tree-view/rich-tree-view/editing/Validation.tsx create mode 100644 docs/data/tree-view/rich-tree-view/editing/Validation.tsx.preview create mode 100644 docs/data/tree-view/rich-tree-view/editing/editableProducts.ts create mode 100644 docs/data/tree-view/rich-tree-view/editing/editing.md create mode 100644 docs/data/tree-view/rich-tree-view/editing/employees.ts create mode 100644 docs/data/tree-view/rich-tree-view/editing/products.ts create mode 100644 docs/pages/x/react-tree-view/rich-tree-view/editing.js create mode 100644 packages/x-tree-view/src/TreeItem2LabelInput/TreeItem2LabelInput.tsx create mode 100644 packages/x-tree-view/src/TreeItem2LabelInput/TreeItem2LabelInput.types.ts create mode 100644 packages/x-tree-view/src/TreeItem2LabelInput/index.ts create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewLabel/index.ts create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.ts create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.test.tsx create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.ts create mode 100644 packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.ts diff --git a/docs/data/pages.ts b/docs/data/pages.ts index 62ed986c8ca8..8fe11f180a26 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -510,6 +510,7 @@ const pages: MuiPage[] = [ { pathname: '/x/react-tree-view/rich-tree-view/expansion' }, { pathname: '/x/react-tree-view/rich-tree-view/customization' }, { pathname: '/x/react-tree-view/rich-tree-view/focus' }, + { pathname: '/x/react-tree-view/rich-tree-view/editing' }, { pathname: '/x/react-tree-view/rich-tree-view/ordering', plan: 'pro' }, ], }, diff --git a/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.js b/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.js new file mode 100644 index 000000000000..6d8aff8043d6 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.js @@ -0,0 +1,35 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; +import { MUI_X_PRODUCTS } from './products'; + +export default function ApiMethodUpdateItemLabel() { + const [isLabelUpdated, setIsLabelUpdated] = React.useState(false); + const apiRef = useTreeViewApiRef(); + + const handleUpdateLabel = () => { + if (isLabelUpdated) { + apiRef.current.updateItemLabel('grid', 'Data Grid'); + setIsLabelUpdated(false); + } else { + apiRef.current.updateItemLabel('grid', 'New Label'); + setIsLabelUpdated(true); + } + }; + + return ( + + + + + + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx b/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx new file mode 100644 index 000000000000..69a4fb59308f --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx @@ -0,0 +1,35 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; +import { MUI_X_PRODUCTS } from './products'; + +export default function ApiMethodUpdateItemLabel() { + const [isLabelUpdated, setIsLabelUpdated] = React.useState(false); + const apiRef = useTreeViewApiRef(); + + const handleUpdateLabel = () => { + if (isLabelUpdated) { + apiRef.current!.updateItemLabel('grid', 'Data Grid'); + setIsLabelUpdated(false); + } else { + apiRef.current!.updateItemLabel('grid', 'New Label'); + setIsLabelUpdated(true); + } + }; + + return ( + + + + + + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx.preview new file mode 100644 index 000000000000..e10c7e1b68f4 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/ApiMethodUpdateItemLabel.tsx.preview @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.js b/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.js new file mode 100644 index 000000000000..4c52e4c94ec8 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.js @@ -0,0 +1,44 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; +import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; + +import { MUI_X_PRODUCTS } from './products'; + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2(props, ref) { + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + + const handleInputBlur = (event) => { + interactions.handleCancelItemLabelEditing(event); + }; + + return ( + + ); +}); + +export default function CustomBehavior() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx b/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx new file mode 100644 index 000000000000..b8b44e50cca6 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; +import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; +import { UseTreeItem2LabelInputSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; +import { MUI_X_PRODUCTS } from './products'; + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2( + props: TreeItem2Props, + ref: React.Ref, +) { + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + + const handleInputBlur: UseTreeItem2LabelInputSlotOwnProps['onBlur'] = (event) => { + interactions.handleCancelItemLabelEditing(event); + }; + + return ( + + ); +}); + +export default function CustomBehavior() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx.preview new file mode 100644 index 000000000000..c8745d2d8df8 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/CustomBehavior.tsx.preview @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js new file mode 100644 index 000000000000..5433087dfed1 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js @@ -0,0 +1,185 @@ +import * as React from 'react'; +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import CheckIcon from '@mui/icons-material/Check'; +import IconButton from '@mui/material/IconButton'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import CloseRoundedIcon from '@mui/icons-material/CloseRounded'; +import { TreeItem2, TreeItem2Label } from '@mui/x-tree-view/TreeItem2'; +import { unstable_useTreeItem2 as useTreeItem2 } from '@mui/x-tree-view/useTreeItem2'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; + +const StyledLabelInput = styled('input')(({ theme }) => ({ + ...theme.typography.body1, + backgroundColor: theme.palette.background.paper, + borderRadius: theme.shape.borderRadius, + border: 'none', + padding: '0 2px', + boxSizing: 'border-box', + width: 100, + '&:focus': { + outline: `1px solid ${theme.palette.primary.main}`, + }, +})); + +export const ITEMS = [ + { + id: '1', + firstName: 'Jane', + lastName: 'Doe', + editable: true, + children: [ + { id: '1.1', firstName: 'Elena', lastName: 'Kim', editable: true }, + { id: '1.2', firstName: 'Noah', lastName: 'Rodriguez', editable: true }, + { id: '1.3', firstName: 'Maya', lastName: 'Patel', editable: true }, + ], + }, + { + id: '2', + firstName: 'Liam', + lastName: 'Clarke', + editable: true, + children: [ + { + id: '2.1', + firstName: 'Ethan', + lastName: 'Lee', + editable: true, + }, + { id: '2.2', firstName: 'Ava', lastName: 'Jones', editable: true }, + ], + }, +]; + +function Label({ children, ...other }) { + return ( + + {children} + + ); +} + +const LabelInput = React.forwardRef(function LabelInput( + { item, handleCancelItemLabelEditing, handleSaveItemLabel, ...props }, + ref, +) { + const [initialNameValue, setInitialNameValue] = React.useState({ + firstName: item.firstName, + lastName: item.lastName, + }); + const [nameValue, setNameValue] = React.useState({ + firstName: item.firstName, + lastName: item.lastName, + }); + + const handleFirstNameChange = (event) => { + setNameValue((prev) => ({ ...prev, firstName: event.target.value })); + }; + const handleLastNameChange = (event) => { + setNameValue((prev) => ({ ...prev, lastName: event.target.value })); + }; + + const reset = () => { + setNameValue(initialNameValue); + }; + const save = () => { + setInitialNameValue(nameValue); + }; + + return ( + + + + { + handleSaveItemLabel(event, `${nameValue.firstName} ${nameValue.lastName}`); + save(); + }} + > + + + { + handleCancelItemLabelEditing(event); + reset(); + }} + > + + + + ); +}); + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2(props, ref) { + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + const { publicAPI } = useTreeItem2(props); + + const handleInputBlur = (event) => { + event.defaultMuiPrevented = true; + }; + + const handleInputKeyDown = (event) => { + event.defaultMuiPrevented = true; + }; + + return ( + + ); +}); + +export default function CustomLabelInput() { + return ( + + `${item.firstName} ${item.lastName}`} + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx new file mode 100644 index 000000000000..188bb9943aa0 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx @@ -0,0 +1,217 @@ +import * as React from 'react'; +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import CheckIcon from '@mui/icons-material/Check'; +import IconButton from '@mui/material/IconButton'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import CloseRoundedIcon from '@mui/icons-material/CloseRounded'; +import { + TreeItem2, + TreeItem2Label, + TreeItem2Props, +} from '@mui/x-tree-view/TreeItem2'; +import { + UseTreeItem2LabelInputSlotOwnProps, + UseTreeItem2LabelSlotOwnProps, + unstable_useTreeItem2 as useTreeItem2, +} from '@mui/x-tree-view/useTreeItem2'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; + +const StyledLabelInput = styled('input')(({ theme }) => ({ + ...theme.typography.body1, + backgroundColor: theme.palette.background.paper, + borderRadius: theme.shape.borderRadius, + border: 'none', + padding: '0 2px', + boxSizing: 'border-box', + width: 100, + '&:focus': { + outline: `1px solid ${theme.palette.primary.main}`, + }, +})); + +type ExtendedTreeItemProps = { + editable?: boolean; + id: string; + firstName: string; + lastName: string; +}; + +export const ITEMS: TreeViewBaseItem[] = [ + { + id: '1', + firstName: 'Jane', + lastName: 'Doe', + editable: true, + children: [ + { id: '1.1', firstName: 'Elena', lastName: 'Kim', editable: true }, + { id: '1.2', firstName: 'Noah', lastName: 'Rodriguez', editable: true }, + { id: '1.3', firstName: 'Maya', lastName: 'Patel', editable: true }, + ], + }, + { + id: '2', + firstName: 'Liam', + lastName: 'Clarke', + editable: true, + children: [ + { + id: '2.1', + firstName: 'Ethan', + lastName: 'Lee', + editable: true, + }, + { id: '2.2', firstName: 'Ava', lastName: 'Jones', editable: true }, + ], + }, +]; + +function Label({ children, ...other }: UseTreeItem2LabelSlotOwnProps) { + return ( + + {children} + + ); +} + +interface CustomLabelInputProps extends UseTreeItem2LabelInputSlotOwnProps { + handleCancelItemLabelEditing: (event: React.SyntheticEvent) => void; + handleSaveItemLabel: (event: React.SyntheticEvent, label: string) => void; + item: TreeViewBaseItem; +} + +const LabelInput = React.forwardRef(function LabelInput( + { + item, + handleCancelItemLabelEditing, + handleSaveItemLabel, + ...props + }: Omit, + ref: React.Ref, +) { + const [initialNameValue, setInitialNameValue] = React.useState({ + firstName: item.firstName, + lastName: item.lastName, + }); + const [nameValue, setNameValue] = React.useState({ + firstName: item.firstName, + lastName: item.lastName, + }); + + const handleFirstNameChange = (event: React.ChangeEvent) => { + setNameValue((prev) => ({ ...prev, firstName: event.target.value })); + }; + const handleLastNameChange = (event: React.ChangeEvent) => { + setNameValue((prev) => ({ ...prev, lastName: event.target.value })); + }; + + const reset = () => { + setNameValue(initialNameValue); + }; + const save = () => { + setInitialNameValue(nameValue); + }; + + return ( + + + + { + handleSaveItemLabel(event, `${nameValue.firstName} ${nameValue.lastName}`); + save(); + }} + > + + + { + handleCancelItemLabelEditing(event); + reset(); + }} + > + + + + ); +}); + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2( + props: TreeItem2Props, + ref: React.Ref, +) { + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + const { publicAPI } = useTreeItem2(props); + + const handleInputBlur: UseTreeItem2LabelInputSlotOwnProps['onBlur'] = (event) => { + event.defaultMuiPrevented = true; + }; + + const handleInputKeyDown: UseTreeItem2LabelInputSlotOwnProps['onKeyDown'] = ( + event, + ) => { + event.defaultMuiPrevented = true; + }; + + return ( + + ); +}); + +export default function CustomLabelInput() { + return ( + + `${item.firstName} ${item.lastName}`} + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx.preview new file mode 100644 index 000000000000..9712852c253a --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx.preview @@ -0,0 +1,8 @@ + `${item.firstName} ${item.lastName}`} +/> \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/EditLeaves.js b/docs/data/tree-view/rich-tree-view/editing/EditLeaves.js new file mode 100644 index 000000000000..041b88409974 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditLeaves.js @@ -0,0 +1,54 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; + +const MUI_X_PRODUCTS = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and time pickers', + children: [ + { + id: 'pickers-community', + label: '@mui/x-date-pickers', + }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function EditLeaves() { + const apiRef = useTreeViewApiRef(); + return ( + + + apiRef.current.getItemOrderedChildrenIds(item.id).length === 0 + } + defaultExpandedItems={['grid', 'pickers']} + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx b/docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx new file mode 100644 index 000000000000..6d1a2ef9997e --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeViewApiRef } from '@mui/x-tree-view/hooks'; +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; + +type ExtendedTreeItemProps = { + editable?: boolean; + id: string; + label: string; +}; + +const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and time pickers', + children: [ + { + id: 'pickers-community', + label: '@mui/x-date-pickers', + }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; + +export default function EditLeaves() { + const apiRef = useTreeViewApiRef(); + return ( + + + apiRef.current!.getItemOrderedChildrenIds(item.id).length === 0 + } + defaultExpandedItems={['grid', 'pickers']} + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx.preview new file mode 100644 index 000000000000..e03aa45b1144 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditLeaves.tsx.preview @@ -0,0 +1,9 @@ + + apiRef.current!.getItemOrderedChildrenIds(item.id).length === 0 + } + defaultExpandedItems={['grid', 'pickers']} +/> \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.js b/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.js new file mode 100644 index 000000000000..e9dd9dc73ab0 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.js @@ -0,0 +1,117 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; +import CloseRoundedIcon from '@mui/icons-material/CloseRounded'; +import CheckIcon from '@mui/icons-material/Check'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; +import { TreeItem2, TreeItem2Label } from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2LabelInput } from '@mui/x-tree-view/TreeItem2LabelInput'; + +import { MUI_X_PRODUCTS } from './products'; + +function CustomLabel({ editing, editable, children, toggleItemEditing, ...other }) { + return ( + + {children} + {editable && ( + + + + )} + + ); +} + +function CustomLabelInput(props) { + const { handleCancelItemLabelEditing, handleSaveItemLabel, value, ...other } = + props; + + return ( + + + { + handleSaveItemLabel(event, value); + }} + > + + + + + + + ); +} + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2(props, ref) { + const { interactions, status } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + + const handleContentDoubleClick = (event) => { + event.defaultMuiPrevented = true; + }; + + const handleInputBlur = (event) => { + event.defaultMuiPrevented = true; + }; + + const handleInputKeyDown = (event) => { + event.defaultMuiPrevented = true; + }; + + return ( + + ); +}); + +export default function EditWithIcons() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx b/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx new file mode 100644 index 000000000000..2a4f2521d7bb --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx @@ -0,0 +1,149 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; +import CloseRoundedIcon from '@mui/icons-material/CloseRounded'; +import CheckIcon from '@mui/icons-material/Check'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; +import { + TreeItem2, + TreeItem2Label, + TreeItem2Props, +} from '@mui/x-tree-view/TreeItem2'; +import { TreeItem2LabelInput } from '@mui/x-tree-view/TreeItem2LabelInput'; +import { + UseTreeItem2LabelInputSlotOwnProps, + UseTreeItem2LabelSlotOwnProps, +} from '@mui/x-tree-view/useTreeItem2'; +import { MUI_X_PRODUCTS } from './products'; + +interface CustomLabelProps extends UseTreeItem2LabelSlotOwnProps { + editable: boolean; + editing: boolean; + toggleItemEditing: () => void; +} + +function CustomLabel({ + editing, + editable, + children, + toggleItemEditing, + ...other +}: CustomLabelProps) { + return ( + + {children} + {editable && ( + + + + )} + + ); +} + +interface CustomLabelInputProps extends UseTreeItem2LabelInputSlotOwnProps { + handleCancelItemLabelEditing: (event: React.SyntheticEvent) => void; + handleSaveItemLabel: (event: React.SyntheticEvent, label: string) => void; + value: string; +} + +function CustomLabelInput(props: Omit) { + const { handleCancelItemLabelEditing, handleSaveItemLabel, value, ...other } = + props; + + return ( + + + { + handleSaveItemLabel(event, value); + }} + > + + + + + + + ); +} + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2( + props: TreeItem2Props, + ref: React.Ref, +) { + const { interactions, status } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + + const handleContentDoubleClick: UseTreeItem2LabelSlotOwnProps['onDoubleClick'] = ( + event, + ) => { + event.defaultMuiPrevented = true; + }; + + const handleInputBlur: UseTreeItem2LabelInputSlotOwnProps['onBlur'] = (event) => { + event.defaultMuiPrevented = true; + }; + + const handleInputKeyDown: UseTreeItem2LabelInputSlotOwnProps['onKeyDown'] = ( + event, + ) => { + event.defaultMuiPrevented = true; + }; + + return ( + + ); +}); + +export default function EditWithIcons() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx.preview new file mode 100644 index 000000000000..761e52103ecd --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditWithIcons.tsx.preview @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/EditingCallback.js b/docs/data/tree-view/rich-tree-view/editing/EditingCallback.js new file mode 100644 index 000000000000..11fce8f7f128 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditingCallback.js @@ -0,0 +1,33 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { MUI_X_PRODUCTS } from './products'; + +export default function EditingCallback() { + const [lastEditedItem, setLastEditedItem] = React.useState(null); + + return ( + + {lastEditedItem ? ( + + The label of item with id {lastEditedItem.itemId} has been edited + to {lastEditedItem.label} + + ) : ( + No item has been edited yet + )} + + + setLastEditedItem({ itemId, label })} + /> + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/EditingCallback.tsx b/docs/data/tree-view/rich-tree-view/editing/EditingCallback.tsx new file mode 100644 index 000000000000..772ae6e8c55d --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/EditingCallback.tsx @@ -0,0 +1,35 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { MUI_X_PRODUCTS } from './products'; + +export default function EditingCallback() { + const [lastEditedItem, setLastEditedItem] = React.useState<{ + itemId: string; + label: string; + } | null>(null); + + return ( + + {lastEditedItem ? ( + + The label of item with id {lastEditedItem!.itemId} has been edited + to {lastEditedItem!.label} + + ) : ( + No item has been edited yet + )} + + setLastEditedItem({ itemId, label })} + /> + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.js b/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.js new file mode 100644 index 000000000000..e4a7020a9fb5 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.js @@ -0,0 +1,17 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { MUI_X_PRODUCTS } from './products'; + +export default function LabelEditingAllItems() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx b/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx new file mode 100644 index 000000000000..e4a7020a9fb5 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx @@ -0,0 +1,17 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { MUI_X_PRODUCTS } from './products'; + +export default function LabelEditingAllItems() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx.preview new file mode 100644 index 000000000000..f6140084082a --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/LabelEditingAllItems.tsx.preview @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.js b/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.js new file mode 100644 index 000000000000..a60407f22e05 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.js @@ -0,0 +1,17 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { MUI_X_PRODUCTS } from './editableProducts'; + +export default function LabelEditingSomeItems() { + return ( + + Boolean(item?.editable)} + experimentalFeatures={{ labelEditing: true }} + defaultExpandedItems={['grid', 'pickers']} + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx b/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx new file mode 100644 index 000000000000..a60407f22e05 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx @@ -0,0 +1,17 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { MUI_X_PRODUCTS } from './editableProducts'; + +export default function LabelEditingSomeItems() { + return ( + + Boolean(item?.editable)} + experimentalFeatures={{ labelEditing: true }} + defaultExpandedItems={['grid', 'pickers']} + /> + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx.preview new file mode 100644 index 000000000000..bdd2489ac890 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/LabelEditingSomeItems.tsx.preview @@ -0,0 +1,6 @@ + Boolean(item?.editable)} + experimentalFeatures={{ labelEditing: true }} + defaultExpandedItems={['grid', 'pickers']} +/> \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/Validation.js b/docs/data/tree-view/rich-tree-view/editing/Validation.js new file mode 100644 index 000000000000..a851bf3090b5 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/Validation.js @@ -0,0 +1,108 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Tooltip from '@mui/material/Tooltip'; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; +import { TreeItem2 } from '@mui/x-tree-view/TreeItem2'; + +import { TreeItem2LabelInput } from '@mui/x-tree-view/TreeItem2LabelInput'; +import { MUI_X_PRODUCTS } from './products'; + +const ERRORS = { + REQUIRED: 'The label cannot be empty', + INVALID: 'The label cannot contain digits', +}; + +function CustomLabelInput(props) { + const { error, ...other } = props; + + return ( + + + {error ? ( + + + + ) : ( + + + + )} + + ); +} + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2(props, ref) { + const [error, setError] = React.useState(null); + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + const validateLabel = (label) => { + if (!label) { + setError('REQUIRED'); + } else if (/\d/.test(label)) { + setError('INVALID'); + } else { + setError(null); + } + }; + + const handleInputBlur = (event) => { + if (error) { + event.defaultMuiPrevented = true; + } + }; + + const handleInputKeyDown = (event) => { + event.defaultMuiPrevented = true; + const target = event.target; + + if (event.key === 'Enter' && target.value) { + if (error) { + return; + } + setError(null); + interactions.handleSaveItemLabel(event, target.value); + } else if (event.key === 'Escape') { + setError(null); + interactions.handleCancelItemLabelEditing(event); + } + }; + + const handleInputChange = (event) => { + validateLabel(event.target.value); + }; + + return ( + + ); +}); + +export default function Validation() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/Validation.tsx b/docs/data/tree-view/rich-tree-view/editing/Validation.tsx new file mode 100644 index 000000000000..450a0b3711dc --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/Validation.tsx @@ -0,0 +1,117 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Tooltip from '@mui/material/Tooltip'; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline'; +import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; +import { TreeItem2, TreeItem2Props } from '@mui/x-tree-view/TreeItem2'; +import { UseTreeItem2LabelInputSlotOwnProps } from '@mui/x-tree-view/useTreeItem2'; +import { TreeItem2LabelInput } from '@mui/x-tree-view/TreeItem2LabelInput'; +import { MUI_X_PRODUCTS } from './products'; + +const ERRORS = { + REQUIRED: 'The label cannot be empty', + INVALID: 'The label cannot contain digits', +}; + +interface CustomLabelInputProps extends UseTreeItem2LabelInputSlotOwnProps { + error: null | keyof typeof ERRORS; +} + +function CustomLabelInput(props: Omit) { + const { error, ...other } = props; + + return ( + + + {error ? ( + + + + ) : ( + + + + )} + + ); +} + +const CustomTreeItem2 = React.forwardRef(function CustomTreeItem2( + props: TreeItem2Props, + ref: React.Ref, +) { + const [error, setError] = React.useState(null); + const { interactions } = useTreeItem2Utils({ + itemId: props.itemId, + children: props.children, + }); + const validateLabel = (label: string) => { + if (!label) { + setError('REQUIRED'); + } else if (/\d/.test(label)) { + setError('INVALID'); + } else { + setError(null); + } + }; + + const handleInputBlur: UseTreeItem2LabelInputSlotOwnProps['onBlur'] = (event) => { + if (error) { + event.defaultMuiPrevented = true; + } + }; + + const handleInputKeyDown: UseTreeItem2LabelInputSlotOwnProps['onKeyDown'] = ( + event, + ) => { + event.defaultMuiPrevented = true; + const target = event.target as HTMLInputElement; + + if (event.key === 'Enter' && target.value) { + if (error) { + return; + } + setError(null); + interactions.handleSaveItemLabel(event, target.value); + } else if (event.key === 'Escape') { + setError(null); + interactions.handleCancelItemLabelEditing(event); + } + }; + + const handleInputChange = (event: React.ChangeEvent) => { + validateLabel(event.target.value); + }; + + return ( + + ); +}); + +export default function Validation() { + return ( + + + + ); +} diff --git a/docs/data/tree-view/rich-tree-view/editing/Validation.tsx.preview b/docs/data/tree-view/rich-tree-view/editing/Validation.tsx.preview new file mode 100644 index 000000000000..6657b0a9a6a8 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/Validation.tsx.preview @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/docs/data/tree-view/rich-tree-view/editing/editableProducts.ts b/docs/data/tree-view/rich-tree-view/editing/editableProducts.ts new file mode 100644 index 000000000000..ca7945031fb5 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/editableProducts.ts @@ -0,0 +1,43 @@ +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; + +type Editable = { + editable?: boolean; + id: string; + label: string; +}; + +export const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + + children: [ + { id: 'grid-community', label: '@mui/x-data-grid editable', editable: true }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro editable', editable: true }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and time pickers', + + children: [ + { + id: 'pickers-community', + label: '@mui/x-date-pickers', + }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; diff --git a/docs/data/tree-view/rich-tree-view/editing/editing.md b/docs/data/tree-view/rich-tree-view/editing/editing.md new file mode 100644 index 000000000000..73e923bb7cff --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/editing.md @@ -0,0 +1,99 @@ +--- +productId: x-tree-view +title: Rich Tree View - Editing +githubLabel: 'component: tree view' +packageName: '@mui/x-tree-view' +waiAria: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/ +packageName: '@mui/x-tree-view' +--- + +# Rich Tree View - Label editing + +

    Learn how to edit the label of Tree View items.

    + +## Enable label editing + +You can use the `isItemEditable` prop to enable editing. +If set to `true`, this prop will enable label editing on all items: + +{{"demo": "LabelEditingAllItems.js"}} + +:::success +If an item is editable, the editing state can be toggled by double clicking on it, or by pressing Enter on the keyboard when the item is in focus. + +Once an item is in editing state, the value of the label can be edited. Pressing Enter again or bluring the item will save the new value. Pressing Esc will cancel the action and restore the item to its original state. + +::: + +## Limit editing to some items + +If you pass a method to `isItemEditable`, only the items for which the method returns `true` will be editable: + +{{"demo": "LabelEditingSomeItems.js"}} + +### Limit editing to leaves + +You can limit the editing to just the leaves of the tree. + +{{"demo": "EditLeaves.js"}} + +## Track item label change + +Use the `onItemLabelChange` prop to trigger an action when the label of an item changes. + +{{"demo": "EditingCallback.js"}} + +## Change the default behavior + +By default, blurring the tree item saves the new value if there is one. +To modify this behavior, use the `slotProps` of the `TreeItem2`. + +{{"demo": "CustomBehavior.js"}} + +## Validation + +You can override the event handlers of the `labelInput` and implement a custom validation logic using the interaction methods from `useTreeItem2Utils`. + +{{"demo": "Validation.js"}} + +## Enable editing using only icons + +The demo below shows how to entirely override the editing behavior, and implement it using icons. + +{{"demo": "EditWithIcons.js"}} + +## Create a custom labelInput + +The demo below shows how to use a different component in the `labelInput` slot. + +{{"demo": "CustomLabelInput.js"}} + +## Imperative API + +:::success +To use the `apiRef` object, you need to initialize it using the `useTreeViewApiRef` hook as follows: + +```tsx +const apiRef = useTreeViewApiRef(); + +return ; +``` + +When your component first renders, `apiRef` will be `undefined`. +After this initial render, `apiRef` holds methods to interact imperatively with the Tree View. +::: + +### Change the label of an item + +Use the `setItemExpansion` API method to change the expansion of an item. + +```ts +apiRef.current.updateItemLabel( + // The id of the item to to update + itemId, + // The new label of the item. + newLabel, +); +``` + +{{"demo": "ApiMethodUpdateItemLabel.js"}} diff --git a/docs/data/tree-view/rich-tree-view/editing/employees.ts b/docs/data/tree-view/rich-tree-view/editing/employees.ts new file mode 100644 index 000000000000..5e1e16f8a079 --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/employees.ts @@ -0,0 +1,37 @@ +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; + +export type Employee = { + editable?: boolean; + id: string; + firstName: string; + lastName: string; +}; + +export const EMPLOYEES: TreeViewBaseItem[] = [ + { + id: '1', + firstName: 'Jane', + lastName: 'Doe', + editable: true, + children: [ + { id: '1.1', firstName: 'Elena', lastName: 'Kim', editable: true }, + { id: '1.2', firstName: 'Noah', lastName: 'Rodriguez', editable: true }, + { id: '1.3', firstName: 'Maya', lastName: 'Patel', editable: true }, + ], + }, + { + id: '2', + firstName: 'Liam', + lastName: 'Clarke', + editable: true, + children: [ + { + id: '2.1', + firstName: 'Ethan', + lastName: 'Lee', + editable: true, + }, + { id: '2.2', firstName: 'Ava', lastName: 'Jones', editable: true }, + ], + }, +]; diff --git a/docs/data/tree-view/rich-tree-view/editing/products.ts b/docs/data/tree-view/rich-tree-view/editing/products.ts new file mode 100644 index 000000000000..97929673353e --- /dev/null +++ b/docs/data/tree-view/rich-tree-view/editing/products.ts @@ -0,0 +1,37 @@ +import { TreeViewBaseItem } from '@mui/x-tree-view/models'; + +export const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ + { + id: 'grid', + label: 'Data Grid', + + children: [ + { id: 'grid-community', label: '@mui/x-data-grid' }, + { id: 'grid-pro', label: '@mui/x-data-grid-pro' }, + { id: 'grid-premium', label: '@mui/x-data-grid-premium' }, + ], + }, + { + id: 'pickers', + label: 'Date and time pickers', + + children: [ + { + id: 'pickers-community', + label: '@mui/x-date-pickers', + }, + { id: 'pickers-pro', label: '@mui/x-date-pickers-pro' }, + ], + }, + { + id: 'charts', + label: 'Charts', + + children: [{ id: 'charts-community', label: '@mui/x-charts' }], + }, + { + id: 'tree-view', + label: 'Tree View', + children: [{ id: 'tree-view-community', label: '@mui/x-tree-view' }], + }, +]; diff --git a/docs/pages/x/api/tree-view/rich-tree-view-pro.json b/docs/pages/x/api/tree-view/rich-tree-view-pro.json index 03bea300243d..7cd100636eb8 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view-pro.json +++ b/docs/pages/x/api/tree-view/rich-tree-view-pro.json @@ -3,7 +3,7 @@ "apiRef": { "type": { "name": "shape", - "description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, selectItem: func, setItemExpansion: func } }" + "description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, selectItem: func, setItemExpansion: func, updateItemLabel: func } }" } }, "canMoveItemToNewPosition": { @@ -31,7 +31,7 @@ "experimentalFeatures": { "type": { "name": "shape", - "description": "{ indentationAtItemLevel?: bool, itemsReordering?: bool }" + "description": "{ indentationAtItemLevel?: bool, itemsReordering?: bool, labelEditing?: bool }" } }, "getItemId": { @@ -61,6 +61,7 @@ "returned": "boolean" } }, + "isItemEditable": { "type": { "name": "union", "description": "func
    | bool" } }, "isItemReorderable": { "type": { "name": "func" }, "default": "() => true", @@ -104,6 +105,13 @@ "describedArgs": ["event", "itemId"] } }, + "onItemLabelChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(itemId: TreeViewItemId, newLabel: string) => void", + "describedArgs": ["itemId", "newLabel"] + } + }, "onItemPositionChange": { "type": { "name": "func" }, "signature": { diff --git a/docs/pages/x/api/tree-view/rich-tree-view.json b/docs/pages/x/api/tree-view/rich-tree-view.json index 7857c5c370ba..53335f98fc5e 100644 --- a/docs/pages/x/api/tree-view/rich-tree-view.json +++ b/docs/pages/x/api/tree-view/rich-tree-view.json @@ -3,7 +3,7 @@ "apiRef": { "type": { "name": "shape", - "description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, selectItem: func, setItemExpansion: func } }" + "description": "{ current?: { focusItem: func, getItem: func, getItemDOMElement: func, getItemOrderedChildrenIds: func, getItemTree: func, selectItem: func, setItemExpansion: func, updateItemLabel: func } }" } }, "checkboxSelection": { "type": { "name": "bool" }, "default": "false" }, @@ -21,7 +21,10 @@ "default": "'content'" }, "experimentalFeatures": { - "type": { "name": "shape", "description": "{ indentationAtItemLevel?: bool }" } + "type": { + "name": "shape", + "description": "{ indentationAtItemLevel?: bool, labelEditing?: bool }" + } }, "getItemId": { "type": { "name": "func" }, @@ -50,6 +53,7 @@ "returned": "boolean" } }, + "isItemEditable": { "type": { "name": "union", "description": "func
    | bool" } }, "itemChildrenIndentation": { "type": { "name": "union", "description": "number
    | string" }, "default": "12px" @@ -83,6 +87,13 @@ "describedArgs": ["event", "itemId"] } }, + "onItemLabelChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(itemId: TreeViewItemId, newLabel: string) => void", + "describedArgs": ["itemId", "newLabel"] + } + }, "onItemSelectionToggle": { "type": { "name": "func" }, "signature": { diff --git a/docs/pages/x/api/tree-view/tree-item-2.json b/docs/pages/x/api/tree-view/tree-item-2.json index 64dd97521004..547383a665af 100644 --- a/docs/pages/x/api/tree-view/tree-item-2.json +++ b/docs/pages/x/api/tree-view/tree-item-2.json @@ -59,6 +59,12 @@ "default": "TreeItem2Label", "class": "MuiTreeItem2-label" }, + { + "name": "labelInput", + "description": "The component that renders the input to edit the label when the item is editable and is currently being edited.", + "default": "TreeItem2LabelInput", + "class": "MuiTreeItem2-labelInput" + }, { "name": "dragAndDropOverlay", "description": "The component that renders the overlay when an item reordering is ongoing.\nWarning: This slot is only useful when using the `RichTreeViewPro` component.", @@ -81,6 +87,18 @@ "description": "State class applied to the element when disabled.", "isGlobal": true }, + { + "key": "editable", + "className": "MuiTreeItem2-editable", + "description": "Styles applied to the content of the items that are editable.", + "isGlobal": false + }, + { + "key": "editing", + "className": "MuiTreeItem2-editing", + "description": "Styles applied to the content element when editing is enabled.", + "isGlobal": false + }, { "key": "expanded", "className": "Mui-expanded", diff --git a/docs/pages/x/api/tree-view/tree-item.json b/docs/pages/x/api/tree-view/tree-item.json index 2a7c1b9c0032..7873eb960165 100644 --- a/docs/pages/x/api/tree-view/tree-item.json +++ b/docs/pages/x/api/tree-view/tree-item.json @@ -73,6 +73,18 @@ "description": "Styles applied to the drag and drop overlay.", "isGlobal": false }, + { + "key": "editable", + "className": "MuiTreeItem-editable", + "description": "Styles applied to the content of the items that are editable.", + "isGlobal": false + }, + { + "key": "editing", + "className": "MuiTreeItem-editing", + "description": "Styles applied to the content element when editing is enabled.", + "isGlobal": false + }, { "key": "expanded", "className": "Mui-expanded", @@ -97,6 +109,12 @@ "description": "Styles applied to the label element.", "isGlobal": false }, + { + "key": "labelInput", + "className": "MuiTreeItem-labelInput", + "description": "Styles applied to the input element that is visible when editing is enabled.", + "isGlobal": false + }, { "key": "root", "className": "MuiTreeItem-root", diff --git a/docs/pages/x/react-tree-view/rich-tree-view/editing.js b/docs/pages/x/react-tree-view/rich-tree-view/editing.js new file mode 100644 index 000000000000..73aff62cb36f --- /dev/null +++ b/docs/pages/x/react-tree-view/rich-tree-view/editing.js @@ -0,0 +1,7 @@ +import * as React from 'react'; +import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; +import * as pageProps from 'docsx/data/tree-view/rich-tree-view/editing/editing.md?muiMarkdown'; + +export default function Page() { + return ; +} diff --git a/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json b/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json index 74eafcaa4e11..3a33b96c08bd 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view-pro/rich-tree-view-pro.json @@ -55,6 +55,9 @@ "boolean": "true if the item should be disabled." } }, + "isItemEditable": { + "description": "Determines if a given item is editable or not. Make sure to also enable the labelEditing experimental feature: <RichTreeViewPro experimentalFeatures={{ labelEditing: true }} />. By default, the items are not editable." + }, "isItemReorderable": { "description": "Used to determine if a given item can be reordered.", "typeDescriptions": { @@ -100,6 +103,13 @@ "itemId": "The id of the focused item." } }, + "onItemLabelChange": { + "description": "Callback fired when the label of an item changes.", + "typeDescriptions": { + "itemId": "The id of the item that was edited.", + "newLabel": "The new label of the items." + } + }, "onItemPositionChange": { "description": "Callback fired when a tree item is moved in the tree.", "typeDescriptions": { diff --git a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json index 3b94a5f52442..3ba5993e5187 100644 --- a/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json +++ b/docs/translations/api-docs/tree-view/rich-tree-view/rich-tree-view.json @@ -45,6 +45,9 @@ "boolean": "true if the item should be disabled." } }, + "isItemEditable": { + "description": "Determines if a given item is editable or not. Make sure to also enable the labelEditing experimental feature: <RichTreeViewPro experimentalFeatures={{ labelEditing: true }} />. By default, the items are not editable." + }, "itemChildrenIndentation": { "description": "Horizontal indentation between an item and its children. Examples: 24, "24px", "2rem", "2em"." }, @@ -80,6 +83,13 @@ "itemId": "The id of the focused item." } }, + "onItemLabelChange": { + "description": "Callback fired when the label of an item changes.", + "typeDescriptions": { + "itemId": "The id of the item that was edited.", + "newLabel": "The new label of the items." + } + }, "onItemSelectionToggle": { "description": "Callback fired when a tree item is selected or deselected.", "typeDescriptions": { diff --git a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json index 6a5f8d2ae832..1ec2e89e98d8 100644 --- a/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json +++ b/docs/translations/api-docs/tree-view/tree-item-2/tree-item-2.json @@ -23,6 +23,15 @@ "nodeName": "the element", "conditions": "disabled" }, + "editable": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the content of the items that are editable" + }, + "editing": { + "description": "Styles applied to {{nodeName}} when {{conditions}}.", + "nodeName": "the content element", + "conditions": "editing is enabled" + }, "expanded": { "description": "State class applied to {{nodeName}} when {{conditions}}.", "nodeName": "the content element", @@ -50,6 +59,7 @@ "icon": "The icon to display next to the tree item's label.", "iconContainer": "The component that renders the icon.", "label": "The component that renders the item label.", + "labelInput": "The component that renders the input to edit the label when the item is editable and is currently being edited.", "root": "The component that renders the root." } } diff --git a/docs/translations/api-docs/tree-view/tree-item/tree-item.json b/docs/translations/api-docs/tree-view/tree-item/tree-item.json index 596c008d70f1..f0febee14167 100644 --- a/docs/translations/api-docs/tree-view/tree-item/tree-item.json +++ b/docs/translations/api-docs/tree-view/tree-item/tree-item.json @@ -41,6 +41,15 @@ "description": "Styles applied to {{nodeName}}.", "nodeName": "the drag and drop overlay" }, + "editable": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the content of the items that are editable" + }, + "editing": { + "description": "Styles applied to {{nodeName}} when {{conditions}}.", + "nodeName": "the content element", + "conditions": "editing is enabled" + }, "expanded": { "description": "State class applied to {{nodeName}} when {{conditions}}.", "nodeName": "the content element", @@ -56,6 +65,11 @@ "nodeName": "the tree item icon" }, "label": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the label element" }, + "labelInput": { + "description": "Styles applied to {{nodeName}} when {{conditions}}.", + "nodeName": "the input element that is visible", + "conditions": "editing is enabled" + }, "root": { "description": "Styles applied to the root element." }, "selected": { "description": "State class applied to {{nodeName}} when {{conditions}}.", diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts index 70dbf423afe4..7e7adee15189 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.plugins.ts @@ -13,6 +13,8 @@ import { ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewCorePluginParameters, + useTreeViewLabel, + UseTreeViewLabelParameters, } from '@mui/x-tree-view/internals'; import { useTreeViewItemsReordering, @@ -26,6 +28,7 @@ export const RICH_TREE_VIEW_PRO_PLUGINS = [ useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons, + useTreeViewLabel, useTreeViewItemsReordering, ] as const; @@ -51,4 +54,5 @@ export interface RichTreeViewProPluginParameters, UseTreeViewIconsParameters, + UseTreeViewLabelParameters, UseTreeViewItemsReorderingParameters {} diff --git a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx index 6255b8ccdb25..c08210e09782 100644 --- a/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx +++ b/packages/x-tree-view-pro/src/RichTreeViewPro/RichTreeViewPro.tsx @@ -190,6 +190,7 @@ RichTreeViewPro.propTypes = { getItemTree: PropTypes.func.isRequired, selectItem: PropTypes.func.isRequired, setItemExpansion: PropTypes.func.isRequired, + updateItemLabel: PropTypes.func.isRequired, }), }), /** @@ -251,6 +252,7 @@ RichTreeViewPro.propTypes = { experimentalFeatures: PropTypes.shape({ indentationAtItemLevel: PropTypes.bool, itemsReordering: PropTypes.bool, + labelEditing: PropTypes.bool, }), /** * Used to determine the id of a given item. @@ -282,6 +284,16 @@ RichTreeViewPro.propTypes = { * @returns {boolean} `true` if the item should be disabled. */ isItemDisabled: PropTypes.func, + /** + * Determines if a given item is editable or not. + * Make sure to also enable the `labelEditing` experimental feature: + * ``. + * By default, the items are not editable. + * @template R + * @param {R} item The item to check. + * @returns {boolean} `true` if the item is editable. + */ + isItemEditable: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]), /** * Used to determine if a given item can be reordered. * @param {string} itemId The id of the item to check. @@ -333,6 +345,12 @@ RichTreeViewPro.propTypes = { * @param {string} itemId The id of the focused item. */ onItemFocus: PropTypes.func, + /** + * Callback fired when the label of an item changes. + * @param {TreeViewItemId} itemId The id of the item that was edited. + * @param {string} newLabel The new label of the items. + */ + onItemLabelChange: PropTypes.func, /** * Callback fired when a tree item is moved in the tree. * @param {object} params The params describing the item re-ordering. diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.plugins.ts b/packages/x-tree-view/src/RichTreeView/RichTreeView.plugins.ts index 3da29c2c3278..6b2d736da394 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.plugins.ts +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.plugins.ts @@ -21,6 +21,10 @@ import { UseTreeViewIconsParameters, } from '../internals/plugins/useTreeViewIcons'; import { ConvertPluginsIntoSignatures, MergeSignaturesProperty } from '../internals/models'; +import { + useTreeViewLabel, + UseTreeViewLabelParameters, +} from '../internals/plugins/useTreeViewLabel'; export const RICH_TREE_VIEW_PLUGINS = [ useTreeViewItems, @@ -29,6 +33,7 @@ export const RICH_TREE_VIEW_PLUGINS = [ useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons, + useTreeViewLabel, ] as const; export type RichTreeViewPluginSignatures = ConvertPluginsIntoSignatures< @@ -52,4 +57,5 @@ export interface RichTreeViewPluginParameters, - UseTreeViewIconsParameters {} + UseTreeViewIconsParameters, + UseTreeViewLabelParameters {} diff --git a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx index 6eb825d49fa1..5c46c54794d1 100644 --- a/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx +++ b/packages/x-tree-view/src/RichTreeView/RichTreeView.tsx @@ -154,6 +154,7 @@ RichTreeView.propTypes = { getItemTree: PropTypes.func.isRequired, selectItem: PropTypes.func.isRequired, setItemExpansion: PropTypes.func.isRequired, + updateItemLabel: PropTypes.func.isRequired, }), }), /** @@ -205,6 +206,7 @@ RichTreeView.propTypes = { */ experimentalFeatures: PropTypes.shape({ indentationAtItemLevel: PropTypes.bool, + labelEditing: PropTypes.bool, }), /** * Used to determine the id of a given item. @@ -236,6 +238,16 @@ RichTreeView.propTypes = { * @returns {boolean} `true` if the item should be disabled. */ isItemDisabled: PropTypes.func, + /** + * Determines if a given item is editable or not. + * Make sure to also enable the `labelEditing` experimental feature: + * ``. + * By default, the items are not editable. + * @template R + * @param {R} item The item to check. + * @returns {boolean} `true` if the item is editable. + */ + isItemEditable: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]), /** * Horizontal indentation between an item and its children. * Examples: 24, "24px", "2rem", "2em". @@ -273,6 +285,12 @@ RichTreeView.propTypes = { * @param {string} itemId The id of the focused item. */ onItemFocus: PropTypes.func, + /** + * Callback fired when the label of an item changes. + * @param {TreeViewItemId} itemId The id of the item that was edited. + * @param {string} newLabel The new label of the items. + */ + onItemLabelChange: PropTypes.func, /** * Callback fired when a tree item is selected or deselected. * @param {React.SyntheticEvent} event The DOM event that triggered the change. diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index c66a4fde6a30..2be1daaa83f5 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -26,6 +26,7 @@ import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons'; import { TreeItem2Provider } from '../TreeItem2Provider'; import { TreeViewItemDepthContext } from '../internals/TreeViewItemDepthContext'; import { useTreeItemState } from './useTreeItemState'; +import { isTargetInDescendants } from '../internals/utils/tree'; const useThemeProps = createUseThemeProps('MuiTreeItem'); @@ -42,6 +43,9 @@ const useUtilityClasses = (ownerState: TreeItemOwnerState) => { iconContainer: ['iconContainer'], checkbox: ['checkbox'], label: ['label'], + labelInput: ['labelInput'], + editing: ['editing'], + editable: ['editable'], groupTransition: ['groupTransition'], }; @@ -217,7 +221,8 @@ export const TreeItem = React.forwardRef(function TreeItem( ...other } = props; - const { expanded, focused, selected, disabled, handleExpansion } = useTreeItemState(itemId); + const { expanded, focused, selected, disabled, editing, handleExpansion } = + useTreeItemState(itemId); const { contentRef, rootRef, propsEnhancers } = runItemPlugins(props); const rootRefObject = React.useRef(null); @@ -343,11 +348,27 @@ export const TreeItem = React.forwardRef(function TreeItem( function handleBlur(event: React.FocusEvent) { onBlur?.(event); + if ( + editing || + // we can exit the editing state by clicking outside the input (within the tree item) or by pressing Enter or Escape -> we don't want to remove the focused item from the state in these cases + // we can also exit the editing state by clicking on the root itself -> want to remove the focused item from the state in this case + (event.relatedTarget && + isTargetInDescendants(event.relatedTarget as HTMLElement, rootRefObject.current) && + ((event.target && + (event.target as HTMLElement)?.dataset?.element === 'labelInput' && + isTargetInDescendants(event.target as HTMLElement, rootRefObject.current)) || + (event.relatedTarget as HTMLElement)?.dataset?.element === 'labelInput')) + ) { + return; + } instance.removeFocusedItem(); } const handleKeyDown = (event: React.KeyboardEvent) => { onKeyDown?.(event); + if ((event.target as HTMLElement)?.dataset?.element === 'labelInput') { + return; + } instance.handleItemKeyDown(event, itemId); }; @@ -372,6 +393,12 @@ export const TreeItem = React.forwardRef(function TreeItem( contentRefObject, externalEventHandlers: {}, }) ?? {}; + const enhancedLabelInputProps = + propsEnhancers.labelInput?.({ + rootRefObject, + contentRefObject, + externalEventHandlers: {}, + }) ?? {}; return ( @@ -408,8 +435,11 @@ export const TreeItem = React.forwardRef(function TreeItem( selected: classes.selected, focused: classes.focused, disabled: classes.disabled, + editable: classes.editable, + editing: classes.editing, iconContainer: classes.iconContainer, label: classes.label, + labelInput: classes.labelInput, checkbox: classes.checkbox, }} label={label} @@ -425,6 +455,9 @@ export const TreeItem = React.forwardRef(function TreeItem( {...((enhancedDragAndDropOverlayProps as any).action == null ? {} : { dragAndDropOverlayProps: enhancedDragAndDropOverlayProps })} + {...((enhancedLabelInputProps as any).value == null + ? {} + : { labelInputProps: enhancedLabelInputProps })} ref={handleContentRef} /> {children && ( diff --git a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx index 686d7d9c88a5..2c62bd29c452 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx @@ -7,6 +7,8 @@ import { TreeItem2DragAndDropOverlay, TreeItem2DragAndDropOverlayProps, } from '../TreeItem2DragAndDropOverlay'; +import { TreeItem2LabelInput, TreeItem2LabelInputProps } from '../TreeItem2LabelInput'; +import { MuiCancellableEvent } from '../internals/models'; export interface TreeItemContentProps extends React.HTMLAttributes { className?: string; @@ -30,6 +32,12 @@ export interface TreeItemContentProps extends React.HTMLAttributes label: string; /** Styles applied to the checkbox element. */ checkbox: string; + /** Styles applied to the input element that is visible when editing is enabled. */ + labelInput: string; + /** Styles applied to the content element when editing is enabled. */ + editing: string; + /** Styles applied to the content of the items that are editable. */ + editable: string; }; /** * The tree item label. @@ -52,6 +60,7 @@ export interface TreeItemContentProps extends React.HTMLAttributes */ displayIcon?: React.ReactNode; dragAndDropOverlayProps?: TreeItem2DragAndDropOverlayProps; + labelInputProps?: TreeItem2LabelInputProps; } export type TreeItemContentClassKey = keyof NonNullable; @@ -74,6 +83,7 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( onClick, onMouseDown, dragAndDropOverlayProps, + labelInputProps, ...other } = props; @@ -82,6 +92,8 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( expanded, selected, focused, + editing, + editable, disableSelection, checkboxSelection, handleExpansion, @@ -90,6 +102,9 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( handleContentClick, preventSelection, expansionTrigger, + toggleItemEditing, + handleSaveItemLabel, + handleCancelItemLabelEditing, } = useTreeItemState(itemId); const icon = iconProp || expansionIcon || displayIcon; @@ -123,6 +138,39 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( } }; + const handleLabelDoubleClick = (event: React.MouseEvent & MuiCancellableEvent) => { + if (event.defaultMuiPrevented) { + return; + } + toggleItemEditing(); + }; + const handleLabelInputBlur = ( + event: React.FocusEvent & MuiCancellableEvent, + ) => { + if (event.defaultMuiPrevented) { + return; + } + + if (event.target.value) { + handleSaveItemLabel(event, event.target.value); + } + }; + + const handleLabelInputKeydown = ( + event: React.KeyboardEvent & MuiCancellableEvent, + ) => { + if (event.defaultMuiPrevented) { + return; + } + + const target = event.target as HTMLInputElement; + if (event.key === 'Enter' && target.value) { + handleSaveItemLabel(event, target.value); + } else if (event.key === 'Escape') { + handleCancelItemLabelEditing(event); + } + }; + return ( /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */
    )} -
    {label}
    + {editing ? ( + + ) : ( +
    + {label} +
    + )} + {dragAndDropOverlayProps && }
    ); @@ -189,6 +251,7 @@ TreeItemContent.propTypes = { * The tree item label. */ label: PropTypes.node, + labelInputProps: PropTypes.object, } as any; export { TreeItemContent }; diff --git a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts index a8ac533418c6..6b0efd7279ce 100644 --- a/packages/x-tree-view/src/TreeItem/treeItemClasses.ts +++ b/packages/x-tree-view/src/TreeItem/treeItemClasses.ts @@ -22,6 +22,12 @@ export interface TreeItemClasses { label: string; /** Styles applied to the checkbox element. */ checkbox: string; + /** Styles applied to the input element that is visible when editing is enabled. */ + labelInput: string; + /** Styles applied to the content element when editing is enabled. */ + editing: string; + /** Styles applied to the content of the items that are editable. */ + editable: string; /** Styles applied to the drag and drop overlay. */ dragAndDropOverlay: string; } @@ -43,5 +49,8 @@ export const treeItemClasses: TreeItemClasses = generateUtilityClasses('MuiTreeI 'iconContainer', 'label', 'checkbox', + 'labelInput', + 'editable', + 'editing', 'dragAndDropOverlay', ]); diff --git a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts index 7f41a5ad7dcc..a236983664ee 100644 --- a/packages/x-tree-view/src/TreeItem/useTreeItemState.ts +++ b/packages/x-tree-view/src/TreeItem/useTreeItemState.ts @@ -1,9 +1,12 @@ import * as React from 'react'; +import { MuiCancellableEvent } from '../internals/models/MuiCancellableEvent'; import { useTreeViewContext } from '../internals/TreeViewProvider'; import { UseTreeViewSelectionSignature } from '../internals/plugins/useTreeViewSelection'; import { UseTreeViewExpansionSignature } from '../internals/plugins/useTreeViewExpansion'; import { UseTreeViewFocusSignature } from '../internals/plugins/useTreeViewFocus'; import { UseTreeViewItemsSignature } from '../internals/plugins/useTreeViewItems'; +import { UseTreeViewLabelSignature, useTreeViewLabel } from '../internals/plugins/useTreeViewLabel'; +import { hasPlugin } from '../internals/utils/plugins'; type UseTreeItemStateMinimalPlugins = readonly [ UseTreeViewSelectionSignature, @@ -12,7 +15,7 @@ type UseTreeItemStateMinimalPlugins = readonly [ UseTreeViewItemsSignature, ]; -type UseTreeItemStateOptionalPlugins = readonly []; +type UseTreeItemStateOptionalPlugins = readonly [UseTreeViewLabelSignature]; export function useTreeItemState(itemId: string) { const { @@ -27,6 +30,8 @@ export function useTreeItemState(itemId: string) { const focused = instance.isItemFocused(itemId); const selected = instance.isItemSelected(itemId); const disabled = instance.isItemDisabled(itemId); + const editing = instance?.isItemBeingEdited ? instance?.isItemBeingEdited(itemId) : false; + const editable = instance.isItemEditable ? instance.isItemEditable(itemId) : false; const handleExpansion = (event: React.MouseEvent) => { if (!disabled) { @@ -87,11 +92,56 @@ export function useTreeItemState(itemId: string) { } }; + const toggleItemEditing = () => { + if (!hasPlugin(instance, useTreeViewLabel)) { + return; + } + if (instance.isItemEditable(itemId)) { + if (instance.isItemBeingEdited(itemId)) { + instance.setEditedItemId(null); + } else { + instance.setEditedItemId(itemId); + } + } + }; + + const handleSaveItemLabel = ( + event: React.SyntheticEvent & MuiCancellableEvent, + label: string, + ) => { + if (!hasPlugin(instance, useTreeViewLabel)) { + return; + } + + // As a side effect of `instance.focusItem` called here and in `handleCancelItemLabelEditing` the `labelInput` is blurred + // The `onBlur` event is triggered, which calls `handleSaveItemLabel` again. + // To avoid creating an unwanted behavior we need to check if the item is being edited before calling `updateItemLabel` + // using `instance.isItemBeingEditedRef` instead of `instance.isItemBeingEdited` since the state is not yet updated in this point + if (instance.isItemBeingEditedRef(itemId)) { + instance.updateItemLabel(itemId, label); + toggleItemEditing(); + instance.focusItem(event, itemId); + } + }; + + const handleCancelItemLabelEditing = (event: React.SyntheticEvent) => { + if (!hasPlugin(instance, useTreeViewLabel)) { + return; + } + + if (instance.isItemBeingEditedRef(itemId)) { + toggleItemEditing(); + instance.focusItem(event, itemId); + } + }; + return { disabled, expanded, selected, focused, + editable, + editing, disableSelection, checkboxSelection, handleExpansion, @@ -100,5 +150,8 @@ export function useTreeItemState(itemId: string) { handleContentClick: onItemClick, preventSelection, expansionTrigger, + toggleItemEditing, + handleSaveItemLabel, + handleCancelItemLabelEditing, }; } diff --git a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx index a1f72bfc089d..c792574ce229 100644 --- a/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx +++ b/packages/x-tree-view/src/TreeItem2/TreeItem2.tsx @@ -13,12 +13,14 @@ import { TreeItem2Props, TreeItem2OwnerState } from './TreeItem2.types'; import { unstable_useTreeItem2 as useTreeItem2, UseTreeItem2ContentSlotOwnProps, + UseTreeItem2LabelSlotOwnProps, UseTreeItem2Status, } from '../useTreeItem2'; import { getTreeItemUtilityClass } from '../TreeItem'; import { TreeItem2Icon } from '../TreeItem2Icon'; import { TreeItem2DragAndDropOverlay } from '../TreeItem2DragAndDropOverlay'; import { TreeItem2Provider } from '../TreeItem2Provider'; +import { TreeItem2LabelInput } from '../TreeItem2LabelInput'; const useThemeProps = createUseThemeProps('MuiTreeItem2'); @@ -115,13 +117,23 @@ export const TreeItem2Label = styled('div', { name: 'MuiTreeItem2', slot: 'Label', overridesResolver: (props, styles) => styles.label, -})(({ theme }) => ({ + shouldForwardProp: (prop) => shouldForwardProp(prop) && prop !== 'editable', +})<{ editable?: boolean }>(({ theme }) => ({ width: '100%', boxSizing: 'border-box', // prevent width + padding to overflow // fixes overflow - see https://github.com/mui/material-ui/issues/27372 minWidth: 0, position: 'relative', + overflow: 'hidden', ...theme.typography.body1, + variants: [ + { + props: ({ editable }: UseTreeItem2LabelSlotOwnProps) => editable, + style: { + paddingLeft: '2px', + }, + }, + ], })); export const TreeItem2IconContainer = styled('div', { @@ -182,6 +194,8 @@ const useUtilityClasses = (ownerState: TreeItem2OwnerState) => { root: ['root'], content: ['content'], expanded: ['expanded'], + editing: ['editing'], + editable: ['editable'], selected: ['selected'], focused: ['focused'], disabled: ['disabled'], @@ -189,6 +203,7 @@ const useUtilityClasses = (ownerState: TreeItem2OwnerState) => { checkbox: ['checkbox'], label: ['label'], groupTransition: ['groupTransition'], + labelInput: ['labelInput'], dragAndDropOverlay: ['dragAndDropOverlay'], }; @@ -224,6 +239,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( getCheckboxProps, getLabelProps, getGroupTransitionProps, + getLabelInputProps, getDragAndDropOverlayProps, status, } = useTreeItem2({ @@ -265,8 +281,11 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( [classes.selected]: status.selected, [classes.focused]: status.focused, [classes.disabled]: status.disabled, + [classes.editing]: status.editing, + [classes.editable]: status.editable, }), }); + const IconContainer: React.ElementType = slots.iconContainer ?? TreeItem2IconContainer; const iconContainerProps = useSlotProps({ elementType: IconContainer, @@ -303,6 +322,15 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( className: classes.groupTransition, }); + const LabelInput: React.ElementType = slots.labelInput ?? TreeItem2LabelInput; + const labelInputProps = useSlotProps({ + elementType: LabelInput, + getSlotProps: getLabelInputProps, + externalSlotProps: slotProps.labelInput, + ownerState: {}, + className: classes.labelInput, + }); + const DragAndDropOverlay: React.ElementType | undefined = slots.dragAndDropOverlay ?? TreeItem2DragAndDropOverlay; const dragAndDropOverlayProps = useSlotProps({ @@ -321,7 +349,7 @@ export const TreeItem2 = React.forwardRef(function TreeItem2( -
    ); diff --git a/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx b/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx index 8c8408914630..d1a08e3ff062 100644 --- a/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx +++ b/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx @@ -39,6 +39,7 @@ export default function RowGroupingFullExample() { groupingColDef={{ leafField: 'traderEmail', }} + experimentalFeatures={{ ariaV8: true }} />
    ); diff --git a/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx.preview b/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx.preview index b20dbc70dc3a..35a7dd3ccbcd 100644 --- a/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx.preview +++ b/docs/data/data-grid/row-grouping/RowGroupingFullExample.tsx.preview @@ -7,4 +7,5 @@ groupingColDef={{ leafField: 'traderEmail', }} + experimentalFeatures={{ ariaV8: true }} /> \ No newline at end of file diff --git a/docs/data/data-grid/row-grouping/row-grouping.md b/docs/data/data-grid/row-grouping/row-grouping.md index 08ef4281d6cf..8b387aa8d42b 100644 --- a/docs/data/data-grid/row-grouping/row-grouping.md +++ b/docs/data/data-grid/row-grouping/row-grouping.md @@ -344,6 +344,22 @@ Don't hesitate to leave a comment on the same issue to influence what gets built With this panel, your users will be able to control which columns are used for grouping just by dragging them inside the panel. +## Accessibility changes in v8 + +The Data Grid v8 with row grouping feature will improve the accessibility and will be more aligned with the WAI-ARIA authoring practices. + +You can start using the new accessibility features by enabling `ariaV8` experimental feature flag: + +```tsx + +``` + +:::warning +The value of `ariaV8` should be constant and not change during the lifetime of the Data Grid. +::: + +{{"demo": "RowGroupingAriaV8.js", "bg": "inline", "defaultCodeOpen": false}} + ## Full example {{"demo": "RowGroupingFullExample.js", "bg": "inline", "defaultCodeOpen": false}} diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index 1c79c35a04e6..45c00921edc9 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -75,7 +75,10 @@ }, "estimatedRowCount": { "type": { "name": "number" } }, "experimentalFeatures": { - "type": { "name": "shape", "description": "{ warnIfFocusStateIsNotSynced?: bool }" } + "type": { + "name": "shape", + "description": "{ ariaV8?: bool, warnIfFocusStateIsNotSynced?: bool }" + } }, "filterDebounceMs": { "type": { "name": "number" }, "default": "150" }, "filterMode": { diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index a8b79b49fb93..68ba1ef303b5 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -223,7 +223,7 @@ "description": "Determines if a row can be selected.", "typeDescriptions": { "params": "With all properties from GridRowParams.", - "boolean": "A boolean indicating if the cell is selectable." + "boolean": "A boolean indicating if the row is selectable." } }, "keepColumnPositionIfDraggedOutside": { diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index 914817291c87..b52063f75d28 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -204,7 +204,7 @@ "description": "Determines if a row can be selected.", "typeDescriptions": { "params": "With all properties from GridRowParams.", - "boolean": "A boolean indicating if the cell is selectable." + "boolean": "A boolean indicating if the row is selectable." } }, "keepColumnPositionIfDraggedOutside": { diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index 08fa6f50e6c4..545e3c09ac3a 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -150,7 +150,7 @@ "description": "Determines if a row can be selected.", "typeDescriptions": { "params": "With all properties from GridRowParams.", - "boolean": "A boolean indicating if the cell is selectable." + "boolean": "A boolean indicating if the row is selectable." } }, "keepNonExistentRowsSelected": { diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 13c08a00b7e1..fb0abd4f63b0 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -23,9 +23,17 @@ import { } from '../models/dataGridPremiumProps'; import { useDataGridPremiumProps } from './useDataGridPremiumProps'; import { getReleaseInfo } from '../utils/releaseInfo'; +import { useGridAriaAttributes } from '../hooks/utils/useGridAriaAttributes'; +import { useGridRowAriaAttributes } from '../hooks/features/rows/useGridRowAriaAttributes'; export type { GridPremiumSlotsComponent as GridSlots } from '../models'; +const configuration = { + hooks: { + useGridAriaAttributes, + useGridRowAriaAttributes, + }, +}; const releaseInfo = getReleaseInfo(); let dataGridPremiumPropValidators: PropValidator[]; @@ -40,14 +48,13 @@ const DataGridPremiumRaw = React.forwardRef(function DataGridPremium + => { const { apiRef, rowTree, isRowMatchingFilters, filterModel } = params; const filteredRowsLookup: Record = {}; + const filteredChildrenCountLookup: Record = {}; const filteredDescendantCountLookup: Record = {}; const filterCache = {}; @@ -110,6 +111,7 @@ export const filterRowTreeFromGroupingColumns = ( isPassingFiltering = true; } + let filteredChildrenCount = 0; let filteredDescendantCount = 0; if (node.type === 'group') { node.children.forEach((childId) => { @@ -120,6 +122,9 @@ export const filterRowTreeFromGroupingColumns = ( [...ancestorsResults, filterResults], ); filteredDescendantCount += childSubTreeSize; + if (childSubTreeSize > 0) { + filteredChildrenCount += 1; + } }); } @@ -145,6 +150,7 @@ export const filterRowTreeFromGroupingColumns = ( return 0; } + filteredChildrenCountLookup[node.id] = filteredChildrenCount; filteredDescendantCountLookup[node.id] = filteredDescendantCount; if (node.type !== 'group') { @@ -164,6 +170,7 @@ export const filterRowTreeFromGroupingColumns = ( return { filteredRowsLookup, + filteredChildrenCountLookup, filteredDescendantCountLookup, }; }; diff --git a/packages/x-data-grid-premium/src/hooks/features/rows/index.tsx b/packages/x-data-grid-premium/src/hooks/features/rows/index.tsx new file mode 100644 index 000000000000..bf3c51abb337 --- /dev/null +++ b/packages/x-data-grid-premium/src/hooks/features/rows/index.tsx @@ -0,0 +1 @@ +export * from './useGridRowAriaAttributes'; diff --git a/packages/x-data-grid-premium/src/hooks/features/rows/useGridRowAriaAttributes.tsx b/packages/x-data-grid-premium/src/hooks/features/rows/useGridRowAriaAttributes.tsx new file mode 100644 index 000000000000..f844554f633b --- /dev/null +++ b/packages/x-data-grid-premium/src/hooks/features/rows/useGridRowAriaAttributes.tsx @@ -0,0 +1,12 @@ +import { + useGridRowAriaAttributes as useGridRowAriaAttributesPro, + useGridSelector, +} from '@mui/x-data-grid-pro/internals'; +import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext'; +import { gridRowGroupingSanitizedModelSelector } from '../rowGrouping/gridRowGroupingSelector'; + +export const useGridRowAriaAttributes = () => { + const apiRef = useGridPrivateApiContext(); + const gridRowGroupingModel = useGridSelector(apiRef, gridRowGroupingSanitizedModelSelector); + return useGridRowAriaAttributesPro(gridRowGroupingModel.length > 0); +}; diff --git a/packages/x-data-grid-premium/src/hooks/utils/useGridAriaAttributes.tsx b/packages/x-data-grid-premium/src/hooks/utils/useGridAriaAttributes.tsx new file mode 100644 index 000000000000..8c5023f2af49 --- /dev/null +++ b/packages/x-data-grid-premium/src/hooks/utils/useGridAriaAttributes.tsx @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { + useGridAriaAttributes as useGridAriaAttributesPro, + useGridSelector, +} from '@mui/x-data-grid-pro/internals'; +import { gridRowGroupingSanitizedModelSelector } from '../features/rowGrouping/gridRowGroupingSelector'; +import { useGridPrivateApiContext } from './useGridPrivateApiContext'; +import { useGridRootProps } from './useGridRootProps'; + +export const useGridAriaAttributes = (): React.HTMLAttributes => { + const rootProps = useGridRootProps(); + const ariaAttributesPro = useGridAriaAttributesPro(); + const apiRef = useGridPrivateApiContext(); + const gridRowGroupingModel = useGridSelector(apiRef, gridRowGroupingSanitizedModelSelector); + + const ariaAttributesPremium = + rootProps.experimentalFeatures?.ariaV8 && gridRowGroupingModel.length > 0 + ? { role: 'treegrid' } + : {}; + + return { + ...ariaAttributesPro, + ...ariaAttributesPremium, + }; +}; diff --git a/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts b/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts index b2f6e7975209..e924af2815ad 100644 --- a/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts +++ b/packages/x-data-grid-premium/src/models/dataGridPremiumProps.ts @@ -24,7 +24,14 @@ import { GridInitialStatePremium } from './gridStatePremium'; import { GridApiPremium } from './gridApiPremium'; import { GridCellSelectionModel } from '../hooks/features/cellSelection'; -export interface GridExperimentalPremiumFeatures extends GridExperimentalProFeatures {} +export interface GridExperimentalPremiumFeatures extends GridExperimentalProFeatures { + /** + * Enables accessibility improvements that will be enabled by default in V8. + * If you rely on the v7 ARIA attributes (e.g. for CSS selectors), this might be a breaking change. + * @default false + */ + ariaV8: boolean; +} export interface DataGridPremiumPropsWithComplexDefaultValueBeforeProcessing extends Pick { diff --git a/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx b/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx index 824d610884a2..994100b91b89 100644 --- a/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx +++ b/packages/x-data-grid-premium/src/tests/rowGrouping.DataGridPremium.test.tsx @@ -14,6 +14,7 @@ import { getColumnValues, getCell, getSelectByName, + getRow, } from 'test/utils/helperFn'; import { expect } from 'chai'; import { @@ -2381,6 +2382,45 @@ describe(' - Row grouping', () => { // Corresponds to rows id 0, 1, 2 because of Cat A, ann id 4 because of Cat 1 expect(getColumnValues(1)).to.deep.equal(['', '0', '1', '2', '', '4']); }); + + it('should keep the correct count of the children and descendants in the filter state', () => { + const extendedColumns = [ + ...baselineProps.columns, + { + field: 'value1', + }, + ]; + + const extendedRows = rows.map((row, index) => ({ ...row, value1: `Value${index}` })); + const additionalRows = [ + { id: 5, category1: 'Cat A', category2: 'Cat 2', value1: 'Value5' }, + { id: 6, category1: 'Cat A', category2: 'Cat 2', value1: 'Value6' }, + { id: 7, category1: 'Cat B', category2: 'Cat 1', value1: 'Value7' }, + ]; + + render( + , + ); + + const { filteredChildrenCountLookup, filteredDescendantCountLookup } = + apiRef.current.state.filter; + + expect(filteredChildrenCountLookup['auto-generated-row-category1/Cat A']).to.equal(2); + expect(filteredDescendantCountLookup['auto-generated-row-category1/Cat A']).to.equal(5); + + expect( + filteredChildrenCountLookup['auto-generated-row-category1/Cat A-category2/Cat 2'], + ).to.equal(4); + expect( + filteredDescendantCountLookup['auto-generated-row-category1/Cat A-category2/Cat 2'], + ).to.equal(4); + }); }); describe('prop: rowGroupingColumnMode = "multiple"', () => { @@ -2723,6 +2763,27 @@ describe(' - Row grouping', () => { }); }); + describe('accessibility', () => { + it('should add necessary treegrid aria attributes to the rows', () => { + render( + , + ); + + expect(getRow(0).getAttribute('aria-level')).to.equal('1'); // Cat A + expect(getRow(1).getAttribute('aria-level')).to.equal('2'); // Cat 1 + expect(getRow(1).getAttribute('aria-posinset')).to.equal('1'); + expect(getRow(1).getAttribute('aria-setsize')).to.equal('2'); // Cat A has Cat 1 & Cat 2 + expect(getRow(2).getAttribute('aria-level')).to.equal('3'); // Cat 1 row + expect(getRow(3).getAttribute('aria-posinset')).to.equal('2'); // Cat 2 + expect(getRow(4).getAttribute('aria-posinset')).to.equal('1'); // Cat 2 row + expect(getRow(4).getAttribute('aria-setsize')).to.equal('2'); // Cat 2 has 2 rows + }); + }); + // See https://github.com/mui/mui-x/issues/8626 it('should properly update the rows when they change', async () => { render( diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index 1cacac533b70..b168aad4b0b4 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -16,9 +16,17 @@ import { DataGridProProps } from '../models/dataGridProProps'; import { useDataGridProProps } from './useDataGridProProps'; import { getReleaseInfo } from '../utils/releaseInfo'; import { propValidatorsDataGridPro } from '../internals/propValidation'; +import { useGridAriaAttributes } from '../hooks/utils/useGridAriaAttributes'; +import { useGridRowAriaAttributes } from '../hooks/features/rows/useGridRowAriaAttributes'; export type { GridProSlotsComponent as GridSlots } from '../models'; +const configuration = { + hooks: { + useGridAriaAttributes, + useGridRowAriaAttributes, + }, +}; const releaseInfo = getReleaseInfo(); const DataGridProRaw = React.forwardRef(function DataGridPro( @@ -33,7 +41,7 @@ const DataGridProRaw = React.forwardRef(function DataGridPro + { + const apiRef = useGridPrivateApiContext(); + const props = useGridRootProps(); + const getRowAriaAttributesCommunity = useGridRowAriaAttributesCommunity(); + + const filteredTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector); + const filteredChildrenCountLookup = useGridSelector( + apiRef, + gridFilteredChildrenCountLookupSelector, + ); + const sortedVisibleRowPositionsLookup = useGridSelector( + apiRef, + gridExpandedSortedRowTreeLevelPositionLookupSelector, + ); + + return React.useCallback( + (rowNode: GridTreeNode, index: number) => { + const ariaAttributes = getRowAriaAttributesCommunity(rowNode, index); + + if (rowNode === null || !(props.treeData || addTreeDataAttributes)) { + return ariaAttributes; + } + + // pinned and footer rows are not part of the rowgroup and should not get the set specific aria attributes + if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') { + return ariaAttributes; + } + + ariaAttributes['aria-level'] = rowNode.depth + 1; + + const filteredChildrenCount = filteredChildrenCountLookup[rowNode.id] ?? 0; + // aria-expanded should only be added to the rows that contain children + if (rowNode.type === 'group' && filteredChildrenCount > 0) { + ariaAttributes['aria-expanded'] = Boolean(rowNode.childrenExpanded); + } + + // if the parent is null, set size and position cannot be determined + if (rowNode.parent !== null) { + ariaAttributes['aria-setsize'] = + rowNode.parent === GRID_ROOT_GROUP_ID + ? filteredTopLevelRowCount + : filteredChildrenCountLookup[rowNode.parent]; + ariaAttributes['aria-posinset'] = sortedVisibleRowPositionsLookup[rowNode.id]; + } + + return ariaAttributes; + }, + [ + props.treeData, + addTreeDataAttributes, + filteredTopLevelRowCount, + filteredChildrenCountLookup, + sortedVisibleRowPositionsLookup, + getRowAriaAttributesCommunity, + ], + ); +}; diff --git a/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.tsx b/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.tsx index 6c182e6c04d1..c09bc45b8ded 100644 --- a/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.tsx +++ b/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.tsx @@ -151,7 +151,7 @@ export const useGridDataSourceTreeDataPreProcessors = ( path: [...parentPath, getGroupKey(params.dataRowIdToModelLookup[rowId])].map( (key): RowTreeBuilderGroupingCriterion => ({ key, field: null }), ), - hasServerChildren: !!count && count !== 0, + serverChildrenCount: count, }; }; diff --git a/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/utils.ts b/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/utils.ts index e1314f6aef1d..677f7210c927 100644 --- a/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/utils.ts +++ b/packages/x-data-grid-pro/src/hooks/features/serverSideTreeData/utils.ts @@ -3,16 +3,19 @@ import { getTreeNodeDescendants } from '@mui/x-data-grid/internals'; export function skipFiltering(rowTree: GridRowTreeConfig) { const filteredRowsLookup: Record = {}; + const filteredChildrenCountLookup: Record = {}; const filteredDescendantCountLookup: Record = {}; const nodes = Object.values(rowTree); for (let i = 0; i < nodes.length; i += 1) { const node: any = nodes[i]; filteredRowsLookup[node.id] = true; + filteredChildrenCountLookup[node.id] = node.serverChildrenCount ?? 0; } return { filteredRowsLookup, + filteredChildrenCountLookup, filteredDescendantCountLookup, }; } diff --git a/packages/x-data-grid-pro/src/hooks/features/treeData/gridTreeDataUtils.ts b/packages/x-data-grid-pro/src/hooks/features/treeData/gridTreeDataUtils.ts index 9926ef35c3df..ee8224e89b08 100644 --- a/packages/x-data-grid-pro/src/hooks/features/treeData/gridTreeDataUtils.ts +++ b/packages/x-data-grid-pro/src/hooks/features/treeData/gridTreeDataUtils.ts @@ -32,6 +32,7 @@ export const filterRowTreeFromTreeData = ( ): Omit => { const { apiRef, rowTree, disableChildrenFiltering, isRowMatchingFilters } = params; const filteredRowsLookup: Record = {}; + const filteredChildrenCountLookup: Record = {}; const filteredDescendantCountLookup: Record = {}; const filterCache = {}; @@ -64,6 +65,7 @@ export const filterRowTreeFromTreeData = ( ); } + let filteredChildrenCount = 0; let filteredDescendantCount = 0; if (node.type === 'group') { node.children.forEach((childId) => { @@ -75,6 +77,9 @@ export const filterRowTreeFromTreeData = ( ); filteredDescendantCount += childSubTreeSize; + if (childSubTreeSize > 0) { + filteredChildrenCount += 1; + } }); } @@ -100,6 +105,7 @@ export const filterRowTreeFromTreeData = ( return 0; } + filteredChildrenCountLookup[node.id] = filteredChildrenCount; filteredDescendantCountLookup[node.id] = filteredDescendantCount; if (node.type === 'footer') { @@ -119,6 +125,7 @@ export const filterRowTreeFromTreeData = ( return { filteredRowsLookup, + filteredChildrenCountLookup, filteredDescendantCountLookup, }; }; diff --git a/packages/x-data-grid-pro/src/hooks/utils/useGridAriaAttributes.tsx b/packages/x-data-grid-pro/src/hooks/utils/useGridAriaAttributes.tsx new file mode 100644 index 000000000000..1f5507728d8b --- /dev/null +++ b/packages/x-data-grid-pro/src/hooks/utils/useGridAriaAttributes.tsx @@ -0,0 +1,15 @@ +import * as React from 'react'; +import { useGridAriaAttributes as useGridAriaAttributesCommunity } from '@mui/x-data-grid/internals'; +import { useGridRootProps } from './useGridRootProps'; + +export const useGridAriaAttributes = (): React.HTMLAttributes => { + const ariaAttributesCommunity = useGridAriaAttributesCommunity(); + const rootProps = useGridRootProps(); + + const ariaAttributesPro = rootProps.treeData ? { role: 'treegrid' } : {}; + + return { + ...ariaAttributesCommunity, + ...ariaAttributesPro, + }; +}; diff --git a/packages/x-data-grid-pro/src/internals/index.ts b/packages/x-data-grid-pro/src/internals/index.ts index 28b184e2bd42..c0de9e27064b 100644 --- a/packages/x-data-grid-pro/src/internals/index.ts +++ b/packages/x-data-grid-pro/src/internals/index.ts @@ -4,8 +4,14 @@ export * from '@mui/x-data-grid/internals'; export { GridColumnHeaders } from '../components/GridColumnHeaders'; export { DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS } from '../constants/dataGridProDefaultSlotsComponents'; -// eslint-disable-next-line import/export +/* eslint-disable import/export -- + * x-data-grid-pro internals that are overriding the x-data-grid internals + */ export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders'; +export { useGridAriaAttributes } from '../hooks/utils/useGridAriaAttributes'; +export { useGridRowAriaAttributes } from '../hooks/features/rows/useGridRowAriaAttributes'; +// eslint-enable import/export + export { useGridColumnPinning, columnPinningStateInitializer, @@ -22,6 +28,7 @@ export { } from '../hooks/features/detailPanel/useGridDetailPanel'; export { useGridDetailPanelPreProcessors } from '../hooks/features/detailPanel/useGridDetailPanelPreProcessors'; export { useGridInfiniteLoader } from '../hooks/features/infiniteLoader/useGridInfiniteLoader'; + export { useGridRowReorder } from '../hooks/features/rowReorder/useGridRowReorder'; export { useGridRowReorderPreProcessors } from '../hooks/features/rowReorder/useGridRowReorderPreProcessors'; export { useGridTreeData } from '../hooks/features/treeData/useGridTreeData'; diff --git a/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx index 9f80a0d0858e..12260bda0f58 100644 --- a/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx @@ -4,6 +4,7 @@ import { getColumnHeaderCell, getColumnHeadersTextContent, getColumnValues, + getRow, } from 'test/utils/helperFn'; import * as React from 'react'; import { expect } from 'chai'; @@ -591,6 +592,47 @@ describe(' - Tree data', () => { expect(getColumnValues(0)).to.deep.equal(['B (1)', 'D', 'D (1)', 'A']); }); + + it('should keep the correct count of the children and descendants in the filter state', () => { + render( + , + ); + + const { filteredChildrenCountLookup, filteredDescendantCountLookup } = + apiRef.current.state.filter; + + expect(filteredChildrenCountLookup.A).to.equal(3); + expect(filteredDescendantCountLookup.A).to.equal(5); + + expect(filteredChildrenCountLookup.B).to.equal(1); + expect(filteredDescendantCountLookup.B).to.equal(1); + + expect(filteredChildrenCountLookup.C).to.equal(undefined); + expect(filteredDescendantCountLookup.C).to.equal(undefined); + + act(() => { + apiRef.current.updateRows([{ name: 'A.D' }]); + }); + + expect(apiRef.current.state.filter.filteredChildrenCountLookup.A).to.equal(4); + expect(apiRef.current.state.filter.filteredDescendantCountLookup.A).to.equal(6); + }); }); describe('sorting', () => { @@ -725,6 +767,67 @@ describe(' - Tree data', () => { }); }); + describe('accessibility', () => { + it('should add necessary treegrid aria attributes to the rows', () => { + render(); + + expect(getRow(0).getAttribute('aria-level')).to.equal('1'); // A + expect(getRow(1).getAttribute('aria-level')).to.equal('2'); // A.A + expect(getRow(1).getAttribute('aria-posinset')).to.equal('1'); + expect(getRow(1).getAttribute('aria-setsize')).to.equal('2'); + expect(getRow(2).getAttribute('aria-level')).to.equal('2'); // A.B + expect(getRow(4).getAttribute('aria-posinset')).to.equal('1'); // B.A + }); + + it('should adjust treegrid aria attributes after filtering', () => { + render( + , + ); + + expect(getRow(0).getAttribute('aria-level')).to.equal('1'); // A + expect(getRow(1).getAttribute('aria-level')).to.equal('2'); // A.B + expect(getRow(1).getAttribute('aria-posinset')).to.equal('1'); + expect(getRow(1).getAttribute('aria-setsize')).to.equal('1'); // A.A is filtered out, set size is now 1 + expect(getRow(2).getAttribute('aria-level')).to.equal('1'); // B + expect(getRow(3).getAttribute('aria-posinset')).to.equal('1'); // B.A + expect(getRow(3).getAttribute('aria-setsize')).to.equal('2'); // B.A & B.B + }); + + it('should not add the set specific aria attributes to pinned rows', () => { + render( + , + ); + + expect(getRow(0).getAttribute('aria-rowindex')).to.equal('2'); // header row is 1 + expect(getRow(0).getAttribute('aria-level')).to.equal(null); + expect(getRow(0).getAttribute('aria-posinset')).to.equal(null); + expect(getRow(0).getAttribute('aria-setsize')).to.equal(null); + expect(getRow(1).getAttribute('aria-rowindex')).to.equal('3'); + expect(getRow(1).getAttribute('aria-level')).to.equal('1'); // A + expect(getRow(1).getAttribute('aria-posinset')).to.equal('1'); + expect(getRow(1).getAttribute('aria-setsize')).to.equal('3'); // A, B, C + }); + }); + describe('regressions', () => { // See https://github.com/mui/mui-x/issues/9402 it('should not fail with checkboxSelection', () => { diff --git a/packages/x-data-grid-pro/src/utils/tree/createRowTree.ts b/packages/x-data-grid-pro/src/utils/tree/createRowTree.ts index 6f79cc1c727c..081f518c13c6 100644 --- a/packages/x-data-grid-pro/src/utils/tree/createRowTree.ts +++ b/packages/x-data-grid-pro/src/utils/tree/createRowTree.ts @@ -33,7 +33,7 @@ export const createRowTree = (params: CreateRowTreeParams): GridRowTreeCreationV previousTree: params.previousTree, id: node.id, path: node.path, - hasServerChildren: node.hasServerChildren, + serverChildrenCount: node.serverChildrenCount, onDuplicatePath: params.onDuplicatePath, treeDepths, isGroupExpandedByDefault: params.isGroupExpandedByDefault, diff --git a/packages/x-data-grid-pro/src/utils/tree/insertDataRowInTree.ts b/packages/x-data-grid-pro/src/utils/tree/insertDataRowInTree.ts index 86cd27e02026..d006eb177b34 100644 --- a/packages/x-data-grid-pro/src/utils/tree/insertDataRowInTree.ts +++ b/packages/x-data-grid-pro/src/utils/tree/insertDataRowInTree.ts @@ -59,7 +59,7 @@ interface InsertDataRowInTreeParams { onDuplicatePath?: GridTreePathDuplicateHandler; isGroupExpandedByDefault?: DataGridProProps['isGroupExpandedByDefault']; defaultGroupingExpansionDepth: number; - hasServerChildren?: boolean; + serverChildrenCount?: number; groupsToFetch?: Set; } @@ -79,7 +79,7 @@ export const insertDataRowInTree = ({ onDuplicatePath, isGroupExpandedByDefault, defaultGroupingExpansionDepth, - hasServerChildren, + serverChildrenCount, groupsToFetch, }: InsertDataRowInTreeParams) => { let parentNodeId = GRID_ROOT_GROUP_ID; @@ -99,7 +99,7 @@ export const insertDataRowInTree = ({ // We create a leaf node for the data row. if (existingNodeIdWithPartialPath == null) { let node: GridLeafNode | GridDataSourceGroupNode; - if (hasServerChildren) { + if (serverChildrenCount !== undefined && serverChildrenCount !== 0) { node = { type: 'group', id, @@ -112,7 +112,7 @@ export const insertDataRowInTree = ({ children: [], childrenFromPath: {}, childrenExpanded: false, - hasServerChildren: true, + serverChildrenCount, }; const shouldFetchChildren = checkGroupChildrenExpansion( node, diff --git a/packages/x-data-grid-pro/src/utils/tree/models.ts b/packages/x-data-grid-pro/src/utils/tree/models.ts index 871d3fc86c97..b9daf689647e 100644 --- a/packages/x-data-grid-pro/src/utils/tree/models.ts +++ b/packages/x-data-grid-pro/src/utils/tree/models.ts @@ -8,7 +8,7 @@ export interface RowTreeBuilderGroupingCriterion { export interface RowTreeBuilderNode { id: GridRowId; path: RowTreeBuilderGroupingCriterion[]; - hasServerChildren?: boolean; + serverChildrenCount?: number; } /** diff --git a/packages/x-data-grid-pro/src/utils/tree/updateRowTree.ts b/packages/x-data-grid-pro/src/utils/tree/updateRowTree.ts index 0c7ddc514403..e56ca16d74f6 100644 --- a/packages/x-data-grid-pro/src/utils/tree/updateRowTree.ts +++ b/packages/x-data-grid-pro/src/utils/tree/updateRowTree.ts @@ -36,7 +36,7 @@ export const updateRowTree = (params: UpdateRowTreeParams): GridRowTreeCreationV : new Set([]); for (let i = 0; i < params.nodes.inserted.length; i += 1) { - const { id, path, hasServerChildren } = params.nodes.inserted[i]; + const { id, path, serverChildrenCount } = params.nodes.inserted[i]; insertDataRowInTree({ previousTree: params.previousTree, @@ -45,7 +45,7 @@ export const updateRowTree = (params: UpdateRowTreeParams): GridRowTreeCreationV updatedGroupsManager, id, path, - hasServerChildren, + serverChildrenCount, onDuplicatePath: params.onDuplicatePath, isGroupExpandedByDefault: params.isGroupExpandedByDefault, defaultGroupingExpansionDepth: params.defaultGroupingExpansionDepth, @@ -65,7 +65,7 @@ export const updateRowTree = (params: UpdateRowTreeParams): GridRowTreeCreationV } for (let i = 0; i < params.nodes.modified.length; i += 1) { - const { id, path, hasServerChildren } = params.nodes.modified[i]; + const { id, path, serverChildrenCount } = params.nodes.modified[i]; const pathInPreviousTree = getNodePathInTree({ tree, id }); const isInSameGroup = isDeepEqual(pathInPreviousTree, path); @@ -84,7 +84,7 @@ export const updateRowTree = (params: UpdateRowTreeParams): GridRowTreeCreationV updatedGroupsManager, id, path, - hasServerChildren, + serverChildrenCount, onDuplicatePath: params.onDuplicatePath, isGroupExpandedByDefault: params.isGroupExpandedByDefault, defaultGroupingExpansionDepth: params.defaultGroupingExpansionDepth, diff --git a/packages/x-data-grid/src/DataGrid/DataGrid.tsx b/packages/x-data-grid/src/DataGrid/DataGrid.tsx index ab054cbab917..72fcb9453320 100644 --- a/packages/x-data-grid/src/DataGrid/DataGrid.tsx +++ b/packages/x-data-grid/src/DataGrid/DataGrid.tsx @@ -2,6 +2,8 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { GridBody, GridFooterPlaceholder, GridHeader, GridRoot } from '../components'; +import { useGridAriaAttributes } from '../hooks/utils/useGridAriaAttributes'; +import { useGridRowAriaAttributes } from '../hooks/features/rows/useGridRowAriaAttributes'; import { DataGridProcessedProps, DataGridProps } from '../models/props/DataGridProps'; import { GridContextProvider } from '../context/GridContextProvider'; import { useDataGridComponent } from './useDataGridComponent'; @@ -15,6 +17,12 @@ import { export type { GridSlotsComponent as GridSlots } from '../models'; +const configuration = { + hooks: { + useGridAriaAttributes, + useGridRowAriaAttributes, + }, +}; let propValidators: PropValidator[]; if (process.env.NODE_ENV !== 'production') { @@ -45,7 +53,7 @@ const DataGridRaw = React.forwardRef(function DataGrid + (undefined); + +if (process.env.NODE_ENV !== 'production') { + GridConfigurationContext.displayName = 'GridConfigurationContext'; +} diff --git a/packages/x-data-grid/src/components/GridRow.tsx b/packages/x-data-grid/src/components/GridRow.tsx index ee26a2b20c1f..ec36976c2dc2 100644 --- a/packages/x-data-grid/src/components/GridRow.tsx +++ b/packages/x-data-grid/src/components/GridRow.tsx @@ -24,11 +24,11 @@ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelTogg import type { GridDimensions } from '../hooks/features/dimensions'; import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector'; import { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector'; -import { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector'; import { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors'; import { PinnedPosition, gridPinnedColumnPositionLookup } from './cell/GridCell'; import { GridScrollbarFillerCell as ScrollbarFiller } from './GridScrollbarFillerCell'; import { getPinnedCellOffset } from '../internals/utils/getPinnedCellOffset'; +import { useGridConfiguration } from '../hooks/utils/useGridConfiguration'; export interface GridRowProps extends React.HTMLAttributes { row: GridRowModel; @@ -112,12 +112,12 @@ const GridRow = React.forwardRef(function GridRow( ...other } = props; const apiRef = useGridApiContext(); + const configuration = useGridConfiguration(); const ref = React.useRef(null); const rootProps = useGridRootProps(); const currentPage = useGridVisibleRows(apiRef, rootProps); const sortModel = useGridSelector(apiRef, gridSortModelSelector); const treeDepth = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector); - const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector); const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector); const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector); const handleRef = useForkRef(ref, refProp); @@ -137,8 +137,6 @@ const GridRow = React.forwardRef(function GridRow( focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= renderContext.lastColumnIndex; - const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based - const classes = composeGridClasses(rootProps.classes, { root: [ 'row', @@ -151,6 +149,7 @@ const GridRow = React.forwardRef(function GridRow( rowHeight === 'auto' && 'row--dynamicHeight', ], }); + const getRowAriaAttributes = configuration.hooks.useGridRowAriaAttributes(); React.useLayoutEffect(() => { if (currentPage.range) { @@ -307,6 +306,7 @@ const GridRow = React.forwardRef(function GridRow( }, [isNotVisible, rowHeight, styleProp, minHeight, sizes, rootProps.rowSpacingType]); const rowClassNames = apiRef.current.unstable_applyPipeProcessors('rowClassName', [], rowId); + const ariaAttributes = rowNode ? getRowAriaAttributes(rowNode, index) : undefined; if (typeof rootProps.getRowClassName === 'function') { const indexRelativeToCurrentPage = index - (currentPage.range?.firstRowIndex || 0); @@ -479,9 +479,8 @@ const GridRow = React.forwardRef(function GridRow( data-rowindex={index} role="row" className={clsx(...rowClassNames, classes.root, className)} - aria-rowindex={ariaRowIndex} - aria-selected={selected} style={style} + {...ariaAttributes} {...eventHandlers} {...other} > diff --git a/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx b/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx index 5a0d3668d12f..8fcbd0a4109e 100644 --- a/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridMainContainer.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { styled } from '@mui/system'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; -import { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes'; +import { useGridConfiguration } from '../../hooks/utils/useGridConfiguration'; const GridPanelAnchor = styled('div')({ position: 'absolute', @@ -28,8 +28,9 @@ export const GridMainContainer = React.forwardRef< className: string; }> >((props, ref) => { - const ariaAttributes = useGridAriaAttributes(); const rootProps = useGridRootProps(); + const configuration = useGridConfiguration(); + const ariaAttributes = configuration.hooks.useGridAriaAttributes(); return ( ; + configuration: GridConfiguration; props: {}; children: React.ReactNode; }; -export function GridContextProvider({ privateApiRef, props, children }: GridContextProviderProps) { +export function GridContextProvider({ + privateApiRef, + configuration, + props, + children, +}: GridContextProviderProps) { const apiRef = React.useRef(privateApiRef.current.getPublicApi()); return ( - - - {children} - - + + + + {children} + + + ); } diff --git a/packages/x-data-grid/src/hooks/features/filter/gridFilterSelector.ts b/packages/x-data-grid/src/hooks/features/filter/gridFilterSelector.ts index 9d376a2321f2..f9733a04f577 100644 --- a/packages/x-data-grid/src/hooks/features/filter/gridFilterSelector.ts +++ b/packages/x-data-grid/src/hooks/features/filter/gridFilterSelector.ts @@ -1,4 +1,5 @@ import { createSelector, createSelectorMemoized } from '../../../utils/createSelector'; +import { GridRowId } from '../../../models/gridRows'; import { GridFilterItem } from '../../../models/gridFilterItem'; import { GridStateCommunity } from '../../../models/gridStateCommunity'; import { gridSortedRowEntriesSelector } from '../sorting/gridSortingSelector'; @@ -43,6 +44,15 @@ export const gridFilteredRowsLookupSelector = createSelector( (filterState) => filterState.filteredRowsLookup, ); +/** + * @category Filtering + * @ignore - do not document. + */ +export const gridFilteredChildrenCountLookupSelector = createSelector( + gridFilterStateSelector, + (filterState) => filterState.filteredChildrenCountLookup, +); + /** * @category Filtering * @ignore - do not document. @@ -96,6 +106,41 @@ export const gridFilteredSortedRowIdsSelector = createSelectorMemoized( (filteredSortedRowEntries) => filteredSortedRowEntries.map((row) => row.id), ); +/** + * Get the ids to position in the current tree level lookup of the rows accessible after the filtering process. + * Does not contain the collapsed children. + * @category Filtering + * @ignore - do not document. + */ +export const gridExpandedSortedRowTreeLevelPositionLookupSelector = createSelectorMemoized( + gridExpandedSortedRowIdsSelector, + gridRowTreeSelector, + (visibleSortedRowIds, rowTree) => { + const depthPositionCounter: Record = {}; + let lastDepth = 0; + + return visibleSortedRowIds.reduce((acc: Record, rowId) => { + const rowNode = rowTree[rowId]; + + if (!depthPositionCounter[rowNode.depth]) { + depthPositionCounter[rowNode.depth] = 0; + } + + // going deeper in the tree should reset the counter + // since it might have been used in some other branch at the same level, up in the tree + // going back up should keep the counter and continue where it left off + if (rowNode.depth > lastDepth) { + depthPositionCounter[rowNode.depth] = 0; + } + + lastDepth = rowNode.depth; + depthPositionCounter[rowNode.depth] += 1; + acc[rowId] = depthPositionCounter[rowNode.depth]; + return acc; + }, {}); + }, +); + /** * Get the id and the model of the top level rows accessible after the filtering process. * @category Filtering diff --git a/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts b/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts index 0c216b8f5519..c48354461cf0 100644 --- a/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts +++ b/packages/x-data-grid/src/hooks/features/filter/gridFilterState.ts @@ -21,6 +21,12 @@ export interface GridFilterState { * This is the equivalent of the `visibleRowsLookup` if all the groups were expanded. */ filteredRowsLookup: Record; + /** + * Amount of children that are passing the filters or have children that are passing the filter (does not count grand children). + * If a row is not registered in this lookup, it is supposed to have no descendant passing the filters. + * If `GridDataSource` is being used to load the data, the value is `-1` if there are some children but the count is unknown. + */ + filteredChildrenCountLookup: Record; /** * Amount of descendants that are passing the filters. * For the Tree Data, it includes all the intermediate depth levels (= amount of children + amount of grand children + ...). diff --git a/packages/x-data-grid/src/hooks/features/filter/index.ts b/packages/x-data-grid/src/hooks/features/filter/index.ts index e28153eb734b..5aa46fea24b2 100644 --- a/packages/x-data-grid/src/hooks/features/filter/index.ts +++ b/packages/x-data-grid/src/hooks/features/filter/index.ts @@ -1,3 +1,21 @@ export type { GridFilterState, GridFilterInitialState } from './gridFilterState'; export { getDefaultGridFilterModel } from './gridFilterState'; -export * from './gridFilterSelector'; +export { + gridFilterModelSelector, + gridQuickFilterValuesSelector, + gridVisibleRowsLookupSelector, + gridFilteredRowsLookupSelector, + gridFilteredDescendantCountLookupSelector, + gridExpandedSortedRowEntriesSelector, + gridExpandedSortedRowIdsSelector, + gridFilteredSortedRowEntriesSelector, + gridFilteredSortedRowIdsSelector, + gridFilteredSortedTopLevelRowEntriesSelector, + gridExpandedRowCountSelector, + gridFilteredTopLevelRowCountSelector, + gridFilteredRowCountSelector, + gridFilteredDescendantRowCountSelector, + gridFilterActiveItemsSelector, + gridFilterActiveItemsLookupSelector, +} from './gridFilterSelector'; +export type { GridFilterActiveItemsLookup } from './gridFilterSelector'; diff --git a/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx b/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx index 031320af23c3..1ad1ae3d7d94 100644 --- a/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx +++ b/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx @@ -46,6 +46,7 @@ export const filterStateInitializer: GridStateInitializer< filter: { filterModel: sanitizeFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef), filteredRowsLookup: {}, + filteredChildrenCountLookup: {}, filteredDescendantCountLookup: {}, }, visibleRowsLookup: {}, @@ -424,6 +425,7 @@ export const useGridFilter = ( if (props.filterMode !== 'client' || !params.isRowMatchingFilters) { return { filteredRowsLookup: {}, + filteredChildrenCountLookup: {}, filteredDescendantCountLookup: {}, }; } @@ -464,6 +466,7 @@ export const useGridFilter = ( return { filteredRowsLookup, + filteredChildrenCountLookup: {}, filteredDescendantCountLookup: {}, }; }, diff --git a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts index fe7495699b33..e42e696554f9 100644 --- a/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts +++ b/packages/x-data-grid/src/hooks/features/rowSelection/useGridRowSelection.ts @@ -186,6 +186,10 @@ export const useGridRowSelection = ( const isRowSelectable = React.useCallback( (id) => { + if (props.rowSelection === false) { + return false; + } + if (propIsRowSelectable && !propIsRowSelectable(apiRef.current.getRowParams(id))) { return false; } @@ -197,7 +201,7 @@ export const useGridRowSelection = ( return true; }, - [apiRef, propIsRowSelectable], + [apiRef, props.rowSelection, propIsRowSelectable], ); const getSelectedRows = React.useCallback( diff --git a/packages/x-data-grid/src/hooks/features/rows/useGridRowAriaAttributes.tsx b/packages/x-data-grid/src/hooks/features/rows/useGridRowAriaAttributes.tsx new file mode 100644 index 000000000000..112d58e4dfa3 --- /dev/null +++ b/packages/x-data-grid/src/hooks/features/rows/useGridRowAriaAttributes.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import { GridTreeNode } from '../../../models/gridRows'; +import { GetRowAriaAttributesFn } from '../../../models/configuration/gridRowConfiguration'; +import { selectedIdsLookupSelector } from '../rowSelection'; +import { useGridSelector } from '../../utils/useGridSelector'; +import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector'; +import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext'; + +export const useGridRowAriaAttributes = (): GetRowAriaAttributesFn => { + const apiRef = useGridPrivateApiContext(); + const selectedIdsLookup = useGridSelector(apiRef, selectedIdsLookupSelector); + const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector); + + return React.useCallback( + (rowNode: GridTreeNode, index: number) => { + const ariaAttributes = {} as Record; + + const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based + ariaAttributes['aria-rowindex'] = ariaRowIndex; + + if (apiRef.current.isRowSelectable(rowNode.id)) { + ariaAttributes['aria-selected'] = selectedIdsLookup[rowNode.id] !== undefined; + } + + return ariaAttributes; + }, + [apiRef, selectedIdsLookup, headerGroupingMaxDepth], + ); +}; diff --git a/packages/x-data-grid/src/hooks/utils/useGridAriaAttributes.tsx b/packages/x-data-grid/src/hooks/utils/useGridAriaAttributes.tsx index fc4efefbcc8c..abfee1ab8746 100644 --- a/packages/x-data-grid/src/hooks/utils/useGridAriaAttributes.tsx +++ b/packages/x-data-grid/src/hooks/utils/useGridAriaAttributes.tsx @@ -1,31 +1,25 @@ +import * as React from 'react'; import { gridVisibleColumnDefinitionsSelector } from '../features/columns/gridColumnsSelector'; import { useGridSelector } from './useGridSelector'; import { useGridRootProps } from './useGridRootProps'; import { gridColumnGroupsHeaderMaxDepthSelector } from '../features/columnGrouping/gridColumnGroupsSelector'; -import { - gridPinnedRowsCountSelector, - gridRowCountSelector, -} from '../features/rows/gridRowsSelector'; +import { gridPinnedRowsCountSelector } from '../features/rows/gridRowsSelector'; import { useGridPrivateApiContext } from './useGridPrivateApiContext'; import { isMultipleRowSelectionEnabled } from '../features/rowSelection/utils'; +import { gridExpandedRowCountSelector } from '../features/filter/gridFilterSelector'; -export const useGridAriaAttributes = () => { +export const useGridAriaAttributes = (): React.HTMLAttributes => { const apiRef = useGridPrivateApiContext(); const rootProps = useGridRootProps(); const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector); - const totalRowCount = useGridSelector(apiRef, gridRowCountSelector); + const accessibleRowCount = useGridSelector(apiRef, gridExpandedRowCountSelector); const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector); const pinnedRowsCount = useGridSelector(apiRef, gridPinnedRowsCountSelector); - let role = 'grid'; - if ((rootProps as any).treeData) { - role = 'treegrid'; - } - return { - role, + role: 'grid', 'aria-colcount': visibleColumns.length, - 'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount, + 'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + accessibleRowCount, 'aria-multiselectable': isMultipleRowSelectionEnabled(rootProps), }; }; diff --git a/packages/x-data-grid/src/hooks/utils/useGridConfiguration.ts b/packages/x-data-grid/src/hooks/utils/useGridConfiguration.ts new file mode 100644 index 000000000000..f65b863f77db --- /dev/null +++ b/packages/x-data-grid/src/hooks/utils/useGridConfiguration.ts @@ -0,0 +1,19 @@ +import * as React from 'react'; +import { GridConfigurationContext } from '../../components/GridConfigurationContext'; +import { GridConfiguration } from '../../models/configuration/gridConfiguration'; + +export const useGridConfiguration = () => { + const configuration = React.useContext(GridConfigurationContext); + + if (configuration === undefined) { + throw new Error( + [ + 'MUI X: Could not find the data grid configuration context.', + 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', + 'This can also happen if you are bundling multiple versions of the data grid.', + ].join('\n'), + ); + } + + return configuration as GridConfiguration; +}; diff --git a/packages/x-data-grid/src/internals/index.ts b/packages/x-data-grid/src/internals/index.ts index 90f1ca592e48..a9ec03d957be 100644 --- a/packages/x-data-grid/src/internals/index.ts +++ b/packages/x-data-grid/src/internals/index.ts @@ -56,6 +56,10 @@ export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport'; export { useGridPrintExport } from '../hooks/features/export/useGridPrintExport'; export { useGridFilter, filterStateInitializer } from '../hooks/features/filter/useGridFilter'; export { passFilterLogic } from '../hooks/features/filter/gridFilterUtils'; +export { + gridFilteredChildrenCountLookupSelector, + gridExpandedSortedRowTreeLevelPositionLookupSelector, +} from '../hooks/features/filter/gridFilterSelector'; export { isSingleSelectColDef } from '../components/panel/filterPanel/filterPanelUtils'; export type { GridAggregatedFilterItemApplier, @@ -74,6 +78,8 @@ export { export { useGridEditing, editingStateInitializer } from '../hooks/features/editing/useGridEditing'; export { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors'; export { useGridRows, rowsStateInitializer } from '../hooks/features/rows/useGridRows'; +export { useGridAriaAttributes } from '../hooks/utils/useGridAriaAttributes'; +export { useGridRowAriaAttributes } from '../hooks/features/rows/useGridRowAriaAttributes'; export { useGridRowsPreProcessors } from '../hooks/features/rows/useGridRowsPreProcessors'; export type { GridRowTreeCreationParams, diff --git a/packages/x-data-grid/src/models/configuration/gridConfiguration.ts b/packages/x-data-grid/src/models/configuration/gridConfiguration.ts new file mode 100644 index 000000000000..d4a7d7b2c4f0 --- /dev/null +++ b/packages/x-data-grid/src/models/configuration/gridConfiguration.ts @@ -0,0 +1,14 @@ +import * as React from 'react'; +import { GridRowAriaAttributesInternalHook } from './gridRowConfiguration'; + +export interface GridAriaAttributesInternalHook { + useGridAriaAttributes: () => React.HTMLAttributes; +} + +export interface GridInternalHook + extends GridAriaAttributesInternalHook, + GridRowAriaAttributesInternalHook {} + +export interface GridConfiguration { + hooks: GridInternalHook; +} diff --git a/packages/x-data-grid/src/models/configuration/gridRowConfiguration.ts b/packages/x-data-grid/src/models/configuration/gridRowConfiguration.ts new file mode 100644 index 000000000000..c206f3b0dbab --- /dev/null +++ b/packages/x-data-grid/src/models/configuration/gridRowConfiguration.ts @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { GridTreeNode } from '../gridRows'; + +/** + * Get the ARIA attributes for a row + * @param {GridTreeNode} rowNode The row node + * @param {number} index The position index of the row + * @returns {React.HTMLAttributes} The ARIA attributes + */ +export type GetRowAriaAttributesFn = ( + rowNode: GridTreeNode, + index: number, +) => React.HTMLAttributes; + +export interface GridRowAriaAttributesInternalHook { + useGridRowAriaAttributes: () => GetRowAriaAttributesFn; +} diff --git a/packages/x-data-grid/src/models/gridDataSource.ts b/packages/x-data-grid/src/models/gridDataSource.ts index 58038fe0e290..f2a26241b659 100644 --- a/packages/x-data-grid/src/models/gridDataSource.ts +++ b/packages/x-data-grid/src/models/gridDataSource.ts @@ -72,7 +72,8 @@ export interface GridDataSource { /** * Used to determine the number of children a row has on server. * @param {GridRowModel} row The row to check the number of children - * @returns {number} The number of children the row has + * @returns {number} The number of children the row has. + * If the children count is not available for some reason, but there are some children, `getChildrenCount` should return `-1`. */ getChildrenCount?: (row: GridRowModel) => number; } diff --git a/packages/x-data-grid/src/models/gridRows.ts b/packages/x-data-grid/src/models/gridRows.ts index 703433dc873c..f7282e9c59a1 100644 --- a/packages/x-data-grid/src/models/gridRows.ts +++ b/packages/x-data-grid/src/models/gridRows.ts @@ -116,9 +116,9 @@ export interface GridDataGroupNode extends GridBasicGroupNode { export interface GridDataSourceGroupNode extends GridDataGroupNode { /** - * If true, this node has children on server. + * Number of children this node has on the server. Equals to `-1` if there are some children but the count is unknown. */ - hasServerChildren: boolean; + serverChildrenCount: number; /** * The cached path to be passed on as `groupKey` to the server. */ diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index 47a56c9a742a..97b44620eca3 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -469,7 +469,7 @@ export interface DataGridPropsWithoutDefaultValue) => boolean; /** diff --git a/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx b/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx index 4cfe95e32b9c..f01954e76a1f 100644 --- a/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx @@ -837,6 +837,27 @@ describe(' - Row selection', () => { }); }); + describe('accessibility', () => { + it('should add aria-selected attributes to the selectable rows', () => { + render(); + + // Select the first row + userEvent.mousePress(getCell(0, 0)); + expect(getRow(0).getAttribute('aria-selected')).to.equal('true'); + expect(getRow(1).getAttribute('aria-selected')).to.equal('false'); + }); + + it('should not add aria-selected attributes if the row selection is disabled', () => { + render(); + expect(getRow(0).getAttribute('aria-selected')).to.equal(null); + + // Try to select the first row + userEvent.mousePress(getCell(0, 0)); + // nothing should change + expect(getRow(0).getAttribute('aria-selected')).to.equal(null); + }); + }); + describe('performance', () => { it('should not rerender unrelated nodes', () => { // Couldn't use because we need to track multiple components diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 086dbe63f1f2..061c818d1f70 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -481,7 +481,7 @@ importers: version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/query-core': specifier: ^5.51.15 - version: 5.51.15 + version: 5.51.21 ast-types: specifier: ^0.14.2 version: 0.14.2 @@ -3861,8 +3861,8 @@ packages: '@swc/types@0.1.9': resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} - '@tanstack/query-core@5.51.15': - resolution: {integrity: sha512-xyobHDJ0yhPE3+UkSQ2/4X1fLSg7ICJI5J1JyU9yf7F3deQfEwSImCDrB1WSRrauJkMtXW7YIEcC0oA6ZZWt5A==} + '@tanstack/query-core@5.51.21': + resolution: {integrity: sha512-POQxm42IUp6n89kKWF4IZi18v3fxQWFRolvBA6phNVmA8psdfB1MvDnGacCJdS+EOX12w/CyHM62z//rHmYmvw==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -12839,7 +12839,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/query-core@5.51.15': {} + '@tanstack/query-core@5.51.21': {} '@testing-library/dom@10.4.0': dependencies: From c9bf6fc79d3d70c76cb7f9607d1a89e890079056 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Tue, 13 Aug 2024 15:09:53 +0200 Subject: [PATCH 754/912] [docs] Extract dataset in the Line chart docs (#14034) --- docs/data/charts/lines/CSSCustomization.js | 63 +-- docs/data/charts/lines/CSSCustomization.tsx | 63 +-- docs/data/charts/lines/GDPperCapita.ts | 31 ++ docs/data/charts/lines/GridDemo.js | 10 +- docs/data/charts/lines/GridDemo.tsx | 10 +- docs/data/charts/lines/GridDemo.tsx.preview | 9 +- docs/data/charts/lines/LineDataset.js | 526 +---------------- docs/data/charts/lines/LineDataset.tsx | 527 +----------------- docs/data/charts/lines/StackedAreas.js | 63 +-- docs/data/charts/lines/StackedAreas.tsx | 63 +-- docs/data/charts/lines/basicDataset.ts | 8 + .../lines/worldElectricityProduction.ts | 520 +++++++++++++++++ 12 files changed, 604 insertions(+), 1289 deletions(-) create mode 100644 docs/data/charts/lines/GDPperCapita.ts create mode 100644 docs/data/charts/lines/basicDataset.ts create mode 100644 docs/data/charts/lines/worldElectricityProduction.ts diff --git a/docs/data/charts/lines/CSSCustomization.js b/docs/data/charts/lines/CSSCustomization.js index 933eaa75f501..5e5fe6260821 100644 --- a/docs/data/charts/lines/CSSCustomization.js +++ b/docs/data/charts/lines/CSSCustomization.js @@ -1,62 +1,11 @@ import * as React from 'react'; import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; - -const years = [ - new Date(1990, 0, 1), - new Date(1991, 0, 1), - new Date(1992, 0, 1), - new Date(1993, 0, 1), - new Date(1994, 0, 1), - new Date(1995, 0, 1), - new Date(1996, 0, 1), - new Date(1997, 0, 1), - new Date(1998, 0, 1), - new Date(1999, 0, 1), - new Date(2000, 0, 1), - new Date(2001, 0, 1), - new Date(2002, 0, 1), - new Date(2003, 0, 1), - new Date(2004, 0, 1), - new Date(2005, 0, 1), - new Date(2006, 0, 1), - new Date(2007, 0, 1), - new Date(2008, 0, 1), - new Date(2009, 0, 1), - new Date(2010, 0, 1), - new Date(2011, 0, 1), - new Date(2012, 0, 1), - new Date(2013, 0, 1), - new Date(2014, 0, 1), - new Date(2015, 0, 1), - new Date(2016, 0, 1), - new Date(2017, 0, 1), - new Date(2018, 0, 1), -]; - -const FranceGDPperCapita = [ - 28129, 28294.264, 28619.805, 28336.16, 28907.977, 29418.863, 29736.645, 30341.807, - 31323.078, 32284.611, 33409.68, 33920.098, 34152.773, 34292.03, 35093.824, - 35495.465, 36166.16, 36845.684, 36761.793, 35534.926, 36086.727, 36691, 36571, - 36632, 36527, 36827, 37124, 37895, 38515.918, -]; - -const UKGDPperCapita = [ - 26189, 25792.014, 25790.186, 26349.342, 27277.543, 27861.215, 28472.248, 29259.764, - 30077.385, 30932.537, 31946.037, 32660.441, 33271.3, 34232.426, 34865.78, - 35623.625, 36214.07, 36816.676, 36264.79, 34402.36, 34754.473, 34971, 35185, 35618, - 36436, 36941, 37334, 37782.83, 38058.086, -]; - -const GermanyGDPperCapita = [ - 25391, 26769.96, 27385.055, 27250.701, 28140.057, 28868.945, 29349.982, 30186.945, - 31129.584, 32087.604, 33367.285, 34260.29, 34590.93, 34716.44, 35528.715, - 36205.574, 38014.137, 39752.207, 40715.434, 38962.938, 41109.582, 43189, 43320, - 43413, 43922, 44293, 44689, 45619.785, 46177.617, -]; +import { dataset } from './GDPperCapita'; export default function CSSCustomization() { return ( date.getFullYear().toString(), }, @@ -77,21 +26,21 @@ export default function CSSCustomization() { series={[ { id: 'France', - data: FranceGDPperCapita, + dataKey: 'fr', stack: 'total', area: true, showMark: false, }, { id: 'Germany', - data: GermanyGDPperCapita, + dataKey: 'dl', stack: 'total', area: true, showMark: false, }, { id: 'United Kingdom', - data: UKGDPperCapita, + dataKey: 'gb', stack: 'total', area: true, showMark: false, diff --git a/docs/data/charts/lines/CSSCustomization.tsx b/docs/data/charts/lines/CSSCustomization.tsx index 933eaa75f501..5e5fe6260821 100644 --- a/docs/data/charts/lines/CSSCustomization.tsx +++ b/docs/data/charts/lines/CSSCustomization.tsx @@ -1,62 +1,11 @@ import * as React from 'react'; import { LineChart, lineElementClasses } from '@mui/x-charts/LineChart'; - -const years = [ - new Date(1990, 0, 1), - new Date(1991, 0, 1), - new Date(1992, 0, 1), - new Date(1993, 0, 1), - new Date(1994, 0, 1), - new Date(1995, 0, 1), - new Date(1996, 0, 1), - new Date(1997, 0, 1), - new Date(1998, 0, 1), - new Date(1999, 0, 1), - new Date(2000, 0, 1), - new Date(2001, 0, 1), - new Date(2002, 0, 1), - new Date(2003, 0, 1), - new Date(2004, 0, 1), - new Date(2005, 0, 1), - new Date(2006, 0, 1), - new Date(2007, 0, 1), - new Date(2008, 0, 1), - new Date(2009, 0, 1), - new Date(2010, 0, 1), - new Date(2011, 0, 1), - new Date(2012, 0, 1), - new Date(2013, 0, 1), - new Date(2014, 0, 1), - new Date(2015, 0, 1), - new Date(2016, 0, 1), - new Date(2017, 0, 1), - new Date(2018, 0, 1), -]; - -const FranceGDPperCapita = [ - 28129, 28294.264, 28619.805, 28336.16, 28907.977, 29418.863, 29736.645, 30341.807, - 31323.078, 32284.611, 33409.68, 33920.098, 34152.773, 34292.03, 35093.824, - 35495.465, 36166.16, 36845.684, 36761.793, 35534.926, 36086.727, 36691, 36571, - 36632, 36527, 36827, 37124, 37895, 38515.918, -]; - -const UKGDPperCapita = [ - 26189, 25792.014, 25790.186, 26349.342, 27277.543, 27861.215, 28472.248, 29259.764, - 30077.385, 30932.537, 31946.037, 32660.441, 33271.3, 34232.426, 34865.78, - 35623.625, 36214.07, 36816.676, 36264.79, 34402.36, 34754.473, 34971, 35185, 35618, - 36436, 36941, 37334, 37782.83, 38058.086, -]; - -const GermanyGDPperCapita = [ - 25391, 26769.96, 27385.055, 27250.701, 28140.057, 28868.945, 29349.982, 30186.945, - 31129.584, 32087.604, 33367.285, 34260.29, 34590.93, 34716.44, 35528.715, - 36205.574, 38014.137, 39752.207, 40715.434, 38962.938, 41109.582, 43189, 43320, - 43413, 43922, 44293, 44689, 45619.785, 46177.617, -]; +import { dataset } from './GDPperCapita'; export default function CSSCustomization() { return ( date.getFullYear().toString(), }, @@ -77,21 +26,21 @@ export default function CSSCustomization() { series={[ { id: 'France', - data: FranceGDPperCapita, + dataKey: 'fr', stack: 'total', area: true, showMark: false, }, { id: 'Germany', - data: GermanyGDPperCapita, + dataKey: 'dl', stack: 'total', area: true, showMark: false, }, { id: 'United Kingdom', - data: UKGDPperCapita, + dataKey: 'gb', stack: 'total', area: true, showMark: false, diff --git a/docs/data/charts/lines/GDPperCapita.ts b/docs/data/charts/lines/GDPperCapita.ts new file mode 100644 index 000000000000..eb5babd81d4d --- /dev/null +++ b/docs/data/charts/lines/GDPperCapita.ts @@ -0,0 +1,31 @@ +export const dataset = [ + { date: new Date(1990, 0, 1), fr: 28129, gb: 26189, dl: 25391 }, + { date: new Date(1991, 0, 1), fr: 28294.264, gb: 25792.014, dl: 26769.96 }, + { date: new Date(1992, 0, 1), fr: 28619.805, gb: 25790.186, dl: 27385.055 }, + { date: new Date(1993, 0, 1), fr: 28336.16, gb: 26349.342, dl: 27250.701 }, + { date: new Date(1994, 0, 1), fr: 28907.977, gb: 27277.543, dl: 28140.057 }, + { date: new Date(1995, 0, 1), fr: 29418.863, gb: 27861.215, dl: 28868.945 }, + { date: new Date(1996, 0, 1), fr: 29736.645, gb: 28472.248, dl: 29349.982 }, + { date: new Date(1997, 0, 1), fr: 30341.807, gb: 29259.764, dl: 30186.945 }, + { date: new Date(1998, 0, 1), fr: 31323.078, gb: 30077.385, dl: 31129.584 }, + { date: new Date(1999, 0, 1), fr: 32284.611, gb: 30932.537, dl: 32087.604 }, + { date: new Date(2000, 0, 1), fr: 33409.68, gb: 31946.037, dl: 33367.285 }, + { date: new Date(2001, 0, 1), fr: 33920.098, gb: 32660.441, dl: 34260.29 }, + { date: new Date(2002, 0, 1), fr: 34152.773, gb: 33271.3, dl: 34590.93 }, + { date: new Date(2003, 0, 1), fr: 34292.03, gb: 34232.426, dl: 34716.44 }, + { date: new Date(2004, 0, 1), fr: 35093.824, gb: 34865.78, dl: 35528.715 }, + { date: new Date(2005, 0, 1), fr: 35495.465, gb: 35623.625, dl: 36205.574 }, + { date: new Date(2006, 0, 1), fr: 36166.16, gb: 36214.07, dl: 38014.137 }, + { date: new Date(2007, 0, 1), fr: 36845.684, gb: 36816.676, dl: 39752.207 }, + { date: new Date(2008, 0, 1), fr: 36761.793, gb: 36264.79, dl: 40715.434 }, + { date: new Date(2009, 0, 1), fr: 35534.926, gb: 34402.36, dl: 38962.938 }, + { date: new Date(2010, 0, 1), fr: 36086.727, gb: 34754.473, dl: 41109.582 }, + { date: new Date(2011, 0, 1), fr: 36691, gb: 34971, dl: 43189 }, + { date: new Date(2012, 0, 1), fr: 36571, gb: 35185, dl: 43320 }, + { date: new Date(2013, 0, 1), fr: 36632, gb: 35618, dl: 43413 }, + { date: new Date(2014, 0, 1), fr: 36527, gb: 36436, dl: 43922 }, + { date: new Date(2015, 0, 1), fr: 36827, gb: 36941, dl: 44293 }, + { date: new Date(2016, 0, 1), fr: 37124, gb: 37334, dl: 44689 }, + { date: new Date(2017, 0, 1), fr: 37895, gb: 37782.83, dl: 45619.785 }, + { date: new Date(2018, 0, 1), fr: 38515.918, gb: 38058.086, dl: 46177.617 }, +]; diff --git a/docs/data/charts/lines/GridDemo.js b/docs/data/charts/lines/GridDemo.js index 0f5641f5b2a9..a025d5c3cbff 100644 --- a/docs/data/charts/lines/GridDemo.js +++ b/docs/data/charts/lines/GridDemo.js @@ -1,15 +1,13 @@ import * as React from 'react'; import { LineChart } from '@mui/x-charts/LineChart'; +import { dataset } from './basicDataset'; export default function GridDemo() { return ( date.getFullYear().toString(), }, @@ -69,7 +18,7 @@ export default function StackedAreas() { { id: 'France', label: 'French GDP per capita', - data: FranceGDPperCapita, + dataKey: 'fr', stack: 'total', area: true, showMark: false, @@ -77,7 +26,7 @@ export default function StackedAreas() { { id: 'Germany', label: 'German GDP per capita', - data: GermanyGDPperCapita, + dataKey: 'dl', stack: 'total', area: true, showMark: false, @@ -85,7 +34,7 @@ export default function StackedAreas() { { id: 'United Kingdom', label: 'UK GDP per capita', - data: UKGDPperCapita, + dataKey: 'gb', stack: 'total', area: true, showMark: false, diff --git a/docs/data/charts/lines/StackedAreas.tsx b/docs/data/charts/lines/StackedAreas.tsx index 5a895f8a4b44..79181db86caa 100644 --- a/docs/data/charts/lines/StackedAreas.tsx +++ b/docs/data/charts/lines/StackedAreas.tsx @@ -1,66 +1,15 @@ import * as React from 'react'; import { LineChart } from '@mui/x-charts/LineChart'; - -const years = [ - new Date(1990, 0, 1), - new Date(1991, 0, 1), - new Date(1992, 0, 1), - new Date(1993, 0, 1), - new Date(1994, 0, 1), - new Date(1995, 0, 1), - new Date(1996, 0, 1), - new Date(1997, 0, 1), - new Date(1998, 0, 1), - new Date(1999, 0, 1), - new Date(2000, 0, 1), - new Date(2001, 0, 1), - new Date(2002, 0, 1), - new Date(2003, 0, 1), - new Date(2004, 0, 1), - new Date(2005, 0, 1), - new Date(2006, 0, 1), - new Date(2007, 0, 1), - new Date(2008, 0, 1), - new Date(2009, 0, 1), - new Date(2010, 0, 1), - new Date(2011, 0, 1), - new Date(2012, 0, 1), - new Date(2013, 0, 1), - new Date(2014, 0, 1), - new Date(2015, 0, 1), - new Date(2016, 0, 1), - new Date(2017, 0, 1), - new Date(2018, 0, 1), -]; - -const FranceGDPperCapita = [ - 28129, 28294.264, 28619.805, 28336.16, 28907.977, 29418.863, 29736.645, 30341.807, - 31323.078, 32284.611, 33409.68, 33920.098, 34152.773, 34292.03, 35093.824, - 35495.465, 36166.16, 36845.684, 36761.793, 35534.926, 36086.727, 36691, 36571, - 36632, 36527, 36827, 37124, 37895, 38515.918, -]; - -const UKGDPperCapita = [ - 26189, 25792.014, 25790.186, 26349.342, 27277.543, 27861.215, 28472.248, 29259.764, - 30077.385, 30932.537, 31946.037, 32660.441, 33271.3, 34232.426, 34865.78, - 35623.625, 36214.07, 36816.676, 36264.79, 34402.36, 34754.473, 34971, 35185, 35618, - 36436, 36941, 37334, 37782.83, 38058.086, -]; - -const GermanyGDPperCapita = [ - 25391, 26769.96, 27385.055, 27250.701, 28140.057, 28868.945, 29349.982, 30186.945, - 31129.584, 32087.604, 33367.285, 34260.29, 34590.93, 34716.44, 35528.715, - 36205.574, 38014.137, 39752.207, 40715.434, 38962.938, 41109.582, 43189, 43320, - 43413, 43922, 44293, 44689, 45619.785, 46177.617, -]; +import { dataset } from './GDPperCapita'; export default function StackedAreas() { return ( date.getFullYear().toString(), }, @@ -69,7 +18,7 @@ export default function StackedAreas() { { id: 'France', label: 'French GDP per capita', - data: FranceGDPperCapita, + dataKey: 'fr', stack: 'total', area: true, showMark: false, @@ -77,7 +26,7 @@ export default function StackedAreas() { { id: 'Germany', label: 'German GDP per capita', - data: GermanyGDPperCapita, + dataKey: 'dl', stack: 'total', area: true, showMark: false, @@ -85,7 +34,7 @@ export default function StackedAreas() { { id: 'United Kingdom', label: 'UK GDP per capita', - data: UKGDPperCapita, + dataKey: 'gb', stack: 'total', area: true, showMark: false, diff --git a/docs/data/charts/lines/basicDataset.ts b/docs/data/charts/lines/basicDataset.ts new file mode 100644 index 000000000000..ef59c6d6d807 --- /dev/null +++ b/docs/data/charts/lines/basicDataset.ts @@ -0,0 +1,8 @@ +export const dataset = [ + { x: 1, y: 2 }, + { x: 2, y: 5.5 }, + { x: 3, y: 2 }, + { x: 5, y: 8.5 }, + { x: 8, y: 1.5 }, + { x: 10, y: 5 }, +]; diff --git a/docs/data/charts/lines/worldElectricityProduction.ts b/docs/data/charts/lines/worldElectricityProduction.ts new file mode 100644 index 000000000000..94748a611938 --- /dev/null +++ b/docs/data/charts/lines/worldElectricityProduction.ts @@ -0,0 +1,520 @@ +export const keyToLabel: { [key: string]: string } = { + coal: 'Electricity from coal (TWh)', + gas: 'Electricity from gas (TWh)', + oil: 'Electricity from oil (TWh)', + nuclear: 'Electricity from nuclear (TWh)', + hydro: 'Electricity from hydro (TWh)', + wind: 'Electricity from wind (TWh)', + solar: 'Electricity from solar (TWh)', + bio: 'Electricity from bioenergy (TWh)', + other: 'Other renewables excluding bioenergy (TWh)', +}; + +export const colors: { [key: string]: string } = { + other: 'lightgray', + bio: 'lightgreen', + solar: 'yellow', + wind: 'lightblue', + hydro: 'blue', + nuclear: 'orange', + oil: 'darkgrey', + gas: 'gray', + coal: 'black', +}; + +export const worldElectricityProduction = [ + { + country: 'World', + year: 1985, + other: 0, + bio: 0, + solar: 0.011747475, + wind: 0.064220205, + hydro: 1979.2446, + nuclear: 1488.9216, + oil: 1110.7847, + gas: 1426.3086, + coal: 3748.3848, + }, + { + country: 'World', + year: 1986, + other: 0, + bio: 0, + solar: 0.015183838, + wind: 0.13883132, + hydro: 2006.0651, + nuclear: 1594.7357, + oil: 1168.3097, + gas: 1432.6683, + coal: 3839.0095, + }, + { + country: 'World', + year: 1987, + other: 0, + bio: 0, + solar: 0.01060303, + wind: 0.19537677, + hydro: 2033.1884, + nuclear: 1734.7332, + oil: 1183.1947, + gas: 1516.4941, + coal: 4058.0767, + }, + { + country: 'World', + year: 1988, + other: 0, + bio: 0, + solar: 0.01019596, + wind: 0.3315798, + hydro: 2098.3518, + nuclear: 1891.2493, + oil: 1256.5684, + gas: 1540.9414, + coal: 4200.6743, + }, + { + country: 'World', + year: 1989, + other: 0, + bio: 0, + solar: 0.26222324, + wind: 2.6497767, + hydro: 2087.588, + nuclear: 1945.0106, + oil: 1350.2358, + gas: 1728.5189, + coal: 4376.982, + }, + { + country: 'World', + year: 1990, + other: 0, + bio: 0, + solar: 0.38834995, + wind: 3.6324706, + hydro: 2158.854, + nuclear: 2000.596, + oil: 1364.6844, + gas: 1789.7031, + coal: 4460.2417, + }, + { + country: 'World', + year: 1991, + other: 0, + bio: 0, + solar: 0.5053229, + wind: 4.086107, + hydro: 2208.702, + nuclear: 2096.3098, + oil: 1349.9071, + gas: 1815.2444, + coal: 4557.0664, + }, + { + country: 'World', + year: 1992, + other: 0, + bio: 0, + solar: 0.4666791, + wind: 4.732812, + hydro: 2208.4592, + nuclear: 2112.223, + oil: 1328.2163, + gas: 1829.3868, + coal: 4649.9165, + }, + { + country: 'World', + year: 1993, + other: 0, + bio: 0, + solar: 0.5566775, + wind: 5.704169, + hydro: 2341.4597, + nuclear: 2184.9646, + oil: 1266.6155, + gas: 1863.8153, + coal: 4727.899, + }, + { + country: 'World', + year: 1994, + other: 0, + bio: 0, + solar: 0.5969829, + wind: 7.13173, + hydro: 2356.203, + nuclear: 2225.9788, + oil: 1302.1187, + gas: 1925.1002, + coal: 4891.904, + }, + { + country: 'World', + year: 1995, + other: 0, + bio: 0, + solar: 0.63888276, + wind: 8.272123, + hydro: 2483.6868, + nuclear: 2322.5298, + oil: 1259.9452, + gas: 2036.3821, + coal: 5038.9316, + }, + { + country: 'World', + year: 1996, + other: 0, + bio: 0, + solar: 0.69922996, + wind: 9.215601, + hydro: 2517.03, + nuclear: 2406.615, + oil: 1245.6957, + gas: 2101.594, + coal: 5279.661, + }, + { + country: 'World', + year: 1997, + other: 0, + bio: 0, + solar: 0.7496558, + wind: 12.028216, + hydro: 2561.359, + nuclear: 2390.0642, + oil: 1244.647, + gas: 2271.0615, + coal: 5395.626, + }, + { + country: 'World', + year: 1998, + other: 0, + bio: 0, + solar: 0.811852, + wind: 15.92926, + hydro: 2581.1204, + nuclear: 2431.1948, + oil: 1294.6146, + gas: 2408.5476, + coal: 5511.2935, + }, + { + country: 'World', + year: 1999, + other: 0, + bio: 0, + solar: 0.9052879, + wind: 21.226898, + hydro: 2600.65, + nuclear: 2523.7056, + oil: 1266.6599, + gas: 2600.75, + coal: 5630.859, + }, + { + country: 'World', + year: 2000, + other: 52.37, + bio: 148.65, + solar: 1.08, + wind: 31.16, + hydro: 2621.36, + nuclear: 2507.43, + oil: 1209.51, + gas: 2681.11, + coal: 5719.12, + }, + { + country: 'World', + year: 2001, + other: 52.6, + bio: 143.1, + solar: 1.35, + wind: 38.16, + hydro: 2561.04, + nuclear: 2573.71, + oil: 1197.6, + gas: 2827.65, + coal: 5801.14, + }, + { + country: 'World', + year: 2002, + other: 54.08, + bio: 156.61, + solar: 1.69, + wind: 52.04, + hydro: 2601.39, + nuclear: 2601.89, + oil: 1175.58, + gas: 3033.78, + coal: 6056.12, + }, + { + country: 'World', + year: 2003, + other: 56.07, + bio: 167.91, + solar: 2.07, + wind: 63.43, + hydro: 2602.33, + nuclear: 2577.71, + oil: 1198.2, + gas: 3165.78, + coal: 6458.61, + }, + { + country: 'World', + year: 2004, + other: 57.94, + bio: 184.54, + solar: 2.71, + wind: 85.26, + hydro: 2796.69, + nuclear: 2682.73, + oil: 1177.47, + gas: 3408.19, + coal: 6697.61, + }, + { + country: 'World', + year: 2005, + other: 58.74, + bio: 208.44, + solar: 3.78, + wind: 103.89, + hydro: 2895.17, + nuclear: 2686.95, + oil: 1186.13, + gas: 3579.99, + coal: 7040.85, + }, + { + country: 'World', + year: 2006, + other: 60.11, + bio: 220.96, + solar: 5.11, + wind: 132.79, + hydro: 3001.53, + nuclear: 2721.42, + oil: 1097.06, + gas: 3792.38, + coal: 7439.88, + }, + { + country: 'World', + year: 2007, + other: 62.87, + bio: 243.14, + solar: 6.92, + wind: 170.91, + hydro: 3046.18, + nuclear: 2666.92, + oil: 1119.39, + gas: 4109.47, + coal: 7931.82, + }, + { + country: 'World', + year: 2008, + other: 65.97, + bio: 258.44, + solar: 11.36, + wind: 220.07, + hydro: 3231.07, + nuclear: 2656.04, + oil: 1078.99, + gas: 4210.51, + coal: 7927.59, + }, + { + country: 'World', + year: 2009, + other: 68.02, + bio: 279.55, + solar: 19.19, + wind: 275.88, + hydro: 3229.55, + nuclear: 2619, + oil: 1005.12, + gas: 4247.72, + coal: 7817.32, + }, + { + country: 'World', + year: 2010, + other: 68.38, + bio: 322.22, + solar: 31.05, + wind: 345.99, + hydro: 3412.33, + nuclear: 2686.44, + oil: 1011.78, + gas: 4701.27, + coal: 8358.6, + }, + { + country: 'World', + year: 2011, + other: 69.67, + bio: 342.44, + solar: 61.85, + wind: 440.39, + hydro: 3479.25, + nuclear: 2575.35, + oil: 1103.87, + gas: 4767.24, + coal: 8814.17, + }, + { + country: 'World', + year: 2012, + other: 70.88, + bio: 370.87, + solar: 95.18, + wind: 529.11, + hydro: 3645.02, + nuclear: 2403.21, + oil: 1157.13, + gas: 5042.66, + coal: 8855.83, + }, + { + country: 'World', + year: 2013, + other: 72.58, + bio: 402.92, + solar: 131.42, + wind: 641.17, + hydro: 3776.88, + nuclear: 2418.44, + oil: 1118.61, + gas: 4939.52, + coal: 9306.75, + }, + { + country: 'World', + year: 2014, + other: 77.68, + bio: 438.47, + solar: 196.46, + wind: 716.51, + hydro: 3865.63, + nuclear: 2472.7, + oil: 1063.74, + gas: 5096.07, + coal: 9495.57, + }, + { + country: 'World', + year: 2015, + other: 81.57, + bio: 475.79, + solar: 254.87, + wind: 828.37, + hydro: 3870.04, + nuclear: 2502.45, + oil: 1068.09, + gas: 5418.55, + coal: 9160.63, + }, + { + country: 'World', + year: 2016, + other: 83.91, + bio: 483.77, + solar: 329.15, + wind: 959.65, + hydro: 3996.54, + nuclear: 2540.48, + oil: 1004.96, + gas: 5669.08, + coal: 9226.85, + }, + { + country: 'World', + year: 2017, + other: 86.39, + bio: 515.07, + solar: 444.54, + wind: 1136.41, + hydro: 4053.96, + nuclear: 2566.22, + oil: 913.07, + gas: 5791.83, + coal: 9518.91, + }, + { + country: 'World', + year: 2018, + other: 89.54, + bio: 546.21, + solar: 570.57, + wind: 1265.29, + hydro: 4174.81, + nuclear: 2619.57, + oil: 841.34, + gas: 6015.24, + coal: 9899.44, + }, + { + country: 'World', + year: 2019, + other: 91.15, + bio: 575.5, + solar: 701.19, + wind: 1419.51, + hydro: 4220.11, + nuclear: 2724.08, + oil: 776.78, + gas: 6176.34, + coal: 9680.92, + }, + { + country: 'World', + year: 2020, + other: 94.16, + bio: 602.57, + solar: 850.89, + wind: 1587.13, + hydro: 4341.1, + nuclear: 2634.69, + oil: 741, + gas: 6132.47, + coal: 9292.9, + }, + { + country: 'World', + year: 2021, + other: 95, + bio: 663.78, + solar: 1040.06, + wind: 1849.4, + hydro: 4244.57, + nuclear: 2740.78, + oil: 793.53, + gas: 6326, + coal: 10081.8, + }, + { + country: 'World', + year: 2022, + other: 99.74, + bio: 677.57, + solar: 1289.27, + wind: 2139.23, + hydro: 4326.76, + nuclear: 2610.04, + oil: 884.98, + gas: 6309.46, + coal: 10190.71, + }, +]; From 0c211456bf10133ce34bff1ea333483003156081 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Tue, 13 Aug 2024 15:43:45 +0200 Subject: [PATCH 755/912] [charts] Do not remove mouse position for mouseUp event (#14187) --- packages/x-charts/src/ChartsTooltip/utils.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/x-charts/src/ChartsTooltip/utils.tsx b/packages/x-charts/src/ChartsTooltip/utils.tsx index 8a7ad4a359a9..f637bbe80b1a 100644 --- a/packages/x-charts/src/ChartsTooltip/utils.tsx +++ b/packages/x-charts/src/ChartsTooltip/utils.tsx @@ -57,8 +57,10 @@ export function useMouseTracker() { return () => {}; } - const handleOut = () => { - setMousePosition(null); + const handleOut = (event: PointerEvent) => { + if (event.pointerType !== 'mouse') { + setMousePosition(null); + } }; const handleMove = (event: PointerEvent) => { From 10d946e89d034788662ed675108c0ea1851a5747 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Tue, 13 Aug 2024 21:00:51 +0500 Subject: [PATCH 756/912] [docs] Remove redundant encoding in the mock data source server (#14185) --- .../data-grid/server-side-data/ServerSideDataGrid.js | 8 +++----- .../data-grid/server-side-data/ServerSideDataGrid.tsx | 8 +++----- .../server-side-data/ServerSideDataGridNoCache.js | 8 +++----- .../server-side-data/ServerSideDataGridNoCache.tsx | 8 +++----- .../server-side-data/ServerSideDataGridTTL.js | 8 +++----- .../server-side-data/ServerSideDataGridTTL.tsx | 8 +++----- .../server-side-data/ServerSideErrorHandling.js | 8 +++----- .../server-side-data/ServerSideErrorHandling.tsx | 8 +++----- .../data-grid/server-side-data/ServerSideTreeData.js | 10 ++++------ .../data-grid/server-side-data/ServerSideTreeData.tsx | 10 ++++------ .../server-side-data/ServerSideTreeDataCustomCache.js | 10 ++++------ .../server-side-data/ServerSideTreeDataCustomCache.tsx | 10 ++++------ .../ServerSideTreeDataErrorHandling.js | 10 ++++------ .../ServerSideTreeDataErrorHandling.tsx | 10 ++++------ .../ServerSideTreeDataGroupExpansion.js | 10 ++++------ .../ServerSideTreeDataGroupExpansion.tsx | 10 ++++------ .../x-data-grid-generator/src/hooks/useMockServer.ts | 2 +- 17 files changed, 57 insertions(+), 89 deletions(-) diff --git a/docs/data/data-grid/server-side-data/ServerSideDataGrid.js b/docs/data/data-grid/server-side-data/ServerSideDataGrid.js index 3c0dbeb76f86..31bfbc5b61b7 100644 --- a/docs/data/data-grid/server-side-data/ServerSideDataGrid.js +++ b/docs/data/data-grid/server-side-data/ServerSideDataGrid.js @@ -12,11 +12,9 @@ function ServerSideDataGrid() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideDataGrid.tsx b/docs/data/data-grid/server-side-data/ServerSideDataGrid.tsx index 514b77b23bf9..498c1e067429 100644 --- a/docs/data/data-grid/server-side-data/ServerSideDataGrid.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideDataGrid.tsx @@ -12,11 +12,9 @@ function ServerSideDataGrid() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.js b/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.js index e059e7b98b00..43c742a5b90a 100644 --- a/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.js +++ b/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.js @@ -17,11 +17,9 @@ export default function ServerSideDataGridNoCache() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.tsx b/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.tsx index ca8a9fe14814..b62606d8985f 100644 --- a/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideDataGridNoCache.tsx @@ -17,11 +17,9 @@ export default function ServerSideDataGridNoCache() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.js b/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.js index 615cf4072a62..33d5403393f8 100644 --- a/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.js +++ b/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.js @@ -14,11 +14,9 @@ function ServerSideDataGridTTL() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.tsx b/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.tsx index 3f8f3525e78c..f33906bf70b6 100644 --- a/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideDataGridTTL.tsx @@ -18,11 +18,9 @@ function ServerSideDataGridTTL() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js index 1bf394ea930f..e04e012a2b7e 100644 --- a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js +++ b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js @@ -54,11 +54,9 @@ export default function ServerSideErrorHandling() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx index a030a8bf6e50..5889480270a0 100644 --- a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx @@ -60,11 +60,9 @@ export default function ServerSideErrorHandling() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeData.js b/docs/data/data-grid/server-side-data/ServerSideTreeData.js index ed0d0bc8e093..fdba621ef391 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeData.js +++ b/docs/data/data-grid/server-side-data/ServerSideTreeData.js @@ -32,12 +32,10 @@ export default function ServerSideTreeData() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeData.tsx b/docs/data/data-grid/server-side-data/ServerSideTreeData.tsx index 86a2e47fd1ef..2d0d1cfdea39 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeData.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideTreeData.tsx @@ -38,12 +38,10 @@ export default function ServerSideTreeData() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.js b/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.js index 920a1b2d5609..9b5d3bfcd710 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.js +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.js @@ -51,12 +51,10 @@ export default function ServerSideTreeDataCustomCache() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.tsx b/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.tsx index a3f2961d549f..fccc8862aef6 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataCustomCache.tsx @@ -59,12 +59,10 @@ export default function ServerSideTreeDataCustomCache() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js index 44da5bf0cab3..9c7154e46f4b 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js @@ -31,12 +31,10 @@ export default function ServerSideTreeDataErrorHandling() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx index fdd4deeb1771..e83ca6851fa0 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx @@ -36,12 +36,10 @@ export default function ServerSideTreeDataErrorHandling() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.js b/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.js index 9b61ceacdcf8..ec4471d6664d 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.js +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.js @@ -19,12 +19,10 @@ export default function ServerSideTreeDataGroupExpansion() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.tsx b/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.tsx index 9eb7fdd75ba4..f52c73fe470a 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataGroupExpansion.tsx @@ -27,12 +27,10 @@ export default function ServerSideTreeDataGroupExpansion() { () => ({ getRows: async (params) => { const urlParams = new URLSearchParams({ - paginationModel: encodeURIComponent( - JSON.stringify(params.paginationModel), - ), - filterModel: encodeURIComponent(JSON.stringify(params.filterModel)), - sortModel: encodeURIComponent(JSON.stringify(params.sortModel)), - groupKeys: encodeURIComponent(JSON.stringify(params.groupKeys)), + paginationModel: JSON.stringify(params.paginationModel), + filterModel: JSON.stringify(params.filterModel), + sortModel: JSON.stringify(params.sortModel), + groupKeys: JSON.stringify(params.groupKeys), }); const getRowsResponse = await fetchRows( `https://mui.com/x/api/data-grid?${urlParams.toString()}`, diff --git a/packages/x-data-grid-generator/src/hooks/useMockServer.ts b/packages/x-data-grid-generator/src/hooks/useMockServer.ts index cf38b1fa3c85..7f16fc41c647 100644 --- a/packages/x-data-grid-generator/src/hooks/useMockServer.ts +++ b/packages/x-data-grid-generator/src/hooks/useMockServer.ts @@ -50,7 +50,7 @@ function decodeParams(url: string): GridGetRowsParams { for (const [key, value] of array) { try { - decodedParams[key] = JSON.parse(decodeURIComponent(value)); + decodedParams[key] = JSON.parse(value); } catch (e) { decodedParams[key] = value; } From 35f6025ba220c207487f50fede17ef129e326371 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Wed, 14 Aug 2024 09:34:42 +0200 Subject: [PATCH 757/912] [charts] Support axis with single value (#14191) --- .../x-charts/src/BarChart/extremums.test.ts | 4 +- packages/x-charts/src/BarChart/extremums.ts | 18 +++----- .../x-charts/src/ChartsXAxis/ChartsXAxis.tsx | 11 +++-- .../x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 11 +++-- packages/x-charts/src/LineChart/extremums.ts | 43 +++++++------------ .../x-charts/src/ScatterChart/extremums.ts | 34 ++++++--------- .../CartesianProvider/getAxisExtremum.ts | 16 ++----- .../PluginProvider/ExtremumGetter.types.ts | 2 +- packages/x-charts/src/hooks/useTicks.ts | 7 ++- packages/x-charts/src/internals/isInfinity.ts | 3 ++ 10 files changed, 63 insertions(+), 86 deletions(-) create mode 100644 packages/x-charts/src/internals/isInfinity.ts diff --git a/packages/x-charts/src/BarChart/extremums.test.ts b/packages/x-charts/src/BarChart/extremums.test.ts index 6222d82357e8..798954aac8dc 100644 --- a/packages/x-charts/src/BarChart/extremums.test.ts +++ b/packages/x-charts/src/BarChart/extremums.test.ts @@ -55,8 +55,8 @@ describe('BarChart - extremums', () => { it('should correctly get Infinity when empty data', () => { const [x, y] = getExtremumX(buildData([], 'horizontal')); - expect(x).to.equal(null); - expect(y).to.equal(null); + expect(x).to.equal(Infinity); + expect(y).to.equal(-Infinity); }); }); }); diff --git a/packages/x-charts/src/BarChart/extremums.ts b/packages/x-charts/src/BarChart/extremums.ts index d6fb3f2e79d9..e0c6d0a2ba1f 100644 --- a/packages/x-charts/src/BarChart/extremums.ts +++ b/packages/x-charts/src/BarChart/extremums.ts @@ -22,19 +22,15 @@ const getValueExtremum: ExtremumGetter<'bar'> = (params) => { .reduce( (acc: ExtremumGetterResult, seriesId) => { const [seriesMin, seriesMax] = series[seriesId].stackedData?.reduce( - (seriesAcc, values) => [ - Math.min(...values, ...(seriesAcc[0] === null ? [] : [seriesAcc[0]])), - Math.max(...values, ...(seriesAcc[1] === null ? [] : [seriesAcc[1]])), - ], - series[seriesId].stackedData[0], - ) ?? [null, null]; + (seriesAcc, values) => { + return [Math.min(...values, seriesAcc[0]), Math.max(...values, seriesAcc[1])]; + }, + [Infinity, -Infinity], + ) ?? [Infinity, -Infinity]; - return [ - acc[0] === null ? seriesMin : Math.min(seriesMin, acc[0]), - acc[1] === null ? seriesMax : Math.max(seriesMax, acc[1]), - ]; + return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])]; }, - [null, null], + [Infinity, -Infinity], ); }; diff --git a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx index 52409925482d..b3e47a0dcff9 100644 --- a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx +++ b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx @@ -13,6 +13,8 @@ import { getMinXTranslation } from '../internals/geometry'; import { useMounted } from '../hooks/useMounted'; import { useDrawingArea } from '../hooks/useDrawingArea'; import { getWordsByLines } from '../internals/getWordsByLines'; +import { isInfinity } from '../internals/isInfinity'; +import { isBandScale } from '../internals/isBandScale'; const useUtilityClasses = (ownerState: ChartsXAxisProps & { theme: Theme }) => { const { classes, position } = ownerState; @@ -194,10 +196,11 @@ function ChartsXAxis(inProps: ChartsXAxisProps) { }); const domain = xScale.domain(); - if (domain.length === 0 || domain[0] === domain[1]) { - // Skip axis rendering if - // - the data is empty (for band and point axis) - // - No data is associated to the axis (other scale types) + const ordinalAxis = isBandScale(xScale); + // Skip axis rendering if no data is available + // - The domain is an empty array for band/point scales. + // - The domains contains Infinity for continuous scales. + if ((ordinalAxis && domain.length === 0) || (!ordinalAxis && domain.some(isInfinity))) { return null; } return ( diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index eee7a68a7d29..55c2ac3e08af 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -10,6 +10,8 @@ import { ChartsYAxisProps } from '../models/axis'; import { AxisRoot } from '../internals/components/AxisSharedComponents'; import { ChartsText, ChartsTextProps } from '../ChartsText'; import { getAxisUtilityClass } from '../ChartsAxis/axisClasses'; +import { isInfinity } from '../internals/isInfinity'; +import { isBandScale } from '../internals/isBandScale'; const useUtilityClasses = (ownerState: ChartsYAxisProps & { theme: Theme }) => { const { classes, position } = ownerState; @@ -145,10 +147,11 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { }); const domain = yScale.domain(); - if (domain.length === 0 || domain[0] === domain[1]) { - // Skip axis rendering if - // - the data is empty (for band and point axis) - // - No data is associated to the axis (other scale types) + const ordinalAxis = isBandScale(yScale); + // Skip axis rendering if no data is available + // - The domain is an empty array for band/point scales. + // - The domains contains Infinity for continuous scales. + if ((ordinalAxis && domain.length === 0) || (!ordinalAxis && domain.some(isInfinity))) { return null; } diff --git a/packages/x-charts/src/LineChart/extremums.ts b/packages/x-charts/src/LineChart/extremums.ts index e0fdcfac51c0..100c2677e6e3 100644 --- a/packages/x-charts/src/LineChart/extremums.ts +++ b/packages/x-charts/src/LineChart/extremums.ts @@ -1,7 +1,4 @@ -import { - ExtremumGetter, - ExtremumGetterResult, -} from '../context/PluginProvider/ExtremumGetter.types'; +import { ExtremumGetter } from '../context/PluginProvider/ExtremumGetter.types'; export const getExtremumX: ExtremumGetter<'line'> = (params) => { const { axis } = params; @@ -11,23 +8,20 @@ export const getExtremumX: ExtremumGetter<'line'> = (params) => { return [minX, maxX]; }; -type GetValuesTypes = (d: [number, number]) => [number, number]; +type GetValues = (d: [number, number]) => [number, number]; function getSeriesExtremums( - getValues: GetValuesTypes, + getValues: GetValues, stackedData: [number, number][], -): ExtremumGetterResult { - if (stackedData.length === 0) { - return [null, null]; - } - return stackedData.reduce((seriesAcc, stackedValue) => { - const [base, value] = getValues(stackedValue); - - if (seriesAcc[0] === null) { - return [Math.min(base, value), Math.max(base, value)] as [number, number]; - } - return [Math.min(base, value, seriesAcc[0]), Math.max(base, value, seriesAcc[1])]; - }, getValues(stackedData[0])); +): [number, number] { + return stackedData.reduce<[number, number]>( + (seriesAcc, stackedValue) => { + const [base, value] = getValues(stackedValue); + + return [Math.min(base, value, seriesAcc[0]), Math.max(base, value, seriesAcc[1])]; + }, + [Infinity, -Infinity], + ); } export const getExtremumY: ExtremumGetter<'line'> = (params) => { @@ -39,28 +33,21 @@ export const getExtremumY: ExtremumGetter<'line'> = (params) => { return yAxisId === axis.id || (isDefaultAxis && yAxisId === undefined); }) .reduce( - (acc: ExtremumGetterResult, seriesId) => { + (acc, seriesId) => { const { area, stackedData } = series[seriesId]; const isArea = area !== undefined; // Since this series is not used to display an area, we do not consider the base (the d[0]). - const getValues: GetValuesTypes = + const getValues: GetValues = isArea && axis.scaleType !== 'log' && typeof series[seriesId].baseline !== 'string' ? (d) => d : (d) => [d[1], d[1]]; const seriesExtremums = getSeriesExtremums(getValues, stackedData); - if (acc[0] === null) { - return seriesExtremums; - } - if (seriesExtremums[0] === null) { - return acc; - } - const [seriesMin, seriesMax] = seriesExtremums; return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])]; }, - [null, null], + [Infinity, -Infinity], ); }; diff --git a/packages/x-charts/src/ScatterChart/extremums.ts b/packages/x-charts/src/ScatterChart/extremums.ts index e63cad1b03b1..adb44d7e1729 100644 --- a/packages/x-charts/src/ScatterChart/extremums.ts +++ b/packages/x-charts/src/ScatterChart/extremums.ts @@ -7,12 +7,6 @@ const mergeMinMax = ( acc: ExtremumGetterResult, val: ExtremumGetterResult, ): ExtremumGetterResult => { - if (acc[0] === null || acc[1] === null) { - return val; - } - if (val[0] === null || val[1] === null) { - return acc; - } return [Math.min(acc[0], val[0]), Math.max(acc[1], val[1])]; }; @@ -24,18 +18,17 @@ export const getExtremumX: ExtremumGetter<'scatter'> = (params) => { const axisId = series[seriesId].xAxisId ?? series[seriesId].xAxisKey; return axisId === axis.id || (axisId === undefined && isDefaultAxis); }) - .reduce( - (acc: ExtremumGetterResult, seriesId) => { - const seriesMinMax = series[seriesId].data.reduce( + .reduce( + (acc, seriesId) => { + const seriesMinMax = series[seriesId].data.reduce( (accSeries: ExtremumGetterResult, { x }) => { - const val = [x, x] as ExtremumGetterResult; - return mergeMinMax(accSeries, val); + return mergeMinMax(accSeries, [x, x]); }, - [null, null], + [Infinity, -Infinity], ); return mergeMinMax(acc, seriesMinMax); }, - [null, null] as ExtremumGetterResult, + [Infinity, -Infinity], ); }; @@ -47,17 +40,16 @@ export const getExtremumY: ExtremumGetter<'scatter'> = (params) => { const axisId = series[seriesId].yAxisId ?? series[seriesId].yAxisKey; return axisId === axis.id || (axisId === undefined && isDefaultAxis); }) - .reduce( - (acc: ExtremumGetterResult, seriesId) => { - const seriesMinMax = series[seriesId].data.reduce( - (accSeries: ExtremumGetterResult, { y }) => { - const val = [y, y] as ExtremumGetterResult; - return mergeMinMax(accSeries, val); + .reduce( + (acc, seriesId) => { + const seriesMinMax = series[seriesId].data.reduce( + (accSeries, { y }) => { + return mergeMinMax(accSeries, [y, y]); }, - [null, null], + [Infinity, -Infinity], ); return mergeMinMax(acc, seriesMinMax); }, - [null, null] as ExtremumGetterResult, + [Infinity, -Infinity], ); }; diff --git a/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts b/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts index be7839633c47..2785a46c4abf 100644 --- a/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts +++ b/packages/x-charts/src/context/CartesianProvider/getAxisExtremum.ts @@ -18,19 +18,9 @@ const axisExtremumCallback = ( series, axis, isDefaultAxis, - }) ?? [null, null]; + }) ?? [Infinity, -Infinity]; - const [minData, maxData] = acc; - - if (minData === null || maxData === null) { - return [minChartTypeData!, maxChartTypeData!]; - } - - if (minChartTypeData === null || maxChartTypeData === null) { - return [minData, maxData]; - } - - return [Math.min(minChartTypeData, minData), Math.max(maxChartTypeData, maxData)]; + return [Math.min(minChartTypeData, acc[0]), Math.max(maxChartTypeData, acc[1])]; }; export const getAxisExtremum = ( @@ -44,6 +34,6 @@ export const getAxisExtremum = ( return charTypes.reduce( (acc, charType) => axisExtremumCallback(acc, charType, axis, getters, isDefaultAxis, formattedSeries), - [null, null], + [Infinity, -Infinity], ); }; diff --git a/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts b/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts index a1cda8d39331..bd6b0bb709a9 100644 --- a/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts +++ b/packages/x-charts/src/context/PluginProvider/ExtremumGetter.types.ts @@ -16,7 +16,7 @@ type ExtremumGetterParams = { isDefaultAxis: boolean; }; -export type ExtremumGetterResult = [number, number] | [null, null]; +export type ExtremumGetterResult = [number, number]; export type ExtremumGetter = ( params: ExtremumGetterParams, diff --git a/packages/x-charts/src/hooks/useTicks.ts b/packages/x-charts/src/hooks/useTicks.ts index 4b41fe74eeab..3cc08f9a80c6 100644 --- a/packages/x-charts/src/hooks/useTicks.ts +++ b/packages/x-charts/src/hooks/useTicks.ts @@ -1,6 +1,7 @@ import * as React from 'react'; import { AxisConfig, D3Scale } from '../models/axis'; import { isBandScale } from '../internals/isBandScale'; +import { isInfinity } from '../internals/isInfinity'; export interface TickParams { /** @@ -145,8 +146,10 @@ export function useTicks( })); } - if (scale.domain().length === 0 || scale.domain()[0] === scale.domain()[1]) { - // The axis should not be visible, so ticks should also be hidden. + const domain = scale.domain(); + // Skip axis rendering if no data is available + // - The domains contains Infinity for continuous scales. + if (domain.some(isInfinity)) { return []; } diff --git a/packages/x-charts/src/internals/isInfinity.ts b/packages/x-charts/src/internals/isInfinity.ts new file mode 100644 index 000000000000..d09834c55e40 --- /dev/null +++ b/packages/x-charts/src/internals/isInfinity.ts @@ -0,0 +1,3 @@ +export function isInfinity(v: any): v is number { + return typeof v === 'number' && !Number.isFinite(v); +} From a091eeb84deb282dc4e46d2c651704f3237d9d45 Mon Sep 17 00:00:00 2001 From: Jan Potoms <2109932+Janpot@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:17:35 +0200 Subject: [PATCH 758/912] [core] Bump monorepo (#14141) Co-authored-by: alex Co-authored-by: Lukas --- .eslintrc.js | 77 +++++++++++-------- docs/.link-check-errors.txt | 5 ++ docs/data/charts-component-api-pages.ts | 2 +- .../data/charts/pie-demo/OnSeriesItemClick.js | 3 +- .../charts/pie-demo/OnSeriesItemClick.tsx | 3 +- .../data/charts/scatter/VoronoiInteraction.js | 12 ++- .../charts/scatter/VoronoiInteraction.tsx | 12 ++- docs/data/data-grid-component-api-pages.ts | 2 +- .../RowGroupingChildRowCount.js | 2 +- .../RowGroupingChildRowCount.tsx | 2 +- docs/data/date-pickers-component-api-pages.ts | 2 +- docs/data/date-pickers/lifecycle/lifecycle.md | 4 +- docs/data/pages.ts | 2 +- docs/data/tree-view-component-api-pages.ts | 2 +- docs/docs-env.d.ts | 1 + docs/pages/_document.js | 2 +- .../components/overview/DateLibraries.tsx | 1 - .../overview/Internationalization.tsx | 13 ++-- .../modules/components/overview/Keyboard.tsx | 1 - .../src/modules/components/overview/XLogo.tsx | 1 - .../overview/mainDemo/DigitalClock.tsx | 5 +- docs/tsconfig.json | 8 +- package.json | 2 +- pnpm-lock.yaml | 24 +++--- scripts/buildApiDocs/chartsSettings/index.ts | 2 +- scripts/buildApiDocs/gridSettings/index.ts | 2 +- scripts/buildApiDocs/pickersSettings/index.ts | 2 +- .../buildApiDocs/treeViewSettings/index.ts | 2 +- tsconfig.json | 5 +- 29 files changed, 111 insertions(+), 90 deletions(-) create mode 100644 docs/docs-env.d.ts diff --git a/.eslintrc.js b/.eslintrc.js index 1227ab308c00..7242c7ae0a17 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -43,6 +43,17 @@ const addReactCompilerRule = (packagesNames, isEnabled) => }, })); +const RESTRICTED_TOP_LEVEL_IMPORTS = [ + '@mui/material', + '@mui/x-charts', + '@mui/x-charts-pro', + '@mui/x-codemod', + '@mui/x-date-pickers', + '@mui/x-date-pickers-pro', + '@mui/x-tree-view', + '@mui/x-tree-view-pro', +]; + // TODO move this helper to @mui/monorepo/.eslintrc // It needs to know about the parent "no-restricted-imports" to not override them. const buildPackageRestrictedImports = (packageName, root, allowRootImports = true) => [ @@ -85,43 +96,16 @@ const buildPackageRestrictedImports = (packageName, root, allowRootImports = tru files: [ `packages/${root}/src/**/*.test{.ts,.tsx,.js}`, `packages/${root}/src/**/*.spec{.ts,.tsx,.js}`, - 'docs/data/**/*{.ts,.tsx,.js}', ], excludedFiles: ['*.d.ts'], rules: { 'no-restricted-imports': [ 'error', { - paths: [ - { - name: '@mui/x-charts', - message: 'Use deeper import instead', - }, - { - name: '@mui/x-charts-pro', - message: 'Use deeper import instead', - }, - { - name: '@mui/x-codemod', - message: 'Use deeper import instead', - }, - { - name: '@mui/x-date-pickers', - message: 'Use deeper import instead', - }, - { - name: '@mui/x-date-pickers-pro', - message: 'Use deeper import instead', - }, - { - name: '@mui/x-tree-view', - message: 'Use deeper import instead', - }, - { - name: '@mui/x-tree-view-pro', - message: 'Use deeper import instead', - }, - ], + paths: RESTRICTED_TOP_LEVEL_IMPORTS.map((name) => ({ + name, + message: 'Use deeper import instead', + })), }, ], }, @@ -269,6 +253,37 @@ module.exports = { ], }, }, + { + files: ['docs/**/*{.ts,.tsx,.js}'], + excludedFiles: ['*.d.ts'], + rules: { + 'no-restricted-imports': [ + 'error', + { + paths: RESTRICTED_TOP_LEVEL_IMPORTS.map((name) => ({ + name, + message: 'Use deeper import instead', + })), + patterns: [ + { + group: [ + '@mui/*/*/*', + // Allow any import depth with any internal packages + '!@mui/internal-*/**', + + // Exceptions (QUESTION: Keep or remove?) + '!@mui/x-date-pickers/internals/demo', + '!@mui/x-tree-view/hooks/useTreeViewApiRef', + // TODO: export this from /ButtonBase in core. This will break after we move to package exports + '!@mui/material/ButtonBase/TouchRipple', + ], + message: 'Use less deep import instead', + }, + ], + }, + ], + }, + }, ...buildPackageRestrictedImports('@mui/x-charts', 'x-charts', false), ...buildPackageRestrictedImports('@mui/x-charts-pro', 'x-charts-pro', false), ...buildPackageRestrictedImports('@mui/x-codemod', 'x-codemod', false), diff --git a/docs/.link-check-errors.txt b/docs/.link-check-errors.txt index 6ecc503cc78a..a14a38751967 100644 --- a/docs/.link-check-errors.txt +++ b/docs/.link-check-errors.txt @@ -1,2 +1,7 @@ Broken links found by `docs:link-check` that exist: +- https://mui.com/material-ui/customization/css-theme-variables/configuration/#advanced-configuration +- https://mui.com/material-ui/customization/css-theme-variables/configuration/#changing-variable-prefixes +- https://mui.com/material-ui/customization/theme-components/#creating-new-component-variants +- https://mui.com/material-ui/customization/theme-components/#overrides-based-on-props +- https://mui.com/material-ui/react-grid2/#whats-changed diff --git a/docs/data/charts-component-api-pages.ts b/docs/data/charts-component-api-pages.ts index aaaa09657dbe..2e1ad7d8eb6f 100644 --- a/docs/data/charts-component-api-pages.ts +++ b/docs/data/charts-component-api-pages.ts @@ -1,4 +1,4 @@ -import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; +import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = [ { diff --git a/docs/data/charts/pie-demo/OnSeriesItemClick.js b/docs/data/charts/pie-demo/OnSeriesItemClick.js index fadc705a390c..b6a09e0c3185 100644 --- a/docs/data/charts/pie-demo/OnSeriesItemClick.js +++ b/docs/data/charts/pie-demo/OnSeriesItemClick.js @@ -1,7 +1,8 @@ import * as React from 'react'; import { PieChart } from '@mui/x-charts/PieChart'; -import { Typography, Stack } from '@mui/material'; +import Typography from '@mui/material/Typography'; +import Stack from '@mui/material/Stack'; const items = [ { value: 10, label: 'Series A ( no Id )' }, diff --git a/docs/data/charts/pie-demo/OnSeriesItemClick.tsx b/docs/data/charts/pie-demo/OnSeriesItemClick.tsx index 2a3bb8c59293..297b548ee4a5 100644 --- a/docs/data/charts/pie-demo/OnSeriesItemClick.tsx +++ b/docs/data/charts/pie-demo/OnSeriesItemClick.tsx @@ -1,7 +1,8 @@ import * as React from 'react'; import { PieChart } from '@mui/x-charts/PieChart'; import { PieItemIdentifier, DefaultizedPieValueType } from '@mui/x-charts/models'; -import { Typography, Stack } from '@mui/material'; +import Typography from '@mui/material/Typography'; +import Stack from '@mui/material/Stack'; const items = [ { value: 10, label: 'Series A ( no Id )' }, diff --git a/docs/data/charts/scatter/VoronoiInteraction.js b/docs/data/charts/scatter/VoronoiInteraction.js index a5b3b119144f..450b16d5d166 100644 --- a/docs/data/charts/scatter/VoronoiInteraction.js +++ b/docs/data/charts/scatter/VoronoiInteraction.js @@ -1,11 +1,9 @@ import * as React from 'react'; -import { - Stack, - FormControlLabel, - Checkbox, - Typography, - Slider, -} from '@mui/material'; +import Stack from '@mui/material/Stack'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import Typography from '@mui/material/Typography'; +import Slider from '@mui/material/Slider'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; const data = [ diff --git a/docs/data/charts/scatter/VoronoiInteraction.tsx b/docs/data/charts/scatter/VoronoiInteraction.tsx index 0e3f37c196a1..a654f22a66de 100644 --- a/docs/data/charts/scatter/VoronoiInteraction.tsx +++ b/docs/data/charts/scatter/VoronoiInteraction.tsx @@ -1,11 +1,9 @@ import * as React from 'react'; -import { - Stack, - FormControlLabel, - Checkbox, - Typography, - Slider, -} from '@mui/material'; +import Stack from '@mui/material/Stack'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import Typography from '@mui/material/Typography'; +import Slider from '@mui/material/Slider'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; const data = [ diff --git a/docs/data/data-grid-component-api-pages.ts b/docs/data/data-grid-component-api-pages.ts index b6e11dc6c69b..5aed416321e1 100644 --- a/docs/data/data-grid-component-api-pages.ts +++ b/docs/data/data-grid-component-api-pages.ts @@ -1,4 +1,4 @@ -import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; +import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = [ { diff --git a/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.js b/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.js index 837ea2546b6b..ea82154282ba 100644 --- a/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.js +++ b/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.js @@ -8,7 +8,7 @@ import { gridFilteredDescendantRowCountSelector, } from '@mui/x-data-grid-premium'; import { useMovieData } from '@mui/x-data-grid-generator'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; function CustomFooterRowCount(props) { const { visibleRowCount: topLevelRowCount } = props; diff --git a/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.tsx b/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.tsx index 514aa8358b3c..c5b6e5e0d745 100644 --- a/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.tsx +++ b/docs/data/data-grid/recipes-row-grouping/RowGroupingChildRowCount.tsx @@ -9,7 +9,7 @@ import { gridFilteredDescendantRowCountSelector, } from '@mui/x-data-grid-premium'; import { useMovieData } from '@mui/x-data-grid-generator'; -import { Box } from '@mui/material'; +import Box from '@mui/material/Box'; function CustomFooterRowCount(props: GridRowCountProps) { const { visibleRowCount: topLevelRowCount } = props; diff --git a/docs/data/date-pickers-component-api-pages.ts b/docs/data/date-pickers-component-api-pages.ts index 739009bd7113..f7d4b339ac4f 100644 --- a/docs/data/date-pickers-component-api-pages.ts +++ b/docs/data/date-pickers-component-api-pages.ts @@ -1,4 +1,4 @@ -import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; +import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = [ { diff --git a/docs/data/date-pickers/lifecycle/lifecycle.md b/docs/data/date-pickers/lifecycle/lifecycle.md index d118eb385817..b5ee50f1d828 100644 --- a/docs/data/date-pickers/lifecycle/lifecycle.md +++ b/docs/data/date-pickers/lifecycle/lifecycle.md @@ -141,7 +141,7 @@ You can find more information [in the dedicated doc section](/x/react-date-picke The `onChange` callback is called whenever the current value changes. -If you don't want to listen to the intermediary steps, consider using the [`onAccept` prop](/x/react-date-pickers/lifecycle/#lifecycle-on-pickers-onaccept) instead. +If you don't want to listen to the intermediary steps, consider using the [`onAccept` prop](/x/react-date-pickers/lifecycle/#lifecycle-on-pickers-quot-onaccept-quot) instead. ```tsx setValue(value)} /> @@ -392,6 +392,6 @@ In such a case, the recommended UI is to add a button for validating the form. If for some reason, you need to send the data to the server without having the user pressing a validation button, you can debounce the `onChange` as follows. The following demo shows how to extend the Date Field component by adding an `onAccept` prop, which is a debounced version of `onChange`. -You can find more information about the `onAccept` prop [in the dedicated doc section](/x/react-date-pickers/lifecycle/#lifecycle-on-pickers-onaccept). +You can find more information about the `onAccept` prop [in the dedicated doc section](/x/react-date-pickers/lifecycle/#lifecycle-on-pickers-quot-onaccept-quot). {{"demo": "ServerInteraction.js"}} diff --git a/docs/data/pages.ts b/docs/data/pages.ts index 8fe11f180a26..763c8eb6d293 100644 --- a/docs/data/pages.ts +++ b/docs/data/pages.ts @@ -1,4 +1,4 @@ -import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; +import type { MuiPage } from 'docs/src/MuiPage'; import dataGridComponentApi from './data-grid-component-api-pages'; import pickersComponentApi from './date-pickers-component-api-pages'; import chartsComponentApi from './charts-component-api-pages'; diff --git a/docs/data/tree-view-component-api-pages.ts b/docs/data/tree-view-component-api-pages.ts index 61b41b874045..c46698f0ed3d 100644 --- a/docs/data/tree-view-component-api-pages.ts +++ b/docs/data/tree-view-component-api-pages.ts @@ -1,4 +1,4 @@ -import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; +import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = [ { diff --git a/docs/docs-env.d.ts b/docs/docs-env.d.ts new file mode 100644 index 000000000000..879a2a3ad531 --- /dev/null +++ b/docs/docs-env.d.ts @@ -0,0 +1 @@ +import '@types/react-docgen'; diff --git a/docs/pages/_document.js b/docs/pages/_document.js index f9dfc9a7f73a..d3958152942a 100644 --- a/docs/pages/_document.js +++ b/docs/pages/_document.js @@ -1,3 +1,3 @@ -import MyDocument from '@mui/monorepo/docs/pages/_document'; +import MyDocument from 'docs/pages/_document'; export default MyDocument; diff --git a/docs/src/modules/components/overview/DateLibraries.tsx b/docs/src/modules/components/overview/DateLibraries.tsx index 139365eac622..e04f459e44c3 100644 --- a/docs/src/modules/components/overview/DateLibraries.tsx +++ b/docs/src/modules/components/overview/DateLibraries.tsx @@ -1,5 +1,4 @@ import * as React from 'react'; -// @ts-ignore import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; import { HighlightedCode } from '@mui/docs/HighlightedCode'; import Box from '@mui/material/Box'; diff --git a/docs/src/modules/components/overview/Internationalization.tsx b/docs/src/modules/components/overview/Internationalization.tsx index 5f5353a4e952..a78b12fb5349 100644 --- a/docs/src/modules/components/overview/Internationalization.tsx +++ b/docs/src/modules/components/overview/Internationalization.tsx @@ -5,7 +5,6 @@ import 'dayjs/locale/zh-cn'; import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; import { styled, createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; -// @ts-ignore import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; @@ -16,13 +15,11 @@ import MuiToggleButtonGroup, { toggleButtonGroupClasses } from '@mui/material/To import MuiToggleButton from '@mui/material/ToggleButton'; import Typography from '@mui/material/Typography'; import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; -import { - DateTimeRangePicker, - DateTimeField, - DatePicker, - DateTimeValidationError, - DateCalendar, -} from '@mui/x-date-pickers-pro'; +import { DateTimeRangePicker } from '@mui/x-date-pickers-pro/DateTimeRangePicker'; +import { DateTimeField } from '@mui/x-date-pickers/DateTimeField'; +import { DatePicker } from '@mui/x-date-pickers/DatePicker'; +import { DateTimeValidationError } from '@mui/x-date-pickers/models'; +import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; import { AdapterDayjs } from '@mui/x-date-pickers-pro/AdapterDayjs'; import { LocalizationProvider } from '@mui/x-date-pickers-pro/LocalizationProvider'; import { roRO, enUS, zhCN } from '@mui/x-date-pickers-pro/locales'; diff --git a/docs/src/modules/components/overview/Keyboard.tsx b/docs/src/modules/components/overview/Keyboard.tsx index a587bf3f0164..78ab99afc94f 100644 --- a/docs/src/modules/components/overview/Keyboard.tsx +++ b/docs/src/modules/components/overview/Keyboard.tsx @@ -1,7 +1,6 @@ import * as React from 'react'; import clsx from 'clsx'; import dayjs from 'dayjs'; -// @ts-ignore import SectionHeadline from 'docs/src/components/typography/SectionHeadline'; import Button from '@mui/material/Button'; import Divider from '@mui/material/Divider'; diff --git a/docs/src/modules/components/overview/XLogo.tsx b/docs/src/modules/components/overview/XLogo.tsx index 472fb773d5bb..f8271a15362d 100644 --- a/docs/src/modules/components/overview/XLogo.tsx +++ b/docs/src/modules/components/overview/XLogo.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import Typography from '@mui/material/Typography'; -// @ts-ignore import IconImage from 'docs/src/components/icon/IconImage'; export default function XLogo() { diff --git a/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx b/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx index a73e74007fca..d7c96867004b 100644 --- a/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx +++ b/docs/src/modules/components/overview/mainDemo/DigitalClock.tsx @@ -4,7 +4,7 @@ import { styled } from '@mui/material/styles'; import Card from '@mui/material/Card'; import Paper from '@mui/material/Paper'; import Typography from '@mui/material/Typography'; -import { StaticTimePicker } from '@mui/x-date-pickers/StaticTimePicker'; +import { StaticTimePicker, StaticTimePickerProps } from '@mui/x-date-pickers/StaticTimePicker'; import { PickersLayoutProps, usePickerLayout, @@ -14,7 +14,6 @@ import { } from '@mui/x-date-pickers/PickersLayout'; import { renderMultiSectionDigitalClockTimeView } from '@mui/x-date-pickers/timeViewRenderers'; import { TimeView } from '@mui/x-date-pickers/models'; -import { TimePickerViewRenderers } from '@mui/x-date-pickers/TimePicker/shared'; const StyledLayout = styled(PickersLayoutRoot)({ overflow: 'auto', @@ -58,7 +57,7 @@ export default function DigitalClock() { hours: renderMultiSectionDigitalClockTimeView, minutes: renderMultiSectionDigitalClockTimeView, meridiem: renderMultiSectionDigitalClockTimeView, - } as TimePickerViewRenderers + } as StaticTimePickerProps['viewRenderers'] } /> diff --git a/docs/tsconfig.json b/docs/tsconfig.json index a552a39f3001..197557845229 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -10,6 +10,12 @@ "esModuleInterop": true, "incremental": true }, - "include": ["pages/**/*.ts*", "data/**/*", "src/modules/components/**/*", "next.config.mjs"], + "include": [ + "pages/**/*.ts*", + "data/**/*", + "src/modules/components/**/*", + "next.config.mjs", + "docs-env.d.ts" + ], "exclude": ["docs/.next", "docs/export", "pages/playground"] } diff --git a/package.json b/package.json index d914134ab1e6..581a485e712a 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@mui/internal-markdown": "^1.0.9", "@mui/internal-test-utils": "^1.0.7", "@mui/material": "^5.16.5", - "@mui/monorepo": "github:mui/material-ui#4a82b6b0e0395db8fa0a0d49b6b76de4516b1579", + "@mui/monorepo": "github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4", "@mui/utils": "^5.16.5", "@next/eslint-plugin-next": "14.2.5", "@octokit/plugin-retry": "^7.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 061c818d1f70..a9b9a4d15bd3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': - specifier: github:mui/material-ui#4a82b6b0e0395db8fa0a0d49b6b76de4516b1579 - version: https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579(encoding@0.1.13) + specifier: github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4 + version: https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4(encoding@0.1.13) '@mui/utils': specifier: ^5.16.5 version: 5.16.5(@types/react@18.3.3)(react@18.3.1) @@ -3067,10 +3067,10 @@ packages: '@types/react': optional: true - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579': - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579} - version: 6.0.0-beta.4 - engines: {pnpm: 9.5.0} + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4': + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4} + version: 6.0.0-beta.5 + engines: {pnpm: 9.6.0} '@mui/private-theming@5.16.5': resolution: {integrity: sha512-CSLg0YkpDqg0aXOxtjo3oTMd3XWMxvNb5d0v4AYVqwOltU8q6GvnZjhWyCLjGSCrcgfwm6/VDjaKLPlR14wxIA==} @@ -6424,8 +6424,8 @@ packages: resolution: {integrity: sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==} engines: {node: '>=14'} - google-auth-library@9.12.0: - resolution: {integrity: sha512-5pWjpxJMNJ5UTuhK7QPD5KFPsbosWkX4ajMDeZwXllTtwwqeiIzPWbHIddkLBkkn0mUPboTmukT5rd30Ec9igQ==} + google-auth-library@9.13.0: + resolution: {integrity: sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==} engines: {node: '>=14'} googleapis-common@7.0.1: @@ -11916,13 +11916,13 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/4a82b6b0e0395db8fa0a0d49b6b76de4516b1579(encoding@0.1.13)': + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4(encoding@0.1.13)': dependencies: '@googleapis/sheets': 8.0.0(encoding@0.1.13) '@netlify/functions': 2.8.1 '@slack/bolt': 3.19.0 execa: 9.3.0 - google-auth-library: 9.12.0(encoding@0.1.13) + google-auth-library: 9.13.0(encoding@0.1.13) transitivePeerDependencies: - bufferutil - debug @@ -15972,7 +15972,7 @@ snapshots: transitivePeerDependencies: - supports-color - google-auth-library@9.12.0(encoding@0.1.13): + google-auth-library@9.13.0(encoding@0.1.13): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 @@ -15988,7 +15988,7 @@ snapshots: dependencies: extend: 3.0.2 gaxios: 6.1.1(encoding@0.1.13) - google-auth-library: 9.12.0(encoding@0.1.13) + google-auth-library: 9.13.0(encoding@0.1.13) qs: 6.11.2 url-template: 2.0.8 uuid: 9.0.1 diff --git a/scripts/buildApiDocs/chartsSettings/index.ts b/scripts/buildApiDocs/chartsSettings/index.ts index 7f6dc458f728..5b4fae6ec222 100644 --- a/scripts/buildApiDocs/chartsSettings/index.ts +++ b/scripts/buildApiDocs/chartsSettings/index.ts @@ -31,7 +31,7 @@ export const projectChartsSettings: ProjectSettings = { .filter((page): page is PageType => page !== null) .sort((a: PageType, b: PageType) => a.title.localeCompare(b.title)); - return `import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; + return `import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = ${JSON.stringify(pages, null, 2)}; export default apiPages; diff --git a/scripts/buildApiDocs/gridSettings/index.ts b/scripts/buildApiDocs/gridSettings/index.ts index 43c8d55f30b7..b5890318ade6 100644 --- a/scripts/buildApiDocs/gridSettings/index.ts +++ b/scripts/buildApiDocs/gridSettings/index.ts @@ -31,7 +31,7 @@ export const projectGridSettings: ProjectSettings = { .filter((page): page is PageType => page !== null) .sort((a: PageType, b: PageType) => a.title.localeCompare(b.title)); - return `import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; + return `import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = ${JSON.stringify(pages, null, 2)}; export default apiPages; diff --git a/scripts/buildApiDocs/pickersSettings/index.ts b/scripts/buildApiDocs/pickersSettings/index.ts index dda8e7a33986..e34ef1e9057e 100644 --- a/scripts/buildApiDocs/pickersSettings/index.ts +++ b/scripts/buildApiDocs/pickersSettings/index.ts @@ -31,7 +31,7 @@ export const projectPickersSettings: ProjectSettings = { .filter((page): page is PageType => page !== null) .sort((a: PageType, b: PageType) => a.title.localeCompare(b.title)); - return `import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; + return `import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = ${JSON.stringify(pages, null, 2)}; export default apiPages; diff --git a/scripts/buildApiDocs/treeViewSettings/index.ts b/scripts/buildApiDocs/treeViewSettings/index.ts index f7ad936c1b1d..d0202935db0e 100644 --- a/scripts/buildApiDocs/treeViewSettings/index.ts +++ b/scripts/buildApiDocs/treeViewSettings/index.ts @@ -31,7 +31,7 @@ export const projectTreeSettings: ProjectSettings = { .filter((page): page is PageType => page !== null) .sort((a: PageType, b: PageType) => a.title.localeCompare(b.title)); - return `import type { MuiPage } from '@mui/monorepo/docs/src/MuiPage'; + return `import type { MuiPage } from 'docs/src/MuiPage'; const apiPages: MuiPage[] = ${JSON.stringify(pages, null, 2)}; export default apiPages; diff --git a/tsconfig.json b/tsconfig.json index f0ae11e4e147..a83b65a5e4b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -38,11 +38,14 @@ "@mui/docs": ["./node_modules/@mui/monorepo/packages/mui-docs/src"], "@mui/docs/*": ["./node_modules/@mui/monorepo/packages/mui-docs/src/*"], "@mui-internal/api-docs-builder": ["./node_modules/@mui/monorepo/packages/api-docs-builder"], + "@types/react-docgen": [ + "./node_modules/@mui/monorepo/packages/react-docgen-types/index.d.ts" + ], "@mui-internal/api-docs-builder/*": [ "./node_modules/@mui/monorepo/packages/api-docs-builder/*" ], "test/*": ["./test/*"], - "docs/*": ["./node_modules/@mui/monorepo/docs"], + "docs/*": ["./node_modules/@mui/monorepo/docs/*"], "docsx/*": ["./docs/*"] } }, From 496d64eac8400f6f06ba94886b7ae3695a7303c8 Mon Sep 17 00:00:00 2001 From: Rajat Date: Wed, 14 Aug 2024 14:54:45 +0530 Subject: [PATCH 759/912] [data grid] Fix CSV export for `null` and `undefined` values (#14166) Co-authored-by: Armin Mehinovic --- .../export/serializers/csvSerializer.ts | 9 ++++--- .../src/tests/export.DataGrid.test.tsx | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts b/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts index 0589aba5d346..385b5a41cf43 100644 --- a/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts +++ b/packages/x-data-grid/src/hooks/features/export/serializers/csvSerializer.ts @@ -6,6 +6,9 @@ import type { GridApiCommunity } from '../../../../models/api/gridApiCommunity'; import { warnOnce } from '../../../../internals/utils/warning'; function sanitizeCellValue(value: unknown, csvOptions: CSVOptions): string { + if (value === null || value === undefined) { + return ''; + } const valueStr = typeof value === 'string' ? value : `${value}`; if (csvOptions.shouldAppendQuotes || csvOptions.escapeFormulas) { @@ -58,7 +61,7 @@ type CSVOptions = Required< >; type CSVRowOptions = { - sanitizeCellValue?: (value: any, csvOptions: CSVOptions) => any; + sanitizeCellValue?: (value: unknown, csvOptions: CSVOptions) => string; csvOptions: CSVOptions; }; class CSVRow { @@ -76,9 +79,7 @@ class CSVRow { if (!this.isEmpty) { this.rowString += this.options.csvOptions.delimiter; } - if (value === null || value === undefined) { - this.rowString += ''; - } else if (typeof this.options.sanitizeCellValue === 'function') { + if (typeof this.options.sanitizeCellValue === 'function') { this.rowString += this.options.sanitizeCellValue(value, this.options.csvOptions); } else { this.rowString += value; diff --git a/packages/x-data-grid/src/tests/export.DataGrid.test.tsx b/packages/x-data-grid/src/tests/export.DataGrid.test.tsx index 76852db95927..fd39af7dd1ad 100644 --- a/packages/x-data-grid/src/tests/export.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/export.DataGrid.test.tsx @@ -117,6 +117,31 @@ describe(' - Export', () => { ].join('\r\n'), ); }); + + it('should export `undefined` and `null` values as blank', async () => { + render( +
    + +
    , + ); + fireEvent.click(screen.getByRole('button', { name: 'Export' })); + clock.runToLast(); + expect(screen.queryByRole('menu')).not.to.equal(null); + fireEvent.click(screen.getByRole('menuitem', { name: 'Download as CSV' })); + expect(spyCreateObjectURL.callCount).to.equal(1); + const csv = await spyCreateObjectURL.lastCall.firstArg.text(); + + expect(csv).to.equal(['name', 'Name', '', '', '1234'].join('\r\n')); + }); }); describe('component: GridToolbarExport', () => { From c4568a91de4c2ad52df76bf6d7ff0c3160b4cd2c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 13:24:59 +0200 Subject: [PATCH 760/912] Bump rimraf to ^5.0.10 (#14165) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 32 ++++++++++----------- 17 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/package.json b/docs/package.json index 92f5045e333c..f478d034cb0b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -91,7 +91,7 @@ "react-runner": "^1.0.5", "react-simple-code-editor": "^0.14.1", "recast": "^0.23.9", - "rimraf": "^5.0.9", + "rimraf": "^5.0.10", "rxjs": "^7.8.1", "styled-components": "^6.1.12", "stylis": "^4.3.2", diff --git a/package.json b/package.json index 581a485e712a..bc9d7037fb1f 100644 --- a/package.json +++ b/package.json @@ -178,7 +178,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "remark": "^13.0.0", - "rimraf": "^5.0.9", + "rimraf": "^5.0.10", "serve": "^14.2.3", "sinon": "^16.1.3", "stream-browserify": "^3.0.0", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 079d1c21fa1c..a66311a70ab5 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -70,7 +70,7 @@ "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index a78dd99c1241..4adbe27031de 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -52,7 +52,7 @@ "d3-time-format": "^4.1.0", "execa": "^9.3.0", "internmap": "^2.0.3", - "rimraf": "^5.0.8" + "rimraf": "^5.0.10" }, "publishConfig": { "access": "public" diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 6c57b507e823..149845756463 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -69,7 +69,7 @@ "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", "csstype": "^3.1.3", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 6bd85dc1f6d6..ccb1407f2943 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -42,7 +42,7 @@ "@types/jscodeshift": "^0.11.11", "dayjs": "^1.11.11", "moment-timezone": "^0.5.45", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "sideEffects": false, "publishConfig": { diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 7cbdb21d2914..140498fcbe29 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -41,7 +41,7 @@ }, "devDependencies": { "@types/chance": "^1.1.6", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "peerDependencies": { "@emotion/react": "^11.9.0", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 680b3fff464e..eaf9b1a9934a 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -75,7 +75,7 @@ "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 4a91fbf43a70..7d1630540e9f 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -72,7 +72,7 @@ "devDependencies": { "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 0a49edebd274..96cc40b20f2f 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -75,7 +75,7 @@ "@mui/joy": "^5.0.0-beta.48", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 182b43afdef2..2e8b16d52eff 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -103,7 +103,7 @@ "dayjs": "^1.11.11", "luxon": "^3.4.4", "moment": "^2.30.1", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 3f6e479a6d38..0408c930536c 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -110,7 +110,7 @@ "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", "moment-timezone": "^0.5.45", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 7386b4a7795d..6f70aea6396a 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -49,7 +49,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.7", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 2684ce59039b..24aa81d9aa66 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.7", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index d9f39b493099..78a487f8175d 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -72,7 +72,7 @@ "devDependencies": { "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index c2f079a791c4..4cdfb30ea38d 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -70,7 +70,7 @@ "devDependencies": { "@mui/internal-test-utils": "^1.0.7", "@types/prop-types": "^15.7.12", - "rimraf": "^5.0.9" + "rimraf": "^5.0.10" }, "engines": { "node": ">=14.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9b9a4d15bd3..85be811d3c8f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -354,7 +354,7 @@ importers: specifier: ^13.0.0 version: 13.0.0 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 serve: specifier: ^14.2.3 @@ -615,7 +615,7 @@ importers: specifier: ^0.23.9 version: 0.23.9 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 rxjs: specifier: ^7.8.1 @@ -761,7 +761,7 @@ importers: specifier: ^3.1.3 version: 3.1.3 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -826,7 +826,7 @@ importers: specifier: ^3.1.3 version: 3.1.3 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -912,7 +912,7 @@ importers: specifier: ^2.0.3 version: 2.0.3 rimraf: - specifier: ^5.0.8 + specifier: ^5.0.10 version: 5.0.10 packages/x-codemod: @@ -943,7 +943,7 @@ importers: specifier: ^0.5.45 version: 0.5.45 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -999,7 +999,7 @@ importers: specifier: ^15.7.12 version: 15.7.12 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1040,7 +1040,7 @@ importers: specifier: ^1.1.6 version: 1.1.6 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1108,7 +1108,7 @@ importers: specifier: ^2.30.0 version: 2.30.0 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1167,7 +1167,7 @@ importers: specifier: ^15.7.12 version: 15.7.12 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1250,7 +1250,7 @@ importers: specifier: ^0.5.45 version: 0.5.45 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1327,7 +1327,7 @@ importers: specifier: ^2.30.1 version: 2.30.1 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1347,7 +1347,7 @@ importers: specifier: ^1.0.7 version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1367,7 +1367,7 @@ importers: specifier: ^1.0.7 version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1420,7 +1420,7 @@ importers: specifier: ^15.7.12 version: 15.7.12 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build @@ -1479,7 +1479,7 @@ importers: specifier: ^15.7.12 version: 15.7.12 rimraf: - specifier: ^5.0.9 + specifier: ^5.0.10 version: 5.0.10 publishDirectory: build From 591277bbbf473e3021c5427f4a27c5cfef31b078 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 13:25:31 +0200 Subject: [PATCH 761/912] Bump mocha to ^10.7.3 (#14162) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index bc9d7037fb1f..4d3c4d2ccc12 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,7 @@ "lerna": "^8.1.7", "lodash": "^4.17.21", "markdownlint-cli2": "^0.13.0", - "mocha": "^10.7.0", + "mocha": "^10.7.3", "moment": "^2.30.1", "moment-timezone": "^0.5.45", "nyc": "^17.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85be811d3c8f..e152e34e4115 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -324,8 +324,8 @@ importers: specifier: ^0.13.0 version: 0.13.0 mocha: - specifier: ^10.7.0 - version: 10.7.0 + specifier: ^10.7.3 + version: 10.7.3 moment: specifier: ^2.30.1 version: 2.30.1 @@ -7703,8 +7703,8 @@ packages: engines: {node: '>=10'} hasBin: true - mocha@10.7.0: - resolution: {integrity: sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==} + mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} engines: {node: '>= 14.0.0'} hasBin: true @@ -11835,7 +11835,7 @@ snapshots: fs-extra: 11.2.0 jsdom: 24.1.1 lodash: 4.17.21 - mocha: 10.7.0 + mocha: 10.7.3 playwright: 1.46.0 prop-types: 15.8.1 react: 18.3.1 @@ -17441,7 +17441,7 @@ snapshots: mkdirp@1.0.4: {} - mocha@10.7.0: + mocha@10.7.3: dependencies: ansi-colors: 4.1.3 browser-stdout: 1.3.1 From 1deed31f84844f01c8bc449da6d4cf1301949077 Mon Sep 17 00:00:00 2001 From: Kenan Yusuf Date: Wed, 14 Aug 2024 13:02:03 +0100 Subject: [PATCH 762/912] [DataGrid] Fix error logged during skeleton loading with nested data grid (#14186) --- .../src/components/GridSkeletonLoadingOverlay.tsx | 7 ++++++- .../src/components/containers/GridRootStyles.ts | 14 +++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/x-data-grid/src/components/GridSkeletonLoadingOverlay.tsx b/packages/x-data-grid/src/components/GridSkeletonLoadingOverlay.tsx index 62643bb382f3..365b65bfd82d 100644 --- a/packages/x-data-grid/src/components/GridSkeletonLoadingOverlay.tsx +++ b/packages/x-data-grid/src/components/GridSkeletonLoadingOverlay.tsx @@ -171,7 +171,12 @@ const GridSkeletonLoadingOverlay = React.forwardRef< } if (hasScrollbarFiller) { - rowCells.push( 0} />); + rowCells.push( + 0} + />, + ); } } diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index 0e76bd7f298f..e35707002cc2 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -690,11 +690,19 @@ export const GridRootStyles = styled('div', { borderTop: '1px solid var(--DataGrid-rowBorderColor)', }, - /* Hide grid rows and vertical scrollbar when skeleton overlay is visible */ + /* Hide grid rows, row filler, and vertical scrollbar when skeleton overlay is visible */ [`& .${c['main--hasSkeletonLoadingOverlay']}`]: { - [`& .${c.virtualScrollerContent}, & .${c['scrollbar--vertical']}, & .${c.pinnedRows}`]: { - display: 'none', + [`& .${c.virtualScrollerContent}`]: { + // We use visibility hidden so that the virtual scroller content retains its height. + // Position fixed is used to remove the virtual scroller content from the flow. + // https://github.com/mui/mui-x/issues/14061 + position: 'fixed', + visibility: 'hidden', }, + [`& .${c['scrollbar--vertical']}, & .${c.pinnedRows}, & .${c.virtualScroller} > .${c.filler}`]: + { + display: 'none', + }, }, }; From 4da25993b9ee62683c69ef716f0c5ceb3cc9b9b3 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Wed, 14 Aug 2024 15:46:24 +0300 Subject: [PATCH 763/912] [core] Fix ESLint issue (#14207) --- docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js | 2 +- docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js index 5433087dfed1..85ac9e0ba6b1 100644 --- a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js +++ b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.js @@ -7,7 +7,7 @@ import { RichTreeView } from '@mui/x-tree-view/RichTreeView'; import CloseRoundedIcon from '@mui/icons-material/CloseRounded'; import { TreeItem2, TreeItem2Label } from '@mui/x-tree-view/TreeItem2'; import { unstable_useTreeItem2 as useTreeItem2 } from '@mui/x-tree-view/useTreeItem2'; -import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; const StyledLabelInput = styled('input')(({ theme }) => ({ ...theme.typography.body1, diff --git a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx index 188bb9943aa0..961a87baff10 100644 --- a/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx +++ b/docs/data/tree-view/rich-tree-view/editing/CustomLabelInput.tsx @@ -15,7 +15,7 @@ import { UseTreeItem2LabelSlotOwnProps, unstable_useTreeItem2 as useTreeItem2, } from '@mui/x-tree-view/useTreeItem2'; -import { useTreeItem2Utils } from '@mui/x-tree-view/hooks/useTreeItem2Utils'; +import { useTreeItem2Utils } from '@mui/x-tree-view/hooks'; import { TreeViewBaseItem } from '@mui/x-tree-view/models'; const StyledLabelInput = styled('input')(({ theme }) => ({ From bed323f1030e93975b0af1b387b617c511b68313 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Wed, 14 Aug 2024 16:05:59 +0200 Subject: [PATCH 764/912] [internals] Move utils needed for tree view virtualization to shared package (#14202) --- .../src/components/headerFiltering/GridHeaderFilterCell.tsx | 2 +- packages/x-data-grid/src/components/GridColumnHeaders.tsx | 2 +- packages/x-data-grid/src/components/GridHeaders.tsx | 2 +- packages/x-data-grid/src/components/GridRow.tsx | 2 +- packages/x-data-grid/src/components/GridScrollArea.tsx | 2 +- packages/x-data-grid/src/components/cell/GridCell.tsx | 2 +- packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx | 4 ++-- .../src/components/columnHeaders/GridColumnHeaderItem.tsx | 2 +- .../components/virtualization/GridVirtualScrollerFiller.tsx | 2 +- .../src/hooks/features/dimensions/useGridDimensions.ts | 2 +- packages/x-data-grid/src/hooks/utils/useGridSelector.ts | 2 +- packages/x-data-grid/src/internals/index.ts | 1 - .../src/utils => x-internals/src/fastMemo}/fastMemo.ts | 2 +- packages/x-internals/src/fastMemo/index.ts | 1 + .../src/fastObjectShallowCompare}/fastObjectShallowCompare.ts | 0 packages/x-internals/src/fastObjectShallowCompare/index.ts | 1 + packages/x-internals/src/throttle/index.ts | 1 + .../src/utils => x-internals/src/throttle}/throttle.ts | 0 18 files changed, 16 insertions(+), 14 deletions(-) rename packages/{x-data-grid/src/utils => x-internals/src/fastMemo}/fastMemo.ts (69%) create mode 100644 packages/x-internals/src/fastMemo/index.ts rename packages/{x-data-grid/src/utils => x-internals/src/fastObjectShallowCompare}/fastObjectShallowCompare.ts (100%) create mode 100644 packages/x-internals/src/fastObjectShallowCompare/index.ts create mode 100644 packages/x-internals/src/throttle/index.ts rename packages/{x-data-grid/src/utils => x-internals/src/throttle}/throttle.ts (100%) diff --git a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx index 8a73ef0aab68..68360d2c7203 100644 --- a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx +++ b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx @@ -6,6 +6,7 @@ import { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, } from '@mui/utils'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { GridFilterItem, GridFilterOperator, @@ -19,7 +20,6 @@ import { GridPinnedColumnPosition, } from '@mui/x-data-grid'; import { - fastMemo, GridStateColDef, useGridPrivateApiContext, gridHeaderFilteringEditFieldSelector, diff --git a/packages/x-data-grid/src/components/GridColumnHeaders.tsx b/packages/x-data-grid/src/components/GridColumnHeaders.tsx index 460902b9690f..7ff4b81617fe 100644 --- a/packages/x-data-grid/src/components/GridColumnHeaders.tsx +++ b/packages/x-data-grid/src/components/GridColumnHeaders.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { fastMemo } from '../utils/fastMemo'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { useGridColumnHeaders, UseGridColumnHeadersProps, diff --git a/packages/x-data-grid/src/components/GridHeaders.tsx b/packages/x-data-grid/src/components/GridHeaders.tsx index b6f2f6b290e0..c2df6d301ce1 100644 --- a/packages/x-data-grid/src/components/GridHeaders.tsx +++ b/packages/x-data-grid/src/components/GridHeaders.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { fastMemo } from '../utils/fastMemo'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext'; import { useGridSelector } from '../hooks/utils/useGridSelector'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; diff --git a/packages/x-data-grid/src/components/GridRow.tsx b/packages/x-data-grid/src/components/GridRow.tsx index ec36976c2dc2..54317be88344 100644 --- a/packages/x-data-grid/src/components/GridRow.tsx +++ b/packages/x-data-grid/src/components/GridRow.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { unstable_useForkRef as useForkRef } from '@mui/utils'; -import { fastMemo } from '../utils/fastMemo'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { GridRowEventLookup } from '../models/events'; import { GridRowId, GridRowModel } from '../models/gridRows'; import { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRowModel'; diff --git a/packages/x-data-grid/src/components/GridScrollArea.tsx b/packages/x-data-grid/src/components/GridScrollArea.tsx index 9b0cc4e330b1..fda459d58ab9 100644 --- a/packages/x-data-grid/src/components/GridScrollArea.tsx +++ b/packages/x-data-grid/src/components/GridScrollArea.tsx @@ -5,6 +5,7 @@ import { unstable_useEventCallback as useEventCallback, } from '@mui/utils'; import { styled } from '@mui/system'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { DataGridProcessedProps } from '../models/props/DataGridProps'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { getDataGridUtilityClass, gridClasses } from '../constants'; @@ -18,7 +19,6 @@ import { GridScrollParams } from '../models/params/gridScrollParams'; import { GridEventListener } from '../models/events'; import { useTimeout } from '../hooks/utils/useTimeout'; import { getTotalHeaderHeight } from '../hooks/features/columns/gridColumnsUtils'; -import { fastMemo } from '../utils/fastMemo'; const CLIFF = 1; const SLOP = 1.5; diff --git a/packages/x-data-grid/src/components/cell/GridCell.tsx b/packages/x-data-grid/src/components/cell/GridCell.tsx index 2a196dccb5a7..68feacc68c28 100644 --- a/packages/x-data-grid/src/components/cell/GridCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridCell.tsx @@ -7,8 +7,8 @@ import { unstable_ownerDocument as ownerDocument, unstable_capitalize as capitalize, } from '@mui/utils'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import type { GridApiCommunity } from '../../internals'; -import { fastMemo } from '../../utils/fastMemo'; import { doesSupportPreventScroll } from '../../utils/doesSupportPreventScroll'; import { getDataGridUtilityClass, gridClasses } from '../../constants/gridClasses'; import { diff --git a/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx b/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx index 2441f413d65c..79fb1e5d7939 100644 --- a/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridSkeletonCell.tsx @@ -1,12 +1,12 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import clsx from 'clsx'; import Skeleton from '@mui/material/Skeleton'; import { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, } from '@mui/utils'; -import clsx from 'clsx'; -import { fastMemo } from '../../utils/fastMemo'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { createRandomNumberGenerator } from '../../utils/utils'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { getDataGridUtilityClass } from '../../constants/gridClasses'; diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx index 920c197c6da7..a0746768bdd6 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils'; -import { fastMemo } from '../../utils/fastMemo'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { GridStateColDef } from '../../models/colDef/gridColDef'; import { GridSortDirection } from '../../models/gridSortModel'; import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext'; diff --git a/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerFiller.tsx b/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerFiller.tsx index 718a449a6ee5..2777f1bdcf7f 100644 --- a/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerFiller.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridVirtualScrollerFiller.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { styled } from '@mui/system'; -import { fastMemo } from '../../utils/fastMemo'; +import { fastMemo } from '@mui/x-internals/fastMemo'; import { useGridSelector } from '../../hooks/utils/useGridSelector'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { gridDimensionsSelector } from '../../hooks/features/dimensions'; diff --git a/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts b/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts index 6d423b29d931..bf8cf2ac6ff8 100644 --- a/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts +++ b/packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts @@ -5,6 +5,7 @@ import { unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow, } from '@mui/utils'; +import { throttle } from '@mui/x-internals/throttle'; import { GridEventListener } from '../../../models/events'; import { ElementSize } from '../../../models'; import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; @@ -13,7 +14,6 @@ import { useGridApiOptionHandler, } from '../../utils/useGridApiEventHandler'; import { useGridApiMethod } from '../../utils/useGridApiMethod'; -import { throttle } from '../../../utils/throttle'; import { useGridLogger } from '../../utils/useGridLogger'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { GridDimensions, GridDimensionsApi, GridDimensionsPrivateApi } from './gridDimensionsApi'; diff --git a/packages/x-data-grid/src/hooks/utils/useGridSelector.ts b/packages/x-data-grid/src/hooks/utils/useGridSelector.ts index 76fc6754b8c8..3e8720b9689d 100644 --- a/packages/x-data-grid/src/hooks/utils/useGridSelector.ts +++ b/packages/x-data-grid/src/hooks/utils/useGridSelector.ts @@ -1,10 +1,10 @@ import * as React from 'react'; +import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare'; import type { GridApiCommon } from '../../models/api/gridApiCommon'; import { OutputSelector } from '../../utils/createSelector'; import { useLazyRef } from './useLazyRef'; import { useOnMount } from './useOnMount'; import { warnOnce } from '../../internals/utils/warning'; -import { fastObjectShallowCompare } from '../../utils/fastObjectShallowCompare'; function isOutputSelector( selector: any, diff --git a/packages/x-data-grid/src/internals/index.ts b/packages/x-data-grid/src/internals/index.ts index a9ec03d957be..1bb8284e5a27 100644 --- a/packages/x-data-grid/src/internals/index.ts +++ b/packages/x-data-grid/src/internals/index.ts @@ -148,7 +148,6 @@ export { } from '../utils/domUtils'; export { isNavigationKey, isPasteShortcut } from '../utils/keyboardUtils'; export * from '../utils/utils'; -export * from '../utils/fastMemo'; export { exportAs } from '../utils/exportAs'; export * from '../utils/getPublicApiRef'; export * from '../utils/cellBorderUtils'; diff --git a/packages/x-data-grid/src/utils/fastMemo.ts b/packages/x-internals/src/fastMemo/fastMemo.ts similarity index 69% rename from packages/x-data-grid/src/utils/fastMemo.ts rename to packages/x-internals/src/fastMemo/fastMemo.ts index 86780baa5e55..7abb1f6d95f2 100644 --- a/packages/x-data-grid/src/utils/fastMemo.ts +++ b/packages/x-internals/src/fastMemo/fastMemo.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { fastObjectShallowCompare } from './fastObjectShallowCompare'; +import { fastObjectShallowCompare } from '../fastObjectShallowCompare'; export function fastMemo(component: T): T { return React.memo(component as any, fastObjectShallowCompare) as unknown as T; diff --git a/packages/x-internals/src/fastMemo/index.ts b/packages/x-internals/src/fastMemo/index.ts new file mode 100644 index 000000000000..b0fe71454ee0 --- /dev/null +++ b/packages/x-internals/src/fastMemo/index.ts @@ -0,0 +1 @@ +export { fastMemo } from './fastMemo'; diff --git a/packages/x-data-grid/src/utils/fastObjectShallowCompare.ts b/packages/x-internals/src/fastObjectShallowCompare/fastObjectShallowCompare.ts similarity index 100% rename from packages/x-data-grid/src/utils/fastObjectShallowCompare.ts rename to packages/x-internals/src/fastObjectShallowCompare/fastObjectShallowCompare.ts diff --git a/packages/x-internals/src/fastObjectShallowCompare/index.ts b/packages/x-internals/src/fastObjectShallowCompare/index.ts new file mode 100644 index 000000000000..44bf7f5f0efe --- /dev/null +++ b/packages/x-internals/src/fastObjectShallowCompare/index.ts @@ -0,0 +1 @@ +export { fastObjectShallowCompare } from './fastObjectShallowCompare'; diff --git a/packages/x-internals/src/throttle/index.ts b/packages/x-internals/src/throttle/index.ts new file mode 100644 index 000000000000..5bf825e16ac8 --- /dev/null +++ b/packages/x-internals/src/throttle/index.ts @@ -0,0 +1 @@ +export { throttle } from './throttle'; diff --git a/packages/x-data-grid/src/utils/throttle.ts b/packages/x-internals/src/throttle/throttle.ts similarity index 100% rename from packages/x-data-grid/src/utils/throttle.ts rename to packages/x-internals/src/throttle/throttle.ts From 403d6ff5a2ac208914b148d0bc5c4de45ded68fe Mon Sep 17 00:00:00 2001 From: Rajat Date: Thu, 15 Aug 2024 06:12:29 +0530 Subject: [PATCH 765/912] [DataGrid] remove needless check in `useGridStateInitialization` (#14181) Co-authored-by: Rom Grk --- .../src/hooks/core/useGridStateInitialization.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts b/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts index b33affee0f65..28cc2b149d4f 100644 --- a/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts +++ b/packages/x-data-grid/src/hooks/core/useGridStateInitialization.ts @@ -75,11 +75,7 @@ export const useGridStateInitialization = Date: Thu, 15 Aug 2024 14:04:13 +0700 Subject: [PATCH 766/912] [l10n] Improve Vietnamese (vi-VN) locale (#14216) --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/viVN.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index e1a780c91537..351a4aedd148 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -275,7 +275,7 @@ "languageTag": "vi-VN", "importName": "viVN", "localeName": "Vietnamese", - "missingKeysCount": 4, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/viVN.ts" } diff --git a/packages/x-data-grid/src/locales/viVN.ts b/packages/x-data-grid/src/locales/viVN.ts index 47cd0bbc618d..94ca679d2cde 100644 --- a/packages/x-data-grid/src/locales/viVN.ts +++ b/packages/x-data-grid/src/locales/viVN.ts @@ -39,10 +39,10 @@ const viVNGrid: Partial = { toolbarExportExcel: 'Xuất Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', - // columnsManagementReset: 'Reset', + columnsManagementSearchTitle: 'Tìm kiếm', + columnsManagementNoColumns: 'Không có cột', + columnsManagementShowHideAllText: 'Hiện/Ẩn Tất cả', + columnsManagementReset: 'Đặt lại', // Filter panel text filterPanelAddFilter: 'Thêm bộ lọc', From 3e2d3d0bf1eaae184dccad96fc223b65099d7bbc Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Thu, 15 Aug 2024 13:39:55 +0200 Subject: [PATCH 767/912] [DataGrid] Add recipe for persisting filters in local storage (#14208) --- .../FilteringLocalStorage.js | 85 +++++++++++++++++ .../FilteringLocalStorage.tsx | 94 +++++++++++++++++++ .../FilteringLocalStorage.tsx.preview | 6 ++ .../filtering-recipes/filtering-recipes.md | 8 ++ 4 files changed, 193 insertions(+) create mode 100644 docs/data/data-grid/filtering-recipes/FilteringLocalStorage.js create mode 100644 docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx create mode 100644 docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx.preview diff --git a/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.js b/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.js new file mode 100644 index 000000000000..290e5ce9e608 --- /dev/null +++ b/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.js @@ -0,0 +1,85 @@ +import * as React from 'react'; +import { DataGrid, GridToolbar } from '@mui/x-data-grid'; +import { useDemoData } from '@mui/x-data-grid-generator'; + +const VISIBLE_FIELDS = ['name', 'rating', 'country', 'dateCreated', 'isAdmin']; + +const createFilterModelStore = () => { + let listeners = []; + const lsKey = 'gridFilterModel'; + const emptyModel = 'null'; + + return { + subscribe: (callback) => { + listeners.push(callback); + return () => { + listeners = listeners.filter((listener) => listener !== callback); + }; + }, + getSnapshot: () => { + try { + return localStorage.getItem(lsKey) || emptyModel; + } catch (error) { + return emptyModel; + } + }, + getServerSnapshot: () => { + return emptyModel; + }, + update: (filterModel) => { + localStorage.setItem(lsKey, JSON.stringify(filterModel)); + listeners.forEach((listener) => listener()); + }, + }; +}; + +const usePersistedFilterModel = () => { + const [filterModelStore] = React.useState(createFilterModelStore); + + const filterModelString = React.useSyncExternalStore( + filterModelStore.subscribe, + filterModelStore.getSnapshot, + filterModelStore.getServerSnapshot, + ); + + const filterModel = React.useMemo(() => { + try { + return JSON.parse(filterModelString) || undefined; + } catch (error) { + return undefined; + } + }, [filterModelString]); + + return React.useMemo( + () => [filterModel, filterModelStore.update], + [filterModel, filterModelStore.update], + ); +}; + +export default function FilteringLocalStorage() { + const { data } = useDemoData({ + dataSet: 'Employee', + visibleFields: VISIBLE_FIELDS, + rowLength: 100, + }); + + const [filterModel, setFilterModel] = usePersistedFilterModel(); + + const onFilterModelChange = React.useCallback( + (newFilterModel) => { + setFilterModel(newFilterModel); + }, + [setFilterModel], + ); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx b/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx new file mode 100644 index 000000000000..f0d408996170 --- /dev/null +++ b/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx @@ -0,0 +1,94 @@ +import * as React from 'react'; +import { + DataGrid, + DataGridProps, + GridFilterModel, + GridToolbar, +} from '@mui/x-data-grid'; +import { useDemoData } from '@mui/x-data-grid-generator'; + +const VISIBLE_FIELDS = ['name', 'rating', 'country', 'dateCreated', 'isAdmin']; + +const createFilterModelStore = () => { + let listeners: Array<() => void> = []; + const lsKey = 'gridFilterModel'; + const emptyModel = 'null'; + + return { + subscribe: (callback: () => void) => { + listeners.push(callback); + return () => { + listeners = listeners.filter((listener) => listener !== callback); + }; + }, + getSnapshot: () => { + try { + return localStorage.getItem(lsKey) || emptyModel; + } catch (error) { + return emptyModel; + } + }, + + getServerSnapshot: () => { + return emptyModel; + }, + + update: (filterModel: GridFilterModel) => { + localStorage.setItem(lsKey, JSON.stringify(filterModel)); + listeners.forEach((listener) => listener()); + }, + }; +}; + +const usePersistedFilterModel = () => { + const [filterModelStore] = React.useState(createFilterModelStore); + + const filterModelString = React.useSyncExternalStore( + filterModelStore.subscribe, + filterModelStore.getSnapshot, + filterModelStore.getServerSnapshot, + ); + + const filterModel = React.useMemo(() => { + try { + return (JSON.parse(filterModelString) as GridFilterModel) || undefined; + } catch (error) { + return undefined; + } + }, [filterModelString]); + + return React.useMemo( + () => [filterModel, filterModelStore.update] as const, + [filterModel, filterModelStore.update], + ); +}; + +export default function FilteringLocalStorage() { + const { data } = useDemoData({ + dataSet: 'Employee', + visibleFields: VISIBLE_FIELDS, + rowLength: 100, + }); + + const [filterModel, setFilterModel] = usePersistedFilterModel(); + + const onFilterModelChange = React.useCallback< + NonNullable + >( + (newFilterModel) => { + setFilterModel(newFilterModel); + }, + [setFilterModel], + ); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx.preview b/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx.preview new file mode 100644 index 000000000000..cdca9c3dde54 --- /dev/null +++ b/docs/data/data-grid/filtering-recipes/FilteringLocalStorage.tsx.preview @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/docs/data/data-grid/filtering-recipes/filtering-recipes.md b/docs/data/data-grid/filtering-recipes/filtering-recipes.md index fa5322aa7f22..9265e2dd36f9 100644 --- a/docs/data/data-grid/filtering-recipes/filtering-recipes.md +++ b/docs/data/data-grid/filtering-recipes/filtering-recipes.md @@ -6,6 +6,14 @@ title: Data Grid - Filtering customization recipes

    Advanced filtering customization recipes.

    +## Persisting filters in local storage + +You can persist the filters in the local storage to keep the filters applied after the page is reloaded. + +In the demo below, the [`React.useSyncExternalStore` hook](https://react.dev/reference/react/useSyncExternalStore) is used to synchronize the filters with the local storage. + +{{"demo": "FilteringLocalStorage.js", "bg": "inline", "defaultCodeOpen": false}} + ## Quick filter outside of the grid The [Quick Filter](/x/react-data-grid/filtering/quick-filter/) component is typically used in the Data Grid's Toolbar component slot. From c0b599300f01c54a96a4443a6296b10c6555036d Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 16 Aug 2024 00:39:42 +0200 Subject: [PATCH 768/912] [docs] Fix outdated SECURITY.md page (#14128) --- SECURITY.md | 11 ++++++----- docs/data/introduction/support/support.md | 13 ++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index e659bc8bc957..fe4dd1edca0e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,11 +4,12 @@ The versions of the project that are currently supported with security updates. -| Version | Supported | -| ------: | :----------------- | -| 6.x | :white_check_mark: | -| 5.x | :white_check_mark: | -| < 5.0 | :x: | +| MUI X version | Release | Supported | +| ------------: | :--------- | :----------------------------------- | +| ^7.0.0 | 2024-03-23 | :white_check_mark: Stable major | +| ^6.0.0 | 2023-03-03 | :white_check_mark: Long-term support | +| ^5.0.0 | 2021-11-23 | :x: | +| ^4.0.0 | 2021-09-28 | :x: | ## Reporting a vulnerability diff --git a/docs/data/introduction/support/support.md b/docs/data/introduction/support/support.md index 297716812181..3f65903d7dfb 100644 --- a/docs/data/introduction/support/support.md +++ b/docs/data/introduction/support/support.md @@ -94,13 +94,12 @@ This includes issues introduced by external sources, like browser upgrades or ch ### Supported versions -- MUI X v7: ✅ Stable major (Continuous support). -- MUI X v6: ⚠️ Long-term support (Guaranteed Support for security issues and regressions). -- MUI X v5: 🅧 No longer supported. -- MUI X v4: 🅧 No longer supported. -- MUI X v3: 🅧 Never existed. -- MUI X v2: 🅧 Never existed. -- MUI X v1: 🅧 Never existed. +| MUI X version | Release | Supported | +| ------------: | :--------- | :------------------------------------------------------------------ | +| ^7.0.0 | 2024-03-23 | ✅ Stable major (Continuous support) | +| ^6.0.0 | 2023-03-03 | ⚠️ Long-term support (Support for security issues and regressions). | +| ^5.0.0 | 2021-11-23 | ❌ | +| ^4.0.0 | 2021-09-28 | ❌ | ## Community From e557ed55fb7be04af6e70fa74daca75a3267c114 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Fri, 16 Aug 2024 11:45:42 +0200 Subject: [PATCH 769/912] [docs] Remove relience of abbreviations (#14226) --- docs/data/data-grid/pagination/CursorPaginationGrid.js | 2 +- docs/data/data-grid/pagination/CursorPaginationGrid.tsx | 2 +- docs/data/data-grid/server-side-data/ServerSideErrorHandling.js | 2 +- .../data/data-grid/server-side-data/ServerSideErrorHandling.tsx | 2 +- .../server-side-data/ServerSideTreeDataErrorHandling.js | 2 +- .../server-side-data/ServerSideTreeDataErrorHandling.tsx | 2 +- docs/src/modules/components/CustomizationPlayground.tsx | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/data-grid/pagination/CursorPaginationGrid.js b/docs/data/data-grid/pagination/CursorPaginationGrid.js index 04caad836070..1815b0577100 100644 --- a/docs/data/data-grid/pagination/CursorPaginationGrid.js +++ b/docs/data/data-grid/pagination/CursorPaginationGrid.js @@ -110,7 +110,7 @@ export default function CursorPaginationGrid() { aria-labelledby="demo-cursor-pagination-buttons-group-label" name="cursor-pagination-buttons-group" value={rowCountType} - onChange={(e) => setRowCountType(e.target.value)} + onChange={(event) => setRowCountType(event.target.value)} > } label="Known" /> } label="Unknown" /> diff --git a/docs/data/data-grid/pagination/CursorPaginationGrid.tsx b/docs/data/data-grid/pagination/CursorPaginationGrid.tsx index d54e3e806c7d..113e1b7945c4 100644 --- a/docs/data/data-grid/pagination/CursorPaginationGrid.tsx +++ b/docs/data/data-grid/pagination/CursorPaginationGrid.tsx @@ -117,7 +117,7 @@ export default function CursorPaginationGrid() { aria-labelledby="demo-cursor-pagination-buttons-group-label" name="cursor-pagination-buttons-group" value={rowCountType} - onChange={(e) => setRowCountType(e.target.value as RowCountType)} + onChange={(event) => setRowCountType(event.target.value as RowCountType)} > } label="Known" /> } label="Unknown" /> diff --git a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js index e04e012a2b7e..2f344485f9e6 100644 --- a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js +++ b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js @@ -98,7 +98,7 @@ export default function ServerSideErrorHandling() { control={ setShouldRequestsFail(e.target.checked)} + onChange={(event) => setShouldRequestsFail(event.target.checked)} /> } label="Make the requests fail" diff --git a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx index 5889480270a0..85cc69fdb165 100644 --- a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx @@ -104,7 +104,7 @@ export default function ServerSideErrorHandling() { control={ setShouldRequestsFail(e.target.checked)} + onChange={(event) => setShouldRequestsFail(event.target.checked)} /> } label="Make the requests fail" diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js index 9c7154e46f4b..faffe196653b 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js @@ -78,7 +78,7 @@ export default function ServerSideTreeDataErrorHandling() { control={ setShouldRequestsFail(e.target.checked)} + onChange={(event) => setShouldRequestsFail(event.target.checked)} /> } label="Make the requests fail" diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx index e83ca6851fa0..d7e61934f194 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx @@ -83,7 +83,7 @@ export default function ServerSideTreeDataErrorHandling() { control={ setShouldRequestsFail(e.target.checked)} + onChange={(event) => setShouldRequestsFail(event.target.checked)} /> } label="Make the requests fail" diff --git a/docs/src/modules/components/CustomizationPlayground.tsx b/docs/src/modules/components/CustomizationPlayground.tsx index 0e34112f8753..64aaa0e48bec 100644 --- a/docs/src/modules/components/CustomizationPlayground.tsx +++ b/docs/src/modules/components/CustomizationPlayground.tsx @@ -360,7 +360,7 @@ const CustomizationPlayground = function CustomizationPlayground({ id="select-component" label="" value={selectedDemo} - onChange={(e) => selectDemo(e.target.value as string)} + onChange={(event) => selectDemo(event.target.value as string)} > {Object.keys(examples || {}).map((item) => ( From c911ad501c4961e63e0e5c9b9eacf4e6367d3210 Mon Sep 17 00:00:00 2001 From: Danail Hadjiatanasov Date: Fri, 16 Aug 2024 16:45:40 +0300 Subject: [PATCH 770/912] v7.13.0 (#14221) --- CHANGELOG.md | 81 +++++++++++++++++++++ packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 14 files changed, 94 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a8cc2608487..8220ce8c304e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,87 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.13.0 + +_Aug 16, 2024_ + +We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨: + +- 💫 Allow to [edit the label](https://mui.com/x/react-tree-view/rich-tree-view/editing/) of Tree View's items. + + Item label editing + +- 🔧 Improve rows accessibility on the Data Grid features "Tree Data" and "Row Grouping". Certain "Row Grouping" accessibility updates will only be applied if experimental feature flag is enabled. See the [documentation](https://mui.com/x/react-data-grid/row-grouping/#accessibility-changes-in-v8) for more information. +- 🌍 Improve Vietnamese (vi-VN) locale on the Data Grid +- 🐞 Bugfixes + + + +### Data Grid + +#### `@mui/x-data-grid@7.13.0` + +- [DataGrid] Fix CSV export for `null` and `undefined` values (#14166) @k-rajat19 +- [DataGrid] Fix error logged during skeleton loading with nested data grid (#14186) @KenanYusuf +- [DataGrid] Remove needless check in `useGridStateInitialization` (#14181) @k-rajat19 +- [DataGrid] Add recipe for persisting filters in local storage (#14208) @cherniavskii +- [l10n] Improve Vietnamese (vi-VN) locale (#14216) @hungnd-casso + +#### `@mui/x-data-grid-pro@7.13.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.13.0`, plus: + +- [DataGridPro] Fix Tree Data and Row Grouping rows accessibility (#13623) @arminmeh + +#### `@mui/x-data-grid-premium@7.13.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.13.0`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.13.0` + +- [pickers] Fix date and time merging to retain milliseconds (#14173) @LukasTy + +#### `@mui/x-date-pickers-pro@7.13.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.13.0`. + +### Charts + +#### `@mui/x-charts@7.13.0` + +- [charts] Add `baseline` property to the `LineChart` `series` (#14153) @JCQuintas +- [charts] Fix issue where tooltip would disappear on mouse click (#14187) @alexfauquette +- [charts] Rename `CartesianContextProvider` to `CartesianProvider` (#14102) @JCQuintas +- [charts] Support axis with the same value for all data points (#14191) @alexfauquette + +#### `@mui/x-date-charts-pro@7.0.0-alpha.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@7.13.0`. + +### Tree View + +#### `@mui/x-tree-view@7.13.0` + +- [TreeView] Add label editing feature (#13388) @noraleonte +- [TreeView] Fix the parameters passed for the `canMoveItemToNewPosition` prop (#14176) @flaviendelangle + +### Docs + +- [docs] Extract dataset in the Line chart docs (#14034) @alexfauquette +- [docs] Remove redundant encoding in the mock data source server (#14185) @MBilalShafi +- [docs] Use Netflix financial results to document bar charts (#13991) @alexfauquette +- [docs] Remove relience of abbreviations (#14226) @oliviertassinari + +### Core + +- [core] Bump monorepo (#14141) @Janpot +- [core] Fix ESLint issue (#14207) @LukasTy +- [core] Fix Netlify build cache issue (#14182) @cherniavskii +- [code-infra] Refactor Netlify `cache-docs` plugin setup (#14105) @LukasTy +- [internals] Move utils needed for tree view virtualization to shared package (#14202) @flaviendelangle + ## 7.12.1 _Aug 8, 2024_ diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index a66311a70ab5..9ba265f42b1b 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-pro", - "version": "7.0.0-alpha.0", + "version": "7.0.0-alpha.1", "description": "The Pro plan edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 4adbe27031de..708a2efd3c1b 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-vendor", - "version": "7.12.1", + "version": "7.13.0", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", "main": "./index.js", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 149845756463..5c58264a4217 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.12.1", + "version": "7.13.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.js", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 140498fcbe29..8351109190ac 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.12.1", + "version": "7.13.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index eaf9b1a9934a..14374bba11d2 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.12.1", + "version": "7.13.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 7d1630540e9f..b0a321d19db9 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.12.1", + "version": "7.13.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 96cc40b20f2f..f02c47db1c14 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.12.1", + "version": "7.13.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 2e8b16d52eff..1b722e30ca8d 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.12.1", + "version": "7.13.0", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 0408c930536c..105fe5f68936 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.12.1", + "version": "7.13.0", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 6f70aea6396a..242af19c57db 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-internals", - "version": "7.12.0", + "version": "7.13.0", "description": "Utility functions for the MUI X packages (internal use only).", "author": "MUI Team", "license": "MIT", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 24aa81d9aa66..29eeaca08388 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.12.0", + "version": "7.13.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 78a487f8175d..fae0a83c9e0f 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.12.1", + "version": "7.13.0", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 4cdfb30ea38d..d966b6bf63da 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.12.1", + "version": "7.13.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From 70948f489022dde5ddc06f4fd848c4fd1a884269 Mon Sep 17 00:00:00 2001 From: Rajat Date: Sat, 17 Aug 2024 03:48:52 +0530 Subject: [PATCH 771/912] [data grid] use `event.key` for `Tab` and `Escape` keys (#14170) Co-authored-by: Rom Grk --- .../src/components/cell/GridEditSingleSelectCell.tsx | 10 +++++----- .../menu/columnMenu/GridColumnMenuContainer.tsx | 4 ++-- .../x-data-grid/src/components/panel/GridPanel.tsx | 3 +-- .../toolbar/GridToolbarDensitySelector.tsx | 4 ++-- .../toolbar/GridToolbarExportContainer.tsx | 4 ++-- packages/x-data-grid/src/utils/keyboardUtils.ts | 12 +----------- 6 files changed, 13 insertions(+), 24 deletions(-) diff --git a/packages/x-data-grid/src/components/cell/GridEditSingleSelectCell.tsx b/packages/x-data-grid/src/components/cell/GridEditSingleSelectCell.tsx index 328bd0110969..baab9cfbdcd1 100644 --- a/packages/x-data-grid/src/components/cell/GridEditSingleSelectCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridEditSingleSelectCell.tsx @@ -4,7 +4,6 @@ import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils'; import { SelectProps, SelectChangeEvent } from '@mui/material/Select'; import { GridCellEditStopReasons } from '../../models/params/gridEditCellParams'; import { GridRenderEditCellParams } from '../../models/params/gridCellParams'; -import { isEscapeKey } from '../../utils/keyboardUtils'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; import { GridEditModes } from '../../models/gridEditRowModel'; import { @@ -111,13 +110,14 @@ function GridEditSingleSelectCell(props: GridEditSingleSelectCellProps) { setOpen(false); return; } - if (reason === 'backdropClick' || isEscapeKey(event.key)) { + if (reason === 'backdropClick' || event.key === 'Escape') { const params = apiRef.current.getCellParams(id, field); apiRef.current.publishEvent('cellEditStop', { ...params, - reason: isEscapeKey(event.key) - ? GridCellEditStopReasons.escapeKeyDown - : GridCellEditStopReasons.cellFocusOut, + reason: + event.key === 'Escape' + ? GridCellEditStopReasons.escapeKeyDown + : GridCellEditStopReasons.cellFocusOut, }); } }; diff --git a/packages/x-data-grid/src/components/menu/columnMenu/GridColumnMenuContainer.tsx b/packages/x-data-grid/src/components/menu/columnMenu/GridColumnMenuContainer.tsx index 7e283fc151ca..1f14ea92cb31 100644 --- a/packages/x-data-grid/src/components/menu/columnMenu/GridColumnMenuContainer.tsx +++ b/packages/x-data-grid/src/components/menu/columnMenu/GridColumnMenuContainer.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import MenuList from '@mui/material/MenuList'; import { styled } from '@mui/material/styles'; -import { isHideMenuKey, isTabKey } from '../../../utils/keyboardUtils'; +import { isHideMenuKey } from '../../../utils/keyboardUtils'; import { GridColumnMenuContainerProps } from './GridColumnMenuProps'; import { gridClasses } from '../../../constants/gridClasses'; @@ -18,7 +18,7 @@ const GridColumnMenuContainer = React.forwardRef { - if (isTabKey(event.key)) { + if (event.key === 'Tab') { event.preventDefault(); } if (isHideMenuKey(event.key)) { diff --git a/packages/x-data-grid/src/components/panel/GridPanel.tsx b/packages/x-data-grid/src/components/panel/GridPanel.tsx index 2106407887cf..5e920533987a 100644 --- a/packages/x-data-grid/src/components/panel/GridPanel.tsx +++ b/packages/x-data-grid/src/components/panel/GridPanel.tsx @@ -7,7 +7,6 @@ import ClickAwayListener from '@mui/material/ClickAwayListener'; import Paper from '@mui/material/Paper'; import Popper from '@mui/material/Popper'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; -import { isEscapeKey } from '../../utils/keyboardUtils'; import type { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; @@ -68,7 +67,7 @@ const GridPanel = React.forwardRef((props, ref) const handleKeyDown = React.useCallback( (event: React.KeyboardEvent) => { - if (isEscapeKey(event.key)) { + if (event.key === 'Escape') { apiRef.current.hidePreferences(); } }, diff --git a/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx b/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx index 26b3fc9e9622..5e185987fa16 100644 --- a/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx +++ b/packages/x-data-grid/src/components/toolbar/GridToolbarDensitySelector.tsx @@ -8,7 +8,7 @@ import MenuItem from '@mui/material/MenuItem'; import ListItemIcon from '@mui/material/ListItemIcon'; import { gridDensitySelector } from '../../hooks/features/density/densitySelector'; import { GridDensity } from '../../models/gridDensity'; -import { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils'; +import { isHideMenuKey } from '../../utils/keyboardUtils'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { useGridSelector } from '../../hooks/utils/useGridSelector'; import { GridDensityOption } from '../../models/api/gridDensityApi'; @@ -83,7 +83,7 @@ const GridToolbarDensitySelector = React.forwardRef< }; const handleListKeyDown = (event: React.KeyboardEvent) => { - if (isTabKey(event.key)) { + if (event.key === 'Tab') { event.preventDefault(); } if (isHideMenuKey(event.key)) { diff --git a/packages/x-data-grid/src/components/toolbar/GridToolbarExportContainer.tsx b/packages/x-data-grid/src/components/toolbar/GridToolbarExportContainer.tsx index 879e6ed01221..2c00e4ba0b8b 100644 --- a/packages/x-data-grid/src/components/toolbar/GridToolbarExportContainer.tsx +++ b/packages/x-data-grid/src/components/toolbar/GridToolbarExportContainer.tsx @@ -4,7 +4,7 @@ import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui import MenuList from '@mui/material/MenuList'; import { ButtonProps } from '@mui/material/Button'; import { TooltipProps } from '@mui/material/Tooltip'; -import { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils'; +import { isHideMenuKey } from '../../utils/keyboardUtils'; import { useGridApiContext } from '../../hooks/utils/useGridApiContext'; import { GridMenu } from '../menu/GridMenu'; import { useGridRootProps } from '../../hooks/utils/useGridRootProps'; @@ -43,7 +43,7 @@ const GridToolbarExportContainer = React.forwardRef< const handleMenuClose = () => setOpen(false); const handleListKeyDown = (event: React.KeyboardEvent) => { - if (isTabKey(event.key)) { + if (event.key === 'Tab') { event.preventDefault(); } if (isHideMenuKey(event.key)) { diff --git a/packages/x-data-grid/src/utils/keyboardUtils.ts b/packages/x-data-grid/src/utils/keyboardUtils.ts index 358005ebf306..c70617d75671 100644 --- a/packages/x-data-grid/src/utils/keyboardUtils.ts +++ b/packages/x-data-grid/src/utils/keyboardUtils.ts @@ -1,15 +1,5 @@ import * as React from 'react'; -/** - * @deprecated there is no meaninfuly logic abstracted, use event.key directly. - */ -export const isEscapeKey = (key: string): boolean => key === 'Escape'; - -/** - * @deprecated there is no meaninfuly logic abstracted, use event.key directly. - */ -export const isTabKey = (key: string): boolean => key === 'Tab'; - // Non printable keys have a name, for example "ArrowRight", see the whole list: // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values // So event.key.length === 1 is often enough. @@ -50,7 +40,7 @@ export const isNavigationKey = (key: string) => export const isKeyboardEvent = (event: any): event is React.KeyboardEvent => !!event.key; -export const isHideMenuKey = (key: React.KeyboardEvent['key']) => isTabKey(key) || isEscapeKey(key); +export const isHideMenuKey = (key: React.KeyboardEvent['key']) => key === 'Tab' || key === 'Escape'; // In theory, on macOS, ctrl + v doesn't trigger a paste, so the function should return false. // However, maybe it's overkill to fix, so let's be lazy. From b4e8bf4bef9349a3444b64fcea1c0b7c77060ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miriam=20Zedn=C3=AD=C4=8Dkov=C3=A1?= <113028848+chirimiri22@users.noreply.github.com> Date: Sat, 17 Aug 2024 00:31:13 +0200 Subject: [PATCH 772/912] [l10n] Improve Czech (cs-CZ) locale (#14135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miriam Zedníčková <113028848+chirimiri22@users.noreply.github.com> Co-authored-by: Miriam Zednickova --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/csCZ.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 351a4aedd148..4fd53d5e7a28 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -59,7 +59,7 @@ "languageTag": "cs-CZ", "importName": "csCZ", "localeName": "Czech", - "missingKeysCount": 4, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/csCZ.ts" }, diff --git a/packages/x-data-grid/src/locales/csCZ.ts b/packages/x-data-grid/src/locales/csCZ.ts index 2bf50df1aa32..420a6fa81191 100644 --- a/packages/x-data-grid/src/locales/csCZ.ts +++ b/packages/x-data-grid/src/locales/csCZ.ts @@ -46,10 +46,10 @@ const csCZGrid: Partial = { toolbarExportExcel: 'Stáhnout jako Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', - // columnsManagementReset: 'Reset', + columnsManagementSearchTitle: 'Hledat sloupce', + columnsManagementNoColumns: 'Žádné sloupce', + columnsManagementShowHideAllText: 'Zobrazit/skrýt vše', + columnsManagementReset: 'Resetovat', // Filter panel text filterPanelAddFilter: 'Přidat filtr', From 8122b11cda5358912b9ab7080d68e0db639f7fb0 Mon Sep 17 00:00:00 2001 From: locnbk2002 <72966165+locnbk2002@users.noreply.github.com> Date: Sat, 17 Aug 2024 05:45:12 +0700 Subject: [PATCH 773/912] [l10n] Improve Vietnamese (vi-VN) locale (#14238) Co-authored-by: root Co-authored-by: Olivier Tassinari --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/viVN.ts | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 6c2afaec1d78..0cdcbca6bb13 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -267,7 +267,7 @@ "languageTag": "vi-VN", "importName": "viVN", "localeName": "Vietnamese", - "missingKeysCount": 14, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/viVN.ts" } diff --git a/packages/x-date-pickers/src/locales/viVN.ts b/packages/x-date-pickers/src/locales/viVN.ts index 8444dbc804c5..6e269490c20a 100644 --- a/packages/x-date-pickers/src/locales/viVN.ts +++ b/packages/x-date-pickers/src/locales/viVN.ts @@ -25,10 +25,10 @@ const viVNPickers: Partial> = { // DateRange labels start: 'Bắt đầu', end: 'Kết thúc', - // startDate: 'Start date', - // startTime: 'Start time', - // endDate: 'End date', - // endTime: 'End time', + startDate: 'Ngày bắt đầu', + startTime: 'Thời gian bắt đầu', + endDate: 'Ngày kết thúc', + endTime: 'Thời gian kết thúc', // Action bar cancelButtonLabel: 'Hủy', @@ -67,7 +67,7 @@ const viVNPickers: Partial> = { value !== null && utils.isValid(value) ? `Chọn giờ, giờ đã chọn là ${utils.format(value, 'fullTime')}` : 'Chọn giờ', - // fieldClearLabel: 'Clear value', + fieldClearLabel: 'Xóa giá trị', // Table labels timeTableLabel: 'chọn giờ', @@ -84,17 +84,17 @@ const viVNPickers: Partial> = { fieldMeridiemPlaceholder: () => 'aa', // View names - // year: 'Year', - // month: 'Month', - // day: 'Day', - // weekDay: 'Week day', - // hours: 'Hours', - // minutes: 'Minutes', - // seconds: 'Seconds', - // meridiem: 'Meridiem', + year: 'Năm', + month: 'Tháng', + day: 'Ngày', + weekDay: 'Thứ', + hours: 'Giờ', + minutes: 'Phút', + seconds: 'Giây', + meridiem: 'Buổi', // Common - // empty: 'Empty', + empty: 'Trống', }; export const viVN = getPickersLocalization(viVNPickers); From 0cb204494f30237979839114fac8cc968e2be063 Mon Sep 17 00:00:00 2001 From: yeeharn Date: Sat, 17 Aug 2024 06:57:18 +0800 Subject: [PATCH 774/912] [l10n] Improve Chinese (zh-HK) locale (#13289) Signed-off-by: yeeharn Co-authored-by: Olivier Tassinari --- docs/data/date-pickers/localization/data.json | 2 +- packages/x-date-pickers/src/locales/zhHK.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 0cdcbca6bb13..258248275852 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -27,7 +27,7 @@ "languageTag": "zh-HK", "importName": "zhHK", "localeName": "Chinese (Hong Kong)", - "missingKeysCount": 1, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/zhHK.ts" }, diff --git a/packages/x-date-pickers/src/locales/zhHK.ts b/packages/x-date-pickers/src/locales/zhHK.ts index 73f30fe05cb6..9fb72b4769c5 100644 --- a/packages/x-date-pickers/src/locales/zhHK.ts +++ b/packages/x-date-pickers/src/locales/zhHK.ts @@ -65,7 +65,7 @@ const zhHKPickers: Partial> = { value !== null && utils.isValid(value) ? `選擇時間,已選擇${utils.format(value, 'fullTime')}` : '選擇時間', - // fieldClearLabel: 'Clear value', + fieldClearLabel: '清除', // Table labels timeTableLabel: '選擇時間', From 09899fbbc6f6be189c1499601c7a78214edc1374 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sat, 17 Aug 2024 23:44:11 +0200 Subject: [PATCH 775/912] [core] Follow JSDocs convention --- docs/data/data-grid/server-side-data/index.md | 2 +- packages/x-data-grid/src/models/gridDataSource.ts | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/data-grid/server-side-data/index.md b/docs/data/data-grid/server-side-data/index.md index 106b1737b7c3..a53d755dd72d 100644 --- a/docs/data/data-grid/server-side-data/index.md +++ b/docs/data/data-grid/server-side-data/index.md @@ -87,7 +87,7 @@ Let's take a look at the minimal `GridDataSource` interface configuration. ```tsx interface GridDataSource { /** - * This method will be called when the grid needs to fetch some rows + * This method will be called when the grid needs to fetch some rows. * @param {GridGetRowsParams} params The parameters required to fetch the rows * @returns {Promise} A promise that resolves to the data of type [GridGetRowsResponse] */ diff --git a/packages/x-data-grid/src/models/gridDataSource.ts b/packages/x-data-grid/src/models/gridDataSource.ts index f2a26241b659..44bd45159349 100644 --- a/packages/x-data-grid/src/models/gridDataSource.ts +++ b/packages/x-data-grid/src/models/gridDataSource.ts @@ -52,19 +52,19 @@ export interface GridGetRowsResponse { export interface GridDataSource { /** - * This method will be called when the grid needs to fetch some rows + * This method will be called when the grid needs to fetch some rows. * @param {GridGetRowsParams} params The parameters required to fetch the rows * @returns {Promise} A promise that resolves to the data of type [GridGetRowsResponse] */ getRows(params: GridGetRowsParams): Promise; /** - * This method will be called when the user updates a row [Not yet implemented] + * This method will be called when the user updates a row [Not yet implemented]. * @param {GridRowModel} updatedRow The updated row * @returns {Promise} If resolved (synced on the backend), the grid will update the row and mutate the cache */ updateRow?(updatedRow: GridRowModel): Promise; /** - * Used to group rows by their parent group. Replaces `getTreeDataPath` used in client side tree-data . + * Used to group rows by their parent group. Replaces `getTreeDataPath` used in client side tree-data. * @param {GridRowModel} row The row to get the group key of * @returns {string} The group key for the row */ @@ -80,19 +80,19 @@ export interface GridDataSource { export interface GridDataSourceCache { /** - * Set the cache entry for the given key + * Set the cache entry for the given key. * @param {GridGetRowsParams} key The key of type `GridGetRowsParams` * @param {GridGetRowsResponse} value The value to be stored in the cache */ set: (key: GridGetRowsParams, value: GridGetRowsResponse) => void; /** - * Get the cache entry for the given key + * Get the cache entry for the given key. * @param {GridGetRowsParams} key The key of type `GridGetRowsParams` * @returns {GridGetRowsResponse} The value stored in the cache */ get: (key: GridGetRowsParams) => GridGetRowsResponse | undefined; /** - * Clear the cache + * Clear the cache. */ clear: () => void; } From 60dc904ea999ebb0b9c9d8853f4aa907253511ae Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 19 Aug 2024 11:38:50 +0200 Subject: [PATCH 776/912] [docs] Fix missing leading slashes in URLs (#14249) --- .../components/overview/CommunityOrPro.tsx | 6 ++-- .../modules/components/overview/InfoCard.tsx | 33 +++++++++++-------- .../overview/Internationalization.tsx | 6 ++-- .../modules/components/overview/Keyboard.tsx | 33 +++++++++---------- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/docs/src/modules/components/overview/CommunityOrPro.tsx b/docs/src/modules/components/overview/CommunityOrPro.tsx index 7e6dcbf3de21..3e6dc197bf71 100644 --- a/docs/src/modules/components/overview/CommunityOrPro.tsx +++ b/docs/src/modules/components/overview/CommunityOrPro.tsx @@ -40,7 +40,7 @@ export default function CommunityOrPro() {
    , ); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); expect(() => { getCell(1, 0).focus(); @@ -203,7 +204,7 @@ describe(' - Cells', () => { const virtualScroller = document.querySelector('.MuiDataGrid-virtualScroller')!; const cell = getCell(1, 3); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); const activeElementTextContent = document.activeElement?.textContent; const columnWidth = document.activeElement!.clientWidth; @@ -240,7 +241,7 @@ describe(' - Cells', () => { const virtualScroller = document.querySelector('.MuiDataGrid-virtualScroller')!; const thirdRowCell = getCell(2, 0); - userEvent.mousePress(thirdRowCell); + fireUserEvent.mousePress(thirdRowCell); let scrollTop = 6 * rowHeight; virtualScroller.scrollTop = scrollTop; diff --git a/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx b/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx index 47e091416795..0d8a7c325d47 100644 --- a/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx @@ -1,8 +1,9 @@ import * as React from 'react'; -import { createRenderer, fireEvent, screen, within, userEvent } from '@mui/internal-test-utils'; +import { createRenderer, fireEvent, screen, within } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { DataGrid } from '@mui/x-data-grid'; import { getColumnHeaderCell, getColumnHeadersTextContent } from 'test/utils/helperFn'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -123,11 +124,11 @@ describe(' - Column headers', () => {
    , ); - userEvent.mousePress(within(getColumnHeaderCell(0)).getByLabelText('Menu')); + fireUserEvent.mousePress(within(getColumnHeaderCell(0)).getByLabelText('Menu')); clock.runToLast(); expect(screen.queryByRole('menu')).not.to.equal(null); - userEvent.mousePress(within(getColumnHeaderCell(0)).getByLabelText('Menu')); + fireUserEvent.mousePress(within(getColumnHeaderCell(0)).getByLabelText('Menu')); clock.runToLast(); expect(screen.queryByRole('menu')).to.equal(null); }); diff --git a/packages/x-data-grid/src/tests/columnSpanning.DataGrid.test.tsx b/packages/x-data-grid/src/tests/columnSpanning.DataGrid.test.tsx index eaada2a7f132..b326949ee1d7 100644 --- a/packages/x-data-grid/src/tests/columnSpanning.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/columnSpanning.DataGrid.test.tsx @@ -1,8 +1,9 @@ import * as React from 'react'; -import { createRenderer, fireEvent, screen, within, userEvent } from '@mui/internal-test-utils'; +import { createRenderer, fireEvent, screen, within } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { DataGrid, gridClasses, GridColDef } from '@mui/x-data-grid'; import { getCell, getActiveCell, getColumnHeaderCell } from 'test/utils/helperFn'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -125,7 +126,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); expect(getActiveCell()).to.equal('0-0'); fireEvent.keyDown(getCell(0, 0), { key: 'ArrowRight' }); @@ -139,7 +140,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 2)); + fireUserEvent.mousePress(getCell(0, 2)); expect(getActiveCell()).to.equal('0-2'); fireEvent.keyDown(getCell(0, 2), { key: 'ArrowLeft' }); @@ -153,7 +154,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(1, 1)); + fireUserEvent.mousePress(getCell(1, 1)); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(getCell(1, 1), { key: 'ArrowUp' }); @@ -167,7 +168,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(1, 3)); + fireUserEvent.mousePress(getCell(1, 3)); expect(getActiveCell()).to.equal('1-3'); fireEvent.keyDown(getCell(1, 3), { key: 'ArrowDown' }); @@ -186,7 +187,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 3)); + fireUserEvent.mousePress(getCell(0, 3)); expect(getActiveCell()).to.equal('0-3'); fireEvent.keyDown(getCell(0, 3), { key: 'PageDown' }); @@ -200,7 +201,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(2, 1)); + fireUserEvent.mousePress(getCell(2, 1)); expect(getActiveCell()).to.equal('2-1'); fireEvent.keyDown(getCell(2, 1), { key: 'PageUp' }); @@ -220,7 +221,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(1, 3)); + fireUserEvent.mousePress(getCell(1, 3)); expect(getActiveCell()).to.equal('1-3'); // start editing @@ -239,7 +240,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(1, 1)); + fireUserEvent.mousePress(getCell(1, 1)); expect(getActiveCell()).to.equal('1-1'); // start editing @@ -257,7 +258,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 2)); + fireUserEvent.mousePress(getCell(0, 2)); expect(getActiveCell()).to.equal('0-2'); // start editing @@ -318,7 +319,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(1, 1)); + fireUserEvent.mousePress(getCell(1, 1)); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(getCell(1, 1), { key: 'ArrowDown' }); @@ -352,7 +353,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); fireEvent.keyDown(getCell(0, 0), { key: 'ArrowRight' }); document.querySelector(`.${gridClasses.virtualScroller}`)!.dispatchEvent(new Event('scroll')); @@ -428,7 +429,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); expect(getActiveCell()).to.equal('0-0'); fireEvent.keyDown(getCell(0, 0), { key: 'ArrowDown' }); @@ -459,7 +460,7 @@ describe(' - Column spanning', () => {
    , ); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); const virtualScroller = document.querySelector( `.${gridClasses.virtualScroller}`, diff --git a/packages/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx b/packages/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx index 3771593c4f90..0adf925558ef 100644 --- a/packages/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/columnsVisibility.DataGrid.test.tsx @@ -126,12 +126,12 @@ describe(' - Columns visibility', () => { /> ); } - const { getByRole } = render(); + render(); expect(getColumnHeadersTextContent()).to.deep.equal(['id']); - fireEvent.click(getByRole('button', { name: 'Select columns' })); - const showHideAllCheckbox = getByRole('checkbox', { name: 'Show/Hide All' }); + fireEvent.click(screen.getByRole('button', { name: 'Select columns' })); + const showHideAllCheckbox = screen.getByRole('checkbox', { name: 'Show/Hide All' }); // Hide all fireEvent.click(showHideAllCheckbox); @@ -149,7 +149,7 @@ describe(' - Columns visibility', () => { // Fixes (1) and (2) in https://github.com/mui/mui-x/issues/7393#issuecomment-1372129661 it('should not show hidden non hideable columns when "Show/Hide All" is clicked', () => { - const { getByRole } = render( + render( - Columns visibility', () => { />, ); - fireEvent.click(getByRole('button', { name: 'Select columns' })); - const showHideAllCheckbox = getByRole('checkbox', { name: 'Show/Hide All' }); + fireEvent.click(screen.getByRole('button', { name: 'Select columns' })); + const showHideAllCheckbox = screen.getByRole('checkbox', { name: 'Show/Hide All' }); // Hide all fireEvent.click(showHideAllCheckbox); expect(getColumnHeadersTextContent()).to.deep.equal([]); @@ -267,7 +267,7 @@ describe(' - Columns visibility', () => { }); it('should hide `Show/Hide all` in columns management when `disableShowHideToggle` is `true`', () => { - const { setProps, getByRole, queryByRole } = render( + const { setProps } = render( - Columns visibility', () => { fireEvent.click(screen.getByRole('button', { name: 'Select columns' })); // check if `Show/Hide all` checkbox is present initially - expect(getByRole('checkbox', { name: 'Show/Hide All' })).not.to.equal(null); + expect(screen.getByRole('checkbox', { name: 'Show/Hide All' })).not.to.equal(null); setProps({ slotProps: { columnsManagement: { @@ -287,11 +287,11 @@ describe(' - Columns visibility', () => { }); // check if `Show/Hide All` checkbox is not present after setting `slotProps` - expect(queryByRole('checkbox', { name: 'Show/Hide All' })).to.equal(null); + expect(screen.queryByRole('checkbox', { name: 'Show/Hide All' })).to.equal(null); }); it('should hide `Reset` in columns panel when `disableResetButton` is `true`', () => { - const { setProps, getByRole, queryByRole } = render( + const { setProps } = render( - Columns visibility', () => { fireEvent.click(screen.getByRole('button', { name: 'Select columns' })); // check if Reset button is present initially - expect(getByRole('button', { name: 'Reset' })).not.to.equal(null); + expect(screen.getByRole('button', { name: 'Reset' })).not.to.equal(null); setProps({ slotProps: { columnsManagement: { @@ -310,11 +310,11 @@ describe(' - Columns visibility', () => { }, }); // check if Reset button is not present after setting slotProps - expect(queryByRole('button', { name: 'Reset' })).to.equal(null); + expect(screen.queryByRole('button', { name: 'Reset' })).to.equal(null); }); it('should reset the columns to initial columns state when `Reset` button is clicked in columns management panel', () => { - const { getByRole } = render( + render( - Columns visibility', () => { expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'idBis']); fireEvent.click(screen.getByRole('button', { name: 'Select columns' })); - const resetButton = getByRole('button', { name: 'Reset' }); + const resetButton = screen.getByRole('button', { name: 'Reset' }); expect(resetButton).to.have.attribute('disabled'); // Hide `idBis` column @@ -363,7 +363,7 @@ describe(' - Columns visibility', () => { it('should avoid toggling columns provided by `getTogglableColumns` prop on `Show/Hide All`', () => { const getTogglableColumns = (cols: GridColDef[]) => cols.filter((column) => column.field !== 'idBis').map((column) => column.field); - const { getByRole } = render( + render( - Columns visibility', () => { />, ); - fireEvent.click(getByRole('button', { name: 'Select columns' })); - const showHideAllCheckbox = getByRole('checkbox', { name: 'Show/Hide All' }); + fireEvent.click(screen.getByRole('button', { name: 'Select columns' })); + const showHideAllCheckbox = screen.getByRole('checkbox', { name: 'Show/Hide All' }); fireEvent.click(showHideAllCheckbox); expect(getColumnHeadersTextContent()).to.deep.equal(['idBis']); diff --git a/packages/x-data-grid/src/tests/density.DataGrid.test.tsx b/packages/x-data-grid/src/tests/density.DataGrid.test.tsx index e1a2e2b3148f..aaad84e1c4fe 100644 --- a/packages/x-data-grid/src/tests/density.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/density.DataGrid.test.tsx @@ -106,13 +106,13 @@ describe(' - Density', () => { ); } - const { setProps, getByText } = render(); + const { setProps } = render(); expectHeight(rowHeight); - fireEvent.click(getByText('Density')); + fireEvent.click(screen.getByText('Density')); clock.tick(100); - fireEvent.click(getByText('Compact')); + fireEvent.click(screen.getByText('Compact')); // Not updated because of the controlled prop expectHeight(rowHeight); @@ -138,9 +138,9 @@ describe(' - Density', () => {
    ); } - const { getByText } = render(); - fireEvent.click(getByText('Density')); - fireEvent.click(getByText('Comfortable')); + render(); + fireEvent.click(screen.getByText('Density')); + fireEvent.click(screen.getByText('Comfortable')); expect(onDensityChange.callCount).to.equal(1); expect(onDensityChange.firstCall.args[0]).to.equal('comfortable'); }); @@ -149,7 +149,7 @@ describe(' - Density', () => { describe('density selection menu', () => { it('should increase grid density when selecting compact density', () => { const rowHeight = 30; - const { getByText } = render( + render(
    - Density', () => {
    , ); - fireEvent.click(getByText('Density')); + fireEvent.click(screen.getByText('Density')); clock.tick(100); - fireEvent.click(getByText('Compact')); + fireEvent.click(screen.getByText('Compact')); expectHeight(rowHeight * COMPACT_DENSITY_FACTOR); }); it('should decrease grid density when selecting comfortable density', () => { const rowHeight = 30; - const { getByText } = render( + render(
    - Density', () => {
    , ); - fireEvent.click(getByText('Density')); - fireEvent.click(getByText('Comfortable')); + fireEvent.click(screen.getByText('Density')); + fireEvent.click(screen.getByText('Comfortable')); expectHeight(rowHeight * COMFORTABLE_DENSITY_FACTOR); }); diff --git a/packages/x-data-grid/src/tests/keyboard.DataGrid.test.tsx b/packages/x-data-grid/src/tests/keyboard.DataGrid.test.tsx index 27c196256ecd..c27dbaf58942 100644 --- a/packages/x-data-grid/src/tests/keyboard.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/keyboard.DataGrid.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { createRenderer, fireEvent, screen, act, userEvent } from '@mui/internal-test-utils'; +import { createRenderer, fireEvent, screen, act } from '@mui/internal-test-utils'; import { spy } from 'sinon'; import { expect } from 'chai'; import { @@ -10,6 +10,7 @@ import { getColumnValues, getRow, } from 'test/utils/helperFn'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DataGrid, DataGridProps, @@ -74,7 +75,7 @@ describe(' - Keyboard', () => { it('should move to cell below when pressing "ArrowDown" on a cell on the 1st page', () => { render(); const cell = getCell(8, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowDown' }); expect(getActiveCell()).to.equal('9-1'); @@ -85,7 +86,7 @@ describe(' - Keyboard', () => { it('should move to cell below when pressing "ArrowDown" on a cell on the 2nd page', () => { render(); const cell = getCell(18, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('18-1'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowDown' }); expect(getActiveCell()).to.equal('19-1'); @@ -96,7 +97,7 @@ describe(' - Keyboard', () => { it('should move to the cell below when pressing "ArrowDown" on the checkbox selection cell', () => { render(); const cell = getCell(0, 0); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('0-0'); fireEvent.keyDown(cell.querySelector('input')!, { key: 'ArrowDown' }); expect(getActiveCell()).to.equal('1-0'); @@ -107,7 +108,7 @@ describe(' - Keyboard', () => { it('should move to the cell above when pressing "ArrowUp" on a cell on the 1st page', () => { render(); const cell = getCell(1, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowUp' }); expect(getActiveCell()).to.equal('0-1'); @@ -118,7 +119,7 @@ describe(' - Keyboard', () => { it('should move to the cell above when pressing "ArrowUp" on a cell on the 2nd page', () => { render(); const cell = getCell(11, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('11-1'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowUp' }); expect(getActiveCell()).to.equal('10-1'); @@ -129,7 +130,7 @@ describe(' - Keyboard', () => { it('should move to the cell right when pressing "ArrowRight" on a cell', () => { render(); const cell = getCell(1, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowRight' }); expect(getActiveCell()).to.equal('1-2'); @@ -140,7 +141,7 @@ describe(' - Keyboard', () => { it('should move to the cell right when pressing "ArrowRight" on the checkbox selection cell', () => { render(); const cell = getCell(1, 0); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('1-0'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowRight' }); expect(getActiveCell()).to.equal('1-1'); @@ -149,7 +150,7 @@ describe(' - Keyboard', () => { it('should move to the cell left when pressing "ArrowLeft" on a cell', () => { render(); const cell = getCell(1, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(document.activeElement!, { key: 'ArrowLeft' }); expect(getActiveCell()).to.equal('1-0'); @@ -165,7 +166,7 @@ describe(' - Keyboard', () => { render(); const cell = getCell(1, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(document.activeElement!, { key: 'PageDown' }); expect(getActiveCell()).to.equal(`6-1`); @@ -181,7 +182,7 @@ describe(' - Keyboard', () => { render(); const cell = getCell(1, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('1-1'); fireEvent.keyDown(document.activeElement!, { key: 'PageDown' }); expect(getActiveCell()).to.equal(`6-1`); @@ -197,7 +198,7 @@ describe(' - Keyboard', () => { render(); const cell = getCell(8, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'PageUp' }); expect(getActiveCell()).to.equal(`3-1`); @@ -211,7 +212,7 @@ describe(' - Keyboard', () => { render(); const cell = getCell(3, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('3-1'); fireEvent.keyDown(document.activeElement!, { key: 'PageUp' }); @@ -233,7 +234,7 @@ describe(' - Keyboard', () => { fireEvent.click(screen.getByRole('button', { name: /next page/i })); const cell = getCell(13, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('13-1'); fireEvent.keyDown(document.activeElement!, { key: 'PageUp' }); @@ -247,7 +248,7 @@ describe(' - Keyboard', () => { it('should navigate to the 1st cell of the current row when pressing "Home"', () => { render(); const cell = getCell(8, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'Home' }); expect(getActiveCell()).to.equal('8-0'); @@ -259,17 +260,17 @@ describe(' - Keyboard', () => { render(); const cell = getCell(8, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'Home', ctrlKey: true }); expect(getActiveCell()).to.equal('0-0'); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'Home', metaKey: true }); expect(getActiveCell()).to.equal('0-0'); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'Home', shiftKey: true }); expect(getActiveCell()).to.equal('0-0'); @@ -278,7 +279,7 @@ describe(' - Keyboard', () => { it('should navigate to the last cell of the current row when pressing "End"', () => { render(); const cell = getCell(8, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(cell, { key: 'End' }); expect(getActiveCell()).to.equal('8-2'); @@ -290,17 +291,17 @@ describe(' - Keyboard', () => { render(); const cell = getCell(8, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'End', ctrlKey: true }); expect(getActiveCell()).to.equal('9-2'); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'End', metaKey: true }); expect(getActiveCell()).to.equal('9-2'); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('8-1'); fireEvent.keyDown(document.activeElement!, { key: 'End', shiftKey: true }); expect(getActiveCell()).to.equal('9-2'); @@ -404,7 +405,7 @@ describe(' - Keyboard', () => { getColumnHeaderCell(1).querySelector(`button[title="Sort"]`)!; // Simulate click on this button - userEvent.mousePress(columnMenuButton); + fireUserEvent.mousePress(columnMenuButton); columnMenuButton.focus(); fireEvent.keyDown(document.activeElement!, { key: 'ArrowDown' }); @@ -434,7 +435,7 @@ describe(' - Keyboard', () => {
    , ); const input = screen.getByTestId('custom-input'); - userEvent.mousePress(input); + fireUserEvent.mousePress(input); input.focus(); // Verify that the event is not prevented during the bubbling. @@ -632,7 +633,7 @@ describe(' - Keyboard', () => {
    , ); const firstCell = getCell(0, 0); - userEvent.mousePress(firstCell); + fireUserEvent.mousePress(firstCell); fireEvent.keyDown(firstCell, { key: 'ArrowRight' }); expect(handleKeyDown.returnValues).to.deep.equal([true]); }); @@ -675,7 +676,7 @@ describe(' - Keyboard', () => { it('should select a row when pressing Space key + shiftKey', () => { render(); const cell = getCell(0, 0); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); expect(getActiveCell()).to.equal('0-0'); fireEvent.keyDown(cell, { key: ' ', shiftKey: true }); const row = getRow(0); @@ -715,7 +716,7 @@ describe(' - Keyboard', () => { const virtualScroller = document.querySelector('.MuiDataGrid-virtualScroller')!; const firstCell = getCell(0, 0); - userEvent.mousePress(firstCell); + fireUserEvent.mousePress(firstCell); expect(virtualScroller.scrollLeft).to.equal(0); fireEvent.keyDown(firstCell, { key: 'ArrowDown' }); @@ -747,7 +748,7 @@ describe(' - Keyboard', () => { ); const cell = getCell(0, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); fireEvent.keyDown(cell, { key: 'ArrowLeft' }); expect(getActiveCell()).to.equal(`0-0`); @@ -781,7 +782,7 @@ describe(' - Keyboard', () => { ); const cell = getCell(0, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); fireEvent.keyDown(cell, { key: 'ArrowLeft' }); expect(getActiveCell()).to.equal(`0-0`); @@ -815,7 +816,7 @@ describe(' - Keyboard', () => { ); const cell = getCell(0, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); fireEvent.keyDown(cell, { key: 'ArrowLeft' }); expect(getActiveCell()).to.equal(`0-0`); diff --git a/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx b/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx index 4f003a354866..b9840172ee73 100644 --- a/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx @@ -277,13 +277,13 @@ describe(' - Layout & warnings', () => { }, ]; - const { getAllByRole } = render( + render(
    , ); - getAllByRole('columnheader').forEach((col: HTMLElement) => { + screen.getAllByRole('columnheader').forEach((col: HTMLElement) => { expect(col).toHaveInlineStyle({ width: '100px' }); }); }); @@ -313,13 +313,13 @@ describe(' - Layout & warnings', () => { }, ]; - const { getAllByRole } = render( + render(
    , ); - getAllByRole('columnheader').forEach((col: HTMLElement, index: number) => { + screen.getAllByRole('columnheader').forEach((col: HTMLElement, index: number) => { expect(col).toHaveInlineStyle({ width: `${colWidthValues[index]}px` }); }); }); @@ -887,7 +887,7 @@ describe(' - Layout & warnings', () => { describe('localeText', () => { it('should replace the density selector button label text to "Size"', () => { - const { getByText } = render( + render(
    - Layout & warnings', () => {
    , ); - expect(getByText('Size')).not.to.equal(null); + expect(screen.getByText('Size')).not.to.equal(null); }); it('should support translations in the theme', () => { @@ -927,23 +927,21 @@ describe(' - Layout & warnings', () => {
    ); } - const { setProps, getByText } = render( - , - ); - expect(getByText('Density')).not.to.equal(null); + const { setProps } = render(); + expect(screen.getByText('Density')).not.to.equal(null); setProps({ localeText: { toolbarDensity: 'Densidade' } }); - expect(getByText('Densidade')).not.to.equal(null); + expect(screen.getByText('Densidade')).not.to.equal(null); }); }); describe('non-strict mode', () => { - const renderer = createRenderer({ strict: false }); + const { render: innerRender } = createRenderer({ strict: false }); it('should render in JSDOM', function test() { if (!/jsdom/.test(window.navigator.userAgent)) { this.skip(); // Only run in JSDOM } - renderer.render( + innerRender(
    , diff --git a/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx b/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx index 15693031a3be..94421d70f768 100644 --- a/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/pagination.DataGrid.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { spy, stub, SinonStub, SinonSpy } from 'sinon'; import { expect } from 'chai'; -import { createRenderer, fireEvent, screen, userEvent, waitFor } from '@mui/internal-test-utils'; +import { createRenderer, fireEvent, screen, waitFor } from '@mui/internal-test-utils'; import { DataGrid, DataGridProps, @@ -13,6 +13,7 @@ import { } from '@mui/x-data-grid'; import { useBasicDemoData } from '@mui/x-data-grid-generator'; import { getCell, getColumnValues, getRows } from 'test/utils/helperFn'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -631,7 +632,7 @@ describe(' - Pagination', () => { pageSizeOptions={[1]} />, ); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); fireEvent.click(screen.getByRole('button', { name: /next page/i })); expect(getCell(1, 0)).to.have.attr('tabindex', '0'); }); diff --git a/packages/x-data-grid/src/tests/quickFiltering.DataGrid.test.tsx b/packages/x-data-grid/src/tests/quickFiltering.DataGrid.test.tsx index dec971998713..44d608d5602f 100644 --- a/packages/x-data-grid/src/tests/quickFiltering.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/quickFiltering.DataGrid.test.tsx @@ -480,23 +480,27 @@ describe(' - Quick filter', () => { } it('should not ignore diacritics by default', () => { - let renderer = render(); + const { unmount } = render(); expect(getColumnValues(0)).to.deep.equal([]); - renderer.unmount(); + unmount(); - renderer = render(); + const { unmount: unmount2 } = render(); expect(getColumnValues(0)).to.deep.equal(['Apă']); - renderer.unmount(); + unmount2(); }); it('should ignore diacritics when `ignoreDiacritics` is enabled', () => { - let renderer = render(); + const { unmount } = render( + , + ); expect(getColumnValues(0)).to.deep.equal(['Apă']); - renderer.unmount(); + unmount(); - renderer = render(); + const { unmount: unmount2 } = render( + , + ); expect(getColumnValues(0)).to.deep.equal(['Apă']); - renderer.unmount(); + unmount2(); }); }); }); diff --git a/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx b/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx index f01954e76a1f..23f1c8f406d2 100644 --- a/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx @@ -1,14 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { - createRenderer, - fireEvent, - screen, - act, - userEvent, - waitFor, -} from '@mui/internal-test-utils'; +import { createRenderer, fireEvent, screen, act, waitFor } from '@mui/internal-test-utils'; import { DataGrid, DataGridProps, @@ -28,6 +21,7 @@ import { getActiveCell, grid, } from 'test/utils/helperFn'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { getBasicGridData } from '@mui/x-data-grid-generator'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -67,9 +61,9 @@ describe(' - Row selection', () => { describe('prop: checkboxSelection = false (single selection)', () => { it('should select one row at a time on click WITHOUT ctrl or meta pressed', () => { render(); - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); expect(getSelectedRowIds()).to.deep.equal([0]); - userEvent.mousePress(getCell(1, 0)); + fireUserEvent.mousePress(getCell(1, 0)); expect(getSelectedRowIds()).to.deep.equal([1]); }); @@ -113,12 +107,12 @@ describe(' - Row selection', () => { render(); const cell0 = getCell(0, 0); - userEvent.mousePress(cell0); + fireUserEvent.mousePress(cell0); fireEvent.keyDown(cell0, { key: ' ', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([0]); const cell1 = getCell(1, 0); - userEvent.mousePress(cell1); + fireUserEvent.mousePress(cell1); fireEvent.keyDown(cell1, { key: ' ', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([1]); }); @@ -144,7 +138,7 @@ describe(' - Row selection', () => { expect(onCellEditStart.callCount).to.equal(0); const cell01 = getCell(0, 1); - userEvent.mousePress(cell01); + fireUserEvent.mousePress(cell01); fireEvent.keyDown(cell01, { key: ' ', shiftKey: true }); @@ -152,7 +146,7 @@ describe(' - Row selection', () => { expect(getSelectedRowIds()).to.deep.equal([0]); const cell11 = getCell(1, 1); - userEvent.mousePress(cell11); + fireUserEvent.mousePress(cell11); fireEvent.keyDown(cell11, { key: ' ', shiftKey: true }); expect(onCellEditStart.callCount).to.equal(0); @@ -163,7 +157,7 @@ describe(' - Row selection', () => { it(`should deselect the selected row on Shift + Space`, () => { render(); const cell00 = getCell(0, 0); - userEvent.mousePress(cell00); + fireUserEvent.mousePress(cell00); fireEvent.keyDown(cell00, { key: ' ', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([0]); @@ -175,7 +169,7 @@ describe(' - Row selection', () => { it('should not select a range with shift pressed', () => { render(); const cell00 = getCell(0, 0); - userEvent.mousePress(cell00); + fireUserEvent.mousePress(cell00); fireEvent.keyDown(cell00, { key: ' ', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([0]); @@ -234,7 +228,7 @@ describe(' - Row selection', () => { // simulate click const checkboxInput = getCell(0, 0).querySelector('input'); - userEvent.mousePress(checkboxInput!); + fireUserEvent.mousePress(checkboxInput!); expect(getActiveCell()).to.equal('0-0'); }); @@ -380,8 +374,8 @@ describe(' - Row selection', () => { fireEvent.click(selectAllCheckbox); await waitFor(() => { expect(getSelectedRowIds()).to.deep.equal([0, 1, 2, 3]); - expect(grid('selectedRowCount')?.textContent).to.equal('4 rows selected'); }); + expect(grid('selectedRowCount')?.textContent).to.equal('4 rows selected'); fireEvent.change(screen.getByRole('spinbutton', { name: 'Value' }), { target: { value: 1 }, @@ -389,27 +383,27 @@ describe(' - Row selection', () => { await waitFor(() => { // Previous selection remains, but only one row is visible expect(getSelectedRowIds()).to.deep.equal([1]); - expect(grid('selectedRowCount')?.textContent).to.equal('4 rows selected'); }); + expect(grid('selectedRowCount')?.textContent).to.equal('4 rows selected'); fireEvent.click(selectAllCheckbox); // Unselect all await waitFor(() => { expect(getSelectedRowIds()).to.deep.equal([]); - expect(grid('selectedRowCount')).to.equal(null); }); + expect(grid('selectedRowCount')).to.equal(null); fireEvent.click(selectAllCheckbox); // Select all filtered rows await waitFor(() => { expect(getSelectedRowIds()).to.deep.equal([1]); - expect(grid('selectedRowCount')?.textContent).to.equal('1 row selected'); }); + expect(grid('selectedRowCount')?.textContent).to.equal('1 row selected'); }); }); describe('prop: checkboxSelection = true (multi selection), with keyboard events', () => { it('should select row below when pressing "ArrowDown" + shiftKey', () => { render(); - userEvent.mousePress(getCell(2, 1)); + fireUserEvent.mousePress(getCell(2, 1)); expect(getSelectedRowIds()).to.deep.equal([2]); fireEvent.keyDown(getCell(2, 1), { key: 'ArrowDown', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([2, 3]); @@ -419,10 +413,10 @@ describe(' - Row selection', () => { it('should unselect previous row when pressing "ArrowDown" + shiftKey', () => { render(); - userEvent.mousePress(getCell(3, 1)); + fireUserEvent.mousePress(getCell(3, 1)); expect(getSelectedRowIds()).to.deep.equal([3]); - userEvent.mousePress(getCell(1, 1), { shiftKey: true }); + fireUserEvent.mousePress(getCell(1, 1), { shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([1, 2, 3]); fireEvent.keyDown(getCell(1, 1), { key: 'ArrowDown', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([2, 3]); @@ -430,9 +424,9 @@ describe(' - Row selection', () => { it('should not unselect row above when pressing "ArrowDown" + shiftKey', () => { render(); - userEvent.mousePress(getCell(1, 1)); + fireUserEvent.mousePress(getCell(1, 1)); expect(getSelectedRowIds()).to.deep.equal([1]); - userEvent.mousePress(getCell(2, 1), { shiftKey: true }); + fireUserEvent.mousePress(getCell(2, 1), { shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([1, 2]); fireEvent.keyDown(getCell(2, 1), { key: 'ArrowDown', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([1, 2, 3]); @@ -442,9 +436,9 @@ describe(' - Row selection', () => { it('should unselect previous row when pressing "ArrowUp" + shiftKey', () => { render(); - userEvent.mousePress(getCell(2, 1)); + fireUserEvent.mousePress(getCell(2, 1)); expect(getSelectedRowIds()).to.deep.equal([2]); - userEvent.mousePress(getCell(3, 1), { shiftKey: true }); + fireUserEvent.mousePress(getCell(3, 1), { shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([2, 3]); fireEvent.keyDown(getCell(3, 1), { key: 'ArrowUp', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([2]); @@ -456,7 +450,7 @@ describe(' - Row selection', () => { expect(getSelectedRowIds()).to.deep.equal([]); const cell21 = getCell(2, 1); - userEvent.mousePress(cell21); + fireUserEvent.mousePress(cell21); fireEvent.keyDown(cell21, { key: ' ', shiftKey: true, @@ -465,7 +459,7 @@ describe(' - Row selection', () => { expect(getSelectedRowIds()).to.deep.equal([2]); const cell11 = getCell(1, 1); - userEvent.mousePress(cell11); + fireUserEvent.mousePress(cell11); fireEvent.keyDown(cell11, { key: ' ', shiftKey: true, @@ -480,7 +474,7 @@ describe(' - Row selection', () => { const data = getBasicGridData(20, 1); render(); const checkboxes = screen.queryAllByRole('checkbox', { name: /select row/i }); - userEvent.mousePress(checkboxes[0]); + fireUserEvent.mousePress(checkboxes[0]); expect(checkboxes[0]).toHaveFocus(); fireEvent.keyDown(checkboxes[0], { key: 'ArrowDown' }); fireEvent.keyDown(checkboxes[1], { key: 'ArrowDown' }); @@ -500,7 +494,7 @@ describe(' - Row selection', () => { expect(checkboxCell).to.have.attribute('tabindex', '-1'); expect(secondCell).to.have.attribute('tabindex', '-1'); - userEvent.mousePress(secondCell); + fireUserEvent.mousePress(secondCell); expect(secondCell).to.have.attribute('tabindex', '0'); fireEvent.keyDown(secondCell, { key: 'ArrowLeft' }); @@ -541,7 +535,7 @@ describe(' - Row selection', () => { } render(); const cell = getCell(1, 1); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); fireEvent.keyDown(cell, { key: 'ArrowLeft' }); fireEvent.keyDown(getCell(1, 0).querySelector('input')!, { key: 'ArrowUp' }); clock.runToLast(); // Wait for transition @@ -826,7 +820,7 @@ describe(' - Row selection', () => { it('should not select rows with Shift + Space', () => { render(); const cell0 = getCell(0, 0); - userEvent.mousePress(cell0); + fireUserEvent.mousePress(cell0); fireEvent.keyDown(cell0, { key: ' ', shiftKey: true }); expect(getSelectedRowIds()).to.deep.equal([]); }); @@ -842,7 +836,7 @@ describe(' - Row selection', () => { render(); // Select the first row - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); expect(getRow(0).getAttribute('aria-selected')).to.equal('true'); expect(getRow(1).getAttribute('aria-selected')).to.equal('false'); }); @@ -852,7 +846,7 @@ describe(' - Row selection', () => { expect(getRow(0).getAttribute('aria-selected')).to.equal(null); // Try to select the first row - userEvent.mousePress(getCell(0, 0)); + fireUserEvent.mousePress(getCell(0, 0)); // nothing should change expect(getRow(0).getAttribute('aria-selected')).to.equal(null); }); diff --git a/packages/x-data-grid/src/tests/rows.DataGrid.test.tsx b/packages/x-data-grid/src/tests/rows.DataGrid.test.tsx index 4cc711d37821..2efc26c7c9c3 100644 --- a/packages/x-data-grid/src/tests/rows.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/rows.DataGrid.test.tsx @@ -4,7 +4,6 @@ import { fireEvent, screen, act, - userEvent, ErrorBoundary, waitFor, } from '@mui/internal-test-utils'; @@ -33,6 +32,7 @@ import { getCell, microtasks, } from 'test/utils/helperFn'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import Dialog from '@mui/material/Dialog'; import { COMPACT_DENSITY_FACTOR } from '../hooks/features/density/densitySelector'; @@ -374,7 +374,7 @@ describe(' - Rows', () => { />, ); const moreButton = screen.getByRole('menuitem', { name: 'more' }); - userEvent.mousePress(moreButton); + fireUserEvent.mousePress(moreButton); await waitFor(() => { const printButton = screen.queryByRole('menuitem', { name: 'print' }); @@ -1146,7 +1146,7 @@ describe(' - Rows', () => { ); const cell = getCell(0, 0); - userEvent.mousePress(cell); + fireUserEvent.mousePress(cell); const virtualScroller = document.querySelector('.MuiDataGrid-virtualScroller')!; virtualScroller.scrollTop = 1000; diff --git a/packages/x-data-grid/src/tests/sorting.DataGrid.test.tsx b/packages/x-data-grid/src/tests/sorting.DataGrid.test.tsx index 4fec48edbd18..59bd49145729 100644 --- a/packages/x-data-grid/src/tests/sorting.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/sorting.DataGrid.test.tsx @@ -714,9 +714,9 @@ describe(' - Sorting', () => { setProps({ columns: [{ field: 'id' }] }); await waitFor(() => { expect(getColumnValues(0)).to.deep.equal(['0', '1', '2']); - expect(onSortModelChange.callCount).to.equal(1); - expect(onSortModelChange.lastCall.firstArg).to.deep.equal([]); }); + expect(onSortModelChange.callCount).to.equal(1); + expect(onSortModelChange.lastCall.firstArg).to.deep.equal([]); }); // See https://github.com/mui/mui-x/issues/9204 @@ -749,8 +749,8 @@ describe(' - Sorting', () => { setProps({ columns: [{ field: 'id' }], sortModel: [{ field: 'id', sort: 'desc' }] }); await waitFor(() => { expect(getColumnValues(0)).to.deep.equal(['2', '1', '0']); - expect(onSortModelChange.callCount).to.equal(0); }); + expect(onSortModelChange.callCount).to.equal(0); }); describe('getSortComparator', () => { diff --git a/packages/x-data-grid/src/tests/toolbar.DataGrid.test.tsx b/packages/x-data-grid/src/tests/toolbar.DataGrid.test.tsx index 12e1c495bd55..92cea1015317 100644 --- a/packages/x-data-grid/src/tests/toolbar.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/toolbar.DataGrid.test.tsx @@ -37,7 +37,7 @@ describe(' - Toolbar', () => { describe('column selector', () => { it('should hide "id" column when hiding it from the column selector', () => { - const { getByText } = render( + render(
    - Toolbar', () => { expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'brand']); - fireEvent.click(getByText('Columns')); + fireEvent.click(screen.getByText('Columns')); fireEvent.click(screen.getByRole('tooltip').querySelector('[name="id"]')!); expect(getColumnHeadersTextContent()).to.deep.equal(['brand']); @@ -66,7 +66,7 @@ describe(' - Toolbar', () => { }, ]; - const { getByText, getByRole } = render( + render(
    - Toolbar', () => {
    , ); - fireEvent.click(getByText('Columns')); - const showHideAllCheckbox = getByRole('checkbox', { name: 'Show/Hide All' }); + fireEvent.click(screen.getByText('Columns')); + const showHideAllCheckbox = screen.getByRole('checkbox', { name: 'Show/Hide All' }); fireEvent.click(showHideAllCheckbox); expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'brand']); fireEvent.click(showHideAllCheckbox); @@ -135,7 +135,7 @@ describe(' - Toolbar', () => { ); }; - const { getByText } = render( + render(
    - Toolbar', () => {
    , ); - fireEvent.click(getByText('Columns')); + fireEvent.click(screen.getByText('Columns')); const searchInput = document.querySelector('input[type="text"]')!; fireEvent.change(searchInput, { target: { value: 'test' } }); diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx index 1836534d0282..2dc85c2aa91d 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx @@ -1,13 +1,7 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { - screen, - fireEvent, - getByRole, - fireTouchChangedEvent, - userEvent, -} from '@mui/internal-test-utils'; +import { screen, fireEvent, within, fireTouchChangedEvent } from '@mui/internal-test-utils'; import { adapterToUse, buildPickerDragInteractions, @@ -21,10 +15,11 @@ import { } from '@mui/x-date-pickers-pro/DateRangeCalendar'; import { DateRangePickerDay } from '@mui/x-date-pickers-pro/DateRangePickerDay'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { RangePosition } from '../models'; const getPickerDay = (name: string, picker = 'January 2018') => - getByRole(screen.getByRole('grid', { name: picker }), 'gridcell', { name }); + within(screen.getByRole('grid', { name: picker })).getByRole('gridcell', { name }); const dynamicShouldDisableDate = (date, position: RangePosition) => { if (position === 'end') { @@ -540,7 +535,7 @@ describe('', () => { ); const renderCountBeforeChange = RenderCount.callCount; - userEvent.mousePress(getPickerDay('2')); + fireUserEvent.mousePress(getPickerDay('2')); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(2); // 2 render * 1 day }); @@ -555,10 +550,10 @@ describe('', () => { />, ); - userEvent.mousePress(getPickerDay('2')); + fireUserEvent.mousePress(getPickerDay('2')); const renderCountBeforeChange = RenderCount.callCount; - userEvent.mousePress(getPickerDay('4')); + fireUserEvent.mousePress(getPickerDay('4')); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(6); // 2 render * 3 day }); }); diff --git a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.test.tsx index c6b3c1487e6d..2d6094f4db18 100644 --- a/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DateRangePicker/DateRangePicker.test.tsx @@ -23,14 +23,14 @@ describe('', () => { it('should not open mobile picker dialog when clicked on input', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const { unmount } = renderWithProps({ enableAccessibleFieldDOMStructure: true }); fireEvent.click(getFieldInputRoot()); clock.runToLast(); expect(screen.queryByRole('tooltip')).not.to.equal(null); expect(screen.queryByRole('dialog')).to.equal(null); - v7Response.unmount(); + unmount(); // Test with v6 input renderWithProps({ enableAccessibleFieldDOMStructure: false }); diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx index 6137c60421f0..ee452e3e68ad 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, fireEvent, userEvent, act, getByRole } from '@mui/internal-test-utils'; +import { screen, fireEvent, act, within } from '@mui/internal-test-utils'; import { createTheme, ThemeProvider } from '@mui/material/styles'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DesktopDateRangePicker } from '@mui/x-date-pickers-pro/DesktopDateRangePicker'; @@ -15,11 +15,12 @@ import { getFieldSectionsContainer, getTextbox, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); const getPickerDay = (name: string, picker = 'January 2018') => - getByRole(screen.getByRole('grid', { name: picker }), 'gridcell', { name }); + within(screen.getByRole('grid', { name: picker })).getByRole('gridcell', { name }); describe('', () => { const { render, clock } = createPickerRenderer({ @@ -93,7 +94,7 @@ describe('', () => { describe('Field slot: SingleInputDateRangeField', () => { it('should add focused class to the field when it is focused', () => { // test v7 behavior - const response = render( + const { unmount } = render( ', () => { expect(sectionsContainer.parentElement).to.have.class('Mui-focused'); - response.unmount(); + unmount(); // test v6 behavior render(); @@ -118,7 +119,7 @@ describe('', () => { it('should render the input with a given `name` when `SingleInputDateRangeField` is used', () => { // Test with v7 input - const v7Response = render( + const { unmount } = render( ', () => { ); expect(screen.getByRole('textbox', { hidden: true }).name).to.equal('test'); - v7Response.unmount(); + unmount(); // Test with v6 input render(); @@ -244,13 +245,13 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the start date - userEvent.mousePress(getPickerDay('3')); + fireUserEvent.mousePress(getPickerDay('3')); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(defaultValue[1]); // Change the end date - userEvent.mousePress(getPickerDay('5')); + fireUserEvent.mousePress(getPickerDay('5')); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 5)); @@ -287,7 +288,7 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the end date - userEvent.mousePress(getPickerDay('3')); + fireUserEvent.mousePress(getPickerDay('3')); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 3)); @@ -318,7 +319,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'end' }); // Change the end date - userEvent.mousePress(getPickerDay('3')); + fireUserEvent.mousePress(getPickerDay('3')); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -346,7 +347,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Change the start date (already tested) - userEvent.mousePress(getPickerDay('3')); + fireUserEvent.mousePress(getPickerDay('3')); // Dismiss the picker // eslint-disable-next-line material-ui/disallow-active-element-as-key-event-target -- don't care @@ -380,12 +381,12 @@ describe('', () => { // Dismiss the picker const input = document.getElementById('test-id')!; + fireEvent.mouseDown(input); act(() => { - fireEvent.mouseDown(input); input.focus(); - fireEvent.mouseUp(input); - clock.runToLast(); }); + fireEvent.mouseUp(input); + clock.runToLast(); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); @@ -417,17 +418,17 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Change the start date (already tested) - userEvent.mousePress(getPickerDay('3')); + fireUserEvent.mousePress(getPickerDay('3')); clock.runToLast(); // Dismiss the picker const input = document.getElementById('test-id')!; + fireEvent.mouseDown(input); act(() => { - fireEvent.mouseDown(input); input.focus(); - fireEvent.mouseUp(input); }); + fireEvent.mouseUp(input); clock.runToLast(); @@ -453,7 +454,7 @@ describe('', () => { ); // Dismiss the picker - userEvent.mousePress(document.body); + fireUserEvent.mousePress(document.body); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -521,7 +522,7 @@ describe('', () => { expect(screen.getByRole('tooltip')).toBeVisible(); // Change the start date (already tested) - userEvent.mousePress(getPickerDay('3')); + fireUserEvent.mousePress(getPickerDay('3')); clock.runToLast(); act(() => { @@ -559,7 +560,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Clear the date - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(1); // Start date change expect(onChange.lastCall.args[0]).to.deep.equal([null, null]); expect(onAccept.callCount).to.equal(1); @@ -586,7 +587,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Clear the date - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx index ff1a2bf8b2c1..2639cbebef6b 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { adapterToUse, createPickerRenderer, @@ -13,6 +13,7 @@ import { import { DesktopDateRangePicker } from '@mui/x-date-pickers-pro/DesktopDateRangePicker'; import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -86,7 +87,7 @@ describe(' - Describes', () => { } if (isOpened) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getAllByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), })[0], @@ -148,7 +149,7 @@ describe(' - Describes', () => { } if (isOpened) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getAllByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), })[0], diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx index f39f90bdb0d1..e866a5140081 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -8,6 +8,7 @@ import { getFieldSectionsContainer, expectFieldValueV7, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DesktopDateTimeRangePicker } from '../DesktopDateTimeRangePicker'; describe('', () => { @@ -23,16 +24,16 @@ describe('', () => { openPicker({ type: 'date-time-range', variant: 'desktop', initialFocus: 'start' }); // select start date range - userEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); - userEvent.mousePress(screen.getByRole('option', { name: '4 hours' })); - userEvent.mousePress(screen.getByRole('option', { name: '5 minutes' })); - userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '4 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '5 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); // select end date range on the same day - userEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); - userEvent.mousePress(screen.getByRole('option', { name: '5 hours' })); - userEvent.mousePress(screen.getByRole('option', { name: '10 minutes' })); - userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '5 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '10 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); const startSectionsContainer = getFieldSectionsContainer(0); const endSectionsContainer = getFieldSectionsContainer(1); diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx index 25518f4a44f3..bd7c125ec4b4 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { describeConformance, screen, userEvent } from '@mui/internal-test-utils'; +import { describeConformance, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -9,6 +9,7 @@ import { describeRangeValidation, getFieldSectionsContainer, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DesktopDateTimeRangePicker } from '../DesktopDateTimeRangePicker'; describe(' - Describes', () => { @@ -101,7 +102,7 @@ describe(' - Describes', () => { ]; } if (isOpened) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), }), @@ -112,8 +113,10 @@ describe(' - Describes', () => { hasMeridiem ? 'hours12h' : 'hours24h', ); const hoursNumber = adapterToUse.getHours(newValue[setEndDate ? 1 : 0]); - userEvent.mousePress(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); - userEvent.mousePress( + fireUserEvent.mousePress( + screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), + ); + fireUserEvent.mousePress( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue[setEndDate ? 1 : 0])} minutes`, }), @@ -121,7 +124,7 @@ describe(' - Describes', () => { if (hasMeridiem) { // meridiem is an extra view on `DesktopDateTimeRangePicker` // we need to click it to finish selection - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), ); } diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx index e27cb9084aa3..177cf4752e9a 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { screen, userEvent, fireEvent } from '@mui/internal-test-utils'; +import { screen, fireEvent } from '@mui/internal-test-utils'; import { MobileDateRangePicker } from '@mui/x-date-pickers-pro/MobileDateRangePicker'; import { createPickerRenderer, @@ -9,6 +9,7 @@ import { openPicker, getFieldSectionsContainer, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DateRange } from '@mui/x-date-pickers-pro/models'; import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; @@ -18,7 +19,7 @@ describe('', () => { describe('Field slot: SingleInputDateRangeField', () => { it('should render the input with a given `name` when `SingleInputDateRangeField` is used', () => { // Test with v7 input - const v7Response = render( + const { unmount } = render( ', () => { ); expect(screen.getByRole('textbox', { hidden: true }).name).to.equal('test'); - v7Response.unmount(); + unmount(); // Test with v6 input render(); @@ -84,13 +85,13 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the start date - userEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(defaultValue[1]); // Change the end date - userEvent.mousePress(screen.getByRole('gridcell', { name: '5' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '5' })); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 5)); @@ -125,7 +126,7 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the end date - userEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 3)); @@ -154,7 +155,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'end' }); // Change the end date - userEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); @@ -185,10 +186,10 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Change the start date (already tested) - userEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); // Cancel the modifications - userEvent.mousePress(screen.getByText(/cancel/i)); + fireUserEvent.mousePress(screen.getByText(/cancel/i)); expect(onChange.callCount).to.equal(2); // Start date change + reset expect(onChange.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); expect(onChange.lastCall.args[0][1]).toEqualDateTime(defaultValue[1]); @@ -218,10 +219,10 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Change the start date (already tested) - userEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); // Accept the modifications - userEvent.mousePress(screen.getByText(/ok/i)); + fireUserEvent.mousePress(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal(1); // Start date change expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); @@ -252,7 +253,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Clear the date - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(1); // Start date change expect(onChange.lastCall.args[0]).to.deep.equal([null, null]); expect(onAccept.callCount).to.equal(1); @@ -279,7 +280,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Clear the date - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx index eea31d3a3659..7503ccadc73e 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, userEvent, fireDiscreteEvent } from '@mui/internal-test-utils'; +import { screen, fireDiscreteEvent } from '@mui/internal-test-utils'; import { MobileDateRangePicker } from '@mui/x-date-pickers-pro/MobileDateRangePicker'; import { adapterToUse, @@ -12,6 +12,7 @@ import { getFieldSectionsContainer, } from 'test/utils/pickers'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -86,7 +87,7 @@ describe(' - Describes', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); } - userEvent.mousePress( + fireUserEvent.mousePress( screen.getAllByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), })[0], diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx index 4aadcac52f6d..1422ba7bb233 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { describeConformance, fireEvent, screen, userEvent } from '@mui/internal-test-utils'; +import { describeConformance, fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -10,6 +10,7 @@ import { getFieldSectionsContainer, openPicker, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { MobileDateTimeRangePicker } from '../MobileDateTimeRangePicker'; describe(' - Describes', () => { @@ -108,12 +109,12 @@ describe(' - Describes', () => { // if we want to set the end date, we firstly need to switch to end date "range position" if (setEndDate) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('button', { name: adapterToUse.format(value[1], 'shortDate') }), ); } - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), }), @@ -124,8 +125,10 @@ describe(' - Describes', () => { hasMeridiem ? 'hours12h' : 'hours24h', ); const hoursNumber = adapterToUse.getHours(newValue[setEndDate ? 1 : 0]); - userEvent.mousePress(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); - userEvent.mousePress( + fireUserEvent.mousePress( + screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), + ); + fireUserEvent.mousePress( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue[setEndDate ? 1 : 0])} minutes`, }), @@ -133,7 +136,9 @@ describe(' - Describes', () => { if (hasMeridiem) { // meridiem is an extra view on `MobileDateTimeRangePicker` // we need to click it to finish selection - userEvent.mousePress(screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' })); + fireUserEvent.mousePress( + screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), + ); } // Close the picker if (!isOpened) { @@ -142,7 +147,7 @@ describe(' - Describes', () => { clock.runToLast(); } else { // return to the start date view in case we'd like to repeat the selection process - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('button', { name: adapterToUse.format(newValue[0], 'shortDate') }), ); } diff --git a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/editing.SingleInputDateRangeField.test.tsx b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/editing.SingleInputDateRangeField.test.tsx index 33b138e7262d..b392a9d80984 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/editing.SingleInputDateRangeField.test.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/editing.SingleInputDateRangeField.test.tsx @@ -13,31 +13,31 @@ describe(' - Editing', () => { describeAdapters(`key: Delete`, SingleInputDateRangeField, ({ adapter, renderWithProps }) => { it('should clear all the sections when all sections are selected and all sections are completed', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - fireEvent.keyDown(v7Response.getSectionsContainer(), { key: 'Delete' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); + fireEvent.keyDown(view.getSectionsContainer(), { key: 'Delete' }); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); @@ -48,33 +48,33 @@ describe(' - Editing', () => { it('should clear all the sections when all sections are selected and not all sections are completed', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section - fireEvent.input(v7Response.getActiveSection(0), { target: { innerHTML: 'j' } }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January YYYY – MMMM YYYY'); + fireEvent.input(view.getActiveSection(0), { target: { innerHTML: 'j' } }); + expectFieldValueV7(view.getSectionsContainer(), 'January YYYY – MMMM YYYY'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - fireEvent.keyDown(v7Response.getSectionsContainer(), { key: 'Delete' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); + fireEvent.keyDown(view.getSectionsContainer(), { key: 'Delete' }); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section fireEvent.change(input, { @@ -93,33 +93,33 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - fireEvent.keyDown(v7Response.getSectionsContainer(), { key: 'Delete' }); + fireEvent.keyDown(view.getSectionsContainer(), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(0); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, onChange: onChangeV6, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); @@ -132,52 +132,52 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Start date - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowRight' }); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowRight' }); - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(2), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(2); expect(onChangeV7.lastCall.firstArg[0]).to.equal(null); expect(onChangeV7.lastCall.firstArg[1]).toEqualDateTime(adapter.addYears(adapter.date(), 1)); // End date - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'ArrowRight' }); - fireEvent.keyDown(v7Response.getActiveSection(3), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(2), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(3), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(3); - fireEvent.keyDown(v7Response.getActiveSection(3), { key: 'ArrowRight' }); - fireEvent.keyDown(v7Response.getActiveSection(4), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(3), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(4), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(3); - fireEvent.keyDown(v7Response.getActiveSection(4), { key: 'ArrowRight' }); - fireEvent.keyDown(v7Response.getActiveSection(5), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(4), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(5), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(4); expect(onChangeV7.lastCall.firstArg[0]).to.equal(null); expect(onChangeV7.lastCall.firstArg[1]).to.equal(null); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], onChange: onChangeV6, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Start date fireEvent.keyDown(input, { key: 'Delete' }); @@ -209,27 +209,27 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'Delete' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], @@ -237,7 +237,7 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.keyDown(input, { key: 'Delete' }); expect(onChangeV6.callCount).to.equal(1); @@ -253,31 +253,31 @@ describe(' - Editing', () => { ({ adapter, renderWithProps }) => { it('should clear all the sections when all sections are selected and all sections are completed (Backspace)', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); + view.pressKey(null, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); @@ -288,33 +288,33 @@ describe(' - Editing', () => { it('should clear all the sections when all sections are selected and not all sections are completed (Backspace)', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section - fireEvent.input(v7Response.getActiveSection(0), { target: { innerHTML: 'j' } }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January YYYY – MMMM YYYY'); + fireEvent.input(view.getActiveSection(0), { target: { innerHTML: 'j' } }); + expectFieldValueV7(view.getSectionsContainer(), 'January YYYY – MMMM YYYY'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); + view.pressKey(null, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY – MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section fireEvent.change(input, { @@ -333,33 +333,33 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); + view.pressKey(null, ''); expect(onChangeV7.callCount).to.equal(0); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, onChange: onChangeV6, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); @@ -372,22 +372,22 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Start date - v7Response.pressKey(0, ''); + view.pressKey(0, ''); expect(onChangeV7.callCount).to.equal(1); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowRight' }); - v7Response.pressKey(1, ''); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowRight' }); + view.pressKey(1, ''); expect(onChangeV7.callCount).to.equal(1); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowRight' }); - v7Response.pressKey(2, ''); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowRight' }); + view.pressKey(2, ''); expect(onChangeV7.callCount).to.equal(2); expect(onChangeV7.lastCall.firstArg[0]).to.equal(null); expect(onChangeV7.lastCall.firstArg[1]).toEqualDateTime( @@ -395,31 +395,31 @@ describe(' - Editing', () => { ); // End date - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'ArrowRight' }); - v7Response.pressKey(3, ''); + fireEvent.keyDown(view.getActiveSection(2), { key: 'ArrowRight' }); + view.pressKey(3, ''); expect(onChangeV7.callCount).to.equal(3); - fireEvent.keyDown(v7Response.getActiveSection(3), { key: 'ArrowRight' }); - v7Response.pressKey(4, ''); + fireEvent.keyDown(view.getActiveSection(3), { key: 'ArrowRight' }); + view.pressKey(4, ''); expect(onChangeV7.callCount).to.equal(3); - fireEvent.keyDown(v7Response.getActiveSection(4), { key: 'ArrowRight' }); - v7Response.pressKey(5, ''); + fireEvent.keyDown(view.getActiveSection(4), { key: 'ArrowRight' }); + view.pressKey(5, ''); expect(onChangeV7.callCount).to.equal(4); expect(onChangeV7.lastCall.firstArg[0]).to.equal(null); expect(onChangeV7.lastCall.firstArg[1]).to.equal(null); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], onChange: onChangeV6, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Start date fireEvent.change(input, { target: { value: '/15/2022 – 06/15/2023' } }); @@ -453,27 +453,27 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - v7Response.pressKey(0, ''); + view.pressKey(0, ''); expect(onChangeV7.callCount).to.equal(1); - v7Response.pressKey(0, ''); + view.pressKey(0, ''); expect(onChangeV7.callCount).to.equal(1); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: [adapter.date(), adapter.addYears(adapter.date(), 1)], @@ -481,7 +481,7 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: ' 2022 – June 2023' } }); expect(onChangeV6.callCount).to.equal(1); diff --git a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/selection.SingleInputDateRangeField.test.tsx b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/selection.SingleInputDateRangeField.test.tsx index 26f9fe2ceedd..ce9852d7fd25 100644 --- a/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/selection.SingleInputDateRangeField.test.tsx +++ b/packages/x-date-pickers-pro/src/SingleInputDateRangeField/tests/selection.SingleInputDateRangeField.test.tsx @@ -22,14 +22,14 @@ describe(' - Selection', () => { describe('Focus', () => { it('should select 1st section (v7) / all sections (v6) on mount focus (`autoFocus = true`)', () => { // Test with v7 input - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, autoFocus: true, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY – MM/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY – MM/DD/YYYY'); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input renderWithProps({ autoFocus: true, enableAccessibleFieldDOMStructure: false }); @@ -57,89 +57,89 @@ describe(' - Selection', () => { describe('Click', () => { it('should select the clicked selection when the input is already focused', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: [null, adapterToUse.date('2022-02-24')], }); // Start date - v7Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v7Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); // End date - v7Response.selectSection('month', 'last'); + view.selectSection('month', 'last'); expect(getCleanedSelectedContent()).to.equal('02'); - v7Response.selectSection('day', 'last'); + view.selectSection('day', 'last'); expect(getCleanedSelectedContent()).to.equal('24'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, value: [null, adapterToUse.date('2022-02-24')], }); // Start date - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v6Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); // End date - v6Response.selectSection('month', 'last'); + view.selectSection('month', 'last'); expect(getCleanedSelectedContent()).to.equal('02'); - v6Response.selectSection('day', 'last'); + view.selectSection('day', 'last'); expect(getCleanedSelectedContent()).to.equal('24'); }); it('should not change the selection when clicking on the only already selected section', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: [null, adapterToUse.date('2022-02-24')], }); // Start date - v7Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v7Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); // End date - v7Response.selectSection('day', 'last'); + view.selectSection('day', 'last'); expect(getCleanedSelectedContent()).to.equal('24'); - v7Response.selectSection('day', 'last'); + view.selectSection('day', 'last'); expect(getCleanedSelectedContent()).to.equal('24'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, value: [null, adapterToUse.date('2022-02-24')], }); // Start date - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); // End date - v6Response.selectSection('day', 'last'); + view.selectSection('day', 'last'); expect(getCleanedSelectedContent()).to.equal('24'); - v6Response.selectSection('day', 'last'); + view.selectSection('day', 'last'); expect(getCleanedSelectedContent()).to.equal('24'); }); }); @@ -147,33 +147,33 @@ describe(' - Selection', () => { describe('key: ArrowRight', () => { it('should allow to move from left to right with ArrowRight', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('DD'); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(2), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('MM'); - fireEvent.keyDown(v7Response.getActiveSection(3), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(3), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('DD'); - fireEvent.keyDown(v7Response.getActiveSection(4), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(4), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); fireEvent.keyDown(input, { key: 'ArrowRight' }); @@ -194,20 +194,20 @@ describe(' - Selection', () => { it('should stay on the current section when the last section is selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('year', 'last'); + view.selectSection('year', 'last'); expect(getCleanedSelectedContent()).to.equal('YYYY'); - fireEvent.keyDown(v7Response.getActiveSection(5), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(5), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('year', 'last'); + view.selectSection('year', 'last'); expect(getCleanedSelectedContent()).to.equal('YYYY'); fireEvent.keyDown(input, { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); @@ -217,32 +217,32 @@ describe(' - Selection', () => { describe('key: ArrowLeft', () => { it('should allow to move from right to left with ArrowLeft', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('year', 'last'); + view.selectSection('year', 'last'); expect(getCleanedSelectedContent()).to.equal('YYYY'); - fireEvent.keyDown(v7Response.getActiveSection(5), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(5), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('DD'); - fireEvent.keyDown(v7Response.getActiveSection(4), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(4), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); - fireEvent.keyDown(v7Response.getActiveSection(3), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(3), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(2), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('DD'); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('year', 'last'); + view.selectSection('year', 'last'); expect(getCleanedSelectedContent()).to.equal('YYYY'); fireEvent.keyDown(input, { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('DD'); @@ -262,20 +262,20 @@ describe(' - Selection', () => { it('should stay on the current section when the first section is selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); fireEvent.keyDown(input, { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); diff --git a/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx b/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx index 6f8301a14602..3f51bd19e5d0 100644 --- a/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx +++ b/packages/x-date-pickers/src/AdapterDateFns/AdapterDateFns.test.tsx @@ -117,21 +117,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx index b88d9390fced..03caf784f4f1 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx +++ b/packages/x-date-pickers/src/AdapterDateFnsJalali/AdapterDateFnsJalali.test.tsx @@ -78,21 +78,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx index 4a35a3d2558a..f97f309af0fd 100644 --- a/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx +++ b/packages/x-date-pickers/src/AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.test.tsx @@ -64,21 +64,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx index dda1f5c56ab9..9095ecc60cc6 100644 --- a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx +++ b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.test.tsx @@ -148,21 +148,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.test.tsx b/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.test.tsx index 8c68148e8620..372dbfab75f6 100644 --- a/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.test.tsx +++ b/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.test.tsx @@ -107,21 +107,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); @@ -166,25 +163,22 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: 'DD', }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), format: 'DD', }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.test.tsx b/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.test.tsx index 895710889ae5..fa684d96e860 100644 --- a/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.test.tsx +++ b/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.test.tsx @@ -161,21 +161,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterMomentHijri/AdapterMomentHijri.test.tsx b/packages/x-date-pickers/src/AdapterMomentHijri/AdapterMomentHijri.test.tsx index de006376e282..bd86f319abe6 100644 --- a/packages/x-date-pickers/src/AdapterMomentHijri/AdapterMomentHijri.test.tsx +++ b/packages/x-date-pickers/src/AdapterMomentHijri/AdapterMomentHijri.test.tsx @@ -75,21 +75,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.test.tsx b/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.test.tsx index 1d326ff9e325..9a30e357c05d 100644 --- a/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.test.tsx +++ b/packages/x-date-pickers/src/AdapterMomentJalaali/AdapterMomentJalaali.test.tsx @@ -82,21 +82,18 @@ describe('', () => { }); it('should have correct placeholder', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - expectFieldValueV7( - v7Response.getSectionsContainer(), - localizedTexts[localeKey].placeholder, - ); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].placeholder); }); it('should have well formatted value', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(testDate), }); - expectFieldValueV7(v7Response.getSectionsContainer(), localizedTexts[localeKey].value); + expectFieldValueV7(view.getSectionsContainer(), localizedTexts[localeKey].value); }); }); }); diff --git a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx index fb52644ced5b..8cfd7af3ad1e 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx @@ -1,10 +1,11 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { fireEvent, userEvent, screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; import { PickersDay } from '@mui/x-date-pickers/PickersDay'; import { createPickerRenderer, adapterToUse } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -136,20 +137,20 @@ describe('', () => { const defaultDate = adapterToUse.date('2019-01-02T11:12:13.550Z'); render(); - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('button', { name: 'calendar view is open, switch to year view' }), ); - userEvent.mousePress(screen.getByRole('radio', { name: '2020' })); + fireUserEvent.mousePress(screen.getByRole('radio', { name: '2020' })); // Finish the transition to the day view clock.runToLast(); - userEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); - userEvent.mousePress( + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); + fireUserEvent.mousePress( screen.getByRole('button', { name: 'calendar view is open, switch to year view' }), ); // select the current year with a date in the past to trigger "findClosestEnabledDate" - userEvent.mousePress(screen.getByRole('radio', { name: '2019' })); + fireUserEvent.mousePress(screen.getByRole('radio', { name: '2019' })); expect(onChange.lastCall.firstArg).toEqualDateTime(defaultDate); }); @@ -195,7 +196,7 @@ describe('', () => { // should make the reference day firstly focusable expect(screen.getByRole('gridcell', { name: '17' })).to.have.attribute('tabindex', '0'); - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 3, 2, 12, 30)); }); @@ -212,7 +213,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 0, 2, 12, 20)); }); @@ -229,7 +230,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 0, 2, 12, 20)); }); @@ -245,7 +246,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime( adapterToUse.date('2018-01-02T11:11:11.111'), @@ -620,7 +621,7 @@ describe('', () => { ); const renderCountBeforeChange = RenderCount.callCount; - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(2); // 2 render * 1 day }); @@ -637,7 +638,7 @@ describe('', () => { ); const renderCountBeforeChange = RenderCount.callCount; - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(4); // 2 render * 2 days }); }); diff --git a/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx index 7a807f651b17..d3ab8212f0d7 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { DateCalendar, dateCalendarClasses as classes } from '@mui/x-date-pickers/DateCalendar'; import { pickersDayClasses } from '@mui/x-date-pickers/PickersDay'; import { @@ -10,6 +10,7 @@ import { describeValue, } from 'test/utils/pickers'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -47,7 +48,7 @@ describe(' - Describes', () => { }, setNewValue: (value) => { const newValue = adapterToUse.addDays(value, 1); - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); diff --git a/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx index 59249ab7660b..795a3bf042af 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx @@ -1,8 +1,9 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { userEvent, screen } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { describeAdapters } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; const TIMEZONE_TO_TEST = ['UTC', 'system', 'America/New_York']; @@ -17,7 +18,7 @@ describe(' - Timezone', () => { const onChange = spy(); render(); - userEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); const expectedDate = adapter.setDate(adapter.date(undefined, 'default'), 25); // Check the `onChange` value (uses default timezone, e.g: UTC, see TZ env variable) @@ -34,7 +35,7 @@ describe(' - Timezone', () => { it('should use timezone prop for onChange when no value is provided', () => { const onChange = spy(); render(); - userEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); const expectedDate = adapter.setDate( adapter.startOfDay(adapter.date(undefined, timezone)), 25, @@ -52,7 +53,7 @@ describe(' - Timezone', () => { render(); - userEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); const expectedDate = adapter.setDate(value, 25); // Check the `onChange` value (uses timezone prop) diff --git a/packages/x-date-pickers/src/DateField/tests/editing.DateField.test.tsx b/packages/x-date-pickers/src/DateField/tests/editing.DateField.test.tsx index 7c6ac2b0a0bc..b5140fdffb72 100644 --- a/packages/x-date-pickers/src/DateField/tests/editing.DateField.test.tsx +++ b/packages/x-date-pickers/src/DateField/tests/editing.DateField.test.tsx @@ -1,13 +1,14 @@ import { expect } from 'chai'; import { spy } from 'sinon'; import { DateField } from '@mui/x-date-pickers/DateField'; -import { act, userEvent, fireEvent } from '@mui/internal-test-utils'; +import { act, fireEvent } from '@mui/internal-test-utils'; import { expectFieldValueV7, getTextbox, describeAdapters, expectFieldValueV6, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Editing', () => { describeAdapters('key: ArrowDown', DateField, ({ adapter, testFieldKeyPress }) => { @@ -213,30 +214,30 @@ describe(' - Editing', () => { describeAdapters('key: Delete', DateField, ({ adapter, testFieldKeyPress, renderWithProps }) => { it('should clear the selected section when only this section is completed', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section - v7Response.pressKey(0, 'j'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January YYYY'); + view.pressKey(0, 'j'); + expectFieldValueV7(view.getSectionsContainer(), 'January YYYY'); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'Delete' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY'); + fireUserEvent.keyPress(view.getActiveSection(0), { key: 'Delete' }); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section fireEvent.change(input, { @@ -244,7 +245,7 @@ describe(' - Editing', () => { }); // press "j" expectFieldValueV6(input, 'January YYYY'); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expectFieldValueV6(input, 'MMMM YYYY'); }); @@ -259,68 +260,68 @@ describe(' - Editing', () => { it('should clear all the sections when all sections are selected and all sections are completed', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - userEvent.keyPress(v7Response.getSectionsContainer(), { key: 'Delete' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY'); + fireUserEvent.keyPress(view.getSectionsContainer(), { key: 'Delete' }); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expectFieldValueV6(input, 'MMMM YYYY'); }); it('should clear all the sections when all sections are selected and not all sections are completed', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section - v7Response.pressKey(0, 'j'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January YYYY'); + view.pressKey(0, 'j'); + expectFieldValueV7(view.getSectionsContainer(), 'January YYYY'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - userEvent.keyPress(v7Response.getSectionsContainer(), { key: 'Delete' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY'); + fireUserEvent.keyPress(view.getSectionsContainer(), { key: 'Delete' }); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Set a value for the "month" section fireEvent.change(input, { @@ -329,45 +330,45 @@ describe(' - Editing', () => { expectFieldValueV6(input, 'January YYYY'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expectFieldValueV6(input, 'MMMM YYYY'); }); it('should not keep query after typing again on a cleared section', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: adapter.formats.year, }); - v7Response.selectSection('year'); + view.selectSection('year'); - v7Response.pressKey(0, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '0002'); + view.pressKey(0, '2'); + expectFieldValueV7(view.getSectionsContainer(), '0002'); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'Delete' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'YYYY'); + fireUserEvent.keyPress(view.getActiveSection(0), { key: 'Delete' }); + expectFieldValueV7(view.getSectionsContainer(), 'YYYY'); - v7Response.pressKey(0, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '0002'); + view.pressKey(0, '2'); + expectFieldValueV7(view.getSectionsContainer(), '0002'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: adapter.formats.year, }); const input = getTextbox(); - v6Response.selectSection('year'); + view.selectSection('year'); fireEvent.change(input, { target: { value: '2' } }); // press "2" expectFieldValueV6(input, '0002'); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expectFieldValueV6(input, 'YYYY'); fireEvent.change(input, { target: { value: '2' } }); // press "2" @@ -388,38 +389,38 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - userEvent.keyPress(v7Response.getSectionsContainer(), { key: 'Delete' }); + fireUserEvent.keyPress(view.getSectionsContainer(), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(0); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, onChange: onChangeV6, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expect(onChangeV6.callCount).to.equal(0); }); @@ -427,32 +428,32 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'Delete' }); + fireUserEvent.keyPress(view.getActiveSection(0), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.args[1].validationError).to.equal('invalidDate'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowRight' }); - userEvent.keyPress(v7Response.getActiveSection(1), { key: 'Delete' }); + fireUserEvent.keyPress(view.getActiveSection(1), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(2); expect(onChangeV7.lastCall.firstArg).to.equal(null); expect(onChangeV7.lastCall.args[1].validationError).to.equal(null); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), @@ -460,15 +461,15 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expect(onChangeV6.callCount).to.equal(1); expect(onChangeV6.lastCall.args[1].validationError).to.equal('invalidDate'); - userEvent.keyPress(input, { key: 'ArrowRight' }); + fireUserEvent.keyPress(input, { key: 'ArrowRight' }); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expect(onChangeV6.callCount).to.equal(2); expect(onChangeV6.lastCall.firstArg).to.equal(null); expect(onChangeV6.lastCall.args[1].validationError).to.equal(null); @@ -478,27 +479,27 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'Delete' }); + fireUserEvent.keyPress(view.getActiveSection(0), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'Delete' }); + fireUserEvent.keyPress(view.getActiveSection(0), { key: 'Delete' }); expect(onChangeV7.callCount).to.equal(1); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), @@ -506,12 +507,12 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expect(onChangeV6.callCount).to.equal(1); - userEvent.keyPress(input, { key: 'Delete' }); + fireUserEvent.keyPress(input, { key: 'Delete' }); expect(onChangeV6.callCount).to.equal(1); }); }); @@ -748,7 +749,7 @@ describe(' - Editing', () => { it('should not allow key editing on disabled field', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, disabled: true, @@ -766,30 +767,30 @@ describe(' - Editing', () => { 'ArrowRight', ]; - v7Response.selectSection('month'); + view.selectSection('month'); keys.forEach((key) => { - v7Response.pressKey(0, key); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + view.pressKey(0, key); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); expect(onChangeV7.callCount).to.equal(0); }); // digit key press - userEvent.keyPress(v7Response.getActiveSection(0), { key: '2' }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + fireUserEvent.keyPress(view.getActiveSection(0), { key: '2' }); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, disabled: true, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // v6 doesn't allow focusing on sections when disabled keys.forEach((key) => { @@ -964,44 +965,44 @@ describe(' - Editing', () => { it('should allow to type the date 29th of February for leap years', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: adapter.formats.keyboardDate, }); - v7Response.selectSection('month'); + view.selectSection('month'); - v7Response.pressKey(0, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/DD/YYYY'); + view.pressKey(0, '2'); + expectFieldValueV7(view.getSectionsContainer(), '02/DD/YYYY'); - v7Response.pressKey(1, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/02/YYYY'); + view.pressKey(1, '2'); + expectFieldValueV7(view.getSectionsContainer(), '02/02/YYYY'); - v7Response.pressKey(1, '9'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/29/YYYY'); + view.pressKey(1, '9'); + expectFieldValueV7(view.getSectionsContainer(), '02/29/YYYY'); - v7Response.pressKey(2, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/29/0001'); + view.pressKey(2, '1'); + expectFieldValueV7(view.getSectionsContainer(), '02/29/0001'); - v7Response.pressKey(2, '9'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/29/0019'); + view.pressKey(2, '9'); + expectFieldValueV7(view.getSectionsContainer(), '02/29/0019'); - v7Response.pressKey(2, '8'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/29/0198'); + view.pressKey(2, '8'); + expectFieldValueV7(view.getSectionsContainer(), '02/29/0198'); - v7Response.pressKey(2, '8'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02/29/1988'); + view.pressKey(2, '8'); + expectFieldValueV7(view.getSectionsContainer(), '02/29/1988'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: adapter.formats.keyboardDate, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: '2/DD/YYYY' } }); expectFieldValueV6(input, '02/DD/YYYY'); @@ -1136,28 +1137,28 @@ describe(' - Editing', () => { ({ adapter, renderWithProps, testFieldChange }) => { it('should clear the selected section when only this section is completed (Backspace)', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); - v7Response.pressKey(0, 'j'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January YYYY'); + view.selectSection('month'); + view.pressKey(0, 'j'); + expectFieldValueV7(view.getSectionsContainer(), 'January YYYY'); - v7Response.pressKey(0, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY'); + view.pressKey(0, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: 'j YYYY' } }); expectFieldValueV6(input, 'January YYYY'); @@ -1167,28 +1168,28 @@ describe(' - Editing', () => { it('should clear the selected section when all sections are completed (Backspace)', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), }); - v7Response.selectSection('month'); + view.selectSection('month'); - v7Response.pressKey(0, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM 2022'); + view.pressKey(0, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM 2022'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: ' 2022' } }); expectFieldValueV6(input, 'MMMM 2022'); @@ -1196,31 +1197,31 @@ describe(' - Editing', () => { it('should clear all the sections when all sections are selected and all sections are completed (Backspace)', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY'); + view.pressKey(null, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); @@ -1231,31 +1232,31 @@ describe(' - Editing', () => { it('should clear all the sections when all sections are selected and not all sections are completed (Backspace)', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, }); - v7Response.selectSection('month'); - v7Response.pressKey(0, 'j'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January YYYY'); + view.selectSection('month'); + view.pressKey(0, 'j'); + expectFieldValueV7(view.getSectionsContainer(), 'January YYYY'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM YYYY'); + view.pressKey(null, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: 'j YYYY' } }); expectFieldValueV6(input, 'January YYYY'); @@ -1302,30 +1303,30 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), onChange: onChangeV7, }); - v7Response.selectSection('month'); - v7Response.pressKey(0, ''); + view.selectSection('month'); + view.pressKey(0, ''); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.args[1].validationError).to.equal('invalidDate'); - v7Response.selectSection('year'); - v7Response.pressKey(1, ''); + view.selectSection('year'); + view.pressKey(1, ''); expect(onChangeV7.callCount).to.equal(2); expect(onChangeV7.lastCall.firstArg).to.equal(null); expect(onChangeV7.lastCall.args[1].validationError).to.equal(null); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `${adapter.formats.month} ${adapter.formats.year}`, defaultValue: adapter.date(), @@ -1333,12 +1334,12 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: ' 2022' } }); expect(onChangeV6.callCount).to.equal(1); expect(onChangeV6.lastCall.args[1].validationError).to.equal('invalidDate'); - userEvent.keyPress(input, { key: 'ArrowRight' }); + fireUserEvent.keyPress(input, { key: 'ArrowRight' }); fireEvent.change(input, { target: { value: 'MMMM ' } }); expect(onChangeV6.callCount).to.equal(2); @@ -1367,90 +1368,92 @@ describe(' - Editing', () => { describeAdapters('Pasting', DateField, ({ adapter, renderWithProps }) => { const firePasteEventV7 = (element: HTMLElement, pastedValue: string) => { - act(() => { - const clipboardEvent = new window.Event('paste', { - bubbles: true, - cancelable: true, - composed: true, - }); + const clipboardEvent = new window.Event('paste', { + bubbles: true, + cancelable: true, + composed: true, + }); - // @ts-ignore - clipboardEvent.clipboardData = { - getData: () => pastedValue, - }; + // @ts-ignore + clipboardEvent.clipboardData = { + getData: () => pastedValue, + }; + let canContinue = true; + act(() => { // canContinue is `false` if default have been prevented - const canContinue = element.dispatchEvent(clipboardEvent); - if (!canContinue) { - return; - } - - fireEvent.input(element, { target: { textContent: pastedValue } }); + canContinue = element.dispatchEvent(clipboardEvent); }); + if (!canContinue) { + return; + } + + fireEvent.input(element, { target: { textContent: pastedValue } }); }; const firePasteEventV6 = (input: HTMLInputElement, pastedValue?: string, rawValue?: string) => { - act(() => { - const clipboardEvent = new window.Event('paste', { - bubbles: true, - cancelable: true, - composed: true, - }); + const clipboardEvent = new window.Event('paste', { + bubbles: true, + cancelable: true, + composed: true, + }); - // @ts-ignore - clipboardEvent.clipboardData = { - getData: () => pastedValue ?? rawValue ?? '', - }; + // @ts-ignore + clipboardEvent.clipboardData = { + getData: () => pastedValue ?? rawValue ?? '', + }; + let canContinue = true; + act(() => { // canContinue is `false` if default have been prevented - const canContinue = input.dispatchEvent(clipboardEvent); - if (!canContinue) { - return; - } - - if (!pastedValue) { - return; - } - - const prevValue = input.value; - const nextValue = `${prevValue.slice( - 0, - input.selectionStart || 0, - )}${pastedValue}${prevValue.slice(input.selectionEnd || 0)}`; - fireEvent.change(input, { target: { value: nextValue } }); + canContinue = input.dispatchEvent(clipboardEvent); }); + if (!canContinue) { + return; + } + + if (!pastedValue) { + return; + } + + const prevValue = input.value; + const nextValue = `${prevValue.slice( + 0, + input.selectionStart || 0, + )}${pastedValue}${prevValue.slice(input.selectionEnd || 0)}`; + fireEvent.change(input, { target: { value: nextValue } }); }; it('should set the date when all sections are selected, the pasted value is valid and a value is provided', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date(), onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), '09/16/2022'); + firePasteEventV7(view.getSectionsContainer(), '09/16/2022'); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2022, 8, 16)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date(), onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); firePasteEventV6(input, '09/16/2022'); @@ -1461,32 +1464,32 @@ describe(' - Editing', () => { it('should set the date when all sections are selected, the pasted value is valid and no value is provided', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), '09/16/2022'); + firePasteEventV7(view.getSectionsContainer(), '09/16/2022'); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2022, 8, 16)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); firePasteEventV6(input, '09/16/2022'); @@ -1497,30 +1500,30 @@ describe(' - Editing', () => { it('should not set the date when all sections are selected and the pasted value is not valid', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), 'Some invalid content'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); - v7Response.unmount(); + firePasteEventV7(view.getSectionsContainer(), 'Some invalid content'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); firePasteEventV6(input, 'Some invalid content'); expectFieldValueV6(input, 'MM/DD/YYYY'); @@ -1531,35 +1534,35 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, format: `${startChar}Escaped${endChar} ${adapter.formats.year}`, }); - v7Response.selectSection('year'); + view.selectSection('year'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), `Escaped 2014`); + firePasteEventV7(view.getSectionsContainer(), `Escaped 2014`); expect(onChangeV7.callCount).to.equal(1); expect(adapter.getYear(onChangeV7.lastCall.firstArg)).to.equal(2014); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, format: `${startChar}Escaped${endChar} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('year'); + view.selectSection('year'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); firePasteEventV6(input, `Escaped 2014`); expect(onChangeV6.callCount).to.equal(1); @@ -1570,36 +1573,36 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, readOnly: true, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), '09/16/2022'); + firePasteEventV7(view.getSectionsContainer(), '09/16/2022'); expect(onChangeV7.callCount).to.equal(0); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, readOnly: true, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); firePasteEventV6(input, '09/16/2022'); expect(onChangeV6.callCount).to.equal(0); @@ -1609,31 +1612,31 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); - firePasteEventV7(v7Response.getActiveSection(0), '12'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); + firePasteEventV7(view.getActiveSection(0), '12'); expect(onChangeV7.callCount).to.equal(1); - expectFieldValueV7(v7Response.getSectionsContainer(), '12/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), '12/DD/YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expectFieldValueV6(input, 'MM/DD/YYYY'); firePasteEventV6(input, '12'); @@ -1646,33 +1649,33 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2018-01-13'), onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - expectFieldValueV7(v7Response.getSectionsContainer(), '01/13/2018'); - firePasteEventV7(v7Response.getActiveSection(0), '12'); - expectFieldValueV7(v7Response.getSectionsContainer(), '12/13/2018'); + expectFieldValueV7(view.getSectionsContainer(), '01/13/2018'); + firePasteEventV7(view.getActiveSection(0), '12'); + expectFieldValueV7(view.getSectionsContainer(), '12/13/2018'); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2018, 11, 13)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date('2018-01-13'), onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expectFieldValueV6(input, '01/13/2018'); firePasteEventV6(input, '12'); @@ -1685,32 +1688,32 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2018-01-13'), onChange: onChangeV7, }); - v7Response.selectSection('month'); + view.selectSection('month'); - expectFieldValueV7(v7Response.getSectionsContainer(), '01/13/2018'); - firePasteEventV7(v7Response.getActiveSection(0), 'Jun'); - expectFieldValueV7(v7Response.getSectionsContainer(), '01/13/2018'); + expectFieldValueV7(view.getSectionsContainer(), '01/13/2018'); + firePasteEventV7(view.getActiveSection(0), 'Jun'); + expectFieldValueV7(view.getSectionsContainer(), '01/13/2018'); expect(onChangeV7.callCount).to.equal(0); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date('2018-01-13'), onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expectFieldValueV6(input, '01/13/2018'); firePasteEventV6(input, 'Jun'); @@ -1720,37 +1723,37 @@ describe(' - Editing', () => { it('should reset sections internal state when pasting', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2018-12-05'), }); - v7Response.selectSection('day'); + view.selectSection('day'); - v7Response.pressKey(1, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '12/02/2018'); + view.pressKey(1, '2'); + expectFieldValueV7(view.getSectionsContainer(), '12/02/2018'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), '09/16/2022'); - expectFieldValueV7(v7Response.getSectionsContainer(), '09/16/2022'); + firePasteEventV7(view.getSectionsContainer(), '09/16/2022'); + expectFieldValueV7(view.getSectionsContainer(), '09/16/2022'); - v7Response.selectSection('day'); + view.selectSection('day'); - v7Response.pressKey(1, '2'); // Press 2 - expectFieldValueV7(v7Response.getSectionsContainer(), '09/02/2022'); // If internal state is not reset it would be 22 instead of 02 + view.pressKey(1, '2'); // Press 2 + expectFieldValueV7(view.getSectionsContainer(), '09/02/2022'); // If internal state is not reset it would be 22 instead of 02 - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date('2018-12-05'), enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('day'); + view.selectSection('day'); fireEvent.change(input, { target: { value: '12/2/2018' } }); // Press 2 expectFieldValueV6(input, '12/02/2018'); @@ -1763,32 +1766,32 @@ describe(' - Editing', () => { }); it('should allow pasting a section', () => { - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2018-12-05'), }); - v7Response.selectSection('month'); + view.selectSection('month'); - v7Response.pressKey(0, '1'); // Press 1 - expectFieldValueV7(v7Response.getSectionsContainer(), '01/05/2018'); + view.pressKey(0, '1'); // Press 1 + expectFieldValueV7(view.getSectionsContainer(), '01/05/2018'); - firePasteEventV7(v7Response.getActiveSection(0), '05'); - expectFieldValueV7(v7Response.getSectionsContainer(), '05/05/2018'); + firePasteEventV7(view.getActiveSection(0), '05'); + expectFieldValueV7(view.getSectionsContainer(), '05/05/2018'); - v7Response.selectSection('month'); // move back to month section - v7Response.pressKey(0, '2'); // check that the search query has been cleared after pasting - expectFieldValueV7(v7Response.getSectionsContainer(), '02/05/2018'); // If internal state is not reset it would be 12 instead of 02 + view.selectSection('month'); // move back to month section + view.pressKey(0, '2'); // check that the search query has been cleared after pasting + expectFieldValueV7(view.getSectionsContainer(), '02/05/2018'); // If internal state is not reset it would be 12 instead of 02 - v7Response.unmount(); + view.unmount(); - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date('2018-12-05'), enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: '1/05/2018' } }); // initiate search query on month section expectFieldValueV6(input, '01/05/2018'); @@ -1796,7 +1799,7 @@ describe(' - Editing', () => { firePasteEventV6(input, undefined, '05'); expectFieldValueV6(input, '05/05/2018'); - v6Response.selectSection('month'); // move back to month section + view.selectSection('month'); // move back to month section fireEvent.change(input, { target: { value: '2/05/2018' } }); // check that the search query has been cleared after pasting expectFieldValueV6(input, '02/05/2018'); // If internal state is not reset it would be 12 instead of 02 }); @@ -1804,32 +1807,32 @@ describe(' - Editing', () => { it('should not allow pasting on disabled field', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, disabled: true, }); - v7Response.selectSection('month'); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); - firePasteEventV7(v7Response.getSectionsContainer(), '09/16/2022'); + firePasteEventV7(view.getSectionsContainer(), '09/16/2022'); expect(onChangeV7.callCount).to.equal(0); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, disabled: true, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); firePasteEventV6(input, '9'); // v6 doesn't allow focusing on sections when disabled @@ -1846,27 +1849,27 @@ describe(' - Editing', () => { it('should not loose time information when a value is provided', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, }); - v7Response.selectSection('year'); - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'ArrowDown' }); + view.selectSection('year'); + fireEvent.keyDown(view.getActiveSection(2), { key: 'ArrowDown' }); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2009, 3, 3, 3, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('year'); - userEvent.keyPress(input, { key: 'ArrowDown' }); + view.selectSection('year'); + fireUserEvent.keyPress(input, { key: 'ArrowDown' }); expect(onChangeV6.lastCall.firstArg).toEqualDateTime(new Date(2009, 3, 3, 3, 3, 3)); }); @@ -1874,51 +1877,51 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); - v7Response.selectSection('month'); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); + view.pressKey(null, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); + view.selectSection('month'); - v7Response.pressKey(0, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '01/DD/YYYY'); + view.pressKey(0, '1'); + expectFieldValueV7(view.getSectionsContainer(), '01/DD/YYYY'); - v7Response.pressKey(0, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/DD/YYYY'); + view.pressKey(0, '1'); + expectFieldValueV7(view.getSectionsContainer(), '11/DD/YYYY'); - v7Response.pressKey(1, '2'); - v7Response.pressKey(1, '5'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/25/YYYY'); + view.pressKey(1, '2'); + view.pressKey(1, '5'); + expectFieldValueV7(view.getSectionsContainer(), '11/25/YYYY'); - v7Response.pressKey(2, '2'); - v7Response.pressKey(2, '0'); - v7Response.pressKey(2, '0'); - v7Response.pressKey(2, '9'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/25/2009'); + view.pressKey(2, '2'); + view.pressKey(2, '0'); + view.pressKey(2, '0'); + view.pressKey(2, '9'); + expectFieldValueV7(view.getSectionsContainer(), '11/25/2009'); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2009, 10, 25, 3, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + view.selectSection('month'); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); fireEvent.change(input, { target: { value: '' } }); - userEvent.keyPress(input, { key: 'ArrowLeft' }); + fireUserEvent.keyPress(input, { key: 'ArrowLeft' }); fireEvent.change(input, { target: { value: '1/DD/YYYY' } }); // Press "1" expectFieldValueV6(input, '01/DD/YYYY'); @@ -1942,24 +1945,24 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: adapter.formats.year, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, }); - v7Response.selectSection('year'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowDown' }); + view.selectSection('year'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowDown' }); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2009, 3, 3, 3, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ format: adapter.formats.year, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, @@ -1967,8 +1970,8 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('year'); - userEvent.keyPress(input, { key: 'ArrowDown' }); + view.selectSection('year'); + fireUserEvent.keyPress(input, { key: 'ArrowDown' }); expect(onChangeV6.lastCall.firstArg).toEqualDateTime(new Date(2009, 3, 3, 3, 3, 3)); }); @@ -1977,32 +1980,32 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: adapter.formats.month, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, }); - v7Response.selectSection('month'); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'ArrowDown' }); + view.selectSection('month'); + fireUserEvent.keyPress(view.getActiveSection(0), { key: 'ArrowDown' }); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2010, 2, 3, 3, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ format: adapter.formats.month, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, enableAccessibleFieldDOMStructure: false, }); - v6Response.selectSection('month'); + view.selectSection('month'); const input = getTextbox(); - userEvent.keyPress(input, { key: 'ArrowDown' }); + fireUserEvent.keyPress(input, { key: 'ArrowDown' }); expect(onChangeV6.lastCall.firstArg).toEqualDateTime(new Date(2010, 2, 3, 3, 3, 3)); }); }, @@ -2015,16 +2018,16 @@ describe(' - Editing', () => { it('should set the date when the change value is valid and no value is provided', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange: onChangeV7, }); - fireEvent.change(v7Response.getHiddenInput(), { target: { value: '09/16/2022' } }); + fireEvent.change(view.getHiddenInput(), { target: { value: '09/16/2022' } }); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2022, 8, 16)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); @@ -2043,18 +2046,18 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, }); - fireEvent.change(v7Response.getHiddenInput(), { target: { value: '09/16/2022' } }); + fireEvent.change(view.getHiddenInput(), { target: { value: '09/16/2022' } }); expect(onChangeV7.callCount).to.equal(1); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2022, 8, 16, 3, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); @@ -2098,7 +2101,7 @@ describe(' - Editing', () => { }); it('should support digit editing', () => { - const v6Response = renderWithProps({ + const view = renderWithProps({ defaultValue: adapter.date('2022-11-23'), enableAccessibleFieldDOMStructure: false, }); @@ -2106,53 +2109,45 @@ describe(' - Editing', () => { const input = getTextbox(); const initialValueStr = input.value; - v6Response.selectSection('day'); + view.selectSection('day'); - act(() => { - // Remove the selected section - fireEvent.change(input, { target: { value: initialValueStr.replace('23', '') } }); + // Remove the selected section + fireEvent.change(input, { target: { value: initialValueStr.replace('23', '') } }); - // Set the key pressed in the selected section - fireEvent.change(input, { target: { value: initialValueStr.replace('23', '2') } }); - }); + // Set the key pressed in the selected section + fireEvent.change(input, { target: { value: initialValueStr.replace('23', '2') } }); - act(() => { - // Remove the selected section - fireEvent.change(input, { target: { value: initialValueStr.replace('23', '') } }); + // Remove the selected section + fireEvent.change(input, { target: { value: initialValueStr.replace('23', '') } }); - // Set the key pressed in the selected section - fireEvent.change(input, { target: { value: initialValueStr.replace('23', '1') } }); - }); + // Set the key pressed in the selected section + fireEvent.change(input, { target: { value: initialValueStr.replace('23', '1') } }); expectFieldValueV6(input, '11/01/2022'); }); it('should support letter editing', () => { // Test with v6 input - const v6Response = renderWithProps({ + const view = renderWithProps({ defaultValue: adapter.date('2022-01-16'), format: `${adapter.formats.month} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); - act(() => { - // Remove the selected section - fireEvent.change(input, { target: { value: ' 2022' } }); + // Remove the selected section + fireEvent.change(input, { target: { value: ' 2022' } }); - // Set the key pressed in the selected section - fireEvent.change(input, { target: { value: 'J 2022' } }); - }); + // Set the key pressed in the selected section + fireEvent.change(input, { target: { value: 'J 2022' } }); - act(() => { - // Remove the selected section - fireEvent.change(input, { target: { value: ' 2022' } }); + // Remove the selected section + fireEvent.change(input, { target: { value: ' 2022' } }); - // Set the key pressed in the selected section - fireEvent.change(input, { target: { value: 'a 2022' } }); - }); + // Set the key pressed in the selected section + fireEvent.change(input, { target: { value: 'a 2022' } }); expectFieldValueV6(input, 'April 2022'); }); @@ -2162,76 +2157,76 @@ describe(' - Editing', () => { describeAdapters('Editing from the outside', DateField, ({ adapter, renderWithProps, clock }) => { it('should be able to reset the value from the outside', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date('2022-11-23'), }); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/23/2022'); + expectFieldValueV7(view.getSectionsContainer(), '11/23/2022'); - v7Response.setProps({ value: null }); + view.setProps({ value: null }); - v7Response.selectSection('month'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + view.selectSection('month'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ value: adapter.date('2022-11-23'), enableAccessibleFieldDOMStructure: false, }); const input = getTextbox(); expectFieldValueV6(input, '11/23/2022'); - v6Response.setProps({ value: null }); + view.setProps({ value: null }); - v6Response.selectSection('month'); + view.selectSection('month'); expectFieldValueV6(input, 'MM/DD/YYYY'); }); it('should reset the input query state on an unfocused field', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: null }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: null }); - v7Response.selectSection('month'); + view.selectSection('month'); - v7Response.pressKey(0, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '01/DD/YYYY'); + view.pressKey(0, '1'); + expectFieldValueV7(view.getSectionsContainer(), '01/DD/YYYY'); - v7Response.pressKey(0, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/DD/YYYY'); + view.pressKey(0, '1'); + expectFieldValueV7(view.getSectionsContainer(), '11/DD/YYYY'); - v7Response.pressKey(1, '2'); - v7Response.pressKey(1, '5'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/25/YYYY'); + view.pressKey(1, '2'); + view.pressKey(1, '5'); + expectFieldValueV7(view.getSectionsContainer(), '11/25/YYYY'); - v7Response.pressKey(2, '2'); - v7Response.pressKey(2, '0'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/25/0020'); + view.pressKey(2, '2'); + view.pressKey(2, '0'); + expectFieldValueV7(view.getSectionsContainer(), '11/25/0020'); act(() => { - v7Response.getSectionsContainer().blur(); + view.getSectionsContainer().blur(); }); clock.runToLast(); - v7Response.setProps({ value: adapter.date('2022-11-23') }); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/23/2022'); + view.setProps({ value: adapter.date('2022-11-23') }); + expectFieldValueV7(view.getSectionsContainer(), '11/23/2022'); - v7Response.selectSection('year'); + view.selectSection('year'); - v7Response.pressKey(2, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/23/0002'); - v7Response.pressKey(2, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '11/23/0021'); + view.pressKey(2, '2'); + expectFieldValueV7(view.getSectionsContainer(), '11/23/0002'); + view.pressKey(2, '1'); + expectFieldValueV7(view.getSectionsContainer(), '11/23/0021'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false, value: null }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, value: null }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.change(input, { target: { value: '1/DD/YYYY' } }); // Press "1" expectFieldValueV6(input, '01/DD/YYYY'); @@ -2251,15 +2246,15 @@ describe(' - Editing', () => { input.blur(); }); - v6Response.setProps({ value: adapter.date('2022-11-23') }); + view.setProps({ value: adapter.date('2022-11-23') }); expectFieldValueV6(input, '11/23/2022'); + fireEvent.mouseDown(input); + fireEvent.mouseUp(input); act(() => { - fireEvent.mouseDown(input); - fireEvent.mouseUp(input); input.setSelectionRange(6, 9); - fireEvent.click(input); }); + fireEvent.click(input); fireEvent.change(input, { target: { value: '11/23/2' } }); // Press "2" expectFieldValueV6(input, '11/23/0002'); @@ -2271,26 +2266,26 @@ describe(' - Editing', () => { describeAdapters('Select all', DateField, ({ renderWithProps }) => { it('should edit the 1st section when all sections are selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); // When all sections are selected, the value only contains the key pressed - v7Response.pressKey(null, '9'); + view.pressKey(null, '9'); - expectFieldValueV7(v7Response.getSectionsContainer(), '09/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), '09/DD/YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); - v6Response.selectSection('month'); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view.selectSection('month'); const input = getTextbox(); // Select all sections - userEvent.keyPress(input, { key: 'a', ctrlKey: true }); + fireUserEvent.keyPress(input, { key: 'a', ctrlKey: true }); // When all sections are selected, the value only contains the key pressed fireEvent.change(input, { target: { value: '9' } }); diff --git a/packages/x-date-pickers/src/DateField/tests/format.DateField.test.tsx b/packages/x-date-pickers/src/DateField/tests/format.DateField.test.tsx index f680275405ce..67c0df9d5edc 100644 --- a/packages/x-date-pickers/src/DateField/tests/format.DateField.test.tsx +++ b/packages/x-date-pickers/src/DateField/tests/format.DateField.test.tsx @@ -12,20 +12,20 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const { start: startChar, end: endChar } = adapter.escapedCharacters; // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, // For Day.js: "[Escaped] YYYY" format: `${startChar}Escaped${endChar} ${adapter.formats.year}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'Escaped YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'Escaped YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'Escaped 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), 'Escaped 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ // For Day.js: "[Escaped] YYYY" format: `${startChar}Escaped${endChar} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, @@ -33,7 +33,7 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'Escaped YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, 'Escaped 2019'); }); @@ -41,21 +41,21 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const { start: startChar, end: endChar } = adapter.escapedCharacters; // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, // For Day.js: "MMMM [Escaped] YYYY" format: `${adapter.formats.month} ${startChar}Escaped${endChar} ${adapter.formats.year}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM Escaped YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM Escaped YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January Escaped 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), 'January Escaped 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ // For Day.js: "MMMM [Escaped] YYYY" format: `${adapter.formats.month} ${startChar}Escaped${endChar} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, @@ -64,7 +64,7 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'MMMM Escaped YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, 'January Escaped 2019'); }); @@ -77,21 +77,21 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp } // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, // For Day.js: "MMMM [Escaped[] YYYY" format: `${adapter.formats.month} ${startChar}Escaped ${startChar}${endChar} ${adapter.formats.year}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM Escaped [ YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM Escaped [ YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'January Escaped [ 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), 'January Escaped [ 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ // For Day.js: "MMMM [Escaped[] YYYY" format: `${adapter.formats.month} ${startChar}Escaped ${startChar}${endChar} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, @@ -100,7 +100,7 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'MMMM Escaped [ YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, 'January Escaped [ 2019'); }); @@ -108,21 +108,21 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const { start: startChar, end: endChar } = adapter.escapedCharacters; // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, // For Day.js: "[Escaped] MMMM [Escaped] YYYY" format: `${startChar}Escaped${endChar} ${adapter.formats.month} ${startChar}Escaped${endChar} ${adapter.formats.year}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'Escaped MMMM Escaped YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'Escaped MMMM Escaped YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'Escaped January Escaped 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), 'Escaped January Escaped 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ // For Day.js: "[Escaped] MMMM [Escaped] YYYY" format: `${startChar}Escaped${endChar} ${adapter.formats.month} ${startChar}Escaped${endChar} ${adapter.formats.year}`, enableAccessibleFieldDOMStructure: false, @@ -131,7 +131,7 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'Escaped MMMM Escaped YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, 'Escaped January Escaped 2019'); }); @@ -139,15 +139,15 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const { start: startChar, end: endChar } = adapter.escapedCharacters; // Test with v7 input - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, // For Day.js: "[Escaped] [Escaped]" format: `${startChar}Escaped${endChar} ${startChar}Escaped${endChar}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'Escaped Escaped'); + expectFieldValueV7(view.getSectionsContainer(), 'Escaped Escaped'); - v7Response.unmount(); + view.unmount(); // Test with v6 input renderWithProps({ @@ -161,30 +161,30 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp }); it('should support format without separators', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `${adapter.formats.dayOfMonth}${adapter.formats.monthShort}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'DDMMMM'); + expectFieldValueV7(view.getSectionsContainer(), 'DDMMMM'); }); it('should add spaces around `/` when `formatDensity = "spacious"`', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, formatDensity: `spacious`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM / DD / YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM / DD / YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), '01 / 01 / 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), '01 / 01 / 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ formatDensity: `spacious`, enableAccessibleFieldDOMStructure: false, }); @@ -192,27 +192,27 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'MM / DD / YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, '01 / 01 / 2019'); }); it('should add spaces around `.` when `formatDensity = "spacious"`', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, formatDensity: `spacious`, format: adapter.expandFormat(adapter.formats.keyboardDate).replace(/\//g, '.'), }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM . DD . YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM . DD . YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), '01 . 01 . 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), '01 . 01 . 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ formatDensity: `spacious`, format: adapter.expandFormat(adapter.formats.keyboardDate).replace(/\//g, '.'), enableAccessibleFieldDOMStructure: false, @@ -221,27 +221,27 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'MM . DD . YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, '01 . 01 . 2019'); }); it('should add spaces around `-` when `formatDensity = "spacious"`', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, formatDensity: `spacious`, format: adapter.expandFormat(adapter.formats.keyboardDate).replace(/\//g, '-'), }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM - DD - YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM - DD - YYYY'); - v7Response.setProps({ value: adapter.date('2019-01-01') }); - expectFieldValueV7(v7Response.getSectionsContainer(), '01 - 01 - 2019'); + view.setProps({ value: adapter.date('2019-01-01') }); + expectFieldValueV7(view.getSectionsContainer(), '01 - 01 - 2019'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ formatDensity: `spacious`, format: adapter.expandFormat(adapter.formats.keyboardDate).replace(/\//g, '-'), enableAccessibleFieldDOMStructure: false, @@ -250,7 +250,7 @@ describeAdapters(' - Format', DateField, ({ adapter, renderWithProp const input = getTextbox(); expectFieldPlaceholderV6(input, 'MM - DD - YYYY'); - v6Response.setProps({ value: adapter.date('2019-01-01') }); + view.setProps({ value: adapter.date('2019-01-01') }); expectFieldValueV6(input, '01 - 01 - 2019'); }); }); diff --git a/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx b/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx index 4036ee7beaf6..e0b6a0114dd1 100644 --- a/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx +++ b/packages/x-date-pickers/src/DateField/tests/selection.DateField.test.tsx @@ -18,13 +18,13 @@ describe(' - Selection', () => { describe('Focus', () => { it('should select 1st section (v7) / all sections (v6) on mount focus (`autoFocus = true`)', () => { // Text with v7 input - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, autoFocus: true, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Text with v6 input renderWithProps({ enableAccessibleFieldDOMStructure: false, autoFocus: true }); @@ -35,14 +35,14 @@ describe(' - Selection', () => { it('should select 1st section (v7) / all sections (v6) (`autoFocus = true`) with start separator', () => { // Text with v7 input - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, autoFocus: true, format: `- ${adapterToUse.formats.year}`, }); - expectFieldValueV7(v7Response.getSectionsContainer(), '- YYYY'); + expectFieldValueV7(view.getSectionsContainer(), '- YYYY'); expect(getCleanedSelectedContent()).to.equal('YYYY'); - v7Response.unmount(); + view.unmount(); // Text with v6 input renderWithProps({ @@ -109,10 +109,10 @@ describe(' - Selection', () => { it('should select day on desktop (v6 only)', () => { // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('day'); + view.selectSection('day'); expectFieldValueV6(input, 'MM/DD/YYYY'); expect(getCleanedSelectedContent()).to.equal('DD'); @@ -122,45 +122,45 @@ describe(' - Selection', () => { describe('Click', () => { it('should select the clicked selection when the input is already focused', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v7Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v6Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); }); it('should not change the selection when clicking on the only already selected section', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); - v7Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v7Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); }); }); @@ -168,40 +168,40 @@ describe(' - Selection', () => { describe('key: Ctrl + A', () => { it('should select all sections', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); expect(getCleanedSelectedContent()).to.equal('MM/DD/YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); expect(getCleanedSelectedContent()).to.equal('MM/DD/YYYY'); }); it('should select all sections with start separator', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: `- ${adapterToUse.formats.year}`, }); - v7Response.selectSection('year'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + view.selectSection('year'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); expect(getCleanedSelectedContent()).to.equal('- YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: `- ${adapterToUse.formats.year}`, }); const input = getTextbox(); - v6Response.selectSection('year'); + view.selectSection('year'); fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); expect(getCleanedSelectedContent()).to.equal('- YYYY'); }); @@ -210,17 +210,17 @@ describe(' - Selection', () => { describe('key: ArrowRight', () => { it('should move selection to the next section when one section is selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('day'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); fireEvent.keyDown(input, { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); @@ -228,17 +228,17 @@ describe(' - Selection', () => { it('should stay on the current section when the last section is selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('year'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('year'); expect(getCleanedSelectedContent()).to.equal('YYYY'); - fireEvent.keyDown(v7Response.getActiveSection(2), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(2), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('year'); + view.selectSection('year'); expect(getCleanedSelectedContent()).to.equal('YYYY'); fireEvent.keyDown(input, { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); @@ -246,22 +246,22 @@ describe(' - Selection', () => { it('should select the last section when all the sections are selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); expect(getCleanedSelectedContent()).to.equal('MM/DD/YYYY'); - fireEvent.keyDown(v7Response.getSectionsContainer(), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getSectionsContainer(), { key: 'ArrowRight' }); expect(getCleanedSelectedContent()).to.equal('YYYY'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); @@ -275,17 +275,17 @@ describe(' - Selection', () => { describe('key: ArrowLeft', () => { it('should move selection to the previous section when one section is selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('day'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('day'); + view.selectSection('day'); expect(getCleanedSelectedContent()).to.equal('DD'); fireEvent.keyDown(input, { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); @@ -293,17 +293,17 @@ describe(' - Selection', () => { it('should stay on the current section when the first section is selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expect(getCleanedSelectedContent()).to.equal('MM'); fireEvent.keyDown(input, { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); @@ -311,22 +311,22 @@ describe(' - Selection', () => { it('should select the first section when all the sections are selected', () => { // Test with v7 input - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); - v7Response.selectSection('month'); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + view.selectSection('month'); // Select all sections - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); expect(getCleanedSelectedContent()).to.equal('MM/DD/YYYY'); - fireEvent.keyDown(v7Response.getSectionsContainer(), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getSectionsContainer(), { key: 'ArrowLeft' }); expect(getCleanedSelectedContent()).to.equal('MM'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ enableAccessibleFieldDOMStructure: false }); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); // Select all sections fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); diff --git a/packages/x-date-pickers/src/DateTimeField/tests/editing.DateTimeField.test.tsx b/packages/x-date-pickers/src/DateTimeField/tests/editing.DateTimeField.test.tsx index cd0885e18eef..2abe7bd407d2 100644 --- a/packages/x-date-pickers/src/DateTimeField/tests/editing.DateTimeField.test.tsx +++ b/packages/x-date-pickers/src/DateTimeField/tests/editing.DateTimeField.test.tsx @@ -26,15 +26,15 @@ describe(' - Editing', () => { const onChange = spy(); const referenceDate = adapterToUse.date('2012-05-03T14:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, referenceDate, format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // All sections not present should equal the one from the referenceDate, and the month should equal January (because it's an ArrowUp on an empty month). expect(onChange.lastCall.firstArg).toEqualDateTime(adapterToUse.setMonth(referenceDate, 0)); @@ -45,7 +45,7 @@ describe(' - Editing', () => { const value = adapterToUse.date('2018-11-03T22:15:00'); const referenceDate = adapterToUse.date('2012-05-03T14:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, referenceDate, @@ -53,8 +53,8 @@ describe(' - Editing', () => { format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Should equal the initial `value` prop with one less month. expect(onChange.lastCall.firstArg).toEqualDateTime(adapterToUse.setMonth(value, 11)); @@ -65,7 +65,7 @@ describe(' - Editing', () => { const defaultValue = adapterToUse.date('2018-11-03T22:15:00'); const referenceDate = adapterToUse.date('2012-05-03T14:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, referenceDate, @@ -73,8 +73,8 @@ describe(' - Editing', () => { format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Should equal the initial `defaultValue` prop with one less month. expect(onChange.lastCall.firstArg).toEqualDateTime(adapterToUse.setMonth(defaultValue, 11)); @@ -84,14 +84,14 @@ describe(' - Editing', () => { it('should only keep year when granularity = month', () => { const onChange = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); expect(onChange.lastCall.firstArg).toEqualDateTime('2012-01-01'); }); @@ -99,14 +99,14 @@ describe(' - Editing', () => { it('should only keep year and month when granularity = day', () => { const onChange = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, format: adapterToUse.formats.dayOfMonth, }); - v7Response.selectSection('day'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('day'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); expect(onChange.lastCall.firstArg).toEqualDateTime('2012-05-01'); }); @@ -114,20 +114,20 @@ describe(' - Editing', () => { it('should only keep up to the hours when granularity = minutes', () => { const onChange = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, format: adapterToUse.formats.fullTime24h, }); - v7Response.selectSection('hours'); + view.selectSection('hours'); // Set hours - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Set minutes - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowRight' }); - fireEvent.keyDown(v7Response.getActiveSection(1), { key: 'ArrowUp' }); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(1), { key: 'ArrowUp' }); expect(onChange.lastCall.firstArg).toEqualDateTime('2012-05-03T00:00:00.000Z'); }); @@ -138,15 +138,15 @@ describe(' - Editing', () => { const onChange = spy(); const minDate = adapterToUse.date('2030-05-05T18:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, minDate, format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Respect the granularity and the minDate expect(onChange.lastCall.firstArg).toEqualDateTime('2030-01-01T00:00'); @@ -156,15 +156,15 @@ describe(' - Editing', () => { const onChange = spy(); const minDate = adapterToUse.date('2007-05-05T18:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, minDate, format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Respect the granularity but not the minDate expect(onChange.lastCall.firstArg).toEqualDateTime('2012-01-01T00:00'); @@ -174,15 +174,15 @@ describe(' - Editing', () => { const onChange = spy(); const maxDate = adapterToUse.date('2007-05-05T18:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, maxDate, format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Respect the granularity and the minDate expect(onChange.lastCall.firstArg).toEqualDateTime('2007-01-01T00:00'); @@ -192,15 +192,15 @@ describe(' - Editing', () => { const onChange = spy(); const maxDate = adapterToUse.date('2030-05-05T18:30:00'); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, maxDate, format: adapterToUse.formats.month, }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowUp' }); // Respect the granularity but not the maxDate expect(onChange.lastCall.firstArg).toEqualDateTime('2012-01-01T00:00'); @@ -209,17 +209,17 @@ describe(' - Editing', () => { }); it('should correctly update `value` when both `format` and `value` are changed', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: null, format: 'P', }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); - v7Response.setProps({ + view.setProps({ format: 'Pp', value: adapterToUse.date('2012-05-03T14:30:00'), }); - expectFieldValueV7(v7Response.getSectionsContainer(), '05/03/2012, 02:30 PM'); + expectFieldValueV7(view.getSectionsContainer(), '05/03/2012, 02:30 PM'); }); }); diff --git a/packages/x-date-pickers/src/DateTimeField/tests/timezone.DateTimeField.test.tsx b/packages/x-date-pickers/src/DateTimeField/tests/timezone.DateTimeField.test.tsx index 1cc3a46e7972..9ff18ca2bf5e 100644 --- a/packages/x-date-pickers/src/DateTimeField/tests/timezone.DateTimeField.test.tsx +++ b/packages/x-date-pickers/src/DateTimeField/tests/timezone.DateTimeField.test.tsx @@ -46,16 +46,16 @@ describe(' - Timezone', () => { it('should use default timezone for rendering and onChange when no value and no timezone prop are provided', () => { const onChange = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, format, }); - const expectedDate = fillEmptyValue(v7Response, 'default'); + const expectedDate = fillEmptyValue(view, 'default'); // Check the rendered value (uses default timezone, e.g: UTC, see TZ env variable) - expectFieldValueV7(v7Response.getSectionsContainer(), '12/31/2022 23'); + expectFieldValueV7(view.getSectionsContainer(), '12/31/2022 23'); // Check the `onChange` value (uses default timezone, e.g: UTC, see TZ env variable) const actualDate = onChange.lastCall.firstArg; @@ -70,16 +70,16 @@ describe(' - Timezone', () => { describe(`Timezone: ${timezone}`, () => { it('should use timezone prop for onChange and rendering when no value is provided', () => { const onChange = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, onChange, format, timezone, }); - const expectedDate = fillEmptyValue(v7Response, timezone); + const expectedDate = fillEmptyValue(view, timezone); // Check the rendered value (uses timezone prop) - expectFieldValueV7(v7Response.getSectionsContainer(), '12/31/2022 23'); + expectFieldValueV7(view.getSectionsContainer(), '12/31/2022 23'); // Check the `onChange` value (uses timezone prop) const actualDate = onChange.lastCall.firstArg; @@ -89,7 +89,7 @@ describe(' - Timezone', () => { it('should use timezone prop for rendering and value timezone for onChange when a value is provided', () => { const onChange = spy(); - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, value: adapter.date(undefined, timezone), onChange, @@ -97,11 +97,11 @@ describe(' - Timezone', () => { timezone: 'America/Chicago', }); - v7Response.selectSection('month'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowDown' }); + view.selectSection('month'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowDown' }); // Check the rendered value (uses America/Chicago timezone) - expectFieldValueV7(v7Response.getSectionsContainer(), '05/14/2022 19'); + expectFieldValueV7(view.getSectionsContainer(), '05/14/2022 19'); // Check the `onChange` value (uses timezone prop) const expectedDate = adapter.addMonths(adapter.date(undefined, timezone), -1); @@ -125,16 +125,16 @@ describe(' - Timezone', () => { }); it('should update the field when time zone changes (timestamp remains the same)', () => { - const v7Response = renderWithProps({ enableAccessibleFieldDOMStructure: true }); + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true }); const date = adapter.date('2020-06-18T14:30:10.000Z').setZone('UTC'); - v7Response.setProps({ value: date }); + view.setProps({ value: date }); - expectFieldValueV7(v7Response.getSectionsContainer(), '06/18/2020 02:30 PM'); + expectFieldValueV7(view.getSectionsContainer(), '06/18/2020 02:30 PM'); - v7Response.setProps({ value: date.setZone('America/Los_Angeles') }); + view.setProps({ value: date.setZone('America/Los_Angeles') }); - expectFieldValueV7(v7Response.getSectionsContainer(), '06/18/2020 07:30 AM'); + expectFieldValueV7(view.getSectionsContainer(), '06/18/2020 07:30 AM'); }); }); }); diff --git a/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx b/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx index b3ed68ab6851..4078e7548eb3 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx @@ -3,9 +3,10 @@ import { expect } from 'chai'; import { spy } from 'sinon'; import { TransitionProps } from '@mui/material/transitions'; import { inputBaseClasses } from '@mui/material/InputBase'; -import { fireEvent, screen, userEvent } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; import { createPickerRenderer, adapterToUse, openPicker } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -46,7 +47,7 @@ describe('', () => { expect(handleViewChange.callCount).to.equal(1); // Dismiss the picker - userEvent.keyPress(document.activeElement!, { key: 'Escape' }); + fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); openPicker({ type: 'date', variant: 'desktop' }); expect(handleViewChange.callCount).to.equal(2); @@ -71,7 +72,7 @@ describe('', () => { expect(handleViewChange.callCount).to.equal(1); // Dismiss the picker - userEvent.keyPress(document.activeElement!, { key: 'Escape' }); + fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); openPicker({ type: 'date', variant: 'desktop' }); expect(handleViewChange.callCount).to.equal(2); @@ -88,7 +89,7 @@ describe('', () => { expect(screen.getByRole('radio', { checked: true, name: '2018' })).not.to.equal(null); // Dismiss the picker - userEvent.keyPress(document.activeElement!, { key: 'Escape' }); + fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); setProps({ views: ['month', 'year'] }); openPicker({ type: 'date', variant: 'desktop' }); // wait for all pending changes to be flushed @@ -125,7 +126,7 @@ describe('', () => { expect(screen.getByRole('radio', { checked: true, name: 'January' })).not.to.equal(null); // Dismiss the picker - userEvent.keyPress(document.activeElement!, { key: 'Escape' }); + fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); setProps({ view: 'year' }); openPicker({ type: 'date', variant: 'desktop' }); // wait for all pending changes to be flushed @@ -220,7 +221,7 @@ describe('', () => { render(); - userEvent.mousePress(screen.getByLabelText(/Choose date/)); + fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); @@ -244,14 +245,14 @@ describe('', () => { openPicker({ type: 'date', variant: 'desktop' }); // Select year - userEvent.mousePress(screen.getByRole('radio', { name: '2025' })); + fireUserEvent.mousePress(screen.getByRole('radio', { name: '2025' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2025, 0, 1)); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the date (same value) - userEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2025, 0, 1)); diff --git a/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx b/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx index 0357d40ba542..782794ba18eb 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -11,6 +11,7 @@ import { } from 'test/utils/pickers'; import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -62,7 +63,7 @@ describe(' - Describes', () => { const newValue = applySameValue ? value : adapterToUse.addDays(value, 1); if (isOpened) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); } else { diff --git a/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx b/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx index 808dce9bbcf9..4ef2b7327fab 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/tests/field.DesktopDatePicker.test.tsx @@ -25,7 +25,7 @@ describe(' - Field', () => { it('should be able to reset a single section', () => { // Test with v7 input - const v7Response = renderWithProps( + let view = renderWithProps( { enableAccessibleFieldDOMStructure: true as const, format: `${adapterToUse.formats.month} ${adapterToUse.formats.dayOfMonth}`, @@ -33,22 +33,22 @@ describe(' - Field', () => { { componentFamily: 'picker' }, ); - v7Response.selectSection('month'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM DD'); + view.selectSection('month'); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM DD'); - v7Response.pressKey(0, 'N'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'November DD'); + view.pressKey(0, 'N'); + expectFieldValueV7(view.getSectionsContainer(), 'November DD'); - v7Response.pressKey(1, '4'); - expectFieldValueV7(v7Response.getSectionsContainer(), 'November 04'); + view.pressKey(1, '4'); + expectFieldValueV7(view.getSectionsContainer(), 'November 04'); - v7Response.pressKey(1, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'November DD'); + view.pressKey(1, ''); + expectFieldValueV7(view.getSectionsContainer(), 'November DD'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( + view = renderWithProps( { enableAccessibleFieldDOMStructure: false as const, format: `${adapterToUse.formats.month} ${adapterToUse.formats.dayOfMonth}`, @@ -57,7 +57,7 @@ describe(' - Field', () => { ); const input = getTextbox(); - v6Response.selectSection('month'); + view.selectSection('month'); expectFieldPlaceholderV6(input, 'MMMM DD'); fireEvent.change(input, { target: { value: 'N DD' } }); // Press "N" @@ -73,21 +73,21 @@ describe(' - Field', () => { it('should adapt the default field format based on the props of the picker', () => { const testFormat = (props: DesktopDatePickerProps, expectedFormat: string) => { // Test with v7 input - const v7Response = renderWithProps( + let view = renderWithProps( { ...props, enableAccessibleFieldDOMStructure: true as const }, { componentFamily: 'picker' }, ); - expectFieldValueV7(v7Response.getSectionsContainer(), expectedFormat); - v7Response.unmount(); + expectFieldValueV7(view.getSectionsContainer(), expectedFormat); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( + view = renderWithProps( { ...props, enableAccessibleFieldDOMStructure: false as const }, { componentFamily: 'picker' }, ); const input = getTextbox(); expectFieldPlaceholderV6(input, expectedFormat); - v6Response.unmount(); + view.unmount(); }; testFormat({ views: ['year'] }, 'YYYY'); @@ -171,7 +171,7 @@ describe(' - Field', () => { describeAdapters('Timezone', DesktopDatePicker, ({ adapter, renderWithProps }) => { it('should clear the selected section when all sections are completed when using timezones', () => { - const v7Response = renderWithProps( + const view = renderWithProps( { enableAccessibleFieldDOMStructure: true as const, value: adapter.date()!, @@ -181,11 +181,11 @@ describe(' - Field', () => { { componentFamily: 'picker' }, ); - expectFieldValueV7(v7Response.getSectionsContainer(), 'June 2022'); - v7Response.selectSection('month'); + expectFieldValueV7(view.getSectionsContainer(), 'June 2022'); + view.selectSection('month'); - v7Response.pressKey(0, ''); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MMMM 2022'); + view.pressKey(0, ''); + expectFieldValueV7(view.getSectionsContainer(), 'MMMM 2022'); }); }); }); diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx index ade01ebb4a70..fbaa72781475 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx @@ -1,9 +1,10 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { DesktopDateTimePicker } from '@mui/x-date-pickers/DesktopDateTimePicker'; import { adapterToUse, createPickerRenderer, openPicker } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render } = createPickerRenderer({ @@ -17,7 +18,7 @@ describe('', () => { render(); - userEvent.mousePress(screen.getByLabelText(/Choose date/)); + fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); @@ -41,23 +42,23 @@ describe('', () => { openPicker({ type: 'date-time', variant: 'desktop' }); // Select year - userEvent.mousePress(screen.getByRole('radio', { name: '2025' })); + fireUserEvent.mousePress(screen.getByRole('radio', { name: '2025' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2025, 0, 1, 11, 55)); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the date (same value) - userEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change // Change the hours (same value) - userEvent.mousePress(screen.getByRole('option', { name: '11 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '11 hours' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change // Change the minutes (same value) - userEvent.mousePress(screen.getByRole('option', { name: '55 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '55 minutes' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change // Change the meridiem (same value) - userEvent.mousePress(screen.getByRole('option', { name: 'AM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'AM' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); @@ -81,26 +82,26 @@ describe('', () => { openPicker({ type: 'date-time', variant: 'desktop' }); // Change the date multiple times to check that picker doesn't close after cycling through all views internally - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); - userEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); - userEvent.mousePress(screen.getByRole('gridcell', { name: '4' })); - userEvent.mousePress(screen.getByRole('gridcell', { name: '5' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '4' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '5' })); expect(onChange.callCount).to.equal(4); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the hours - userEvent.mousePress(screen.getByRole('option', { name: '10 hours' })); - userEvent.mousePress(screen.getByRole('option', { name: '9 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '10 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '9 hours' })); expect(onChange.callCount).to.equal(6); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the minutes - userEvent.mousePress(screen.getByRole('option', { name: '50 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '50 minutes' })); expect(onChange.callCount).to.equal(7); // Change the meridiem - userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(8); expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); @@ -118,10 +119,10 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByLabelText(/Choose date/)); + fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); - userEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); - userEvent.mousePress(screen.getByRole('option', { name: '03:00 AM' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '03:00 AM' })); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 2, 3, 0, 0)); @@ -139,9 +140,9 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByLabelText(/Choose date/)); + fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); - userEvent.mousePress(screen.getByRole('option', { name: '03:00 AM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '03:00 AM' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 3, 0, 0)); diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx index 04ba5bf60006..dc66bec63c58 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx @@ -1,4 +1,4 @@ -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -12,6 +12,7 @@ import { DesktopDateTimePicker } from '@mui/x-date-pickers/DesktopDateTimePicker import { expect } from 'chai'; import * as React from 'react'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -84,20 +85,22 @@ describe(' - Describes', () => { : adapterToUse.addMinutes(adapterToUse.addHours(adapterToUse.addDays(value, 1), 1), 5); if (isOpened) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); const hasMeridiem = adapterToUse.is12HourCycleInCurrentLocale(); const hours = adapterToUse.format(newValue, hasMeridiem ? 'hours12h' : 'hours24h'); const hoursNumber = adapterToUse.getHours(newValue); - userEvent.mousePress(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); - userEvent.mousePress( + fireUserEvent.mousePress( + screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), + ); + fireUserEvent.mousePress( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue)} minutes` }), ); if (hasMeridiem) { // meridiem is an extra view on `DesktopDateTimePicker` // we need to click it to finish selection - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), ); } diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/field.DesktopDateTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/field.DesktopDateTimePicker.test.tsx index 3a951470e5f3..54877db6fa12 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/field.DesktopDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/field.DesktopDateTimePicker.test.tsx @@ -19,35 +19,35 @@ describe(' - Field', () => { }); it('should pass the ampm prop to the field', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true as const, ampm: true, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY hh:mm aa'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY hh:mm aa'); - v7Response.setProps({ ampm: false }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY hh:mm'); + view.setProps({ ampm: false }); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY hh:mm'); }); it('should adapt the default field format based on the props of the picker', () => { const testFormat = (props: DesktopDateTimePickerProps, expectedFormat: string) => { // Test with v7 input - const v7Response = renderWithProps( + let view = renderWithProps( { ...props, enableAccessibleFieldDOMStructure: true as const }, { componentFamily: 'picker' }, ); - expectFieldValueV7(v7Response.getSectionsContainer(), expectedFormat); - v7Response.unmount(); + expectFieldValueV7(view.getSectionsContainer(), expectedFormat); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( + view = renderWithProps( { ...props, enableAccessibleFieldDOMStructure: false as const }, { componentFamily: 'picker' }, ); const input = getTextbox(); expectFieldPlaceholderV6(input, expectedFormat); - v6Response.unmount(); + view.unmount(); }; testFormat({ views: ['day', 'hours', 'minutes'], ampm: false }, 'DD hh:mm'); diff --git a/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx index b520cad77727..b60fa37d20fb 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx @@ -1,9 +1,10 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { DesktopTimePicker } from '@mui/x-date-pickers/DesktopTimePicker'; import { createPickerRenderer, openPicker } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render } = createPickerRenderer({ @@ -76,7 +77,7 @@ describe('', () => { openPicker({ type: 'time', variant: 'desktop' }); - userEvent.mousePress(screen.getByRole('option', { name: '09:00 AM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '09:00 AM' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 9, 0)); expect(onAccept.callCount).to.equal(1); @@ -93,17 +94,17 @@ describe('', () => { openPicker({ type: 'time', variant: 'desktop' }); - userEvent.mousePress(screen.getByRole('option', { name: '2 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '2 hours' })); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - userEvent.mousePress(screen.getByRole('option', { name: '15 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '15 minutes' })); expect(onChange.callCount).to.equal(2); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(3); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 14, 15)); @@ -119,22 +120,22 @@ describe('', () => { openPicker({ type: 'time', variant: 'desktop' }); - userEvent.mousePress(screen.getByRole('option', { name: '15 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '15 minutes' })); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - userEvent.mousePress(screen.getByRole('option', { name: '2 hours' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '2 hours' })); expect(onChange.callCount).to.equal(2); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - userEvent.mousePress(screen.getByRole('option', { name: '25 minutes' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '25 minutes' })); expect(onChange.callCount).to.equal(3); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(4); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 14, 25)); @@ -150,7 +151,7 @@ describe('', () => { openPicker({ type: 'time', variant: 'desktop' }); - userEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 12, 0)); diff --git a/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx index 3b6e6eb28868..2fe4730f6fd1 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -12,6 +12,7 @@ import { } from 'test/utils/pickers'; import { DesktopTimePicker } from '@mui/x-date-pickers/DesktopTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -76,14 +77,16 @@ describe(' - Describes', () => { const hasMeridiem = adapterToUse.is12HourCycleInCurrentLocale(); const hours = adapterToUse.format(newValue, hasMeridiem ? 'hours12h' : 'hours24h'); const hoursNumber = adapterToUse.getHours(newValue); - userEvent.mousePress(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); - userEvent.mousePress( + fireUserEvent.mousePress( + screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), + ); + fireUserEvent.mousePress( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue)} minutes` }), ); if (hasMeridiem) { // meridiem is an extra view on `DesktopTimePicker` // we need to click it to finish selection - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), ); } diff --git a/packages/x-date-pickers/src/DesktopTimePicker/tests/field.DesktopTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopTimePicker/tests/field.DesktopTimePicker.test.tsx index 10d1848a5fe3..88c95f981503 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/tests/field.DesktopTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/tests/field.DesktopTimePicker.test.tsx @@ -16,35 +16,35 @@ describe(' - Field', () => { }); it('should pass the ampm prop to the field', () => { - const v7Response = renderWithProps( + const view = renderWithProps( { enableAccessibleFieldDOMStructure: true as const, ampm: true }, { componentFamily: 'picker' }, ); - expectFieldValueV7(v7Response.getSectionsContainer(), 'hh:mm aa'); + expectFieldValueV7(view.getSectionsContainer(), 'hh:mm aa'); - v7Response.setProps({ ampm: false }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'hh:mm'); + view.setProps({ ampm: false }); + expectFieldValueV7(view.getSectionsContainer(), 'hh:mm'); }); it('should adapt the default field format based on the props of the picker', () => { const testFormat = (props: DesktopTimePickerProps, expectedFormat: string) => { // Test with v7 input - const v7Response = renderWithProps( + let view = renderWithProps( { ...props, enableAccessibleFieldDOMStructure: true as const }, { componentFamily: 'picker' }, ); - expectFieldValueV7(v7Response.getSectionsContainer(), expectedFormat); - v7Response.unmount(); + expectFieldValueV7(view.getSectionsContainer(), expectedFormat); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( + view = renderWithProps( { ...props, enableAccessibleFieldDOMStructure: false as const }, { componentFamily: 'picker' }, ); const input = getTextbox(); expectFieldPlaceholderV6(input, expectedFormat); - v6Response.unmount(); + view.unmount(); }; testFormat({ views: ['hours'], ampm: false }, 'hh'); diff --git a/packages/x-date-pickers/src/DigitalClock/tests/DigitalClock.test.tsx b/packages/x-date-pickers/src/DigitalClock/tests/DigitalClock.test.tsx index 4f6617cc90c6..96fb9bd96fa6 100644 --- a/packages/x-date-pickers/src/DigitalClock/tests/DigitalClock.test.tsx +++ b/packages/x-date-pickers/src/DigitalClock/tests/DigitalClock.test.tsx @@ -93,16 +93,15 @@ describe('', () => { }); it('forwards list class to MenuList', () => { - const { getByRole } = render(); + render(); - const list = getByRole('listbox'); - expect(list).to.have.class('foo'); + expect(screen.getByRole('listbox')).to.have.class('foo'); }); it('forwards item class to clock item', () => { - const { getAllByRole } = render(); + render(); - const options = getAllByRole('option'); + const options = screen.getAllByRole('option'); expect(options[0]).to.have.class('bar'); }); }); diff --git a/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx b/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx index 9dc25d08aef5..070c9b9243f5 100644 --- a/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx +++ b/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx @@ -1,9 +1,10 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { DigitalClock } from '@mui/x-date-pickers/DigitalClock'; import { getDateOffset, describeAdapters } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; const TIMEZONE_TO_TEST = ['UTC', 'system', 'America/New_York']; @@ -25,7 +26,7 @@ describe(' - Timezone', () => { const onChange = spy(); render(); - userEvent.mousePress(screen.getByRole('option', { name: '08:00 AM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '08:00 AM' })); const expectedDate = adapter.setHours(adapter.date(), 8); @@ -44,7 +45,7 @@ describe(' - Timezone', () => { const onChange = spy(); render(); - userEvent.mousePress(screen.getByRole('option', { name: '08:00 AM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '08:00 AM' })); const expectedDate = adapter.setHours( adapter.startOfDay(adapter.date(undefined, timezone)), @@ -75,7 +76,7 @@ describe(' - Timezone', () => { (adapter.getHours(value) + offsetDiff / 60 + 24) % 24, ); - userEvent.mousePress(screen.getByRole('option', { name: '08:30 PM' })); + fireUserEvent.mousePress(screen.getByRole('option', { name: '08:30 PM' })); const actualDate = onChange.lastCall.firstArg; diff --git a/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx b/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx index 1095449d3312..3dc67b806538 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { fireEvent, screen, userEvent } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { PickersDay } from '@mui/x-date-pickers/PickersDay'; import { DayCalendarSkeleton } from '@mui/x-date-pickers/DayCalendarSkeleton'; import { MobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker'; @@ -13,6 +13,7 @@ import { openPicker, getFieldSectionsContainer, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -155,7 +156,7 @@ describe('', () => { render(); - userEvent.mousePress(getFieldSectionsContainer()); + fireUserEvent.mousePress(getFieldSectionsContainer()); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); @@ -188,17 +189,17 @@ describe('', () => { }); it('should update internal state when controlled value is updated', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true as const, value: adapterToUse.date('2019-01-01'), }); // Set a date - expectFieldValueV7(v7Response.getSectionsContainer(), '01/01/2019'); + expectFieldValueV7(view.getSectionsContainer(), '01/01/2019'); // Clean value using external control - v7Response.setProps({ value: null }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + view.setProps({ value: null }); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); // Open and Dismiss the picker openPicker({ type: 'date', variant: 'mobile' }); @@ -207,7 +208,7 @@ describe('', () => { clock.runToLast(); // Verify it's still a clean value - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY'); }); }); }); diff --git a/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx b/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx index 5dfe64dc6e89..b988c49e5827 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, userEvent, fireEvent } from '@mui/internal-test-utils'; +import { screen, fireEvent } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -12,6 +12,7 @@ import { } from 'test/utils/pickers'; import { MobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -64,7 +65,7 @@ describe(' - Describes', () => { } const newValue = applySameValue ? value : adapterToUse.addDays(value, 1); - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx index ad9c3641efbb..34849b1b5dc0 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { fireTouchChangedEvent, screen, userEvent } from '@mui/internal-test-utils'; +import { fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; import { MobileDateTimePicker } from '@mui/x-date-pickers/MobileDateTimePicker'; import { adapterToUse, @@ -10,6 +10,7 @@ import { getClockTouchEvent, getFieldSectionsContainer, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -98,7 +99,7 @@ describe('', () => { render(); - userEvent.mousePress(getFieldSectionsContainer()); + fireUserEvent.mousePress(getFieldSectionsContainer()); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); @@ -131,8 +132,8 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the year view - userEvent.mousePress(screen.getByLabelText(/switch to year view/)); - userEvent.mousePress(screen.getByText('2010', { selector: 'button' })); + fireUserEvent.mousePress(screen.getByLabelText(/switch to year view/)); + fireUserEvent.mousePress(screen.getByText('2010', { selector: 'button' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2010, 0, 1)); @@ -140,7 +141,7 @@ describe('', () => { clock.runToLast(); // Change the date - userEvent.mousePress(screen.getByRole('gridcell', { name: '15' })); + fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '15' })); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2010, 0, 15)); diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx index 4d1d819ad773..7db743bb1c2e 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, userEvent, fireEvent, fireTouchChangedEvent } from '@mui/internal-test-utils'; +import { screen, fireEvent, fireTouchChangedEvent } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -13,6 +13,7 @@ import { } from 'test/utils/pickers'; import { MobileDateTimePicker } from '@mui/x-date-pickers/MobileDateTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -78,7 +79,7 @@ describe(' - Describes', () => { const newValue = applySameValue ? value : adapterToUse.addMinutes(adapterToUse.addHours(adapterToUse.addDays(value, 1), 1), 5); - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); const hasMeridiem = adapterToUse.is12HourCycleInCurrentLocale(); @@ -97,7 +98,9 @@ describe(' - Describes', () => { if (hasMeridiem) { const newHours = adapterToUse.getHours(newValue); // select appropriate meridiem - userEvent.mousePress(screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' })); + fireUserEvent.mousePress( + screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' }), + ); } // Close the picker @@ -107,7 +110,7 @@ describe(' - Describes', () => { clock.runToLast(); } else { // return to the date view in case we'd like to repeat the selection process - userEvent.mousePress(screen.getByRole('tab', { name: 'pick date' })); + fireUserEvent.mousePress(screen.getByRole('tab', { name: 'pick date' })); } return newValue; diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/tests/field.MobileDateTimePicker.test.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/tests/field.MobileDateTimePicker.test.tsx index 2a8aae0ea83c..413a025f2002 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/tests/field.MobileDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/tests/field.MobileDateTimePicker.test.tsx @@ -14,14 +14,14 @@ describe(' - Field', () => { }); it('should pass the ampm prop to the field', () => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true as const, ampm: true, }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY hh:mm aa'); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY hh:mm aa'); - v7Response.setProps({ ampm: false }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'MM/DD/YYYY hh:mm'); + view.setProps({ ampm: false }); + expectFieldValueV7(view.getSectionsContainer(), 'MM/DD/YYYY hh:mm'); }); }); diff --git a/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx b/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx index 5bf9dade08f8..16e28b5b3c29 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { fireTouchChangedEvent, screen, userEvent, act } from '@mui/internal-test-utils'; +import { fireTouchChangedEvent, screen, act } from '@mui/internal-test-utils'; import { MobileTimePicker } from '@mui/x-date-pickers/MobileTimePicker'; import { createPickerRenderer, @@ -10,6 +10,7 @@ import { getClockTouchEvent, getFieldSectionsContainer, } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render } = createPickerRenderer({ clock: 'fake' }); @@ -20,7 +21,7 @@ describe('', () => { render(); - userEvent.mousePress(getFieldSectionsContainer()); + fireUserEvent.mousePress(getFieldSectionsContainer()); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); diff --git a/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx b/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx index 79b4c2029072..8a694129a784 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, fireEvent, userEvent, fireTouchChangedEvent } from '@mui/internal-test-utils'; +import { screen, fireEvent, fireTouchChangedEvent } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -14,6 +14,7 @@ import { } from 'test/utils/pickers'; import { MobileTimePicker } from '@mui/x-date-pickers/MobileTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -92,7 +93,9 @@ describe(' - Describes', () => { if (hasMeridiem) { const newHours = adapterToUse.getHours(newValue); // select appropriate meridiem - userEvent.mousePress(screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' })); + fireUserEvent.mousePress( + screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' }), + ); } // Close the picker @@ -102,7 +105,7 @@ describe(' - Describes', () => { clock.runToLast(); } else { // return to the hours view in case we'd like to repeat the selection process - userEvent.mousePress(screen.getByRole('button', { name: 'Open previous view' })); + fireUserEvent.mousePress(screen.getByRole('button', { name: 'Open previous view' })); } return newValue; diff --git a/packages/x-date-pickers/src/MobileTimePicker/tests/field.MobileTimePicker.test.tsx b/packages/x-date-pickers/src/MobileTimePicker/tests/field.MobileTimePicker.test.tsx index 206189acc74a..befd20099764 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/tests/field.MobileTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/tests/field.MobileTimePicker.test.tsx @@ -14,14 +14,14 @@ describe(' - Field', () => { }); it('should pass the ampm prop to the field', () => { - const v7Response = renderWithProps( + const view = renderWithProps( { enableAccessibleFieldDOMStructure: true as const, ampm: true }, { componentFamily: 'picker' }, ); - expectFieldValueV7(v7Response.getSectionsContainer(), 'hh:mm aa'); + expectFieldValueV7(view.getSectionsContainer(), 'hh:mm aa'); - v7Response.setProps({ ampm: false }); - expectFieldValueV7(v7Response.getSectionsContainer(), 'hh:mm'); + view.setProps({ ampm: false }); + expectFieldValueV7(view.getSectionsContainer(), 'hh:mm'); }); }); diff --git a/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx b/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx index f439b851f2c3..ef370265decd 100644 --- a/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx +++ b/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { userEvent, screen } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -9,6 +9,7 @@ import { } from 'test/utils/pickers'; import { MonthCalendar, monthCalendarClasses as classes } from '@mui/x-date-pickers/MonthCalendar'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -54,7 +55,7 @@ describe(' - Describes', () => { setNewValue: (value) => { const newValue = adapterToUse.addMonths(value, 1); - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('radio', { name: adapterToUse.format(newValue, 'month') }), ); diff --git a/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx b/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx index c4837e507ce7..465baad26cee 100644 --- a/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx +++ b/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx @@ -1,9 +1,10 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { PickersActionBar } from '@mui/x-date-pickers/PickersActionBar'; import { createPickerRenderer } from 'test/utils/pickers'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render } = createPickerRenderer({ @@ -44,7 +45,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onClear.callCount).to.equal(1); }); @@ -64,7 +65,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByText(/cancel/i)); + fireUserEvent.mousePress(screen.getByText(/cancel/i)); expect(onCancel.callCount).to.equal(1); }); @@ -84,7 +85,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByText(/ok/i)); + fireUserEvent.mousePress(screen.getByText(/ok/i)); expect(onAccept.callCount).to.equal(1); }); @@ -104,7 +105,7 @@ describe('', () => { />, ); - userEvent.mousePress(screen.getByText(/today/i)); + fireUserEvent.mousePress(screen.getByText(/today/i)); expect(onSetToday.callCount).to.equal(1); }); diff --git a/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.test.tsx b/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.test.tsx index 8e2e37371b5d..f5a04623b4af 100644 --- a/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.test.tsx +++ b/packages/x-date-pickers/src/StaticTimePicker/StaticTimePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { fireTouchChangedEvent, screen, getAllByRole, fireEvent } from '@mui/internal-test-utils'; +import { fireTouchChangedEvent, screen, within, fireEvent } from '@mui/internal-test-utils'; import { adapterToUse, createPickerRenderer, describeValidation } from 'test/utils/pickers'; import { StaticTimePicker } from '@mui/x-date-pickers/StaticTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; @@ -78,7 +78,7 @@ describe('', () => { // hours are not disabled const hoursContainer = screen.getByRole('listbox'); - const hours = getAllByRole(hoursContainer, 'option'); + const hours = within(hoursContainer).getAllByRole('option'); const disabledHours = hours.filter((day) => day.getAttribute('aria-disabled') === 'true'); expect(hours.length).to.equal(12); @@ -128,7 +128,7 @@ describe('', () => { // hours are disabled const hoursContainer = screen.getByRole('listbox'); - const hours = getAllByRole(hoursContainer, 'option'); + const hours = within(hoursContainer).getAllByRole('option'); const disabledHours = hours.filter((hour) => hour.getAttribute('aria-disabled') === 'true'); expect(hours.length).to.equal(12); expect(disabledHours.length).to.equal(12); diff --git a/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx b/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx index 36bfb4c6597b..5ecc40f8b19c 100644 --- a/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx +++ b/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx @@ -1,13 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { - fireEvent, - fireTouchChangedEvent, - screen, - within, - getAllByRole, -} from '@mui/internal-test-utils'; +import { fireEvent, fireTouchChangedEvent, screen, within } from '@mui/internal-test-utils'; import { TimeClock } from '@mui/x-date-pickers/TimeClock'; import { createPickerRenderer, adapterToUse, timeClockHandler } from 'test/utils/pickers'; @@ -166,7 +160,7 @@ describe('', () => { // hours are not disabled const hoursContainer = screen.getByRole('listbox'); - const hours = getAllByRole(hoursContainer, 'option'); + const hours = within(hoursContainer).getAllByRole('option'); const disabledHours = hours.filter((hour) => hour.getAttribute('aria-disabled') === 'true'); expect(hours.length).to.equal(12); @@ -194,7 +188,7 @@ describe('', () => { // hours are disabled const hoursContainer = screen.getByRole('listbox'); - const hours = getAllByRole(hoursContainer, 'option'); + const hours = within(hoursContainer).getAllByRole('option'); const disabledHours = hours.filter((hour) => hour.getAttribute('aria-disabled') === 'true'); expect(hours.length).to.equal(12); diff --git a/packages/x-date-pickers/src/TimeField/tests/editing.TimeField.test.tsx b/packages/x-date-pickers/src/TimeField/tests/editing.TimeField.test.tsx index d9736f41ad51..9ddc968fd060 100644 --- a/packages/x-date-pickers/src/TimeField/tests/editing.TimeField.test.tsx +++ b/packages/x-date-pickers/src/TimeField/tests/editing.TimeField.test.tsx @@ -497,27 +497,27 @@ describe(' - Editing', () => { it('should go to the next section when pressing `2` in a 12-hours format', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: adapter.formats.fullTime12h, }); - v7Response.selectSection('hours'); + view.selectSection('hours'); - v7Response.pressKey(0, '2'); - expectFieldValueV7(v7Response.getSectionsContainer(), '02:mm aa'); + view.pressKey(0, '2'); + expectFieldValueV7(view.getSectionsContainer(), '02:mm aa'); expect(getCleanedSelectedContent()).to.equal('mm'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: adapter.formats.fullTime12h, }); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); // Press "2" fireEvent.change(input, { target: { value: '2:mm aa' } }); @@ -527,32 +527,32 @@ describe(' - Editing', () => { it('should go to the next section when pressing `1` then `3` in a 12-hours format', () => { // Test with v7 input - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, format: adapter.formats.fullTime12h, }); - v7Response.selectSection('hours'); + view.selectSection('hours'); - v7Response.pressKey(0, '1'); - expectFieldValueV7(v7Response.getSectionsContainer(), '01:mm aa'); + view.pressKey(0, '1'); + expectFieldValueV7(view.getSectionsContainer(), '01:mm aa'); expect(getCleanedSelectedContent()).to.equal('01'); // Press "3" - v7Response.pressKey(0, '3'); - expectFieldValueV7(v7Response.getSectionsContainer(), '03:mm aa'); + view.pressKey(0, '3'); + expectFieldValueV7(view.getSectionsContainer(), '03:mm aa'); expect(getCleanedSelectedContent()).to.equal('mm'); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, format: adapter.formats.fullTime12h, }); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); // Press "1" fireEvent.change(input, { target: { value: '1:mm aa' } }); @@ -638,30 +638,30 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, }); - v7Response.selectSection('hours'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowDown' }); + view.selectSection('hours'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowDown' }); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2010, 3, 3, 2, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, }); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); fireEvent.keyDown(input, { key: 'ArrowDown' }); expect(onChangeV6.lastCall.firstArg).toEqualDateTime(new Date(2010, 3, 3, 2, 3, 3)); @@ -671,31 +671,31 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, format: adapter.formats.fullTime24h, }); - v7Response.selectSection('hours'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'a', ctrlKey: true }); - v7Response.pressKey(null, ''); - fireEvent.keyDown(v7Response.getSectionsContainer(), { key: 'ArrowLeft' }); + view.selectSection('hours'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'a', ctrlKey: true }); + view.pressKey(null, ''); + fireEvent.keyDown(view.getSectionsContainer(), { key: 'ArrowLeft' }); - v7Response.pressKey(0, '3'); - expectFieldValueV7(v7Response.getSectionsContainer(), '03:mm'); + view.pressKey(0, '3'); + expectFieldValueV7(view.getSectionsContainer(), '03:mm'); - v7Response.pressKey(1, '4'); - expectFieldValueV7(v7Response.getSectionsContainer(), '03:04'); + view.pressKey(1, '4'); + expectFieldValueV7(view.getSectionsContainer(), '03:04'); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2010, 3, 3, 3, 4, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, @@ -703,7 +703,7 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); fireEvent.keyDown(input, { key: 'a', ctrlKey: true }); fireEvent.change(input, { target: { value: '' } }); fireEvent.keyDown(input, { key: 'ArrowLeft' }); @@ -720,24 +720,24 @@ describe(' - Editing', () => { // Test with v7 input const onChangeV7 = spy(); - const v7Response = renderWithProps({ + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV7, format: adapter.formats.hours24h, }); - v7Response.selectSection('hours'); - fireEvent.keyDown(v7Response.getActiveSection(0), { key: 'ArrowDown' }); + view.selectSection('hours'); + fireEvent.keyDown(view.getActiveSection(0), { key: 'ArrowDown' }); expect(onChangeV7.lastCall.firstArg).toEqualDateTime(new Date(2010, 3, 3, 2, 3, 3)); - v7Response.unmount(); + view.unmount(); // Test with v6 input const onChangeV6 = spy(); - const v6Response = renderWithProps({ + view = renderWithProps({ enableAccessibleFieldDOMStructure: false, defaultValue: adapter.date('2010-04-03T03:03:03'), onChange: onChangeV6, @@ -745,7 +745,7 @@ describe(' - Editing', () => { }); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); fireEvent.keyDown(input, { key: 'ArrowDown' }); expect(onChangeV6.lastCall.firstArg).toEqualDateTime(new Date(2010, 3, 3, 2, 3, 3)); diff --git a/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx b/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx index e2b1c722d71a..87eeb7fee9f4 100644 --- a/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx +++ b/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { userEvent, screen } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { YearCalendar, yearCalendarClasses as classes } from '@mui/x-date-pickers/YearCalendar'; import { createPickerRenderer, @@ -9,6 +9,7 @@ import { describeValue, } from 'test/utils/pickers'; import { describeConformance } from 'test/utils/describeConformance'; +import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -51,7 +52,7 @@ describe(' - Describes', () => { }, setNewValue: (value) => { const newValue = adapterToUse.addYears(value, 1); - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('radio', { name: adapterToUse.getYear(newValue).toString() }), ); diff --git a/packages/x-date-pickers/src/tests/fieldKeyboardInteraction.test.tsx b/packages/x-date-pickers/src/tests/fieldKeyboardInteraction.test.tsx index f9a7fc614478..3d7436f158ea 100644 --- a/packages/x-date-pickers/src/tests/fieldKeyboardInteraction.test.tsx +++ b/packages/x-date-pickers/src/tests/fieldKeyboardInteraction.test.tsx @@ -75,28 +75,22 @@ describe(`RTL - test arrows navigation`, () => { const expectedValues = ['hh', 'mm', 'YYYY', 'MM', 'DD', 'DD']; // Test with v7 input - const v7Response = renderWithProps( - { enableAccessibleFieldDOMStructure: true }, - { direction: 'rtl' }, - ); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }, { direction: 'rtl' }); - v7Response.selectSection('hours'); + view.selectSection('hours'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); - fireEvent.keyDown(v7Response.getActiveSection(undefined), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(undefined), { key: 'ArrowRight' }); }); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( - { enableAccessibleFieldDOMStructure: false }, - { direction: 'rtl' }, - ); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }, { direction: 'rtl' }); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); @@ -108,28 +102,22 @@ describe(`RTL - test arrows navigation`, () => { const expectedValues = ['DD', 'MM', 'YYYY', 'mm', 'hh', 'hh']; // Test with v7 input - const v7Response = renderWithProps( - { enableAccessibleFieldDOMStructure: true }, - { direction: 'rtl' }, - ); + let view = renderWithProps({ enableAccessibleFieldDOMStructure: true }, { direction: 'rtl' }); - v7Response.selectSection('day'); + view.selectSection('day'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); - fireEvent.keyDown(v7Response.getActiveSection(undefined), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(undefined), { key: 'ArrowLeft' }); }); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( - { enableAccessibleFieldDOMStructure: false }, - { direction: 'rtl' }, - ); + view = renderWithProps({ enableAccessibleFieldDOMStructure: false }, { direction: 'rtl' }); const input = getTextbox(); - v6Response.selectSection('day'); + view.selectSection('day'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); @@ -142,7 +130,7 @@ describe(`RTL - test arrows navigation`, () => { const expectedValues = ['11', '54', '1397', '02', '05', '05']; // Test with v7 input - const v7Response = renderWithProps( + let view = renderWithProps( { enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2018-04-25T11:54:00'), @@ -150,17 +138,17 @@ describe(`RTL - test arrows navigation`, () => { { direction: 'rtl' }, ); - v7Response.selectSection('hours'); + view.selectSection('hours'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); - fireEvent.keyDown(v7Response.getActiveSection(undefined), { key: 'ArrowRight' }); + fireEvent.keyDown(view.getActiveSection(undefined), { key: 'ArrowRight' }); }); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( + view = renderWithProps( { defaultValue: adapter.date('2018-04-25T11:54:00'), enableAccessibleFieldDOMStructure: false, @@ -169,7 +157,7 @@ describe(`RTL - test arrows navigation`, () => { ); const input = getTextbox(); - v6Response.selectSection('hours'); + view.selectSection('hours'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); @@ -182,7 +170,7 @@ describe(`RTL - test arrows navigation`, () => { const expectedValues = ['05', '02', '1397', '54', '11', '11']; // Test with v7 input - const v7Response = renderWithProps( + let view = renderWithProps( { enableAccessibleFieldDOMStructure: true, defaultValue: adapter.date('2018-04-25T11:54:00'), @@ -190,17 +178,17 @@ describe(`RTL - test arrows navigation`, () => { { direction: 'rtl' }, ); - v7Response.selectSection('day'); + view.selectSection('day'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); - fireEvent.keyDown(v7Response.getActiveSection(undefined), { key: 'ArrowLeft' }); + fireEvent.keyDown(view.getActiveSection(undefined), { key: 'ArrowLeft' }); }); - v7Response.unmount(); + view.unmount(); // Test with v6 input - const v6Response = renderWithProps( + view = renderWithProps( { defaultValue: adapter.date('2018-04-25T11:54:00'), enableAccessibleFieldDOMStructure: false, @@ -209,7 +197,7 @@ describe(`RTL - test arrows navigation`, () => { ); const input = getTextbox(); - v6Response.selectSection('day'); + view.selectSection('day'); expectedValues.forEach((expectedValue) => { expect(getCleanedSelectedContent()).to.equal(expectedValue); @@ -265,16 +253,16 @@ adapterToTest.forEach((adapterName) => { expectedValue: TDate; sectionConfig: ReturnType; }) => { - const v7Response = renderWithProps({ + const view = renderWithProps({ enableAccessibleFieldDOMStructure: true, defaultValue: initialValue, format, }); - v7Response.selectSection(sectionConfig.type); - fireEvent.keyDown(v7Response.getActiveSection(0), { key }); + view.selectSection(sectionConfig.type); + fireEvent.keyDown(view.getActiveSection(0), { key }); expectFieldValueV7( - v7Response.getSectionsContainer(), + view.getSectionsContainer(), cleanValueStr(adapter.formatByString(expectedValue, format), sectionConfig), ); }; diff --git a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx index 9e01b6229860..feae408bdcc7 100644 --- a/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx +++ b/packages/x-tree-view-pro/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx @@ -76,54 +76,54 @@ describeTreeView< describe('itemReordering prop', () => { it('should allow to drag and drop items when props.itemsReordering={true}', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([ + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([ { id: '2', children: [{ id: '1' }] }, { id: '3' }, ]); }); it('should not allow to drag and drop items when props.itemsReordering={false}', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: false, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); }); it('should not allow to drag and drop items when props.itemsReordering is not defined', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); }); it('should allow to expand the new parent of the dragged item when it was not expandable before', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], itemsReordering: true, defaultExpandedItems: ['1'], }); - dragEvents.fullDragSequence(response.getItemRoot('1.1'), response.getItemContent('2')); + dragEvents.fullDragSequence(view.getItemRoot('1.1'), view.getItemContent('2')); - fireEvent.focus(response.getItemRoot('2')); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'Enter' }); + fireEvent.focus(view.getItemRoot('2')); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'Enter' }); - expect(response.getItemIdTree()).to.deep.equal([ + expect(view.getItemIdTree()).to.deep.equal([ { id: '1', children: [] }, { id: '2', children: [{ id: '1.1' }] }, ]); @@ -133,14 +133,14 @@ describeTreeView< describe('onItemPositionChange prop', () => { it('should call onItemPositionChange when an item is moved', () => { const onItemPositionChange = spy(); - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, onItemPositionChange, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); expect(onItemPositionChange.callCount).to.equal(1); expect(onItemPositionChange.lastCall.firstArg).to.deep.equal({ itemId: '1', @@ -152,27 +152,27 @@ describeTreeView< describe('isItemReorderable prop', () => { it('should not allow to drag an item when isItemReorderable returns false', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, canMoveItemToNewPosition: () => false, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); }); it('should allow to drag an item when isItemReorderable returns true', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, canMoveItemToNewPosition: () => true, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([ + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([ { id: '2', children: [{ id: '1' }] }, { id: '3' }, ]); @@ -182,14 +182,14 @@ describeTreeView< describe('canMoveItemToNewPosition prop', () => { it('should call canMoveItemToNewPosition with the correct parameters', () => { const canMoveItemToNewPosition = spy(); - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, canMoveItemToNewPosition, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); expect(canMoveItemToNewPosition.lastCall.firstArg).to.deep.equal({ itemId: '1', oldPosition: { parentId: null, index: 0 }, @@ -198,27 +198,27 @@ describeTreeView< }); it('should not allow to drop an item when canMoveItemToNewPosition returns false', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, canMoveItemToNewPosition: () => false, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([{ id: '1' }, { id: '2' }, { id: '3' }]); }); it('should allow to drop an item when canMoveItemToNewPosition returns true', () => { - const response = render({ + const view = render({ experimentalFeatures: { indentationAtItemLevel: true, itemsReordering: true }, items: [{ id: '1' }, { id: '2' }, { id: '3' }], itemsReordering: true, canMoveItemToNewPosition: () => true, }); - dragEvents.fullDragSequence(response.getItemRoot('1'), response.getItemContent('2')); - expect(response.getItemIdTree()).to.deep.equal([ + dragEvents.fullDragSequence(view.getItemRoot('1'), view.getItemContent('2')); + expect(view.getItemIdTree()).to.deep.equal([ { id: '2', children: [{ id: '1' }] }, { id: '3' }, ]); diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx index d85f3e7aa395..f893aec46d2a 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.test.tsx @@ -21,12 +21,12 @@ describeTreeView<[]>('TreeItem component', ({ render, treeItemComponentName }) =
    )); - const response = render({ + const view = render({ items: [{ id: '1' }], slotProps: { item: { ContentComponent } }, }); - expect(response.getItemContent('1').textContent).to.equal('MOCK CONTENT COMPONENT'); + expect(view.getItemContent('1').textContent).to.equal('MOCK CONTENT COMPONENT'); }); it('should use the ContentProps prop when defined', function test() { @@ -40,12 +40,12 @@ describeTreeView<[]>('TreeItem component', ({ render, treeItemComponentName }) =
    )); - const response = render({ + const view = render({ items: [{ id: '1' }], slotProps: { item: { ContentComponent, ContentProps: { customProp: 'ABCDEF' } as any } }, }); - expect(response.getItemContent('1').textContent).to.equal('ABCDEF'); + expect(view.getItemContent('1').textContent).to.equal('ABCDEF'); }); it('should render TreeItem when itemId prop is escaping characters without throwing an error', function test() { @@ -53,11 +53,11 @@ describeTreeView<[]>('TreeItem component', ({ render, treeItemComponentName }) = this.skip(); } - const response = render({ + const view = render({ items: [{ id: 'C:\\\\', label: 'ABCDEF' }], }); - expect(response.getItemContent('C:\\\\').textContent).to.equal('ABCDEF'); + expect(view.getItemContent('C:\\\\').textContent).to.equal('ABCDEF'); }); }); }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx index 418a8c459674..8019dcba99bb 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.test.tsx @@ -17,63 +17,63 @@ describeTreeView<[UseTreeViewExpansionSignature]>( ({ render, setup }) => { describe('model props (expandedItems, defaultExpandedItems, onExpandedItemsChange)', () => { it('should not expand items when no default state and no control state are defined', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.isItemExpanded('1')).to.equal(false); - expect(response.getAllTreeItemIds()).to.deep.equal(['1', '2']); + expect(view.isItemExpanded('1')).to.equal(false); + expect(view.getAllTreeItemIds()).to.deep.equal(['1', '2']); }); it('should use the default state when defined', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], defaultExpandedItems: ['1'], }); - expect(response.isItemExpanded('1')).to.equal(true); - expect(response.getAllTreeItemIds()).to.deep.equal(['1', '1.1', '2']); + expect(view.isItemExpanded('1')).to.equal(true); + expect(view.getAllTreeItemIds()).to.deep.equal(['1', '1.1', '2']); }); it('should use the controlled state when defined', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], expandedItems: ['1'], }); - expect(response.isItemExpanded('1')).to.equal(true); - expect(response.getItemRoot('1.1')).toBeVisible(); + expect(view.isItemExpanded('1')).to.equal(true); + expect(view.getItemRoot('1.1')).toBeVisible(); }); it('should use the controlled state instead of the default state when both are defined', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], expandedItems: ['1'], defaultExpandedItems: ['2'], }); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should react to controlled state update', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], expandedItems: [], }); - response.setProps({ expandedItems: ['1'] }); - expect(response.isItemExpanded('1')).to.equal(true); + view.setProps({ expandedItems: ['1'] }); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should call the onExpandedItemsChange callback when the model is updated (add expanded item to empty list)', () => { const onExpandedItemsChange = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], onExpandedItemsChange, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onExpandedItemsChange.callCount).to.equal(1); expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal(['1']); @@ -82,7 +82,7 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should call the onExpandedItemsChange callback when the model is updated (add expanded item to non-empty list)', () => { const onExpandedItemsChange = spy(); - const response = render({ + const view = render({ items: [ { id: '1', children: [{ id: '1.1' }] }, { id: '2', children: [{ id: '2.1' }] }, @@ -91,7 +91,7 @@ describeTreeView<[UseTreeViewExpansionSignature]>( defaultExpandedItems: ['1'], }); - fireEvent.click(response.getItemContent('2')); + fireEvent.click(view.getItemContent('2')); expect(onExpandedItemsChange.callCount).to.equal(1); expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal(['2', '1']); @@ -100,7 +100,7 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should call the onExpandedItemsChange callback when the model is updated (remove expanded item)', () => { const onExpandedItemsChange = spy(); - const response = render({ + const view = render({ items: [ { id: '1', children: [{ id: '1.1' }] }, { id: '2', children: [{ id: '2.1' }] }, @@ -109,35 +109,35 @@ describeTreeView<[UseTreeViewExpansionSignature]>( defaultExpandedItems: ['1'], }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onExpandedItemsChange.callCount).to.equal(1); expect(onExpandedItemsChange.lastCall.args[1]).to.deep.equal([]); }); it('should warn when switching from controlled to uncontrolled', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], expandedItems: [], }); expect(() => { - response.setProps({ expandedItems: undefined }); + view.setProps({ expandedItems: undefined }); }).toErrorDev( 'MUI X: A component is changing the controlled expandedItems state of TreeView to be uncontrolled.', ); }); it('should warn and not react to update when updating the default state', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], defaultExpandedItems: ['1'], }); expect(() => { - response.setProps({ defaultExpandedItems: ['2'] }); - expect(response.isItemExpanded('1')).to.equal(true); - expect(response.isItemExpanded('2')).to.equal(false); + view.setProps({ defaultExpandedItems: ['2'] }); + expect(view.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('2')).to.equal(false); }).toErrorDev( 'MUI X: A component is changing the default expandedItems state of an uncontrolled TreeView after being initialized. To suppress this warning opt to use a controlled TreeView.', ); @@ -146,65 +146,65 @@ describeTreeView<[UseTreeViewExpansionSignature]>( describe('item click interaction', () => { it('should expand collapsed item when clicking on an item content', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.isItemExpanded('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should collapse expanded item when clicking on an item content', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], defaultExpandedItems: ['1'], }); - expect(response.isItemExpanded('1')).to.equal(true); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(true); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemExpanded('1')).to.equal(false); }); it('should not expand collapsed item when clicking on a disabled item content', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.isItemExpanded('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemExpanded('1')).to.equal(false); }); it('should not collapse expanded item when clicking on a disabled item', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }, { id: '2' }], defaultExpandedItems: ['1'], }); - expect(response.isItemExpanded('1')).to.equal(true); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(true); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should expand collapsed item when clicking on an item label', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.isItemExpanded('1')).to.equal(false); - fireEvent.click(response.getItemLabel('1')); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(false); + fireEvent.click(view.getItemLabel('1')); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should expand collapsed item when clicking on an item icon container', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.isItemExpanded('1')).to.equal(false); - fireEvent.click(response.getItemIconContainer('1')); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(false); + fireEvent.click(view.getItemIconContainer('1')); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should be able to limit the expansion to the icon', function test() { @@ -245,16 +245,16 @@ describeTreeView<[UseTreeViewExpansionSignature]>( ); }); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], slots: { item: CustomTreeItem }, }); - expect(response.isItemExpanded('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemExpanded('1')).to.equal(false); - fireEvent.click(response.getItemIconContainer('1')); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemExpanded('1')).to.equal(false); + fireEvent.click(view.getItemIconContainer('1')); + expect(view.isItemExpanded('1')).to.equal(true); }); }); @@ -262,28 +262,28 @@ describeTreeView<[UseTreeViewExpansionSignature]>( // This `describe` only tests basics scenarios, more complex scenarios are tested in this file's other `describe`. describe('aria-expanded item attribute', () => { it('should have the attribute `aria-expanded=false` if collapsed', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], }); - expect(response.getItemRoot('1')).to.have.attribute('aria-expanded', 'false'); + expect(view.getItemRoot('1')).to.have.attribute('aria-expanded', 'false'); }); it('should have the attribute `aria-expanded=true` if expanded', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); - expect(response.getItemRoot('1')).to.have.attribute('aria-expanded', 'true'); + expect(view.getItemRoot('1')).to.have.attribute('aria-expanded', 'true'); }); it('should not have the attribute `aria-expanded` if no children are present', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], }); - expect(response.getItemRoot('1')).not.to.have.attribute('aria-expanded'); + expect(view.getItemRoot('1')).not.to.have.attribute('aria-expanded'); }); }); @@ -291,12 +291,12 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should call the onItemExpansionToggle callback when expanding an item', () => { const onItemExpansionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], onItemExpansionToggle, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onItemExpansionToggle.callCount).to.equal(1); expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); expect(onItemExpansionToggle.lastCall.args[2]).to.equal(true); @@ -305,13 +305,13 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should call the onItemExpansionToggle callback when collapsing an item', () => { const onItemExpansionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], onItemExpansionToggle, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onItemExpansionToggle.callCount).to.equal(1); expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); expect(onItemExpansionToggle.lastCall.args[2]).to.equal(false); @@ -322,16 +322,16 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should expand a collapsed item when calling the setItemExpansion method with `isExpanded=true`', () => { const onItemExpansionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], onItemExpansionToggle, }); act(() => { - response.apiRef.current.setItemExpansion({} as any, '1', true); + view.apiRef.current.setItemExpansion({} as any, '1', true); }); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(true); expect(onItemExpansionToggle.callCount).to.equal(1); expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); expect(onItemExpansionToggle.lastCall.args[2]).to.equal(true); @@ -340,17 +340,17 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should collapse an expanded item when calling the setItemExpansion method with `isExpanded=false`', () => { const onItemExpansionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], onItemExpansionToggle, }); act(() => { - response.apiRef.current.setItemExpansion({} as any, '1', false); + view.apiRef.current.setItemExpansion({} as any, '1', false); }); - expect(response.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); expect(onItemExpansionToggle.callCount).to.equal(1); expect(onItemExpansionToggle.lastCall.args[1]).to.equal('1'); expect(onItemExpansionToggle.lastCall.args[2]).to.equal(false); @@ -359,33 +359,33 @@ describeTreeView<[UseTreeViewExpansionSignature]>( it('should do nothing when calling the setItemExpansion method with `isExpanded=true` on an already expanded item', () => { const onItemExpansionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], onItemExpansionToggle, }); act(() => { - response.apiRef.current.setItemExpansion({} as any, '1', true); + view.apiRef.current.setItemExpansion({} as any, '1', true); }); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(true); expect(onItemExpansionToggle.callCount).to.equal(0); }); it('should do nothing when calling the setItemExpansion method with `isExpanded=false` on an already collapsed item', () => { const onItemExpansionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], onItemExpansionToggle, }); act(() => { - response.apiRef.current.setItemExpansion({} as any, '1', false); + view.apiRef.current.setItemExpansion({} as any, '1', false); }); - expect(response.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); expect(onItemExpansionToggle.callCount).to.equal(0); }); }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx index 6bd9dc244893..94cf0c21ea63 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewFocus/useTreeViewFocus.test.tsx @@ -20,107 +20,107 @@ describeTreeView< ({ render, renderFromJSX, TreeItemComponent, treeViewComponentName, TreeViewComponent }) => { describe('basic behavior', () => { it('should allow to focus an item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - fireEvent.focus(response.getItemRoot('2')); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.focus(view.getItemRoot('2')); + expect(view.getFocusedItemId()).to.equal('2'); - fireEvent.focus(response.getItemRoot('1')); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.focus(view.getItemRoot('1')); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should move the focus when the focused item is removed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - fireEvent.focus(response.getItemRoot('2')); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.focus(view.getItemRoot('2')); + expect(view.getFocusedItemId()).to.equal('2'); - response.setItems([{ id: '1' }]); - expect(response.getFocusedItemId()).to.equal('1'); + view.setItems([{ id: '1' }]); + expect(view.getFocusedItemId()).to.equal('1'); }); }); describe('tabIndex HTML attribute', () => { it('should set tabIndex={0} on the first item if none are selected', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - expect(response.getItemRoot('1').tabIndex).to.equal(0); - expect(response.getItemRoot('2').tabIndex).to.equal(-1); + expect(view.getItemRoot('1').tabIndex).to.equal(0); + expect(view.getItemRoot('2').tabIndex).to.equal(-1); }); it('should set tabIndex={0} on the selected item (single selection)', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], selectedItems: '2', }); - expect(response.getItemRoot('1').tabIndex).to.equal(-1); - expect(response.getItemRoot('2').tabIndex).to.equal(0); + expect(view.getItemRoot('1').tabIndex).to.equal(-1); + expect(view.getItemRoot('2').tabIndex).to.equal(0); }); it('should set tabIndex={0} on the first selected item (multi selection)', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }], selectedItems: ['2', '3'], multiSelect: true, }); - expect(response.getItemRoot('1').tabIndex).to.equal(-1); - expect(response.getItemRoot('2').tabIndex).to.equal(0); - expect(response.getItemRoot('3').tabIndex).to.equal(-1); + expect(view.getItemRoot('1').tabIndex).to.equal(-1); + expect(view.getItemRoot('2').tabIndex).to.equal(0); + expect(view.getItemRoot('3').tabIndex).to.equal(-1); }); it('should set tabIndex={0} on the first item if the selected item is not visible', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }] }], selectedItems: '2.1', }); - expect(response.getItemRoot('1').tabIndex).to.equal(0); - expect(response.getItemRoot('2').tabIndex).to.equal(-1); + expect(view.getItemRoot('1').tabIndex).to.equal(0); + expect(view.getItemRoot('2').tabIndex).to.equal(-1); }); it('should set tabIndex={0} on the first item if the no selected item is visible', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }, { id: '2.2' }] }], selectedItems: ['2.1', '2.2'], multiSelect: true, }); - expect(response.getItemRoot('1').tabIndex).to.equal(0); - expect(response.getItemRoot('2').tabIndex).to.equal(-1); + expect(view.getItemRoot('1').tabIndex).to.equal(0); + expect(view.getItemRoot('2').tabIndex).to.equal(-1); }); }); describe('focusItem api method', () => { it('should focus the item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); act(() => { - response.apiRef.current.focusItem({} as any, '2'); + view.apiRef.current.focusItem({} as any, '2'); }); - expect(response.getFocusedItemId()).to.equal('2'); + expect(view.getFocusedItemId()).to.equal('2'); }); it('should not focus item if parent is collapsed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }] }], }); act(() => { - response.apiRef.current.focusItem({} as any, '2.1'); + view.apiRef.current.focusItem({} as any, '2.1'); }); - expect(response.getFocusedItemId()).to.equal(null); + expect(view.getFocusedItemId()).to.equal(null); }); }); @@ -128,13 +128,13 @@ describeTreeView< it('should be called when an item is focused', () => { const onItemFocus = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }], onItemFocus, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); expect(onItemFocus.callCount).to.equal(1); @@ -145,47 +145,47 @@ describeTreeView< describe('disabledItemsFocusable prop', () => { describe('disabledItemFocusable={false}', () => { it('should prevent focus by mouse', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }], disabledItemsFocusable: false, }); - fireEvent.click(response.getItemContent('1')); - expect(response.getFocusedItemId()).to.equal(null); + fireEvent.click(view.getItemContent('1')); + expect(view.getFocusedItemId()).to.equal(null); }); it('should tab tabIndex={-1} on the disabled item and tabIndex={0} on the first non-disabled item', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }, { id: '3' }], disabledItemsFocusable: false, }); - expect(response.getItemRoot('1').tabIndex).to.equal(-1); - expect(response.getItemRoot('2').tabIndex).to.equal(0); - expect(response.getItemRoot('3').tabIndex).to.equal(-1); + expect(view.getItemRoot('1').tabIndex).to.equal(-1); + expect(view.getItemRoot('2').tabIndex).to.equal(0); + expect(view.getItemRoot('3').tabIndex).to.equal(-1); }); }); describe('disabledItemFocusable={true}', () => { it('should prevent focus by mouse', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }], disabledItemsFocusable: true, }); - fireEvent.click(response.getItemContent('1')); - expect(response.getFocusedItemId()).to.equal(null); + fireEvent.click(view.getItemContent('1')); + expect(view.getFocusedItemId()).to.equal(null); }); it('should tab tabIndex={0} on the disabled item and tabIndex={-1} on the other items', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }, { id: '3' }], disabledItemsFocusable: true, }); - expect(response.getItemRoot('1').tabIndex).to.equal(0); - expect(response.getItemRoot('2').tabIndex).to.equal(-1); - expect(response.getItemRoot('3').tabIndex).to.equal(-1); + expect(view.getItemRoot('1').tabIndex).to.equal(0); + expect(view.getItemRoot('2').tabIndex).to.equal(-1); + expect(view.getItemRoot('3').tabIndex).to.equal(-1); }); }); }); @@ -227,19 +227,19 @@ describeTreeView< ); } - const response = renderFromJSX(); + const view = renderFromJSX(); - fireEvent.focus(response.getItemRoot('1')); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.focus(view.getItemRoot('1')); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('1.1'); - fireEvent.keyDown(response.getItemRoot('1.1'), { key: 'ArrowUp' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1.1'), { key: 'ArrowUp' }); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('1.1'); }); }, ); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx index ac5880d8b71f..78c339bd7440 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx @@ -13,11 +13,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( 'useTreeViewIcons plugin', ({ render }) => { describe('slots (expandIcon, collapseIcon, endIcon, icon)', () => { - const getIconTestId = (response: DescribeTreeViewRendererReturnValue, itemId: string) => - response.getItemIconContainer(itemId).querySelector(`div`)?.dataset.testid; + const getIconTestId = (view: DescribeTreeViewRendererReturnValue, itemId: string) => + view.getItemIconContainer(itemId).querySelector(`div`)?.dataset.testid; it('should render the expandIcon slot defined on the tree if no icon slot is defined on the item and the item is collapsed', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], slots: { expandIcon: () =>
    , @@ -26,11 +26,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( }, }); - expect(getIconTestId(response, '1')).to.equal('treeExpandIcon'); + expect(getIconTestId(view, '1')).to.equal('treeExpandIcon'); }); it('should render the collapseIcon slot defined on the tree if no icon is defined on the item and the item is expanded', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], slots: { expandIcon: () =>
    , @@ -40,11 +40,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( defaultExpandedItems: ['1'], }); - expect(getIconTestId(response, '1')).to.equal('treeCollapseIcon'); + expect(getIconTestId(view, '1')).to.equal('treeCollapseIcon'); }); it('should render the endIcon slot defined on the tree if no icon is defined on the item and the item has no children', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], slots: { expandIcon: () =>
    , @@ -53,11 +53,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( }, }); - expect(getIconTestId(response, '1')).to.equal('treeEndIcon'); + expect(getIconTestId(view, '1')).to.equal('treeEndIcon'); }); it('should render the expandIcon slot defined on the item if the item is collapsed', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], slots: { expandIcon: () =>
    , @@ -75,11 +75,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( }, }); - expect(getIconTestId(response, '1')).to.equal('itemExpandIcon'); + expect(getIconTestId(view, '1')).to.equal('itemExpandIcon'); }); it('should render the collapseIcon slot defined on the item if the item is expanded', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], slots: { expandIcon: () =>
    , @@ -98,11 +98,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( defaultExpandedItems: ['1'], }); - expect(getIconTestId(response, '1')).to.equal('itemCollapseIcon'); + expect(getIconTestId(view, '1')).to.equal('itemCollapseIcon'); }); it('should render the endIcon slot defined on the tree if the item has no children', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], slots: { expandIcon: () =>
    , @@ -120,11 +120,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( }, }); - expect(getIconTestId(response, '1')).to.equal('itemEndIcon'); + expect(getIconTestId(view, '1')).to.equal('itemEndIcon'); }); it('should render the icon slot defined on the item if the item is collapsed', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], slots: { expandIcon: () =>
    , @@ -143,11 +143,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( }, }); - expect(getIconTestId(response, '1')).to.equal('itemIcon'); + expect(getIconTestId(view, '1')).to.equal('itemIcon'); }); it('should render the icon slot defined on the item if the item is expanded', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], slots: { expandIcon: () =>
    , @@ -167,11 +167,11 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( defaultExpandedItems: ['1'], }); - expect(getIconTestId(response, '1')).to.equal('itemIcon'); + expect(getIconTestId(view, '1')).to.equal('itemIcon'); }); it('should render the icon slot defined on the item if the item has no children', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], slots: { expandIcon: () =>
    , @@ -190,7 +190,7 @@ describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( }, }); - expect(getIconTestId(response, '1')).to.equal('itemIcon'); + expect(getIconTestId(view, '1')).to.equal('itemIcon'); }); }); }, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx index 7c2a65c072f6..1fda8500521e 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewItems/useTreeViewItems.test.tsx @@ -40,7 +40,7 @@ describeTreeView< this.skip(); } - const response = render({ + const view = render({ items: [{ id: '1' }], slotProps: { item: { @@ -49,62 +49,62 @@ describeTreeView< }, }); - expect(response.getItemRoot('1')).to.have.attribute('id', 'customId'); + expect(view.getItemRoot('1')).to.have.attribute('id', 'customId'); }); describe('items prop / JSX Tree Item', () => { it('should support removing an item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - response.setItems([{ id: '1' }]); - expect(response.getAllTreeItemIds()).to.deep.equal(['1']); + view.setItems([{ id: '1' }]); + expect(view.getAllTreeItemIds()).to.deep.equal(['1']); }); it('should support adding an item at the end', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], }); - response.setItems([{ id: '1' }, { id: '2' }]); - expect(response.getAllTreeItemIds()).to.deep.equal(['1', '2']); + view.setItems([{ id: '1' }, { id: '2' }]); + expect(view.getAllTreeItemIds()).to.deep.equal(['1', '2']); }); it('should support adding an item at the beginning', () => { - const response = render({ + const view = render({ items: [{ id: '2' }], }); - response.setItems([{ id: '1' }, { id: '2' }]); - expect(response.getAllTreeItemIds()).to.deep.equal(['1', '2']); + view.setItems([{ id: '1' }, { id: '2' }]); + expect(view.getAllTreeItemIds()).to.deep.equal(['1', '2']); }); it('should update indexes when two items are swapped', () => { const onSelectedItemsChange = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }], multiSelect: true, onSelectedItemsChange, }); - response.setItems([{ id: '1' }, { id: '3' }, { id: '2' }]); - expect(response.getAllTreeItemIds()).to.deep.equal(['1', '3', '2']); + view.setItems([{ id: '1' }, { id: '3' }, { id: '2' }]); + expect(view.getAllTreeItemIds()).to.deep.equal(['1', '3', '2']); // Check if the internal state is updated by running a range selection - fireEvent.click(response.getItemContent('1')); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); + fireEvent.click(view.getItemContent('1')); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['1', '3']); }); it('should not mark an item as expandable if its children is an empty array', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [] }], defaultExpandedItems: ['1'], }); - expect(response.getItemRoot('1')).not.to.have.attribute('aria-expanded'); + expect(view.getItemRoot('1')).not.to.have.attribute('aria-expanded'); }); it('should mark an item as not expandable if it has only empty conditional arrays', function test() { @@ -112,7 +112,7 @@ describeTreeView< this.skip(); } - const response = renderFromJSX( + const view = renderFromJSX( {[]} @@ -121,7 +121,7 @@ describeTreeView< , ); - expect(response.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); }); it('should mark an item as expandable if it has two array as children, one of which is empty (SimpleTreeView only)', function test() { @@ -129,7 +129,7 @@ describeTreeView< this.skip(); } - const response = renderFromJSX( + const view = renderFromJSX( {[]} @@ -138,7 +138,7 @@ describeTreeView< , ); - expect(response.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should mark an item as not expandable if it has one array containing an empty array as a children (SimpleTreeView only)', function test() { @@ -146,7 +146,7 @@ describeTreeView< this.skip(); } - const response = renderFromJSX( + const view = renderFromJSX( {[[]]} @@ -154,32 +154,32 @@ describeTreeView< , ); - expect(response.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); }); }); describe('disabled prop', () => { it('should not have the attribute `aria-disabled` if disabled is not defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: false }, { id: '3', disabled: true }], }); - expect(response.getItemRoot('1')).not.to.have.attribute('aria-disabled'); - expect(response.getItemRoot('2')).not.to.have.attribute('aria-disabled'); - expect(response.getItemRoot('3')).to.have.attribute('aria-disabled'); + expect(view.getItemRoot('1')).not.to.have.attribute('aria-disabled'); + expect(view.getItemRoot('2')).not.to.have.attribute('aria-disabled'); + expect(view.getItemRoot('3')).to.have.attribute('aria-disabled'); }); it('should disable all descendants of a disabled item', () => { - const response = render({ + const view = render({ items: [ { id: '1', disabled: true, children: [{ id: '1.1', children: [{ id: '1.1.1' }] }] }, ], defaultExpandedItems: ['1', '1.1'], }); - expect(response.getItemRoot('1')).to.have.attribute('aria-disabled', 'true'); - expect(response.getItemRoot('1.1')).to.have.attribute('aria-disabled', 'true'); - expect(response.getItemRoot('1.1.1')).to.have.attribute('aria-disabled', 'true'); + expect(view.getItemRoot('1')).to.have.attribute('aria-disabled', 'true'); + expect(view.getItemRoot('1.1')).to.have.attribute('aria-disabled', 'true'); + expect(view.getItemRoot('1.1.1')).to.have.attribute('aria-disabled', 'true'); }); }); @@ -187,12 +187,12 @@ describeTreeView< it('should call onItemClick when clicking on the content of an item', () => { const onItemClick = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }], onItemClick, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onItemClick.callCount).to.equal(1); expect(onItemClick.lastCall.lastArg).to.equal('1'); }); @@ -200,13 +200,13 @@ describeTreeView< it('should not call onItemClick for the ancestors on the clicked item', () => { const onItemClick = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], onItemClick, }); - fireEvent.click(response.getItemContent('1.1')); + fireEvent.click(view.getItemContent('1.1')); expect(onItemClick.callCount).to.equal(1); expect(onItemClick.lastCall.lastArg).to.equal('1.1'); }); @@ -220,32 +220,32 @@ describeTreeView< } it('should return the tree', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.apiRef.current.getItem('1')).to.deep.equal({ + expect(view.apiRef.current.getItem('1')).to.deep.equal({ id: '1', children: [{ id: '1.1' }], }); }); it('should have up to date tree when props.items changes', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - response.setItems([{ id: '1' }, { id: '2' }]); + view.setItems([{ id: '1' }, { id: '2' }]); - expect(response.apiRef.current.getItem('1')).to.deep.equal({ id: '1' }); + expect(view.apiRef.current.getItem('1')).to.deep.equal({ id: '1' }); }); it('should contain custom item properties', () => { - const response = render({ + const view = render({ items: [{ id: '1', customProp: 'foo' }], }); - expect(response.apiRef.current.getItem('1')).to.deep.equal({ + expect(view.apiRef.current.getItem('1')).to.deep.equal({ id: '1', customProp: 'foo', }); @@ -254,21 +254,19 @@ describeTreeView< describe('getItemDOMElement', () => { it('should return the DOM element of the item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], }); - expect(response.apiRef.current.getItemDOMElement('1')).to.equal( - response.getItemRoot('1'), - ); + expect(view.apiRef.current.getItemDOMElement('1')).to.equal(view.getItemRoot('1')); }); it("should return the null when the item doesn't exist", () => { - const response = render({ + const view = render({ items: [{ id: '1' }], }); - expect(response.apiRef.current.getItemDOMElement('2')).to.equal(null); + expect(view.apiRef.current.getItemDOMElement('2')).to.equal(null); }); }); @@ -279,34 +277,32 @@ describeTreeView< } it('should return the tree', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - expect(response.apiRef.current.getItemTree()).to.deep.equal([ + expect(view.apiRef.current.getItemTree()).to.deep.equal([ { id: '1', children: [{ id: '1.1' }] }, { id: '2' }, ]); }); it('should have up to date tree when props.items changes', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - response.setItems([{ id: '1' }, { id: '2' }]); + view.setItems([{ id: '1' }, { id: '2' }]); - expect(response.apiRef.current.getItemTree()).to.deep.equal([{ id: '1' }, { id: '2' }]); + expect(view.apiRef.current.getItemTree()).to.deep.equal([{ id: '1' }, { id: '2' }]); }); it('should contain custom item properties', () => { - const response = render({ + const view = render({ items: [{ id: '1', customProp: 'foo' }], }); - expect(response.apiRef.current.getItemTree()).to.deep.equal([ - { id: '1', customProp: 'foo' }, - ]); + expect(view.apiRef.current.getItemTree()).to.deep.equal([{ id: '1', customProp: 'foo' }]); }); }); @@ -317,35 +313,29 @@ describeTreeView< } it('should return the children of an item in their rendering order', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }, { id: '1.2' }] }], }); - expect(response.apiRef.current.getItemOrderedChildrenIds('1')).to.deep.equal([ - '1.1', - '1.2', - ]); + expect(view.apiRef.current.getItemOrderedChildrenIds('1')).to.deep.equal(['1.1', '1.2']); }); it('should work for the root items', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - expect(response.apiRef.current.getItemOrderedChildrenIds(null)).to.deep.equal(['1', '2']); + expect(view.apiRef.current.getItemOrderedChildrenIds(null)).to.deep.equal(['1', '2']); }); it('should have up to date children when props.items changes', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], }); - response.setItems([{ id: '1', children: [{ id: '1.1' }, { id: '1.2' }] }]); + view.setItems([{ id: '1', children: [{ id: '1.1' }, { id: '1.2' }] }]); - expect(response.apiRef.current.getItemOrderedChildrenIds('1')).to.deep.equal([ - '1.1', - '1.2', - ]); + expect(view.apiRef.current.getItemOrderedChildrenIds('1')).to.deep.equal(['1.1', '1.2']); }); }); }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx index 790fc886213b..f15ef9c93251 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.test.tsx @@ -21,302 +21,302 @@ describeTreeView< describe('Navigation (focus and expansion)', () => { describe('key: ArrowDown', () => { it('should move the focus to a sibling item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('2'); }); it('should move the focus to a child item', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('1.1'); }); it('should move the focus to a child item with a dynamic tree', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], defaultExpandedItems: ['1'], }); - response.setItems([{ id: '2' }]); - response.setItems([{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }]); + view.setItems([{ id: '2' }]); + view.setItems([{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }]); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('1.1'); }); it("should move the focus to a parent's sibling", () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }, { id: '2' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1.1').focus(); + view.getItemRoot('1.1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1.1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1.1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('2'); }); it('should skip disabled items', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('3'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('3'); }); it('should not skip disabled items if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown' }); + expect(view.getFocusedItemId()).to.equal('2'); }); }); describe('key: ArrowUp', () => { it('should move the focus to a sibling item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowUp' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowUp' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should move the focus to a parent', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1.1').focus(); + view.getItemRoot('1.1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1.1'), { key: 'ArrowUp' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1.1'), { key: 'ArrowUp' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it("should move the focus to a sibling's child", () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }, { id: '2' }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowUp' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowUp' }); + expect(view.getFocusedItemId()).to.equal('1.1'); }); it('should skip disabled items', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should not skip disabled items if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp' }); + expect(view.getFocusedItemId()).to.equal('2'); }); }); describe('key: ArrowRight', () => { it('should open the item and not move the focus if the focus is on a closed item', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowRight' }); - expect(response.isItemExpanded('1')).to.equal(true); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowRight' }); + expect(view.isItemExpanded('1')).to.equal(true); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should move the focus to the first child if the focus is on an open item', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowRight' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowRight' }); + expect(view.getFocusedItemId()).to.equal('1.1'); }); it('should do nothing if the focus is on a leaf', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1.1').focus(); + view.getItemRoot('1.1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1.1'), { key: 'ArrowRight' }); - expect(response.getFocusedItemId()).to.equal('1.1'); + fireEvent.keyDown(view.getItemRoot('1.1'), { key: 'ArrowRight' }); + expect(view.getFocusedItemId()).to.equal('1.1'); }); it('should not expand an item with children if it is collapsed but disabled even if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowRight' }); - expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowRight' }); + expect(view.isItemExpanded('1')).to.equal(false); }); }); describe('key: ArrowLeft', () => { it('should close the item if the focus is on an open item', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowLeft' }); - expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowLeft' }); + expect(view.isItemExpanded('1')).to.equal(false); }); it("should move focus to the item's parent if the focus is on a child item that is a leaf", () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1.1').focus(); + view.getItemRoot('1.1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1.1'), { key: 'ArrowLeft' }); - expect(response.getFocusedItemId()).to.equal('1'); - expect(response.isItemExpanded('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1.1'), { key: 'ArrowLeft' }); + expect(view.getFocusedItemId()).to.equal('1'); + expect(view.isItemExpanded('1')).to.equal(true); }); it("should move the focus to the item's parent if the focus is on a child item that is closed", () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1', children: [{ id: '1.1.1' }] }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1.1').focus(); + view.getItemRoot('1.1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1.1'), { key: 'ArrowLeft' }); - expect(response.getFocusedItemId()).to.equal('1'); - expect(response.isItemExpanded('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1.1'), { key: 'ArrowLeft' }); + expect(view.getFocusedItemId()).to.equal('1'); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should do nothing if the focus is on a root item that is closed', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowLeft' }); - expect(response.getFocusedItemId()).to.equal('1'); - expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowLeft' }); + expect(view.getFocusedItemId()).to.equal('1'); + expect(view.isItemExpanded('1')).to.equal(false); }); it('should do nothing if the focus is on a root item that is a leaf', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowLeft' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowLeft' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should not collapse an item with children if it is collapsed but disabled even if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowLeft' }); - expect(response.isItemExpanded('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowLeft' }); + expect(view.isItemExpanded('1')).to.equal(true); }); }); describe('key: Home', () => { it('should move the focus to the first item in the tree', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], }); act(() => { - response.getItemRoot('4').focus(); + view.getItemRoot('4').focus(); }); - fireEvent.keyDown(response.getItemRoot('4'), { key: 'Home' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('4'), { key: 'Home' }); + expect(view.getFocusedItemId()).to.equal('1'); }); }); describe('key: End', () => { it('should move the focus to the last item in the tree when the last item is not expanded', () => { - const response = render({ + const view = render({ items: [ { id: '1' }, { id: '2' }, @@ -326,14 +326,14 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'End' }); - expect(response.getFocusedItemId()).to.equal('4'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'End' }); + expect(view.getFocusedItemId()).to.equal('4'); }); it('should move the focus to the last item in the tree when the last item is expanded', () => { - const response = render({ + const view = render({ items: [ { id: '1' }, { id: '2' }, @@ -344,16 +344,16 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'End' }); - expect(response.getFocusedItemId()).to.equal('4.1.1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'End' }); + expect(view.getFocusedItemId()).to.equal('4.1.1'); }); }); describe('key: * (asterisk)', () => { it('should expand all items that are at the same depth as the current item (depth = 0)', () => { - const response = render({ + const view = render({ items: [ { id: '1', children: [{ id: '1.1' }] }, { id: '2', children: [{ id: '2.1' }] }, @@ -363,22 +363,22 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.isItemExpanded('1')).to.equal(false); - expect(response.isItemExpanded('2')).to.equal(false); - expect(response.isItemExpanded('3')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('2')).to.equal(false); + expect(view.isItemExpanded('3')).to.equal(false); - fireEvent.keyDown(response.getItemRoot('1'), { key: '*' }); - expect(response.isItemExpanded('1')).to.equal(true); - expect(response.isItemExpanded('2')).to.equal(true); - expect(response.isItemExpanded('3')).to.equal(true); - expect(response.isItemExpanded('3.1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: '*' }); + expect(view.isItemExpanded('1')).to.equal(true); + expect(view.isItemExpanded('2')).to.equal(true); + expect(view.isItemExpanded('3')).to.equal(true); + expect(view.isItemExpanded('3.1')).to.equal(false); }); it('should expand all items that are at the same depth as the current item (depth = 1)', () => { - const response = render({ + const view = render({ items: [ { id: '1', children: [{ id: '1.1' }] }, { id: '2', children: [{ id: '2.1' }] }, @@ -397,60 +397,60 @@ describeTreeView< }); act(() => { - response.getItemRoot('3.1').focus(); + view.getItemRoot('3.1').focus(); }); - expect(response.isItemExpanded('1')).to.equal(false); - expect(response.isItemExpanded('2')).to.equal(false); - expect(response.isItemExpanded('3')).to.equal(true); - expect(response.isItemExpanded('3.1')).to.equal(false); + expect(view.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('2')).to.equal(false); + expect(view.isItemExpanded('3')).to.equal(true); + expect(view.isItemExpanded('3.1')).to.equal(false); - fireEvent.keyDown(response.getItemRoot('3.1'), { key: '*' }); - expect(response.isItemExpanded('1')).to.equal(false); - expect(response.isItemExpanded('2')).to.equal(false); - expect(response.isItemExpanded('3')).to.equal(true); - expect(response.isItemExpanded('3.1')).to.equal(true); - expect(response.isItemExpanded('3.1.2')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('3.1'), { key: '*' }); + expect(view.isItemExpanded('1')).to.equal(false); + expect(view.isItemExpanded('2')).to.equal(false); + expect(view.isItemExpanded('3')).to.equal(true); + expect(view.isItemExpanded('3.1')).to.equal(true); + expect(view.isItemExpanded('3.1.2')).to.equal(false); }); }); describe('key: Enter', () => { it('should expand an item with children if it is collapsed', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemExpanded('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemExpanded('1')).to.equal(true); }); it('should collapse an item with children if it is expanded', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemExpanded('1')).to.equal(false); }); it('should not expand an item with children if it is collapsed but disabled even if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true, children: [{ id: '1.1' }] }], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemExpanded('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemExpanded('1')).to.equal(false); }); }); }); @@ -459,119 +459,119 @@ describeTreeView< describe('single selection', () => { describe('key: Space', () => { it('should select the focused item when Space is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.isItemSelected('1')).to.equal(true); }); it('should not un-select the focused item when Space is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.isItemSelected('1')).to.equal(true); }); it('should not select the focused item when Space is pressed and disableSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select the focused item when Space is pressed and the item is disabled', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select the focused item when Space is pressed and the item is disabled even if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.isItemSelected('1')).to.equal(false); }); }); describe('key: Enter', () => { it('should select the focused item when Enter is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemSelected('1')).to.equal(true); }); it('should not un-select the focused item when Enter is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemSelected('1')).to.equal(true); }); it('should not select the focused item when Enter is pressed and disableSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select the focused item when Enter is pressed and the item is disabled even if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); + expect(view.isItemSelected('1')).to.equal(false); }); }); }); @@ -579,179 +579,179 @@ describeTreeView< describe('multi selection', () => { describe('key: Space', () => { it('should select the focused item without un-selecting the other selected items when Space is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, defaultSelectedItems: ['1'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: ' ' }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + fireEvent.keyDown(view.getItemRoot('2'), { key: ' ' }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); }); it('should un-select the focused item when Space is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, defaultSelectedItems: ['1', '2'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should select the focused item without un-selecting the other selected items when Space is pressed while holding Ctrl', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, defaultSelectedItems: ['1'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: ' ', ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + fireEvent.keyDown(view.getItemRoot('2'), { key: ' ', ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); }); it('should un-select the focused item when Space is pressed while holding Ctrl', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, defaultSelectedItems: ['1', '2'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ', ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ', ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should not select the focused item when Space is pressed and disableSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, disableSelection: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not select the focused item when Space is pressed and the item is disabled', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], multiSelect: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not select the focused item when Space is pressed and the item is disabled even if disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], multiSelect: true, disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: ' ' }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.keyDown(view.getItemRoot('1'), { key: ' ' }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); }); describe('key: ArrowDown', () => { it('should expand the selection range when ArrowDown is pressed while holding Shift from a selected item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, defaultSelectedItems: ['2'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '3']); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '3']); }); it('should not un-select the item below the focused item when ArrowDown is pressed while holding Shift from a selected item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, defaultSelectedItems: ['2', '3'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '3']); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '3']); }); it('should un-select the focused item when ArrowDown is pressed while holding Shift and the item below have been selected in the same range', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, defaultSelectedItems: ['3'], }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '3']); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '3']); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['3']); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['3']); }); it('should not select any item when ArrowDown is pressed while holding Shift and disabledSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, disableSelection: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should select the next non-disabled item when ArrowDown is pressed while holding Shift', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], multiSelect: true, defaultSelectedItems: ['1'], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3']); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3']); }); it('should not select the next item when ArrowDown is pressed while holding Shift if the next item is disabled and disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], multiSelect: true, disabledItemsFocusable: true, @@ -759,104 +759,104 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); + expect(view.getFocusedItemId()).to.equal('2'); }); it('should select the next item when ArrowDown is pressed while holding Shift if the focused item is disabled and disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }, { id: '3' }], multiSelect: true, disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); }); describe('key: ArrowUp', () => { it('should expand the selection range when ArrowUp is pressed while holding Shift from a selected item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, defaultSelectedItems: ['3'], }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '3']); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '3']); }); it('should not un-select the item above the focused item when ArrowUp is pressed while holding Shift from a selected item', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, defaultSelectedItems: ['2', '3'], }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '3']); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '3']); }); it('should un-select the focused item when ArrowUp is pressed while holding Shift and the item above have been selected in the same range', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, defaultSelectedItems: ['2'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '3']); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowDown', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '3']); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should not select any item when ArrowUp is pressed while holding Shift and disabledSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true, disableSelection: true, }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should select the next non-disabled item when ArrowUp is pressed while holding Shift', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], multiSelect: true, defaultSelectedItems: ['3'], }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3']); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3']); }); it('should not select the next item when ArrowUp is pressed while holding Shift if the next item is disabled and disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], multiSelect: true, disabledItemsFocusable: true, @@ -864,67 +864,67 @@ describeTreeView< }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['3']); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['3']); + expect(view.getFocusedItemId()).to.equal('2'); }); it('should select the previous item when ArrowUp is pressed while holding Shift if the focused item is disabled and disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3', disabled: true }], multiSelect: true, disabledItemsFocusable: true, }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.keyDown(view.getItemRoot('3'), { key: 'ArrowUp', shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); }); describe('key: Home', () => { it('should select select the focused item and all the items above when Home is pressed while holding Shift + Ctrl', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }] }, { id: '3' }, { id: '4' }], multiSelect: true, defaultExpandedItems: ['2'], }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { + fireEvent.keyDown(view.getItemRoot('3'), { key: 'Home', shiftKey: true, ctrlKey: true, }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2', '2.1', '3']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2', '2.1', '3']); }); it('should not select any item when Home is pressed while holding Shift + Ctrl and disableSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, disableSelection: true, }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { + fireEvent.keyDown(view.getItemRoot('3'), { key: 'Home', shiftKey: true, ctrlKey: true, }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not select disabled items when Home is pressed while holding Shift + Ctrl', () => { - const response = render({ + const view = render({ items: [ { id: '1' }, { id: '2', disabled: true, children: [{ id: '2.1' }] }, @@ -936,56 +936,56 @@ describeTreeView< }); act(() => { - response.getItemRoot('3').focus(); + view.getItemRoot('3').focus(); }); - fireEvent.keyDown(response.getItemRoot('3'), { + fireEvent.keyDown(view.getItemRoot('3'), { key: 'Home', shiftKey: true, ctrlKey: true, }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3']); }); }); describe('key: End', () => { it('should select select the focused item and all the items below when End is pressed while holding Shift + Ctrl', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2', children: [{ id: '2.1' }] }, { id: '3' }, { id: '4' }], multiSelect: true, defaultExpandedItems: ['2'], }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { + fireEvent.keyDown(view.getItemRoot('2'), { key: 'End', shiftKey: true, ctrlKey: true, }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3', '4']); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3', '4']); }); it('should not select any item when End is pressed while holding Shift + Ctrl and disableSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, disableSelection: true, }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { + fireEvent.keyDown(view.getItemRoot('2'), { key: 'End', shiftKey: true, ctrlKey: true, }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not select disabled items when End is pressed while holding Shift + Ctrl', () => { - const response = render({ + const view = render({ items: [ { id: '1' }, { id: '2' }, @@ -997,47 +997,47 @@ describeTreeView< }); act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - fireEvent.keyDown(response.getItemRoot('2'), { + fireEvent.keyDown(view.getItemRoot('2'), { key: 'End', shiftKey: true, ctrlKey: true, }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '4']); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '4']); }); }); describe('key: Ctrl + A', () => { it('should select all items when Ctrl + A is pressed', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'a', ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2', '3', '4']); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'a', ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2', '3', '4']); }); it('should not select any item when Ctrl + A is pressed and disableSelection={true}', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], multiSelect: true, disableSelection: true, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'a', ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'a', ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not select disabled items when Ctrl + A is pressed', () => { - const response = render({ + const view = render({ items: [ { id: '1' }, { id: '2', disabled: true, children: [{ id: '2.1' }] }, @@ -1048,10 +1048,10 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'a', ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3', '4']); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'a', ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3', '4']); }); }); }); @@ -1059,7 +1059,7 @@ describeTreeView< describe('Type-ahead', () => { it('should move the focus to the next item with a name that starts with the typed character', () => { - const response = render({ + const view = render({ items: [ { id: '1', label: 'one' }, { id: '2', label: 'two' }, @@ -1069,45 +1069,45 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.getFocusedItemId()).to.equal('1'); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't' }); + expect(view.getFocusedItemId()).to.equal('2'); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'f' }); - expect(response.getFocusedItemId()).to.equal('4'); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'f' }); + expect(view.getFocusedItemId()).to.equal('4'); - fireEvent.keyDown(response.getItemRoot('4'), { key: 'o' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('4'), { key: 'o' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should move to the next item in the displayed order when typing the same starting character', () => { - const response = render({ + const view = render({ items: [{ id: 'A1' }, { id: 'B1' }, { id: 'A2' }, { id: 'B3' }, { id: 'B2' }], }); act(() => { - response.getItemRoot('A1').focus(); + view.getItemRoot('A1').focus(); }); - expect(response.getFocusedItemId()).to.equal('A1'); + expect(view.getFocusedItemId()).to.equal('A1'); - fireEvent.keyDown(response.getItemRoot('A1'), { key: 'b' }); - expect(response.getFocusedItemId()).to.equal('B1'); + fireEvent.keyDown(view.getItemRoot('A1'), { key: 'b' }); + expect(view.getFocusedItemId()).to.equal('B1'); - fireEvent.keyDown(response.getItemRoot('B1'), { key: 'b' }); - expect(response.getFocusedItemId()).to.equal('B3'); + fireEvent.keyDown(view.getItemRoot('B1'), { key: 'b' }); + expect(view.getFocusedItemId()).to.equal('B3'); - fireEvent.keyDown(response.getItemRoot('B3'), { key: 'b' }); - expect(response.getFocusedItemId()).to.equal('B2'); + fireEvent.keyDown(view.getItemRoot('B3'), { key: 'b' }); + expect(view.getFocusedItemId()).to.equal('B2'); - fireEvent.keyDown(response.getItemRoot('B2'), { key: 'b' }); - expect(response.getFocusedItemId()).to.equal('B1'); + fireEvent.keyDown(view.getItemRoot('B2'), { key: 'b' }); + expect(view.getFocusedItemId()).to.equal('B1'); }); it('should work with capitalized label', () => { - const response = render({ + const view = render({ items: [ { id: '1', label: 'One' }, { id: '2', label: 'Two' }, @@ -1117,18 +1117,18 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.getFocusedItemId()).to.equal('1'); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't' }); + expect(view.getFocusedItemId()).to.equal('2'); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'f' }); - expect(response.getFocusedItemId()).to.equal('4'); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'f' }); + expect(view.getFocusedItemId()).to.equal('4'); - fireEvent.keyDown(response.getItemRoot('4'), { key: 'o' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('4'), { key: 'o' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should work with ReactElement label', function test() { @@ -1137,7 +1137,7 @@ describeTreeView< this.skip(); } - const response = render({ + const view = render({ items: [ { id: '1', label: one }, { id: '2', label: two }, @@ -1147,47 +1147,47 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.getFocusedItemId()).to.equal('1'); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't' }); + expect(view.getFocusedItemId()).to.equal('2'); - fireEvent.keyDown(response.getItemRoot('2'), { key: 'f' }); - expect(response.getFocusedItemId()).to.equal('4'); + fireEvent.keyDown(view.getItemRoot('2'), { key: 'f' }); + expect(view.getFocusedItemId()).to.equal('4'); - fireEvent.keyDown(response.getItemRoot('4'), { key: 'o' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('4'), { key: 'o' }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should work after adding / removing items', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }], }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: '4' }); - expect(response.getFocusedItemId()).to.equal('4'); + fireEvent.keyDown(view.getItemRoot('1'), { key: '4' }); + expect(view.getFocusedItemId()).to.equal('4'); - response.setItems([{ id: '1' }, { id: '2' }, { id: '3' }]); - expect(response.getFocusedItemId()).to.equal('1'); + view.setItems([{ id: '1' }, { id: '2' }, { id: '3' }]); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: '2' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: '2' }); + expect(view.getFocusedItemId()).to.equal('2'); - response.setItems([{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }]); - expect(response.getFocusedItemId()).to.equal('2'); + view.setItems([{ id: '1' }, { id: '2' }, { id: '3' }, { id: '4' }]); + expect(view.getFocusedItemId()).to.equal('2'); - fireEvent.keyDown(response.getItemRoot('2'), { key: '4' }); - expect(response.getFocusedItemId()).to.equal('4'); + fireEvent.keyDown(view.getItemRoot('2'), { key: '4' }); + expect(view.getFocusedItemId()).to.equal('4'); }); it('should not move focus when a modifier key and a letter are pressed', () => { - const response = render({ + const view = render({ items: [ { id: '1', label: 'one' }, { id: '2', label: 'two' }, @@ -1197,22 +1197,22 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.getFocusedItemId()).to.equal('1'); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't', ctrlKey: true }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't', ctrlKey: true }); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't', metaKey: true }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't', metaKey: true }); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't', shiftKey: true }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't', shiftKey: true }); + expect(view.getFocusedItemId()).to.equal('1'); }); it('should work on disabled item when disabledItemsFocusable={true}', () => { - const response = render({ + const view = render({ items: [ { id: '1', label: 'one', disabled: true }, { id: '2', label: 'two', disabled: true }, @@ -1223,16 +1223,16 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.getFocusedItemId()).to.equal('1'); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't' }); - expect(response.getFocusedItemId()).to.equal('2'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't' }); + expect(view.getFocusedItemId()).to.equal('2'); }); it('should not move focus on disabled item when disabledItemsFocusable={false}', () => { - const response = render({ + const view = render({ items: [ { id: '1', label: 'one', disabled: true }, { id: '2', label: 'two', disabled: true }, @@ -1243,12 +1243,12 @@ describeTreeView< }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - expect(response.getFocusedItemId()).to.equal('1'); + expect(view.getFocusedItemId()).to.equal('1'); - fireEvent.keyDown(response.getItemRoot('1'), { key: 't' }); - expect(response.getFocusedItemId()).to.equal('1'); + fireEvent.keyDown(view.getItemRoot('1'), { key: 't' }); + expect(view.getFocusedItemId()).to.equal('1'); }); }); @@ -1257,13 +1257,13 @@ describeTreeView< const handleTreeViewKeyDown = spy(); const handleTreeItemKeyDown = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }], onKeyDown: handleTreeViewKeyDown, slotProps: { item: { onKeyDown: handleTreeItemKeyDown } }, } as any); - const itemRoot = response.getItemRoot('1'); + const itemRoot = view.getItemRoot('1'); act(() => { itemRoot.focus(); }); diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.test.tsx index 05fe270d5248..a89bbdbd8e05 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.test.tsx @@ -13,17 +13,17 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', editable: false }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); + fireEvent.doubleClick(view.getItemLabel('1')); - expect(response.getItemLabelInput('1')).to.equal(null); + expect(view.getItemLabelInput('1')).to.equal(null); }); it('should render labelInput when double clicked if item is editable', function test() { @@ -31,17 +31,17 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); + fireEvent.doubleClick(view.getItemLabel('1')); - expect(response.getItemLabelInput('1')).not.to.equal(null); + expect(view.getItemLabelInput('1')).not.to.equal(null); }); it('should not render label when double clicked if item is editable', function test() { @@ -49,17 +49,17 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); + fireEvent.doubleClick(view.getItemLabel('1')); - expect(response.getItemLabel('1')).to.equal(null); + expect(view.getItemLabel('1')).to.equal(null); }); it('should not render labelInput on Enter if item is not editable', function test() { @@ -67,18 +67,18 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', editable: false }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); - expect(response.getItemLabelInput('1')).to.equal(null); - expect(response.getItemLabel('1')).not.to.equal(null); + expect(view.getItemLabelInput('1')).to.equal(null); + expect(view.getItemLabel('1')).not.to.equal(null); }); it('should render labelInput on Enter if item is editable', function test() { @@ -86,17 +86,17 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.keyDown(response.getItemRoot('1'), { key: 'Enter' }); + fireEvent.keyDown(view.getItemRoot('1'), { key: 'Enter' }); - expect(response.getItemLabelInput('1')).not.to.equal(null); + expect(view.getItemLabelInput('1')).not.to.equal(null); }); it('should unmount labelInput after save', function test() { @@ -104,19 +104,19 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', label: 'test', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); - fireEvent.keyDown(response.getItemLabelInput('1'), { key: 'Enter' }); + fireEvent.doubleClick(view.getItemLabel('1')); + fireEvent.keyDown(view.getItemLabelInput('1'), { key: 'Enter' }); - expect(response.getItemLabelInput('1')).to.equal(null); - expect(response.getItemLabel('1')).not.to.equal(null); + expect(view.getItemLabelInput('1')).to.equal(null); + expect(view.getItemLabel('1')).not.to.equal(null); }); it('should unmount labelInput after cancel', function test() { @@ -124,19 +124,19 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', label: 'test', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); - fireEvent.keyDown(response.getItemLabelInput('1'), { key: 'Esc' }); + fireEvent.doubleClick(view.getItemLabel('1')); + fireEvent.keyDown(view.getItemLabelInput('1'), { key: 'Esc' }); - expect(response.getItemLabelInput('1')).to.equal(null); - expect(response.getItemLabel('1')).not.to.equal(null); + expect(view.getItemLabelInput('1')).to.equal(null); + expect(view.getItemLabel('1')).not.to.equal(null); }); }); @@ -146,17 +146,17 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', label: 'test', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); + fireEvent.doubleClick(view.getItemLabel('1')); - expect(response.getItemLabelInput('1').value).to.equal('test'); + expect(view.getItemLabelInput('1').value).to.equal('test'); }); it('should save new value on Enter', function test() { @@ -164,19 +164,19 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', label: 'test', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); - fireEvent.change(response.getItemLabelInput('1'), { target: { value: 'new value' } }); - fireEvent.keyDown(response.getItemLabelInput('1'), { key: 'Enter' }); + fireEvent.doubleClick(view.getItemLabel('1')); + fireEvent.change(view.getItemLabelInput('1'), { target: { value: 'new value' } }); + fireEvent.keyDown(view.getItemLabelInput('1'), { key: 'Enter' }); - expect(response.getItemLabel('1').textContent).to.equal('new value'); + expect(view.getItemLabel('1').textContent).to.equal('new value'); }); it('should hold new value on render after save', function test() { @@ -184,20 +184,20 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', label: 'test', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); - fireEvent.change(response.getItemLabelInput('1'), { target: { value: 'new value' } }); - fireEvent.keyDown(response.getItemLabelInput('1'), { key: 'Enter' }); - fireEvent.doubleClick(response.getItemLabel('1')); + fireEvent.doubleClick(view.getItemLabel('1')); + fireEvent.change(view.getItemLabelInput('1'), { target: { value: 'new value' } }); + fireEvent.keyDown(view.getItemLabelInput('1'), { key: 'Enter' }); + fireEvent.doubleClick(view.getItemLabel('1')); - expect(response.getItemLabelInput('1').value).to.equal('new value'); + expect(view.getItemLabelInput('1').value).to.equal('new value'); }); it('should hold initial value on render after cancel', function test() { @@ -205,21 +205,21 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ experimentalFeatures: { labelEditing: true }, items: [{ id: '1', label: 'test', editable: true }], isItemEditable: (item) => item.editable, }); act(() => { - response.getItemRoot('1').focus(); + view.getItemRoot('1').focus(); }); - fireEvent.doubleClick(response.getItemLabel('1')); - fireEvent.change(response.getItemLabelInput('1'), { target: { value: 'new value' } }); - fireEvent.keyDown(response.getItemLabelInput('1'), { key: 'Esc' }); - expect(response.getItemLabel('1').textContent).to.equal('test'); + fireEvent.doubleClick(view.getItemLabel('1')); + fireEvent.change(view.getItemLabelInput('1'), { target: { value: 'new value' } }); + fireEvent.keyDown(view.getItemLabelInput('1'), { key: 'Esc' }); + expect(view.getItemLabel('1').textContent).to.equal('test'); - fireEvent.doubleClick(response.getItemLabel('1')); - expect(response.getItemLabelInput('1').value).to.equal('test'); + fireEvent.doubleClick(view.getItemLabel('1')); + expect(view.getItemLabelInput('1').value).to.equal('test'); }); }); }); @@ -229,15 +229,15 @@ describeTreeView<[UseTreeViewLabelSignature]>( if (treeViewComponentName.startsWith('SimpleTreeView')) { this.skip(); } - const response = render({ + const view = render({ items: [{ id: '1', label: 'test' }], }); act(() => { - response.apiRef.current.updateItemLabel('1', 'new value'); + view.apiRef.current.updateItemLabel('1', 'new value'); }); - expect(response.getItemLabel('1').textContent).to.equal('new value'); + expect(view.getItemLabel('1').textContent).to.equal('new value'); }); }); }, diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx index 3664db627d13..0f80094dc69a 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewSelection/useTreeViewSelection.test.tsx @@ -16,60 +16,60 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> ({ render }) => { describe('model props (selectedItems, defaultSelectedItems, onSelectedItemsChange)', () => { it('should not select items when no default state and no control state are defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); }); it('should use the default state when defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); }); it('should use the controlled state when defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], selectedItems: ['1'], }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); }); it('should use the controlled state instead of the default state when both are defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], selectedItems: ['1'], defaultSelectedItems: ['2'], }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); }); it('should react to controlled state update', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], selectedItems: [], }); - response.setProps({ selectedItems: ['1'] }); - expect(response.isItemSelected('1')).to.equal(true); + view.setProps({ selectedItems: ['1'] }); + expect(view.isItemSelected('1')).to.equal(true); }); it('should call the onSelectedItemsChange callback when the model is updated (single selection and add selected item)', () => { const onSelectedItemsChange = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], onSelectedItemsChange, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onSelectedItemsChange.callCount).to.equal(1); expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal('1'); @@ -80,13 +80,13 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> it.skip('should call onSelectedItemsChange callback when the model is updated (single selection and remove selected item', () => { const onSelectedItemsChange = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], onSelectedItemsChange, defaultSelectedItems: ['1'], }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onSelectedItemsChange.callCount).to.equal(1); expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal([]); @@ -95,13 +95,13 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> it('should call the onSelectedItemsChange callback when the model is updated (multi selection and add selected item to empty list)', () => { const onSelectedItemsChange = spy(); - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], onSelectedItemsChange, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onSelectedItemsChange.callCount).to.equal(1); expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['1']); @@ -110,14 +110,14 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> it('should call the onSelectedItemsChange callback when the model is updated (multi selection and add selected item to non-empty list)', () => { const onSelectedItemsChange = spy(); - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], onSelectedItemsChange, defaultSelectedItems: ['1'], }); - fireEvent.click(response.getItemContent('2'), { ctrlKey: true }); + fireEvent.click(view.getItemContent('2'), { ctrlKey: true }); expect(onSelectedItemsChange.callCount).to.equal(1); expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal(['2', '1']); @@ -126,41 +126,41 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> it('should call the onSelectedItemsChange callback when the model is updated (multi selection and remove selected item)', () => { const onSelectedItemsChange = spy(); - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], onSelectedItemsChange, defaultSelectedItems: ['1'], }); - fireEvent.click(response.getItemContent('1'), { ctrlKey: true }); + fireEvent.click(view.getItemContent('1'), { ctrlKey: true }); expect(onSelectedItemsChange.callCount).to.equal(1); expect(onSelectedItemsChange.lastCall.args[1]).to.deep.equal([]); }); it('should warn when switching from controlled to uncontrolled', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], selectedItems: [], }); expect(() => { - response.setProps({ selectedItems: undefined }); + view.setProps({ selectedItems: undefined }); }).toErrorDev( 'MUI X: A component is changing the controlled selectedItems state of TreeView to be uncontrolled.', ); }); it('should warn and not react to update when updating the default state', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); expect(() => { - response.setProps({ defaultSelectedItems: ['2'] }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + view.setProps({ defaultSelectedItems: ['2'] }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); }).toErrorDev( 'MUI X: A component is changing the default selectedItems state of an uncontrolled TreeView after being initialized. To suppress this warning opt to use a controlled TreeView.', ); @@ -170,197 +170,197 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> describe('item click interaction', () => { describe('single selection', () => { it('should select un-selected item when clicking on an item content', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(true); }); it('should not un-select selected item when clicking on an item content', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: '1', }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(true); }); it('should not select an item when click and disableSelection', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when clicking on a disabled item content', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], }); - expect(response.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(false); }); }); describe('multi selection', () => { it('should select un-selected item and remove other selected items when clicking on an item content', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['2'], }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); - fireEvent.click(response.getItemContent('1')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemContent('1')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); }); it('should not un-select selected item when clicking on an item content', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(true); }); it('should un-select selected item when clicking on its content while holding Ctrl', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1', '2'], }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); - fireEvent.click(response.getItemContent('1'), { ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); + fireEvent.click(view.getItemContent('1'), { ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should un-select selected item when clicking on its content while holding Meta', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1', '2'], }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); - fireEvent.click(response.getItemContent('1'), { metaKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemContent('1'), { metaKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should not select an item when click and disableSelection', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when clicking on a disabled item content', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1', disabled: true }, { id: '2' }], }); - expect(response.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should select un-selected item when clicking on its content while holding Ctrl', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }, { id: '3' }], defaultSelectedItems: ['1'], }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemContent('3'), { ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3']); + fireEvent.click(view.getItemContent('3'), { ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3']); }); it('should do nothing when clicking on an item content on a fresh tree whil holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should expand the selection range when clicking on an item content below the last selected item while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemContent('2')); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemContent('2')); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); }); it('should expand the selection range when clicking on an item content above the last selected item while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemContent('3')); - expect(response.getSelectedTreeItems()).to.deep.equal(['3']); + fireEvent.click(view.getItemContent('3')); + expect(view.getSelectedTreeItems()).to.deep.equal(['3']); - fireEvent.click(response.getItemContent('2'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); + fireEvent.click(view.getItemContent('2'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); }); it('should expand the selection range when clicking on an item content while holding Shift after un-selecting another item', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemContent('1')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemContent('1')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemContent('2'), { ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + fireEvent.click(view.getItemContent('2'), { ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); - fireEvent.click(response.getItemContent('2'), { ctrlKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemContent('2'), { ctrlKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2', '2.1', '3']); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2', '2.1', '3']); }); it('should not expand the selection range when clicking on a disabled item content then clicking on an item content while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, items: [ { id: '1' }, @@ -371,15 +371,15 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> ], }); - fireEvent.click(response.getItemContent('2')); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.click(view.getItemContent('2')); + expect(view.getSelectedTreeItems()).to.deep.equal([]); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not expand the selection range when clicking on an item content then clicking a disabled item content while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, items: [ { id: '1' }, @@ -390,28 +390,28 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> ], }); - fireEvent.click(response.getItemContent('2')); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemContent('2')); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should not select disabled items that are part of the selected range', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], }); - fireEvent.click(response.getItemContent('1')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemContent('1')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemContent('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3']); + fireEvent.click(view.getItemContent('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3']); }); it('should not crash when selecting multiple items in a deeply nested tree', () => { - const response = render({ + const view = render({ multiSelect: true, items: [ { id: '1', children: [{ id: '1.1', children: [{ id: '1.1.1' }] }] }, @@ -420,10 +420,10 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> defaultExpandedItems: ['1', '1.1'], }); - fireEvent.click(response.getItemContent('1.1.1')); - fireEvent.click(response.getItemContent('2'), { shiftKey: true }); + fireEvent.click(view.getItemContent('1.1.1')); + fireEvent.click(view.getItemContent('2'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1.1.1', '2']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1.1.1', '2']); }); }); }); @@ -431,213 +431,213 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> describe('checkbox interaction', () => { describe('render checkbox when needed', () => { it('should not render a checkbox when checkboxSelection is not defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }], }); - expect(response.getItemCheckbox('1')).to.equal(null); + expect(view.getItemCheckbox('1')).to.equal(null); }); it('should not render a checkbox when checkboxSelection is false', () => { - const response = render({ + const view = render({ checkboxSelection: false, items: [{ id: '1' }], }); - expect(response.getItemCheckbox('1')).to.equal(null); + expect(view.getItemCheckbox('1')).to.equal(null); }); it('should render a checkbox when checkboxSelection is true', () => { - const response = render({ + const view = render({ checkboxSelection: true, items: [{ id: '1' }], }); - expect(response.getItemCheckbox('1')).not.to.equal(null); + expect(view.getItemCheckbox('1')).not.to.equal(null); }); }); describe('single selection', () => { it('should not change selection when clicking on an item content', () => { - const response = render({ + const view = render({ checkboxSelection: true, items: [{ id: '1' }], }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should select un-selected item when clicking on an item checkbox', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], checkboxSelection: true, }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(true); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(true); }); it('should un-select selected item when clicking on an item checkbox', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: '1', checkboxSelection: true, }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when click and disableSelection', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], disableSelection: true, checkboxSelection: true, }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when clicking on a disabled item checkbox', () => { - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }, { id: '2' }], checkboxSelection: true, }); - expect(response.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(false); }); }); describe('multi selection', () => { it('should not change selection when clicking on an item content', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }], }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemContent('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemContent('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should select un-selected item and keep other items selected when clicking on an item checkbox', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['2'], }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); }); it('should un-select selected item when clicking on an item checkbox', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when click and disableSelection', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when clicking on a disabled item content', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1', disabled: true }, { id: '2' }], }); - expect(response.isItemSelected('1')).to.equal(false); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.isItemSelected('1')).to.equal(false); }); it('should expand the selection range when clicking on an item checkbox below the last selected item while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemCheckboxInput('2')); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemCheckboxInput('2')); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); - fireEvent.click(response.getItemCheckboxInput('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); + fireEvent.click(view.getItemCheckboxInput('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); }); it('should expand the selection range when clicking on an item checkbox above the last selected item while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemCheckboxInput('3')); - expect(response.getSelectedTreeItems()).to.deep.equal(['3']); + fireEvent.click(view.getItemCheckboxInput('3')); + expect(view.getSelectedTreeItems()).to.deep.equal(['3']); - fireEvent.click(response.getItemCheckboxInput('2'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); + fireEvent.click(view.getItemCheckboxInput('2'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2', '2.1', '3']); }); it('should expand the selection range when clicking on an item checkbox while holding Shift after un-selecting another item', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2' }, { id: '2.1' }, { id: '3' }, { id: '4' }], }); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemCheckboxInput('2')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + fireEvent.click(view.getItemCheckboxInput('2')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); - fireEvent.click(response.getItemCheckboxInput('2')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemCheckboxInput('2')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemCheckboxInput('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2', '2.1', '3']); + fireEvent.click(view.getItemCheckboxInput('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2', '2.1', '3']); }); it('should not expand the selection range when clicking on a disabled item checkbox then clicking on an item checkbox while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [ @@ -649,15 +649,15 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> ], }); - fireEvent.click(response.getItemCheckboxInput('2')); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.click(view.getItemCheckboxInput('2')); + expect(view.getSelectedTreeItems()).to.deep.equal([]); - fireEvent.click(response.getItemCheckboxInput('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal([]); + fireEvent.click(view.getItemCheckboxInput('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal([]); }); it('should not expand the selection range when clicking on an item checkbox then clicking a disabled item checkbox while holding Shift', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [ @@ -669,95 +669,95 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> ], }); - fireEvent.click(response.getItemCheckboxInput('2')); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemCheckboxInput('2')); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); - fireEvent.click(response.getItemCheckboxInput('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['2']); + fireEvent.click(view.getItemCheckboxInput('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['2']); }); it('should not select disabled items that are part of the selected range', () => { - const response = render({ + const view = render({ multiSelect: true, checkboxSelection: true, items: [{ id: '1' }, { id: '2', disabled: true }, { id: '3' }], }); - fireEvent.click(response.getItemCheckboxInput('1')); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + fireEvent.click(view.getItemCheckboxInput('1')); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); - fireEvent.click(response.getItemCheckboxInput('3'), { shiftKey: true }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '3']); + fireEvent.click(view.getItemCheckboxInput('3'), { shiftKey: true }); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '3']); }); }); }); describe('aria-multiselectable tree attribute', () => { it('should have the attribute `aria-multiselectable=false if using single select`', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - expect(response.getRoot()).to.have.attribute('aria-multiselectable', 'false'); + expect(view.getRoot()).to.have.attribute('aria-multiselectable', 'false'); }); it('should have the attribute `aria-multiselectable=true if using multi select`', () => { - const response = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true }); + const view = render({ items: [{ id: '1' }, { id: '2' }], multiSelect: true }); - expect(response.getRoot()).to.have.attribute('aria-multiselectable', 'true'); + expect(view.getRoot()).to.have.attribute('aria-multiselectable', 'true'); }); }); - // The `aria-selected` attribute is used by the `response.isItemSelected` method. + // The `aria-selected` attribute is used by the `view.isItemSelected` method. // This `describe` only tests basics scenarios, more complex scenarios are tested in this file's other `describe`. describe('aria-selected item attribute', () => { describe('single selection', () => { it('should not have the attribute `aria-selected=false` if not selected', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); - expect(response.getItemRoot('1')).not.to.have.attribute('aria-selected'); + expect(view.getItemRoot('1')).not.to.have.attribute('aria-selected'); }); it('should have the attribute `aria-selected=true` if selected', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: '1', }); - expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'true'); + expect(view.getItemRoot('1')).to.have.attribute('aria-selected', 'true'); }); }); describe('multi selection', () => { it('should have the attribute `aria-selected=false` if not selected', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], }); - expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'false'); + expect(view.getItemRoot('1')).to.have.attribute('aria-selected', 'false'); }); it('should have the attribute `aria-selected=true` if selected', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); - expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'true'); + expect(view.getItemRoot('1')).to.have.attribute('aria-selected', 'true'); }); it('should have the attribute `aria-selected=false` if disabledSelection is true', () => { - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); - expect(response.getItemRoot('1')).to.have.attribute('aria-selected', 'false'); + expect(view.getItemRoot('1')).to.have.attribute('aria-selected', 'false'); }); }); }); @@ -766,13 +766,13 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> it('should call the onItemSelectionToggle callback when selecting an item', () => { const onItemSelectionToggle = spy(); - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], onItemSelectionToggle, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onItemSelectionToggle.callCount).to.equal(1); expect(onItemSelectionToggle.lastCall.args[1]).to.equal('1'); expect(onItemSelectionToggle.lastCall.args[2]).to.equal(true); @@ -781,14 +781,14 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> it('should call the onItemSelectionToggle callback when un-selecting an item', () => { const onItemSelectionToggle = spy(); - const response = render({ + const view = render({ multiSelect: true, items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], onItemSelectionToggle, }); - fireEvent.click(response.getItemContent('1'), { ctrlKey: true }); + fireEvent.click(view.getItemContent('1'), { ctrlKey: true }); expect(onItemSelectionToggle.callCount).to.equal(1); expect(onItemSelectionToggle.lastCall.args[1]).to.equal('1'); expect(onItemSelectionToggle.lastCall.args[2]).to.equal(false); @@ -798,89 +798,89 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> describe('selectItem api method', () => { describe('single selection', () => { it('should select un-selected item when shouldBeSelected is not defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event: {} as any }); + view.apiRef.current.selectItem({ itemId: '1', event: {} as any }); }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); }); it('should un-select selected item when shouldBeSelected is not defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event: {} as any }); + view.apiRef.current.selectItem({ itemId: '1', event: {} as any }); }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not select an item when disableSelection is true', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], disableSelection: true, }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event: {} as any }); + view.apiRef.current.selectItem({ itemId: '1', event: {} as any }); }); - expect(response.isItemSelected('1')).to.equal(false); + expect(view.isItemSelected('1')).to.equal(false); }); it('should not un-select an item when disableSelection is true', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['1'], disableSelection: true, }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event: {} as any }); + view.apiRef.current.selectItem({ itemId: '1', event: {} as any }); }); - expect(response.isItemSelected('1')).to.equal(true); + expect(view.isItemSelected('1')).to.equal(true); }); }); describe('multi selection', () => { it('should select un-selected item and remove other selected items when shouldBeSelected is not defined', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['2'], multiSelect: true, }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event: {} as any }); + view.apiRef.current.selectItem({ itemId: '1', event: {} as any }); }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1']); }); it('should select un-selected item and keep other selected items when shouldBeSelected is not defined and keepExistingSelection is true', () => { - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], defaultSelectedItems: ['2'], multiSelect: true, }); act(() => { - response.apiRef.current.selectItem({ + view.apiRef.current.selectItem({ itemId: '1', event: {} as any, keepExistingSelection: true, }); }); - expect(response.getSelectedTreeItems()).to.deep.equal(['1', '2']); + expect(view.getSelectedTreeItems()).to.deep.equal(['1', '2']); }); }); @@ -889,13 +889,13 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> const event = {} as any; const onItemSelectionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], onItemSelectionToggle, }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event }); + view.apiRef.current.selectItem({ itemId: '1', event }); }); expect(onItemSelectionToggle.callCount).to.equal(1); @@ -908,14 +908,14 @@ describeTreeView<[UseTreeViewSelectionSignature, UseTreeViewExpansionSignature]> const event = {} as any; const onItemSelectionToggle = spy(); - const response = render({ + const view = render({ items: [{ id: '1' }, { id: '2' }], onItemSelectionToggle, defaultSelectedItems: '1', }); act(() => { - response.apiRef.current.selectItem({ itemId: '1', event }); + view.apiRef.current.selectItem({ itemId: '1', event }); }); expect(onItemSelectionToggle.callCount).to.equal(1); diff --git a/packages/x-tree-view/src/internals/useTreeView/useTreeView.test.tsx b/packages/x-tree-view/src/internals/useTreeView/useTreeView.test.tsx index 2fba6b0a8ab9..9489bec6a86f 100644 --- a/packages/x-tree-view/src/internals/useTreeView/useTreeView.test.tsx +++ b/packages/x-tree-view/src/internals/useTreeView/useTreeView.test.tsx @@ -10,9 +10,9 @@ describeTreeView<[]>( 'useTreeView hook', ({ render, renderFromJSX, treeViewComponentName, TreeViewComponent, TreeItemComponent }) => { it('should have the role="tree" on the root slot', () => { - const response = render({ items: [{ id: '1' }] }); + const view = render({ items: [{ id: '1' }] }); - expect(response.getRoot()).to.have.attribute('role', 'tree'); + expect(view.getRoot()).to.have.attribute('role', 'tree'); }); it('should work inside a Portal', () => { diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.test.tsx b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.test.tsx index e35e9df63ba0..8dc7de297623 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.test.tsx +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.test.tsx @@ -24,19 +24,19 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( }) => { describe('role prop', () => { it('should have the role="treeitem" on the root slot', () => { - const response = render({ items: [{ id: '1' }] }); + const view = render({ items: [{ id: '1' }] }); - expect(response.getItemRoot('1')).to.have.attribute('role', 'treeitem'); + expect(view.getItemRoot('1')).to.have.attribute('role', 'treeitem'); }); it('should have the role "group" on the groupTransition slot if the item is expandable', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], }); expect( - response.getItemRoot('1').querySelector(`.${treeItemClasses.groupTransition}`), + view.getItemRoot('1').querySelector(`.${treeItemClasses.groupTransition}`), ).to.have.attribute('role', 'group'); }); }); @@ -45,7 +45,7 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( it('should call onClick when clicked, but not when children are clicked for TreeItem', () => { const onClick = spy(); - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], slotProps: { @@ -55,7 +55,7 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( }, }); - fireEvent.click(response.getItemContent('1.1')); + fireEvent.click(view.getItemContent('1.1')); expect(onClick.callCount).to.equal(treeItemComponentName === 'TreeItem' ? 1 : 2); expect(onClick.lastCall.firstArg.target.parentElement.dataset.testid).to.equal('1.1'); }); @@ -63,7 +63,7 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( it('should call onClick even when the element is disabled', () => { const onClick = spy(); - const response = render({ + const view = render({ items: [{ id: '1', disabled: true }], slotProps: { item: { @@ -72,13 +72,13 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( }, }); - fireEvent.click(response.getItemContent('1')); + fireEvent.click(view.getItemContent('1')); expect(onClick.callCount).to.equal(1); }); }); it('should be able to type in a child input', () => { - const response = render({ + const view = render({ items: [{ id: '1', children: [{ id: '1.1' }] }], defaultExpandedItems: ['1'], slotProps: @@ -97,7 +97,7 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( }, }); - const input = response.getItemRoot('1.1').querySelector('.icon-input')!; + const input = view.getItemRoot('1.1').querySelector('.icon-input')!; const keydownEvent = createEvent.keyDown(input, { key: 'a', }); @@ -123,9 +123,9 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( return ; } - let response: DescribeTreeViewRendererUtils; + let view: DescribeTreeViewRendererUtils; if (treeViewComponentName === 'SimpleTreeView') { - response = renderFromJSX( + view = renderFromJSX( @@ -135,7 +135,7 @@ describeTreeView<[UseTreeViewExpansionSignature, UseTreeViewIconsSignature]>( , ); } else { - response = renderFromJSX( + view = renderFromJSX( ( } act(() => { - response.getItemRoot('2').focus(); + view.getItemRoot('2').focus(); }); - expect(response.getFocusedItemId()).to.equal('2'); + expect(view.getFocusedItemId()).to.equal('2'); act(() => { screen.getByRole('button').focus(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f64fc37d586b..574f2b830cfb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -266,6 +266,9 @@ importers: eslint-plugin-react-hooks: specifier: ^4.6.2 version: 4.6.2(eslint@8.57.0) + eslint-plugin-testing-library: + specifier: ^6.3.0 + version: 6.3.0(eslint@8.57.0)(typescript@5.5.4) fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -4118,6 +4121,9 @@ packages: '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -4181,6 +4187,10 @@ packages: typescript: optional: true + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@7.16.1': resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -4195,10 +4205,23 @@ packages: typescript: optional: true + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@7.16.1': resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@7.16.1': resolution: {integrity: sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -4208,12 +4231,22 @@ packages: typescript: optional: true + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@7.16.1': resolution: {integrity: sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@7.16.1': resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} engines: {node: ^18.18.0 || >=20.0.0} @@ -5902,6 +5935,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-testing-library@6.3.0: + resolution: {integrity: sha512-GYcEErTt6EGwE0bPDY+4aehfEBpB2gDBFKohir8jlATSUvzStEyzCx8QWB/14xeKc/AwyXkzScSzMHnFojkWrA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -9454,6 +9493,9 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -9461,6 +9503,12 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsx@4.16.2: resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} engines: {node: '>=18.0.0'} @@ -13100,6 +13148,8 @@ snapshots: '@types/retry@0.12.0': {} + '@types/semver@7.5.8': {} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 @@ -13183,6 +13233,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/scope-manager@7.16.1': dependencies: '@typescript-eslint/types': 7.16.1 @@ -13200,8 +13255,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/types@5.62.0': {} + '@typescript-eslint/types@7.16.1': {} + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.5(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@7.16.1(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 7.16.1 @@ -13217,6 +13288,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@7.16.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -13228,6 +13314,11 @@ snapshots: - supports-color - typescript + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@7.16.1': dependencies: '@typescript-eslint/types': 7.16.1 @@ -15289,6 +15380,14 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 + eslint-plugin-testing-library@6.3.0(eslint@8.57.0)(typescript@5.5.4): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -19465,10 +19564,17 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.6.2: {} tsscmp@1.0.6: {} + tsutils@3.21.0(typescript@5.5.4): + dependencies: + tslib: 1.14.1 + typescript: 5.5.4 + tsx@4.16.2: dependencies: esbuild: 0.21.5 diff --git a/test/utils/fireUserEvent/fireUserEvent.ts b/test/utils/fireUserEvent/fireUserEvent.ts new file mode 100644 index 000000000000..e64105388c27 --- /dev/null +++ b/test/utils/fireUserEvent/fireUserEvent.ts @@ -0,0 +1,30 @@ +import { fireEvent } from '@mui/internal-test-utils/createRenderer'; + +/** + * @deprecated Use `pointer` from `@testing-library/user-event` instead. + */ +export function touch(target: Element): void { + fireEvent.touchStart(target); + fireEvent.touchEnd(target); +} + +/** + * @param {...any} args The arguments to pass to `fireEvent.mouseDown`, `fireEvent.mouseUp`, and `fireEvent.click`. + * @deprecated Use `click` from `@testing-library/user-event` instead. + */ +export const mousePress: (...args: Parameters<(typeof fireEvent)['mouseUp']>) => void = ( + target, + options, +) => { + fireEvent.mouseDown(target, options); + fireEvent.mouseUp(target, options); + fireEvent.click(target, options); +}; + +/** + * @deprecated Use `keyboard` or `type` from `@testing-library/user-event` instead. + */ +export function keyPress(target: Element, options: { key: string; [key: string]: any }): void { + fireEvent.keyDown(target, options); + fireEvent.keyUp(target, options); +} diff --git a/test/utils/fireUserEvent/index.ts b/test/utils/fireUserEvent/index.ts new file mode 100644 index 000000000000..b050ae5a78d0 --- /dev/null +++ b/test/utils/fireUserEvent/index.ts @@ -0,0 +1 @@ +export * as fireUserEvent from './fireUserEvent'; diff --git a/test/utils/pickers/describeValue/testControlledUnControlled.tsx b/test/utils/pickers/describeValue/testControlledUnControlled.tsx index ae4e204f8252..e5dca22796b5 100644 --- a/test/utils/pickers/describeValue/testControlledUnControlled.tsx +++ b/test/utils/pickers/describeValue/testControlledUnControlled.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { inputBaseClasses } from '@mui/material/InputBase'; import { getAllFieldInputRoot, @@ -9,6 +9,7 @@ import { getFieldInputRoot, } from 'test/utils/pickers'; import { DescribeValueOptions, DescribeValueTestSuite } from './describeValue.types'; +import { fireUserEvent } from '../../fireUserEvent'; export const testControlledUnControlled: DescribeValueTestSuite = ( ElementToTest, @@ -168,7 +169,7 @@ export const testControlledUnControlled: DescribeValueTestSuite = ( onChange: handleChange, }); v7Response.selectSection(undefined); - userEvent.keyPress(v7Response.getActiveSection(0), { key: 'ArrowUp' }); + fireUserEvent.keyPress(v7Response.getActiveSection(0), { key: 'ArrowUp' }); expect(handleChange.callCount).to.equal(0); }); diff --git a/test/utils/pickers/describeValue/testPickerActionBar.tsx b/test/utils/pickers/describeValue/testPickerActionBar.tsx index adbb86a48967..850189c47294 100644 --- a/test/utils/pickers/describeValue/testPickerActionBar.tsx +++ b/test/utils/pickers/describeValue/testPickerActionBar.tsx @@ -1,13 +1,14 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { adapterToUse, getExpectedOnChangeCount, expectPickerChangeHandlerValue, } from 'test/utils/pickers'; import { DescribeValueTestSuite } from './describeValue.types'; +import { fireUserEvent } from '../../fireUserEvent'; export const testPickerActionBar: DescribeValueTestSuite = ( ElementToTest, @@ -49,7 +50,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Clear the date - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, emptyValue); expect(onAccept.callCount).to.equal(1); @@ -75,7 +76,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Clear the date - userEvent.mousePress(screen.getByText(/clear/i)); + fireUserEvent.mousePress(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -103,7 +104,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Cancel the modifications - userEvent.mousePress(screen.getByText(/cancel/i)); + fireUserEvent.mousePress(screen.getByText(/cancel/i)); expect(onChange.callCount).to.equal( getExpectedOnChangeCount(componentFamily, pickerParams) + 1, ); @@ -137,7 +138,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Cancel the modifications - userEvent.mousePress(screen.getByText(/cancel/i)); + fireUserEvent.mousePress(screen.getByText(/cancel/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -165,7 +166,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Accept the modifications - userEvent.mousePress(screen.getByText(/ok/i)); + fireUserEvent.mousePress(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal( getExpectedOnChangeCount(componentFamily, pickerParams), ); // The accepted value as already been committed, don't call onChange again @@ -192,7 +193,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Accept the modifications - userEvent.mousePress(screen.getByText(/ok/i)); + fireUserEvent.mousePress(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); @@ -217,7 +218,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Accept the modifications - userEvent.mousePress(screen.getByText(/ok/i)); + fireUserEvent.mousePress(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -242,7 +243,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( />, ); - userEvent.mousePress(screen.getByText(/today/i)); + fireUserEvent.mousePress(screen.getByText(/today/i)); let startOfToday: any; if (pickerParams.type === 'date') { diff --git a/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx b/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx index b38b5a9d2bd3..d2e1d1494439 100644 --- a/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx +++ b/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx @@ -1,9 +1,10 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { getExpectedOnChangeCount, getFieldInputRoot, openPicker } from 'test/utils/pickers'; import { DescribeValueTestSuite } from './describeValue.types'; +import { fireUserEvent } from '../../fireUserEvent'; export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite = ( ElementToTest, @@ -272,7 +273,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite const newValue = setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Dismiss the picker - userEvent.keyPress(document.activeElement!, { key: 'Escape' }); + fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams)); expect(onAccept.callCount).to.equal(1); if (isRangeType) { @@ -308,7 +309,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite ); // Dismiss the picker - userEvent.mousePress(document.body); + fireUserEvent.mousePress(document.body); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -341,7 +342,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite const newValue = setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Dismiss the picker - userEvent.mousePress(document.body); + fireUserEvent.mousePress(document.body); expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams)); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(newValue as any); @@ -364,7 +365,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite ); // Dismiss the picker - userEvent.mousePress(document.body); + fireUserEvent.mousePress(document.body); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -385,7 +386,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite ); // Dismiss the picker - userEvent.keyPress(document.body, { key: 'Escape' }); + fireUserEvent.keyPress(document.body, { key: 'Escape' }); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); diff --git a/test/utils/pickers/describeValue/testShortcuts.tsx b/test/utils/pickers/describeValue/testShortcuts.tsx index bd7617b6dd98..4e4493b442c2 100644 --- a/test/utils/pickers/describeValue/testShortcuts.tsx +++ b/test/utils/pickers/describeValue/testShortcuts.tsx @@ -2,8 +2,9 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; import { expectPickerChangeHandlerValue } from 'test/utils/pickers'; -import { userEvent, screen } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { DescribeValueTestSuite } from './describeValue.types'; +import { fireUserEvent } from '../../fireUserEvent'; export const testShortcuts: DescribeValueTestSuite = (ElementToTest, options) => { const { @@ -49,7 +50,7 @@ export const testShortcuts: DescribeValueTestSuite = (ElementToTe ); const shortcut = screen.getByRole('button', { name: 'Test shortcut' }); - userEvent.mousePress(shortcut); + fireUserEvent.mousePress(shortcut); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, values[1]); @@ -87,7 +88,7 @@ export const testShortcuts: DescribeValueTestSuite = (ElementToTe ); const shortcut = screen.getByRole('button', { name: 'Test shortcut' }); - userEvent.mousePress(shortcut); + fireUserEvent.mousePress(shortcut); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, values[1]); @@ -125,7 +126,7 @@ export const testShortcuts: DescribeValueTestSuite = (ElementToTe ); const shortcut = screen.getByRole('button', { name: 'Test shortcut' }); - userEvent.mousePress(shortcut); + fireUserEvent.mousePress(shortcut); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, values[1]); diff --git a/test/utils/pickers/fields.tsx b/test/utils/pickers/fields.tsx index fe3222a0c397..7fbed5eda3d8 100644 --- a/test/utils/pickers/fields.tsx +++ b/test/utils/pickers/fields.tsx @@ -1,10 +1,11 @@ import * as React from 'react'; import { expect } from 'chai'; import { createTheme, ThemeProvider } from '@mui/material/styles'; -import { createRenderer, screen, userEvent, act, fireEvent } from '@mui/internal-test-utils'; +import { createRenderer, screen, act, fireEvent } from '@mui/internal-test-utils'; import { FieldRef, FieldSection, FieldSectionType } from '@mui/x-date-pickers/models'; import { pickersSectionListClasses } from '@mui/x-date-pickers/PickersSectionList'; import { pickersInputBaseClasses } from '@mui/x-date-pickers/PickersTextField'; +import { fireUserEvent } from '../fireUserEvent'; import { expectFieldValueV7, expectFieldValueV6 } from './assertions'; export const getTextbox = (): HTMLInputElement => screen.getByRole('textbox'); @@ -210,7 +211,7 @@ export const buildFieldInteractions =

    ({ 'ArrowRight', ].includes(key) ) { - userEvent.keyPress(target, { key }); + fireUserEvent.keyPress(target, { key }); } else { fireEvent.input(target, { target: { textContent: key } }); } @@ -250,7 +251,7 @@ export const buildFieldInteractions =

    ({ } as any); v6Response.selectSection(selectedSection); const input = getTextbox(); - userEvent.keyPress(input, { key }); + fireUserEvent.keyPress(input, { key }); expectFieldValueV6(input, expectedValue); v6Response.unmount(); }; diff --git a/test/utils/pickers/openPicker.ts b/test/utils/pickers/openPicker.ts index ac9e934c55ea..67293e7a3cce 100644 --- a/test/utils/pickers/openPicker.ts +++ b/test/utils/pickers/openPicker.ts @@ -1,6 +1,7 @@ -import { screen, userEvent } from '@mui/internal-test-utils'; +import { screen } from '@mui/internal-test-utils'; import { getFieldSectionsContainer } from 'test/utils/pickers/fields'; import { pickersInputBaseClasses } from '@mui/x-date-pickers/PickersTextField'; +import { fireUserEvent } from '../fireUserEvent'; export type OpenPickerParams = | { @@ -24,21 +25,21 @@ export const openPicker = (params: OpenPickerParams) => { ); if (isRangeType) { - userEvent.mousePress(fieldSectionsContainer); + fireUserEvent.mousePress(fieldSectionsContainer); if (params.isSingleInput && params.initialFocus === 'end') { const sections = fieldSectionsContainer.querySelectorAll( `.${pickersInputBaseClasses.sectionsContainer}`, ); - userEvent.mousePress(sections[sections.length - 1]); + fireUserEvent.mousePress(sections[sections.length - 1]); } return undefined; } if (params.variant === 'mobile') { - return userEvent.mousePress(fieldSectionsContainer); + return fireUserEvent.mousePress(fieldSectionsContainer); } const target = @@ -46,5 +47,5 @@ export const openPicker = (params: OpenPickerParams) => { ? screen.getByLabelText(/choose time/i) : screen.getByLabelText(/choose date/i); - return userEvent.mousePress(target); + return fireUserEvent.mousePress(target); }; diff --git a/test/utils/pickers/viewHandlers.ts b/test/utils/pickers/viewHandlers.ts index cfc23d1b4d90..2b3ab36c387f 100644 --- a/test/utils/pickers/viewHandlers.ts +++ b/test/utils/pickers/viewHandlers.ts @@ -1,7 +1,8 @@ -import { fireTouchChangedEvent, userEvent, screen } from '@mui/internal-test-utils'; +import { fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; import { getClockTouchEvent, formatFullTimeValue } from 'test/utils/pickers'; import { MuiPickersAdapter, TimeView } from '@mui/x-date-pickers/models'; import { formatMeridiem } from '@mui/x-date-pickers/internals'; +import { fireUserEvent } from '../fireUserEvent'; type TDate = any; @@ -35,7 +36,9 @@ export const timeClockHandler: ViewHandler = { export const digitalClockHandler: ViewHandler = { setViewValue: (adapter, value) => { - userEvent.mousePress(screen.getByRole('option', { name: formatFullTimeValue(adapter, value) })); + fireUserEvent.mousePress( + screen.getByRole('option', { name: formatFullTimeValue(adapter, value) }), + ); }, }; @@ -44,10 +47,10 @@ export const multiSectionDigitalClockHandler: ViewHandler = { const hasMeridiem = adapter.is12HourCycleInCurrentLocale(); const hoursLabel = parseInt(adapter.format(value, hasMeridiem ? 'hours12h' : 'hours24h'), 10); const minutesLabel = adapter.getMinutes(value).toString(); - userEvent.mousePress(screen.getByRole('option', { name: `${hoursLabel} hours` })); - userEvent.mousePress(screen.getByRole('option', { name: `${minutesLabel} minutes` })); + fireUserEvent.mousePress(screen.getByRole('option', { name: `${hoursLabel} hours` })); + fireUserEvent.mousePress(screen.getByRole('option', { name: `${minutesLabel} minutes` })); if (hasMeridiem) { - userEvent.mousePress( + fireUserEvent.mousePress( screen.getByRole('option', { name: formatMeridiem(adapter, adapter.getHours(value) >= 12 ? 'pm' : 'am'), }), From eb5644ba67bc6b682081eca284f03d3de76decba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:32:21 +0200 Subject: [PATCH 796/912] Bump MUI Internal (#14266) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 4 +- package.json | 4 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 74 +++++++++++------------ 13 files changed, 51 insertions(+), 51 deletions(-) diff --git a/docs/package.json b/docs/package.json index 7c271ba3ff79..14cd086bb0a8 100644 --- a/docs/package.json +++ b/docs/package.json @@ -101,8 +101,8 @@ "devDependencies": { "@babel/plugin-transform-react-constant-elements": "^7.25.1", "@babel/preset-typescript": "^7.24.7", - "@mui/internal-docs-utils": "^1.0.9", - "@mui/internal-scripts": "^1.0.15", + "@mui/internal-docs-utils": "^1.0.10", + "@mui/internal-scripts": "^1.0.16", "@types/chance": "^1.1.6", "@types/d3-scale": "^4.0.8", "@types/d3-scale-chromatic": "^3.0.3", diff --git a/package.json b/package.json index c5afe7bcc4d5..f94f9f202523 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", "@mui/icons-material": "^5.16.5", - "@mui/internal-markdown": "^1.0.9", - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-markdown": "^1.0.10", + "@mui/internal-test-utils": "^1.0.8", "@mui/material": "^5.16.5", "@mui/monorepo": "github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4", "@mui/utils": "^5.16.5", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 5c58264a4217..54f04a4596cd 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -64,7 +64,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@react-spring/core": "^9.7.4", "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 14374bba11d2..cf7e4638db9f 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -72,7 +72,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", "rimraf": "^5.0.10" diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index b0a321d19db9..ab5c6448633d 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index f02c47db1c14..7a8581595492 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -71,7 +71,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@mui/joy": "^5.0.0-beta.48", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 1b722e30ca8d..dcf7ab2d033d 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -95,7 +95,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index d6a85d11cce4..89dd1a736fea 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -97,7 +97,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 242af19c57db..9f03878c1959 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -48,7 +48,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "rimraf": "^5.0.10" }, "engines": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 29eeaca08388..c621a54a2c55 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -41,7 +41,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "rimraf": "^5.0.10" }, "engines": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index f039d510f24b..9d1baa2fc078 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index a887cd337e4b..a285e4ae52b8 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -68,7 +68,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.7", + "@mui/internal-test-utils": "^1.0.8", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 574f2b830cfb..71bc915c5bf9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,11 +87,11 @@ importers: specifier: ^5.16.5 version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': - specifier: ^1.0.9 + specifier: ^1.0.10 version: 1.0.10 '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -643,11 +643,11 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@mui/internal-docs-utils': - specifier: ^1.0.9 - version: 1.0.9 + specifier: ^1.0.10 + version: 1.0.10 '@mui/internal-scripts': - specifier: ^1.0.15 - version: 1.0.15 + specifier: ^1.0.16 + version: 1.0.16 '@types/chance': specifier: ^1.1.6 version: 1.1.6 @@ -749,8 +749,8 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -990,8 +990,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1102,8 +1102,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1164,8 +1164,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1214,8 +1214,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1306,8 +1306,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1347,8 +1347,8 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1367,8 +1367,8 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1417,8 +1417,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1476,8 +1476,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.7 - version: 1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.8 + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -2985,17 +2985,17 @@ packages: '@types/react': optional: true - '@mui/internal-docs-utils@1.0.9': - resolution: {integrity: sha512-ml62NikMdZEimDhJGMtyGVilhLjK8AkiruojJ8OCArj8qsw0pUCr1L/2Xo7GLEg4K5EI3/vdITUU0RBKBwDl/g==} + '@mui/internal-docs-utils@1.0.10': + resolution: {integrity: sha512-q22BGAi4cwWv0DhZJB3y54dcBT3s5MPGvMgeeffANFwLw21/WvzLyLPyFOPheklX8ZO8yBnpQ6rYCAuwbIlCeg==} '@mui/internal-markdown@1.0.10': resolution: {integrity: sha512-3shXvqaql/vLtnuTSaOPNSX9wh+gZBhHR4EI3Crk+QVZVtzPZNGss1thXwMF/O/BztFkkCHE2VNHHLCjo+9VJQ==} - '@mui/internal-scripts@1.0.15': - resolution: {integrity: sha512-sNEUPh5cEuJN20kC0N1kJdSfEw4ZZXuKP1Hsz8QWgKPQtlcmvRS30LGdNzHb9sS8dcFPqhITn+W2GAIxPCjuoA==} + '@mui/internal-scripts@1.0.16': + resolution: {integrity: sha512-yoFavVhIHra7CQ2CpNnbMVbW2aSBeza5a3NrIWjS2enqtdHa0ejxQiDjWJezZXgdnow5urE1R1Kid7Q8Et8nIw==} - '@mui/internal-test-utils@1.0.7': - resolution: {integrity: sha512-KrPhm8QLYui8LCsuzV6VUDrfs6qIsqr96HTohEMUMnIApGdVOW2lxK4DAa6nwdOx0VW813OSgpcllFUW2jiUDw==} + '@mui/internal-test-utils@1.0.8': + resolution: {integrity: sha512-FBp7oqBliCdXQegFyRlx0Ud4w7DGPzA/lGN81tJOCTG/nnI/tDzv1jGT6t0Cg3rngSMR+siv7OJeY6r+nIoA/w==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -11821,7 +11821,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/internal-docs-utils@1.0.9': + '@mui/internal-docs-utils@1.0.10': dependencies: rimraf: 5.0.10 typescript: 5.5.4 @@ -11833,14 +11833,14 @@ snapshots: marked: 13.0.3 prismjs: 1.29.0 - '@mui/internal-scripts@1.0.15': + '@mui/internal-scripts@1.0.16': dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) '@babel/types': 7.25.2 - '@mui/internal-docs-utils': 1.0.9 + '@mui/internal-docs-utils': 1.0.10 doctrine: 3.0.0 lodash: 4.17.21 typescript: 5.5.4 @@ -11848,7 +11848,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.7(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) From ffb8deaa509e4813867f2695d2670b8ad21e4809 Mon Sep 17 00:00:00 2001 From: Rajat Date: Tue, 20 Aug 2024 18:54:37 +0530 Subject: [PATCH 797/912] [DataGrid] include `api` in `gridCellParams` interface (#14201) Signed-off-by: Rajat Co-authored-by: Kenan Yusuf --- .../x/api/data-grid/grid-cell-params.json | 1 + .../api-docs/data-grid/grid-cell-params.json | 1 + .../src/components/cell/GridCell.tsx | 31 +++++++------------ .../hooks/features/rows/useGridParamsApi.ts | 1 + .../src/models/params/gridCellParams.ts | 4 +++ 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/pages/x/api/data-grid/grid-cell-params.json b/docs/pages/x/api/data-grid/grid-cell-params.json index ff6ddfd6dd02..2e99ec3bc0fa 100644 --- a/docs/pages/x/api/data-grid/grid-cell-params.json +++ b/docs/pages/x/api/data-grid/grid-cell-params.json @@ -6,6 +6,7 @@ "import { GridCellParams } from '@mui/x-data-grid'" ], "properties": { + "api": { "type": { "description": "GridApiCommunity" }, "required": true }, "cellMode": { "type": { "description": "GridCellMode" }, "required": true }, "colDef": { "type": { "description": "GridStateColDef" }, "required": true }, "field": { "type": { "description": "string" }, "required": true }, diff --git a/docs/translations/api-docs/data-grid/grid-cell-params.json b/docs/translations/api-docs/data-grid/grid-cell-params.json index 39d3bbcc3661..b9be4d64e27e 100644 --- a/docs/translations/api-docs/data-grid/grid-cell-params.json +++ b/docs/translations/api-docs/data-grid/grid-cell-params.json @@ -1,6 +1,7 @@ { "interfaceDescription": "Object passed as parameter in the column GridColDef cell renderer.", "propertiesDescriptions": { + "api": { "description": "GridApi that let you manipulate the grid." }, "cellMode": { "description": "The mode of the cell." }, "colDef": { "description": "The column of the row that the current cell belongs to." }, "field": { "description": "The column field of the cell that triggered the event." }, diff --git a/packages/x-data-grid/src/components/cell/GridCell.tsx b/packages/x-data-grid/src/components/cell/GridCell.tsx index 68feacc68c28..81ddc96ba4fa 100644 --- a/packages/x-data-grid/src/components/cell/GridCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridCell.tsx @@ -8,7 +8,6 @@ import { unstable_capitalize as capitalize, } from '@mui/utils'; import { fastMemo } from '@mui/x-internals/fastMemo'; -import type { GridApiCommunity } from '../../internals'; import { doesSupportPreventScroll } from '../../utils/doesSupportPreventScroll'; import { getDataGridUtilityClass, gridClasses } from '../../constants/gridClasses'; import { @@ -75,11 +74,7 @@ export type GridCellProps = { [x: string]: any; // TODO v7: remove this - it breaks type safety }; -type CellParamsWithAPI = GridCellParams & { - api: GridApiCommunity; -}; - -const EMPTY_CELL_PARAMS: CellParamsWithAPI = { +const EMPTY_CELL_PARAMS: GridCellParams = { id: -1, field: '__unset__', row: {}, @@ -183,19 +178,17 @@ const GridCell = React.forwardRef(function GridCe const field = column.field; - const cellParamsWithAPI = useGridSelector( + const cellParams = useGridSelector( apiRef, () => { // This is required because `.getCellParams` tries to get the `state.rows.tree` entry // associated with `rowId`/`fieldId`, but this selector runs after the state has been // updated, while `rowId`/`fieldId` reference an entry in the old state. try { - const cellParams = apiRef.current.getCellParams( + const result = apiRef.current.getCellParams( rowId, field, ); - - const result = cellParams as CellParamsWithAPI; result.api = apiRef.current; return result; } catch (e) { @@ -215,7 +208,7 @@ const GridCell = React.forwardRef(function GridCe }), ); - const { cellMode, hasFocus, isEditable = false, value } = cellParamsWithAPI; + const { cellMode, hasFocus, isEditable = false, value } = cellParams; const canManageOwnFocus = column.type === 'actions' && @@ -223,7 +216,7 @@ const GridCell = React.forwardRef(function GridCe .getActions?.(apiRef.current.getRowParams(rowId)) .some((action) => !action.props.disabled); const tabIndex = - (cellMode === 'view' || !isEditable) && !canManageOwnFocus ? cellParamsWithAPI.tabIndex : -1; + (cellMode === 'view' || !isEditable) && !canManageOwnFocus ? cellParams.tabIndex : -1; const { classes: rootClasses, getCellClassName } = rootProps; @@ -243,7 +236,7 @@ const GridCell = React.forwardRef(function GridCe if (column.cellClassName) { classNames.push( typeof column.cellClassName === 'function' - ? column.cellClassName(cellParamsWithAPI) + ? column.cellClassName(cellParams) : column.cellClassName, ); } @@ -253,10 +246,10 @@ const GridCell = React.forwardRef(function GridCe } if (getCellClassName) { - classNames.push(getCellClassName(cellParamsWithAPI)); + classNames.push(getCellClassName(cellParams)); } - const valueToRender = cellParamsWithAPI.formattedValue ?? value; + const valueToRender = cellParams.formattedValue ?? value; const cellRef = React.useRef(null); const handleRef = useForkRef(ref, cellRef); const focusElementRef = React.useRef(null); @@ -373,7 +366,7 @@ const GridCell = React.forwardRef(function GridCe } }, [hasFocus, cellMode, apiRef]); - if (cellParamsWithAPI === EMPTY_CELL_PARAMS) { + if (cellParams === EMPTY_CELL_PARAMS) { return null; } @@ -411,7 +404,7 @@ const GridCell = React.forwardRef(function GridCe let title: string | undefined; if (editCellState === null && column.renderCell) { - children = column.renderCell(cellParamsWithAPI); + children = column.renderCell(cellParams); } if (editCellState !== null && column.renderEditCell) { @@ -422,10 +415,10 @@ const GridCell = React.forwardRef(function GridCe const formattedValue = column.valueFormatter ? column.valueFormatter(editCellState.value as never, updatedRow, column, apiRef) - : cellParamsWithAPI.formattedValue; + : cellParams.formattedValue; const params: GridRenderEditCellParams = { - ...cellParamsWithAPI, + ...cellParams, row: updatedRow, formattedValue, ...editCellStateRest, diff --git a/packages/x-data-grid/src/hooks/features/rows/useGridParamsApi.ts b/packages/x-data-grid/src/hooks/features/rows/useGridParamsApi.ts index 165ba3ee211c..b663d9700a78 100644 --- a/packages/x-data-grid/src/hooks/features/rows/useGridParamsApi.ts +++ b/packages/x-data-grid/src/hooks/features/rows/useGridParamsApi.ts @@ -77,6 +77,7 @@ export function useGridParamsApi(apiRef: React.MutableRefObject Date: Tue, 20 Aug 2024 19:49:31 +0200 Subject: [PATCH 798/912] [infra] Updated mui-x roadmap links with new project URL (#14271) --- changelogOld/CHANGELOG.v5.md | 2 +- docs/data/data-grid/overview/overview.md | 2 +- docs/data/introduction/roadmap/roadmap.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/changelogOld/CHANGELOG.v5.md b/changelogOld/CHANGELOG.v5.md index a544c6b2c162..553feccf78fd 100644 --- a/changelogOld/CHANGELOG.v5.md +++ b/changelogOld/CHANGELOG.v5.md @@ -650,7 +650,7 @@ _Sep 9, 2022_ This release will the last regular release for our `v5` packages. From now on, we'll be focusing on developing MUI X v6. -You can check the [roadmap](https://github.com/mui/mui-x/projects/1) for more details on what's coming next. +You can check the [roadmap](https://github.com/orgs/mui/projects/35) for more details on what's coming next. And if you'd like to help, please consider volunteering to give us a [user interview](https://forms.gle/vsBv6CLPz9h57xg8A). We'd love to know more about your use cases, pain points and expectations for the future. diff --git a/docs/data/data-grid/overview/overview.md b/docs/data/data-grid/overview/overview.md index cb859d0d35c9..fcc710c8290e 100644 --- a/docs/data/data-grid/overview/overview.md +++ b/docs/data/data-grid/overview/overview.md @@ -109,7 +109,7 @@ Planned features include: - [Pivoting](/x/react-data-grid/pivoting/) - [Charts integration](/x/react-charts/) -You can find more details on, the [feature comparison](/x/react-data-grid/getting-started/#feature-comparison), our living quarterly [roadmap](https://github.com/mui/mui-x/projects/1) as well as on the open [GitHub issues](https://github.com/mui/mui-x/issues?q=is%3Aopen+label%3A%22component%3A+DataGrid%22+label%3Aenhancement). +You can find more details on, the [feature comparison](/x/react-data-grid/getting-started/#feature-comparison), our living quarterly [roadmap](https://github.com/orgs/mui/projects/35) as well as on the open [GitHub issues](https://github.com/mui/mui-x/issues?q=is%3Aopen+label%3A%22component%3A+DataGrid%22+label%3Aenhancement). ## Resources diff --git a/docs/data/introduction/roadmap/roadmap.md b/docs/data/introduction/roadmap/roadmap.md index 166c0c5ed07e..7aa56833ef05 100644 --- a/docs/data/introduction/roadmap/roadmap.md +++ b/docs/data/introduction/roadmap/roadmap.md @@ -4,7 +4,7 @@ ## MUI X roadmap -To learn more about our plans for MUI X, visit the [public roadmap](https://github.com/mui/mui-x/projects/1). +To learn more about our plans for MUI X, visit the [public roadmap](https://github.com/orgs/mui/projects/35). :::warning We operate in a dynamic environment,so things are subject to change. From 15e0171dd9e04b5bac0b096a78fd40d4562d3f44 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:50:42 +0200 Subject: [PATCH 799/912] [charts] Improve bar chart performances (#14278) --- packages/x-charts/src/BarChart/BarPlot.tsx | 32 ++++++++++++---------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/x-charts/src/BarChart/BarPlot.tsx b/packages/x-charts/src/BarChart/BarPlot.tsx index 875644e4bcaf..10fdd7dcc1a6 100644 --- a/packages/x-charts/src/BarChart/BarPlot.tsx +++ b/packages/x-charts/src/BarChart/BarPlot.tsx @@ -224,6 +224,9 @@ const enterStyle = ({ x, width, y, height }: AnimationData) => ({ function BarPlot(props: BarPlotProps) { const { completedData, masksData } = useAggregatedData(); const { skipAnimation, onItemClick, borderRadius, barLabel, ...other } = props; + + const withoutBorderRadius = !borderRadius || borderRadius <= 0; + const transition = useTransition(completedData, { keys: (bar) => `${bar.seriesId}-${bar.dataIndex}`, from: leaveStyle, @@ -233,7 +236,7 @@ function BarPlot(props: BarPlotProps) { immediate: skipAnimation, }); - const maskTransition = useTransition(masksData, { + const maskTransition = useTransition(withoutBorderRadius ? [] : masksData, { keys: (v) => v.id, from: leaveStyle, leave: leaveStyle, @@ -244,18 +247,19 @@ function BarPlot(props: BarPlotProps) { return ( - {maskTransition((style, { id, hasPositive, hasNegative, layout }) => { - return ( - - ); - })} + {!withoutBorderRadius && + maskTransition((style, { id, hasPositive, hasNegative, layout }) => { + return ( + + ); + })} {transition((style, { seriesId, dataIndex, color, maskId }) => { const barElement = ( ); - if (!borderRadius || borderRadius <= 0) { + if (withoutBorderRadius) { return barElement; } From c535e8688168b1b049e3e3febba3810972cc3fa6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:19:35 +0200 Subject: [PATCH 800/912] Bump @tanstack/query-core to ^5.52.0 (#14089) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/package.json b/docs/package.json index 14cd086bb0a8..4939e53bf7c5 100644 --- a/docs/package.json +++ b/docs/package.json @@ -46,7 +46,7 @@ "@mui/x-date-pickers-pro": "workspace:*", "@mui/x-tree-view": "workspace:*", "@react-spring/web": "^9.7.4", - "@tanstack/query-core": "^5.51.15", + "@tanstack/query-core": "^5.52.0", "ast-types": "^0.14.2", "autoprefixer": "^10.4.20", "babel-plugin-module-resolver": "^5.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71bc915c5bf9..f52e436bc2ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -483,8 +483,8 @@ importers: specifier: ^9.7.4 version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/query-core': - specifier: ^5.51.15 - version: 5.51.21 + specifier: ^5.52.0 + version: 5.52.0 ast-types: specifier: ^0.14.2 version: 0.14.2 @@ -3864,8 +3864,8 @@ packages: '@swc/types@0.1.9': resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} - '@tanstack/query-core@5.51.21': - resolution: {integrity: sha512-POQxm42IUp6n89kKWF4IZi18v3fxQWFRolvBA6phNVmA8psdfB1MvDnGacCJdS+EOX12w/CyHM62z//rHmYmvw==} + '@tanstack/query-core@5.52.0': + resolution: {integrity: sha512-U1DOEgltjUwalN6uWYTewSnA14b+tE7lSylOiASKCAO61ENJeCq9VVD/TXHA6O5u9+6v5+UgGYBSccTKDoyMqw==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -12870,7 +12870,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/query-core@5.51.21': {} + '@tanstack/query-core@5.52.0': {} '@testing-library/dom@10.4.0': dependencies: From d758232aea8e42da80e968f87010779e01e3b202 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:21:00 +0200 Subject: [PATCH 801/912] Bump lerna to ^8.1.8 (#14161) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index f94f9f202523..091b95f7c6e7 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,7 @@ "karma-parallel": "^0.3.1", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.1", - "lerna": "^8.1.7", + "lerna": "^8.1.8", "lodash": "^4.17.21", "markdownlint-cli2": "^0.13.0", "mocha": "^10.7.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f52e436bc2ed..965f167a7ac4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -318,8 +318,8 @@ importers: specifier: ^5.0.1 version: 5.0.1(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) lerna: - specifier: ^8.1.7 - version: 8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13) + specifier: ^8.1.8 + version: 8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -2931,8 +2931,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@lerna/create@8.1.7': - resolution: {integrity: sha512-ch81CgU5pBNOiUCQx44F/ZtN4DxxJjUQtuytYRBFWJSHAJ+XPJtiC/yQ9zjr1I1yaUlmNYYblkopoOyziOdJ1w==} + '@lerna/create@8.1.8': + resolution: {integrity: sha512-wi72R01tgjBjzG2kjRyTHl4yCTKDfDMIXRyKz9E/FBa9SkFvUOAE4bdyY9MhEsRZmSWL7+CYE8Flv/HScRpBbA==} engines: {node: '>=18.0.0'} '@mswjs/cookies@1.1.1': @@ -3233,8 +3233,8 @@ packages: resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} engines: {node: ^16.14.0 || >=18.0.0} - '@npmcli/arborist@7.5.3': - resolution: {integrity: sha512-7gbMdDNSYUzi0j2mpb6FoXRg3BxXWplMQZH1MZlvNjSdWFObaUz2Ssvo0Nlh2xmWks1OPo+gpsE6qxpT/5M7lQ==} + '@npmcli/arborist@7.5.4': + resolution: {integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==} engines: {node: ^16.14.0 || >=18.0.0} hasBin: true @@ -7264,8 +7264,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - lerna@8.1.7: - resolution: {integrity: sha512-v2kkBn8Vqtroo30Pr5/JQ9MygRhnCsoI1jSOf3DxWmcTbkpC5U7c6rGr+7NPK6QrxKbC0/Cj4kuIBMb/7f79sQ==} + lerna@8.1.8: + resolution: {integrity: sha512-Rmo5ShMx73xM2CUcRixjmpZIXB7ZFlWEul1YvJyx/rH4onAwDHtUGD7Rx4NZYL8QSRiQHroglM2Oyq+WqA4BYg==} engines: {node: '>=18.0.0'} hasBin: true @@ -11682,9 +11682,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@lerna/create@8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': + '@lerna/create@8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': dependencies: - '@npmcli/arborist': 7.5.3 + '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) @@ -12105,7 +12105,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/arborist@7.5.3': + '@npmcli/arborist@7.5.4': dependencies: '@isaacs/string-locale-compare': 1.1.0 '@npmcli/fs': 3.1.1 @@ -16970,10 +16970,10 @@ snapshots: dependencies: readable-stream: 2.3.8 - lerna@8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13): + lerna@8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.7(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) - '@npmcli/arborist': 7.5.3 + '@lerna/create': 8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) + '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) From e0f0b86f10f87856f388ed39c8278355653d20ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:40:12 +0200 Subject: [PATCH 802/912] Bump postcss to ^8.4.41 (#14163) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/package.json b/docs/package.json index 4939e53bf7c5..e82ed88f6f7a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -78,7 +78,7 @@ "moment-timezone": "^0.5.45", "next": "^14.2.5", "nprogress": "^0.2.0", - "postcss": "^8.4.40", + "postcss": "^8.4.41", "prismjs": "^1.29.0", "prop-types": "^15.8.1", "react": "^18.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 965f167a7ac4..fad79e2d77f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,7 +166,7 @@ importers: version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) axe-core: specifier: 4.9.1 version: 4.9.1 @@ -490,7 +490,7 @@ importers: version: 0.14.2 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) babel-plugin-module-resolver: specifier: ^5.0.2 version: 5.0.2 @@ -579,8 +579,8 @@ importers: specifier: ^0.2.0 version: 0.2.0 postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 prismjs: specifier: ^1.29.0 version: 1.29.0 @@ -8417,8 +8417,8 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.1.2: @@ -13848,14 +13848,14 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.20(postcss@8.4.40): + autoprefixer@10.4.20(postcss@8.4.41): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001647 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -18343,7 +18343,7 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 - postcss@8.4.40: + postcss@8.4.41: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -19858,7 +19858,7 @@ snapshots: vite@5.3.4(@types/node@18.19.45)(terser@5.27.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.40 + postcss: 8.4.41 rollup: 4.18.1 optionalDependencies: '@types/node': 18.19.45 From e570b4b82e303e189aef20272279d015e151cf54 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Wed, 21 Aug 2024 13:43:11 +0300 Subject: [PATCH 803/912] [core] Prepare for material v6 (#14143) Signed-off-by: Lukas Tyla Co-authored-by: Andrew Cherniavskii Co-authored-by: Andrew Cherniavskyi --- docs/data/charts/styling/SxStyling.js | 10 +- docs/data/charts/styling/SxStyling.tsx | 11 ++- .../CellSelectionRangeStyling.js | 14 +-- .../CellSelectionRangeStyling.tsx | 14 +-- docs/data/data-grid/demo/FullFeaturedDemo.js | 68 ++++++++----- docs/data/data-grid/demo/FullFeaturedDemo.tsx | 68 ++++++++----- .../data-grid/editing/IsCellEditableGrid.js | 10 +- .../data-grid/editing/IsCellEditableGrid.tsx | 10 +- .../editing/ValidateServerNameGrid.js | 13 ++- .../editing/ValidateServerNameGrid.tsx | 13 ++- .../CustomHeaderFilterDataGridPro.js | 19 +++- .../CustomHeaderFilterDataGridPro.tsx | 19 +++- .../layout/AutoHeightOverlayNoSnap.js | 10 +- .../layout/AutoHeightOverlayNoSnap.tsx | 10 +- .../CustomizeDetailPanelToggle.js | 11 +-- .../CustomizeDetailPanelToggle.tsx | 11 +-- .../overlays/LoadingOverlayCustom.js | 8 +- .../overlays/LoadingOverlayCustom.tsx | 8 +- .../overlays/NoResultsOverlayCustom.js | 10 +- .../overlays/NoResultsOverlayCustom.tsx | 10 +- .../data-grid/overlays/NoRowsOverlayCustom.js | 10 +- .../overlays/NoRowsOverlayCustom.tsx | 10 +- .../performance/GridVisualization.js | 11 +-- .../performance/GridVisualization.tsx | 11 +-- .../ConditionalValidationGrid.js | 5 +- .../ConditionalValidationGrid.tsx | 5 +- .../ServerSideErrorHandling.js | 12 +-- .../ServerSideErrorHandling.tsx | 14 +-- .../ServerSideTreeDataErrorHandling.js | 12 +-- .../ServerSideTreeDataErrorHandling.tsx | 14 +-- docs/data/data-grid/style/AntDesignGrid.js | 38 +++++--- docs/data/data-grid/style/AntDesignGrid.tsx | 38 +++++--- docs/data/data-grid/style/StylingRowsGrid.js | 94 +++++------------- docs/data/data-grid/style/StylingRowsGrid.tsx | 96 +++++-------------- .../date-pickers/base-concepts/CustomSlots.js | 8 +- .../base-concepts/CustomSlots.tsx | 8 +- .../CalendarHeaderComponentRange.js | 20 +++- .../CalendarHeaderComponentRange.tsx | 20 +++- .../custom-field/BrowserV6Field.js | 8 +- .../custom-field/BrowserV6Field.tsx | 8 +- .../BrowserV6MultiInputRangeField.js | 9 +- .../BrowserV6MultiInputRangeField.tsx | 9 +- .../BrowserV6SingleInputRangeField.js | 8 +- .../BrowserV6SingleInputRangeField.tsx | 8 +- .../AddWarningIconWhenInvalid.js | 13 ++- .../AddWarningIconWhenInvalid.tsx | 13 ++- .../AddWarningIconWhenInvalidRange.js | 13 ++- .../AddWarningIconWhenInvalidRange.tsx | 13 ++- .../date-pickers/date-calendar/WeekPicker.js | 10 +- .../date-pickers/date-calendar/WeekPicker.tsx | 10 +- .../CustomDateRangePickerDay.js | 46 ++++----- .../CustomDateRangePickerDay.tsx | 46 ++++----- .../customization/CustomStyling.js | 20 ++-- .../customization/CustomStyling.tsx | 21 ++-- .../customization/FileExplorer.js | 37 +++---- .../customization/FileExplorer.tsx | 37 +++---- .../rich-tree-view/ordering/FileExplorer.js | 38 ++++---- .../rich-tree-view/ordering/FileExplorer.tsx | 38 ++++---- .../customization/CustomStyling.js | 20 ++-- .../customization/CustomStyling.tsx | 21 ++-- docs/src/modules/components/DemoPropsForm.tsx | 30 +++--- .../modules/components/LocalizationTable.js | 29 +++--- .../modules/components/PickersPlayground.tsx | 9 +- .../modules/components/overview/Keyboard.tsx | 6 +- .../ChartsAxisHighlight.tsx | 36 +++++-- .../src/renderer/renderPnl.tsx | 11 ++- .../components/GridGroupingColumnLeafCell.tsx | 17 ++-- .../components/GridGroupingCriteriaCell.tsx | 17 ++-- .../panel/filterPanel/GridFilterForm.tsx | 24 +++-- .../toolbar/GridToolbarQuickFilter.tsx | 10 +- .../TreeItem2DragAndDropOverlay.tsx | 12 +-- 71 files changed, 824 insertions(+), 596 deletions(-) diff --git a/docs/data/charts/styling/SxStyling.js b/docs/data/charts/styling/SxStyling.js index 158f933f9ff0..976ff5e87ba2 100644 --- a/docs/data/charts/styling/SxStyling.js +++ b/docs/data/charts/styling/SxStyling.js @@ -30,10 +30,16 @@ export default function SxStyling() { fill: '#006BD6', }, }, - border: `1px solid rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1)`, - backgroundImage: `linear-gradient(rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px)`, + border: '1px solid rgba(0, 0, 0, 0.1)', + backgroundImage: + 'linear-gradient(rgba(0, 0, 0, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 0, 0, 0.1) 1px, transparent 1px)', backgroundSize: '35px 35px', backgroundPosition: '20px 20px, 20px 20px', + ...theme.applyStyles('dark', { + borderColor: 'rgba(255,255,255, 0.1)', + backgroundImage: + 'linear-gradient(rgba(255,255,255, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255, 0.1) 1px, transparent 1px)', + }), })} xAxis={[{ scaleType: 'band', data: labels }]} series={[ diff --git a/docs/data/charts/styling/SxStyling.tsx b/docs/data/charts/styling/SxStyling.tsx index 57758d5ab7b9..67eee1e60db8 100644 --- a/docs/data/charts/styling/SxStyling.tsx +++ b/docs/data/charts/styling/SxStyling.tsx @@ -30,11 +30,16 @@ export default function SxStyling(): React.JSX.Element { fill: '#006BD6', }, }, - - border: `1px solid rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1)`, - backgroundImage: `linear-gradient(rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(${theme.palette.mode === 'dark' ? '255,255,255' : '0, 0, 0'}, 0.1) 1px, transparent 1px)`, + border: '1px solid rgba(0, 0, 0, 0.1)', + backgroundImage: + 'linear-gradient(rgba(0, 0, 0, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 0, 0, 0.1) 1px, transparent 1px)', backgroundSize: '35px 35px', backgroundPosition: '20px 20px, 20px 20px', + ...theme.applyStyles('dark', { + borderColor: 'rgba(255,255,255, 0.1)', + backgroundImage: + 'linear-gradient(rgba(255,255,255, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255, 0.1) 1px, transparent 1px)', + }), })} xAxis={[{ scaleType: 'band', data: labels }]} series={[ diff --git a/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.js b/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.js index dfa70d34ebe0..c629a45f3397 100644 --- a/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.js +++ b/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.js @@ -4,18 +4,20 @@ import { DataGridPremium, gridClasses } from '@mui/x-data-grid-premium'; import { useDemoData } from '@mui/x-data-grid-generator'; const StyledDataGridPremium = styled(DataGridPremium)(({ theme }) => { - const borderColor = - theme.palette.mode === 'light' - ? lighten(alpha(theme.palette.divider, 1), 0.88) - : darken(alpha(theme.palette.divider, 1), 0.68); + const lightBorderColor = lighten(alpha(theme.palette.divider, 1), 0.88); + const darkBorderColor = darken(alpha(theme.palette.divider, 1), 0.68); const selectedCellBorder = alpha(theme.palette.primary.main, 0.5); return { [`& .${gridClasses.cell}`]: { border: `1px solid transparent`, - borderRight: `1px solid ${borderColor}`, - borderBottom: `1px solid ${borderColor}`, + borderRight: `1px solid ${lightBorderColor}`, + borderBottom: `1px solid ${lightBorderColor}`, + ...theme.applyStyles('dark', { + borderRightColor: `${darkBorderColor}`, + borderBottomColor: `${darkBorderColor}`, + }), }, [`& .${gridClasses.cell}.Mui-selected`]: { borderColor: alpha(theme.palette.primary.main, 0.1), diff --git a/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.tsx b/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.tsx index dfa70d34ebe0..c629a45f3397 100644 --- a/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.tsx +++ b/docs/data/data-grid/cell-selection/CellSelectionRangeStyling.tsx @@ -4,18 +4,20 @@ import { DataGridPremium, gridClasses } from '@mui/x-data-grid-premium'; import { useDemoData } from '@mui/x-data-grid-generator'; const StyledDataGridPremium = styled(DataGridPremium)(({ theme }) => { - const borderColor = - theme.palette.mode === 'light' - ? lighten(alpha(theme.palette.divider, 1), 0.88) - : darken(alpha(theme.palette.divider, 1), 0.68); + const lightBorderColor = lighten(alpha(theme.palette.divider, 1), 0.88); + const darkBorderColor = darken(alpha(theme.palette.divider, 1), 0.68); const selectedCellBorder = alpha(theme.palette.primary.main, 0.5); return { [`& .${gridClasses.cell}`]: { border: `1px solid transparent`, - borderRight: `1px solid ${borderColor}`, - borderBottom: `1px solid ${borderColor}`, + borderRight: `1px solid ${lightBorderColor}`, + borderBottom: `1px solid ${lightBorderColor}`, + ...theme.applyStyles('dark', { + borderRightColor: `${darkBorderColor}`, + borderBottomColor: `${darkBorderColor}`, + }), }, [`& .${gridClasses.cell}.Mui-selected`]: { borderColor: alpha(theme.palette.primary.main, 0.1), diff --git a/docs/data/data-grid/demo/FullFeaturedDemo.js b/docs/data/data-grid/demo/FullFeaturedDemo.js index 3fc0fb9d27ed..07c9e2689d5f 100644 --- a/docs/data/data-grid/demo/FullFeaturedDemo.js +++ b/docs/data/data-grid/demo/FullFeaturedDemo.js @@ -15,9 +15,8 @@ import MenuItem from '@mui/material/MenuItem'; import Select from '@mui/material/Select'; const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ - border: `1px solid ${theme.palette.mode === 'light' ? '#f0f0f0' : '#303030'}`, - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.85)', + border: '1px solid #303030', + color: 'rgba(255,255,255,0.85)', fontFamily: [ '-apple-system', 'BlinkMacSystemFont', @@ -33,24 +32,28 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ WebkitFontSmoothing: 'auto', letterSpacing: 'normal', '& .MuiDataGrid-columnsContainer': { - backgroundColor: theme.palette.mode === 'light' ? '#fafafa' : '#1d1d1d', + backgroundColor: '#1d1d1d', + ...theme.applyStyles('light', { + backgroundColor: '#fafafa', + }), }, '& .MuiDataGrid-iconSeparator': { display: 'none', }, '& .MuiDataGrid-columnHeader, .MuiDataGrid-cell': { - borderRight: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderRight: '1px solid #303030', + ...theme.applyStyles('light', { + borderRightColor: '#f0f0f0', + }), }, '& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell': { - borderBottom: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderBottom: '1px solid #303030', + ...theme.applyStyles('light', { + borderBottomColor: '#f0f0f0', + }), }, '& .MuiDataGrid-cell': { - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.85)', + color: 'rgba(255,255,255,0.85)', fontFamily: [ '-apple-system', 'BlinkMacSystemFont', @@ -66,26 +69,31 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ WebkitFontSmoothing: 'auto', letterSpacing: 'normal', '& .MuiDataGrid-columnsContainer': { - backgroundColor: theme.palette.mode === 'light' ? '#fafafa' : '#1d1d1d', + backgroundColor: '#1d1d1d', + ...theme.applyStyles('light', { + backgroundColor: '#fafafa', + }), }, '& .MuiDataGrid-iconSeparator': { display: 'none', }, '& .MuiDataGrid-colCell, .MuiDataGrid-cell': { - borderRight: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderRight: '1px solid #303030', + ...theme.applyStyles('light', { + borderRightColor: '#f0f0f0', + }), }, '& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell': { - borderBottom: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderBottom: '1px solid #303030', + ...theme.applyStyles('light', { + borderBottomColor: '#f0f0f0', + }), }, '& .MuiDataGrid-cell': { - color: - theme.palette.mode === 'light' - ? 'rgba(0,0,0,.85)' - : 'rgba(255,255,255,0.65)', + color: 'rgba(255,255,255,0.65)', + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), }, '& .MuiPaginationItem-root': { borderRadius: 0, @@ -94,10 +102,11 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ width: 16, height: 16, backgroundColor: 'transparent', - border: `1px solid ${ - theme.palette.mode === 'light' ? '#d9d9d9' : 'rgb(67, 67, 67)' - }`, + border: '1px solid rgb(67, 67, 67)', borderRadius: 2, + ...theme.applyStyles('light', { + borderColor: '#d9d9d9', + }), }, '& .MuiCheckbox-root svg path': { display: 'none', @@ -129,7 +138,14 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ top: '39%', border: 0, }, + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), }, + ...theme.applyStyles('light', { + borderColor: '#f0f0f0', + color: 'rgba(0,0,0,.85)', + }), })); const StyledBox = styled('div')(({ theme }) => ({ diff --git a/docs/data/data-grid/demo/FullFeaturedDemo.tsx b/docs/data/data-grid/demo/FullFeaturedDemo.tsx index 2928393ef60e..2112942cab76 100644 --- a/docs/data/data-grid/demo/FullFeaturedDemo.tsx +++ b/docs/data/data-grid/demo/FullFeaturedDemo.tsx @@ -15,9 +15,8 @@ import MenuItem from '@mui/material/MenuItem'; import Select, { SelectProps } from '@mui/material/Select'; const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ - border: `1px solid ${theme.palette.mode === 'light' ? '#f0f0f0' : '#303030'}`, - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.85)', + border: '1px solid #303030', + color: 'rgba(255,255,255,0.85)', fontFamily: [ '-apple-system', 'BlinkMacSystemFont', @@ -33,24 +32,28 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ WebkitFontSmoothing: 'auto', letterSpacing: 'normal', '& .MuiDataGrid-columnsContainer': { - backgroundColor: theme.palette.mode === 'light' ? '#fafafa' : '#1d1d1d', + backgroundColor: '#1d1d1d', + ...theme.applyStyles('light', { + backgroundColor: '#fafafa', + }), }, '& .MuiDataGrid-iconSeparator': { display: 'none', }, '& .MuiDataGrid-columnHeader, .MuiDataGrid-cell': { - borderRight: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderRight: '1px solid #303030', + ...theme.applyStyles('light', { + borderRightColor: '#f0f0f0', + }), }, '& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell': { - borderBottom: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderBottom: '1px solid #303030', + ...theme.applyStyles('light', { + borderBottomColor: '#f0f0f0', + }), }, '& .MuiDataGrid-cell': { - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.85)', + color: 'rgba(255,255,255,0.85)', fontFamily: [ '-apple-system', 'BlinkMacSystemFont', @@ -66,26 +69,31 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ WebkitFontSmoothing: 'auto', letterSpacing: 'normal', '& .MuiDataGrid-columnsContainer': { - backgroundColor: theme.palette.mode === 'light' ? '#fafafa' : '#1d1d1d', + backgroundColor: '#1d1d1d', + ...theme.applyStyles('light', { + backgroundColor: '#fafafa', + }), }, '& .MuiDataGrid-iconSeparator': { display: 'none', }, '& .MuiDataGrid-colCell, .MuiDataGrid-cell': { - borderRight: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderRight: '1px solid #303030', + ...theme.applyStyles('light', { + borderRightColor: '#f0f0f0', + }), }, '& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell': { - borderBottom: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderBottom: '1px solid #303030', + ...theme.applyStyles('light', { + borderBottomColor: '#f0f0f0', + }), }, '& .MuiDataGrid-cell': { - color: - theme.palette.mode === 'light' - ? 'rgba(0,0,0,.85)' - : 'rgba(255,255,255,0.65)', + color: 'rgba(255,255,255,0.65)', + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), }, '& .MuiPaginationItem-root': { borderRadius: 0, @@ -94,10 +102,11 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ width: 16, height: 16, backgroundColor: 'transparent', - border: `1px solid ${ - theme.palette.mode === 'light' ? '#d9d9d9' : 'rgb(67, 67, 67)' - }`, + border: '1px solid rgb(67, 67, 67)', borderRadius: 2, + ...theme.applyStyles('light', { + borderColor: '#d9d9d9', + }), }, '& .MuiCheckbox-root svg path': { display: 'none', @@ -129,7 +138,14 @@ const AntDesignStyledDataGridPro = styled(DataGridPro)(({ theme }) => ({ top: '39%', border: 0, }, + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), }, + ...theme.applyStyles('light', { + borderColor: '#f0f0f0', + color: 'rgba(0,0,0,.85)', + }), })); const StyledBox = styled('div')(({ theme }) => ({ diff --git a/docs/data/data-grid/editing/IsCellEditableGrid.js b/docs/data/data-grid/editing/IsCellEditableGrid.js index aebf4beab281..1bf016540987 100644 --- a/docs/data/data-grid/editing/IsCellEditableGrid.js +++ b/docs/data/data-grid/editing/IsCellEditableGrid.js @@ -10,14 +10,16 @@ import { export default function IsCellEditableGrid() { return ( ({ height: 400, width: '100%', '& .MuiDataGrid-cell--editable': { - bgcolor: (theme) => - theme.palette.mode === 'dark' ? '#376331' : 'rgb(217 243 190)', + bgcolor: 'rgb(217 243 190)', + ...theme.applyStyles('dark', { + bgcolor: '#376331', + }), }, - }} + })} > ({ height: 400, width: '100%', '& .MuiDataGrid-cell--editable': { - bgcolor: (theme) => - theme.palette.mode === 'dark' ? '#376331' : 'rgb(217 243 190)', + bgcolor: 'rgb(217 243 190)', + ...theme.applyStyles('dark', { + bgcolor: '#376331', + }), }, - }} + })} > ({ height: 400, width: '100%', '& .MuiDataGrid-cell--editable': { - backgroundColor: theme.palette.mode === 'dark' ? '#376331' : 'rgb(217 243 190)', + backgroundColor: 'rgb(217 243 190)', '& .MuiInputBase-root': { height: '100%', }, + ...theme.applyStyles('dark', { + backgroundColor: '#376331', + }), }, '& .Mui-error': { - backgroundColor: `rgb(126,10,15, ${theme.palette.mode === 'dark' ? 0 : 0.1})`, - color: theme.palette.mode === 'dark' ? '#ff4343' : '#750f0f', + backgroundColor: 'rgb(126,10,15, 0.1)', + color: '#750f0f', + ...theme.applyStyles('dark', { + backgroundColor: 'rgb(126,10,15, 0)', + color: '#ff4343', + }), }, })); diff --git a/docs/data/data-grid/editing/ValidateServerNameGrid.tsx b/docs/data/data-grid/editing/ValidateServerNameGrid.tsx index 5b460c759370..035511267521 100644 --- a/docs/data/data-grid/editing/ValidateServerNameGrid.tsx +++ b/docs/data/data-grid/editing/ValidateServerNameGrid.tsx @@ -14,14 +14,21 @@ const StyledBox = styled('div')(({ theme }) => ({ height: 400, width: '100%', '& .MuiDataGrid-cell--editable': { - backgroundColor: theme.palette.mode === 'dark' ? '#376331' : 'rgb(217 243 190)', + backgroundColor: 'rgb(217 243 190)', '& .MuiInputBase-root': { height: '100%', }, + ...theme.applyStyles('dark', { + backgroundColor: '#376331', + }), }, '& .Mui-error': { - backgroundColor: `rgb(126,10,15, ${theme.palette.mode === 'dark' ? 0 : 0.1})`, - color: theme.palette.mode === 'dark' ? '#ff4343' : '#750f0f', + backgroundColor: 'rgb(126,10,15, 0.1)', + color: '#750f0f', + ...theme.applyStyles('dark', { + backgroundColor: 'rgb(126,10,15, 0)', + color: '#ff4343', + }), }, })); diff --git a/docs/data/data-grid/filtering/CustomHeaderFilterDataGridPro.js b/docs/data/data-grid/filtering/CustomHeaderFilterDataGridPro.js index 59520ac9e415..294ebacdbea2 100644 --- a/docs/data/data-grid/filtering/CustomHeaderFilterDataGridPro.js +++ b/docs/data/data-grid/filtering/CustomHeaderFilterDataGridPro.js @@ -62,11 +62,20 @@ function CustomHeaderFilter(props) { return ( ({ justifyContent: 'center', height: '100%', '& .no-rows-primary': { - fill: theme.palette.mode === 'light' ? '#AEB8C2' : '#3D4751', + fill: '#3D4751', + ...theme.applyStyles('light', { + fill: '#AEB8C2', + }), }, '& .no-rows-secondary': { - fill: theme.palette.mode === 'light' ? '#E8EAED' : '#1D2126', + fill: '#1D2126', + ...theme.applyStyles('light', { + fill: '#E8EAED', + }), }, })); diff --git a/docs/data/data-grid/layout/AutoHeightOverlayNoSnap.tsx b/docs/data/data-grid/layout/AutoHeightOverlayNoSnap.tsx index b52f36d8eb20..9b93efc6eaaf 100644 --- a/docs/data/data-grid/layout/AutoHeightOverlayNoSnap.tsx +++ b/docs/data/data-grid/layout/AutoHeightOverlayNoSnap.tsx @@ -10,10 +10,16 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ justifyContent: 'center', height: '100%', '& .no-rows-primary': { - fill: theme.palette.mode === 'light' ? '#AEB8C2' : '#3D4751', + fill: '#3D4751', + ...theme.applyStyles('light', { + fill: '#AEB8C2', + }), }, '& .no-rows-secondary': { - fill: theme.palette.mode === 'light' ? '#E8EAED' : '#1D2126', + fill: '#1D2126', + ...theme.applyStyles('light', { + fill: '#E8EAED', + }), }, })); diff --git a/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.js b/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.js index 0f9a8b1b1f64..77d28626f827 100644 --- a/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.js +++ b/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.js @@ -59,13 +59,12 @@ function CustomDetailPanelToggle(props) { aria-label={isExpanded ? 'Close' : 'Open'} > ({ transform: `rotateZ(${isExpanded ? 180 : 0}deg)`, - transition: (theme) => - theme.transitions.create('transform', { - duration: theme.transitions.duration.shortest, - }), - }} + transition: theme.transitions.create('transform', { + duration: theme.transitions.duration.shortest, + }), + })} fontSize="inherit" /> diff --git a/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.tsx b/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.tsx index 47a78a7af50a..aea595aa168d 100644 --- a/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.tsx +++ b/docs/data/data-grid/master-detail/CustomizeDetailPanelToggle.tsx @@ -63,13 +63,12 @@ function CustomDetailPanelToggle(props: Pick ({ transform: `rotateZ(${isExpanded ? 180 : 0}deg)`, - transition: (theme) => - theme.transitions.create('transform', { - duration: theme.transitions.duration.shortest, - }), - }} + transition: theme.transitions.create('transform', { + duration: theme.transitions.duration.shortest, + }), + })} fontSize="inherit" /> diff --git a/docs/data/data-grid/overlays/LoadingOverlayCustom.js b/docs/data/data-grid/overlays/LoadingOverlayCustom.js index a936b4296f19..a2b1edbb06ca 100644 --- a/docs/data/data-grid/overlays/LoadingOverlayCustom.js +++ b/docs/data/data-grid/overlays/LoadingOverlayCustom.js @@ -12,10 +12,10 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ alignItems: 'center', justifyContent: 'center', height: '100%', - backgroundColor: - theme.palette.mode === 'light' - ? 'rgba(255, 255, 255, 0.9)' - : 'rgba(18, 18, 18, 0.9)', + backgroundColor: 'rgba(18, 18, 18, 0.9)', + ...theme.applyStyles('light', { + backgroundColor: 'rgba(255, 255, 255, 0.9)', + }), })); function CircularProgressWithLabel(props) { diff --git a/docs/data/data-grid/overlays/LoadingOverlayCustom.tsx b/docs/data/data-grid/overlays/LoadingOverlayCustom.tsx index 59209a50e686..1b2249596147 100644 --- a/docs/data/data-grid/overlays/LoadingOverlayCustom.tsx +++ b/docs/data/data-grid/overlays/LoadingOverlayCustom.tsx @@ -14,10 +14,10 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ alignItems: 'center', justifyContent: 'center', height: '100%', - backgroundColor: - theme.palette.mode === 'light' - ? 'rgba(255, 255, 255, 0.9)' - : 'rgba(18, 18, 18, 0.9)', + backgroundColor: 'rgba(18, 18, 18, 0.9)', + ...theme.applyStyles('light', { + backgroundColor: 'rgba(255, 255, 255, 0.9)', + }), })); function CircularProgressWithLabel( diff --git a/docs/data/data-grid/overlays/NoResultsOverlayCustom.js b/docs/data/data-grid/overlays/NoResultsOverlayCustom.js index 15320b97081c..dc89588011fd 100644 --- a/docs/data/data-grid/overlays/NoResultsOverlayCustom.js +++ b/docs/data/data-grid/overlays/NoResultsOverlayCustom.js @@ -11,10 +11,16 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ justifyContent: 'center', height: '100%', '& .no-results-primary': { - fill: theme.palette.mode === 'light' ? '#AEB8C2' : '#3D4751', + fill: '#3D4751', + ...theme.applyStyles('light', { + fill: '#AEB8C2', + }), }, '& .no-results-secondary': { - fill: theme.palette.mode === 'light' ? '#E8EAED' : '#1D2126', + fill: '#1D2126', + ...theme.applyStyles('light', { + fill: '#E8EAED', + }), }, })); diff --git a/docs/data/data-grid/overlays/NoResultsOverlayCustom.tsx b/docs/data/data-grid/overlays/NoResultsOverlayCustom.tsx index 15320b97081c..dc89588011fd 100644 --- a/docs/data/data-grid/overlays/NoResultsOverlayCustom.tsx +++ b/docs/data/data-grid/overlays/NoResultsOverlayCustom.tsx @@ -11,10 +11,16 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ justifyContent: 'center', height: '100%', '& .no-results-primary': { - fill: theme.palette.mode === 'light' ? '#AEB8C2' : '#3D4751', + fill: '#3D4751', + ...theme.applyStyles('light', { + fill: '#AEB8C2', + }), }, '& .no-results-secondary': { - fill: theme.palette.mode === 'light' ? '#E8EAED' : '#1D2126', + fill: '#1D2126', + ...theme.applyStyles('light', { + fill: '#E8EAED', + }), }, })); diff --git a/docs/data/data-grid/overlays/NoRowsOverlayCustom.js b/docs/data/data-grid/overlays/NoRowsOverlayCustom.js index bfe5090c0466..606ccc43562c 100644 --- a/docs/data/data-grid/overlays/NoRowsOverlayCustom.js +++ b/docs/data/data-grid/overlays/NoRowsOverlayCustom.js @@ -11,10 +11,16 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ justifyContent: 'center', height: '100%', '& .no-rows-primary': { - fill: theme.palette.mode === 'light' ? '#AEB8C2' : '#3D4751', + fill: '#3D4751', + ...theme.applyStyles('light', { + fill: '#AEB8C2', + }), }, '& .no-rows-secondary': { - fill: theme.palette.mode === 'light' ? '#E8EAED' : '#1D2126', + fill: '#1D2126', + ...theme.applyStyles('light', { + fill: '#E8EAED', + }), }, })); diff --git a/docs/data/data-grid/overlays/NoRowsOverlayCustom.tsx b/docs/data/data-grid/overlays/NoRowsOverlayCustom.tsx index bfe5090c0466..606ccc43562c 100644 --- a/docs/data/data-grid/overlays/NoRowsOverlayCustom.tsx +++ b/docs/data/data-grid/overlays/NoRowsOverlayCustom.tsx @@ -11,10 +11,16 @@ const StyledGridOverlay = styled('div')(({ theme }) => ({ justifyContent: 'center', height: '100%', '& .no-rows-primary': { - fill: theme.palette.mode === 'light' ? '#AEB8C2' : '#3D4751', + fill: '#3D4751', + ...theme.applyStyles('light', { + fill: '#AEB8C2', + }), }, '& .no-rows-secondary': { - fill: theme.palette.mode === 'light' ? '#E8EAED' : '#1D2126', + fill: '#1D2126', + ...theme.applyStyles('light', { + fill: '#E8EAED', + }), }, })); diff --git a/docs/data/data-grid/performance/GridVisualization.js b/docs/data/data-grid/performance/GridVisualization.js index 012448e2fd47..97862557cf5d 100644 --- a/docs/data/data-grid/performance/GridVisualization.js +++ b/docs/data/data-grid/performance/GridVisualization.js @@ -44,14 +44,13 @@ export default function GridVisualization() { return ( ({ height: 400, width: '100%', '&&& .updated': { - transition: (theme) => - theme.transitions.create(['background-color', 'outline'], { - duration: theme.transitions.duration.standard, - }), + transition: theme.transitions.create(['background-color', 'outline'], { + duration: theme.transitions.duration.standard, + }), }, '&&& .updating': { backgroundColor: 'rgb(92 199 68 / 20%)', @@ -59,7 +58,7 @@ export default function GridVisualization() { outlineOffset: '-1px', transition: 'none', }, - }} + })} > ({ height: 400, width: '100%', '&&& .updated': { - transition: (theme) => - theme.transitions.create(['background-color', 'outline'], { - duration: theme.transitions.duration.standard, - }), + transition: theme.transitions.create(['background-color', 'outline'], { + duration: theme.transitions.duration.standard, + }), }, '&&& .updating': { backgroundColor: 'rgb(92 199 68 / 20%)', @@ -59,7 +58,7 @@ export default function GridVisualization() { outlineOffset: '-1px', transition: 'none', }, - }} + })} > ({ }, }, '& .Mui-error': { - backgroundColor: `rgb(126,10,15, ${theme.palette.mode === 'dark' ? 0 : 0.1})`, + backgroundColor: 'rgb(126,10,15, 0.1)', color: theme.palette.error.main, + ...theme.applyStyles('dark', { + backgroundColor: 'rgb(126,10,15, 0)', + }), }, })); diff --git a/docs/data/data-grid/recipes-editing/ConditionalValidationGrid.tsx b/docs/data/data-grid/recipes-editing/ConditionalValidationGrid.tsx index 74d0ddf5b413..98f926555114 100644 --- a/docs/data/data-grid/recipes-editing/ConditionalValidationGrid.tsx +++ b/docs/data/data-grid/recipes-editing/ConditionalValidationGrid.tsx @@ -14,8 +14,11 @@ const StyledBox = styled('div')(({ theme }) => ({ }, }, '& .Mui-error': { - backgroundColor: `rgb(126,10,15, ${theme.palette.mode === 'dark' ? 0 : 0.1})`, + backgroundColor: 'rgb(126,10,15, 0.1)', color: theme.palette.error.main, + ...theme.applyStyles('dark', { + backgroundColor: 'rgb(126,10,15, 0)', + }), }, })); diff --git a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js index 2f344485f9e6..75fd9a5422ac 100644 --- a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js +++ b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.js @@ -10,13 +10,6 @@ const pageSizeOptions = [5, 10, 50]; const serverOptions = { useCursorPagination: false }; const datasetOptions = {}; -function getBorderColor(theme) { - if (theme.palette.mode === 'light') { - return lighten(alpha(theme.palette.divider, 1), 0.88); - } - return darken(alpha(theme.palette.divider, 1), 0.68); -} - const StyledDiv = styled('div')(({ theme: t }) => ({ position: 'absolute', zIndex: 10, @@ -28,8 +21,11 @@ const StyledDiv = styled('div')(({ theme: t }) => ({ alignItems: 'center', justifyContent: 'center', borderRadius: '4px', - border: `1px solid ${getBorderColor(t)}`, + border: `1px solid ${lighten(alpha(t.palette.divider, 1), 0.88)}`, backgroundColor: t.palette.background.default, + ...t.applyStyles('dark', { + borderColor: darken(alpha(t.palette.divider, 1), 0.68), + }), })); function ErrorOverlay({ error }) { diff --git a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx index 85cc69fdb165..2ea04e50c57f 100644 --- a/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideErrorHandling.tsx @@ -9,20 +9,13 @@ import { import Button from '@mui/material/Button'; import Checkbox from '@mui/material/Checkbox'; import FormControlLabel from '@mui/material/FormControlLabel'; -import { alpha, styled, darken, lighten, Theme } from '@mui/material/styles'; +import { alpha, styled, darken, lighten } from '@mui/material/styles'; import { useMockServer } from '@mui/x-data-grid-generator'; const pageSizeOptions = [5, 10, 50]; const serverOptions = { useCursorPagination: false }; const datasetOptions = {}; -function getBorderColor(theme: Theme) { - if (theme.palette.mode === 'light') { - return lighten(alpha(theme.palette.divider, 1), 0.88); - } - return darken(alpha(theme.palette.divider, 1), 0.68); -} - const StyledDiv = styled('div')(({ theme: t }) => ({ position: 'absolute', zIndex: 10, @@ -34,8 +27,11 @@ const StyledDiv = styled('div')(({ theme: t }) => ({ alignItems: 'center', justifyContent: 'center', borderRadius: '4px', - border: `1px solid ${getBorderColor(t)}`, + border: `1px solid ${lighten(alpha(t.palette.divider, 1), 0.88)}`, backgroundColor: t.palette.background.default, + ...t.applyStyles('dark', { + borderColor: darken(alpha(t.palette.divider, 1), 0.68), + }), })); function ErrorOverlay({ error }: { error: string }) { diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js index faffe196653b..1066e54daf35 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.js @@ -116,13 +116,6 @@ export default function ServerSideTreeDataErrorHandling() { ); } -function getBorderColor(theme) { - if (theme.palette.mode === 'light') { - return lighten(alpha(theme.palette.divider, 1), 0.88); - } - return darken(alpha(theme.palette.divider, 1), 0.68); -} - const StyledDiv = styled('div')(({ theme: t }) => ({ position: 'absolute', zIndex: 10, @@ -134,8 +127,11 @@ const StyledDiv = styled('div')(({ theme: t }) => ({ alignItems: 'center', justifyContent: 'center', borderRadius: '4px', - border: `1px solid ${getBorderColor(t)}`, + border: `1px solid ${lighten(alpha(t.palette.divider, 1), 0.88)}`, backgroundColor: t.palette.background.default, + ...t.applyStyles('dark', { + borderColor: darken(alpha(t.palette.divider, 1), 0.68), + }), })); function ErrorOverlay({ error }) { diff --git a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx index d7e61934f194..c62baec1a6a7 100644 --- a/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx +++ b/docs/data/data-grid/server-side-data/ServerSideTreeDataErrorHandling.tsx @@ -9,7 +9,7 @@ import Snackbar from '@mui/material/Snackbar'; import Button from '@mui/material/Button'; import Checkbox from '@mui/material/Checkbox'; import FormControlLabel from '@mui/material/FormControlLabel'; -import { alpha, styled, darken, lighten, Theme } from '@mui/material/styles'; +import { alpha, styled, darken, lighten } from '@mui/material/styles'; import { useMockServer } from '@mui/x-data-grid-generator'; const pageSizeOptions = [5, 10, 50]; @@ -121,13 +121,6 @@ export default function ServerSideTreeDataErrorHandling() { ); } -function getBorderColor(theme: Theme) { - if (theme.palette.mode === 'light') { - return lighten(alpha(theme.palette.divider, 1), 0.88); - } - return darken(alpha(theme.palette.divider, 1), 0.68); -} - const StyledDiv = styled('div')(({ theme: t }) => ({ position: 'absolute', zIndex: 10, @@ -139,8 +132,11 @@ const StyledDiv = styled('div')(({ theme: t }) => ({ alignItems: 'center', justifyContent: 'center', borderRadius: '4px', - border: `1px solid ${getBorderColor(t)}`, + border: `1px solid ${lighten(alpha(t.palette.divider, 1), 0.88)}`, backgroundColor: t.palette.background.default, + ...t.applyStyles('dark', { + borderColor: darken(alpha(t.palette.divider, 1), 0.68), + }), })); function ErrorOverlay({ error }: { error: string }) { diff --git a/docs/data/data-grid/style/AntDesignGrid.js b/docs/data/data-grid/style/AntDesignGrid.js index 37efb118bd28..7bb38f9533e2 100644 --- a/docs/data/data-grid/style/AntDesignGrid.js +++ b/docs/data/data-grid/style/AntDesignGrid.js @@ -17,10 +17,11 @@ function customCheckbox(theme) { width: 16, height: 16, backgroundColor: 'transparent', - border: `1px solid ${ - theme.palette.mode === 'light' ? '#d9d9d9' : 'rgb(67, 67, 67)' - }`, + border: '1px solid #d9d9d9', borderRadius: 2, + ...theme.applyStyles('dark', { + borderColor: 'rgb(67, 67, 67)', + }), }, '& .MuiCheckbox-root svg path': { display: 'none', @@ -57,8 +58,7 @@ function customCheckbox(theme) { const StyledDataGrid = styled(DataGrid)(({ theme }) => ({ border: 0, - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.85)', + color: 'rgba(255,255,255,0.85)', fontFamily: [ '-apple-system', 'BlinkMacSystemFont', @@ -74,29 +74,39 @@ const StyledDataGrid = styled(DataGrid)(({ theme }) => ({ WebkitFontSmoothing: 'auto', letterSpacing: 'normal', '& .MuiDataGrid-columnsContainer': { - backgroundColor: theme.palette.mode === 'light' ? '#fafafa' : '#1d1d1d', + backgroundColor: '#1d1d1d', + ...theme.applyStyles('light', { + backgroundColor: '#fafafa', + }), }, '& .MuiDataGrid-iconSeparator': { display: 'none', }, '& .MuiDataGrid-columnHeader, .MuiDataGrid-cell': { - borderRight: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderRight: '1px solid #303030', + ...theme.applyStyles('light', { + borderRightColor: '#f0f0f0', + }), }, '& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell': { - borderBottom: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderBottom: '1px solid #303030', + ...theme.applyStyles('light', { + borderBottomColor: '#f0f0f0', + }), }, '& .MuiDataGrid-cell': { - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.65)', + color: 'rgba(255,255,255,0.65)', + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), }, '& .MuiPaginationItem-root': { borderRadius: 0, }, ...customCheckbox(theme), + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), })); function CustomPagination() { diff --git a/docs/data/data-grid/style/AntDesignGrid.tsx b/docs/data/data-grid/style/AntDesignGrid.tsx index d4f18367c18b..257018a2471d 100644 --- a/docs/data/data-grid/style/AntDesignGrid.tsx +++ b/docs/data/data-grid/style/AntDesignGrid.tsx @@ -17,10 +17,11 @@ function customCheckbox(theme: Theme) { width: 16, height: 16, backgroundColor: 'transparent', - border: `1px solid ${ - theme.palette.mode === 'light' ? '#d9d9d9' : 'rgb(67, 67, 67)' - }`, + border: '1px solid #d9d9d9', borderRadius: 2, + ...theme.applyStyles('dark', { + borderColor: 'rgb(67, 67, 67)', + }), }, '& .MuiCheckbox-root svg path': { display: 'none', @@ -57,8 +58,7 @@ function customCheckbox(theme: Theme) { const StyledDataGrid = styled(DataGrid)(({ theme }) => ({ border: 0, - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.85)', + color: 'rgba(255,255,255,0.85)', fontFamily: [ '-apple-system', 'BlinkMacSystemFont', @@ -74,29 +74,39 @@ const StyledDataGrid = styled(DataGrid)(({ theme }) => ({ WebkitFontSmoothing: 'auto', letterSpacing: 'normal', '& .MuiDataGrid-columnsContainer': { - backgroundColor: theme.palette.mode === 'light' ? '#fafafa' : '#1d1d1d', + backgroundColor: '#1d1d1d', + ...theme.applyStyles('light', { + backgroundColor: '#fafafa', + }), }, '& .MuiDataGrid-iconSeparator': { display: 'none', }, '& .MuiDataGrid-columnHeader, .MuiDataGrid-cell': { - borderRight: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderRight: '1px solid #303030', + ...theme.applyStyles('light', { + borderRightColor: '#f0f0f0', + }), }, '& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell': { - borderBottom: `1px solid ${ - theme.palette.mode === 'light' ? '#f0f0f0' : '#303030' - }`, + borderBottom: '1px solid #303030', + ...theme.applyStyles('light', { + borderBottomColor: '#f0f0f0', + }), }, '& .MuiDataGrid-cell': { - color: - theme.palette.mode === 'light' ? 'rgba(0,0,0,.85)' : 'rgba(255,255,255,0.65)', + color: 'rgba(255,255,255,0.65)', + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), }, '& .MuiPaginationItem-root': { borderRadius: 0, }, ...customCheckbox(theme), + ...theme.applyStyles('light', { + color: 'rgba(0,0,0,.85)', + }), })); function CustomPagination() { diff --git a/docs/data/data-grid/style/StylingRowsGrid.js b/docs/data/data-grid/style/StylingRowsGrid.js index 56606a53676f..6aee2cc5a979 100644 --- a/docs/data/data-grid/style/StylingRowsGrid.js +++ b/docs/data/data-grid/style/StylingRowsGrid.js @@ -4,109 +4,59 @@ import { DataGrid } from '@mui/x-data-grid'; import { useDemoData } from '@mui/x-data-grid-generator'; import { darken, lighten, styled } from '@mui/material/styles'; -const getBackgroundColor = (color, mode) => - mode === 'dark' ? darken(color, 0.7) : lighten(color, 0.7); - -const getHoverBackgroundColor = (color, mode) => - mode === 'dark' ? darken(color, 0.6) : lighten(color, 0.6); - -const getSelectedBackgroundColor = (color, mode) => - mode === 'dark' ? darken(color, 0.5) : lighten(color, 0.5); - -const getSelectedHoverBackgroundColor = (color, mode) => - mode === 'dark' ? darken(color, 0.4) : lighten(color, 0.4); +const getBackgroundColor = (color, theme, coefficient) => ({ + backgroundColor: darken(color, coefficient), + ...theme.applyStyles('light', { + backgroundColor: lighten(color, coefficient), + }), +}); const StyledDataGrid = styled(DataGrid)(({ theme }) => ({ '& .super-app-theme--Open': { - backgroundColor: getBackgroundColor(theme.palette.info.main, theme.palette.mode), + ...getBackgroundColor(theme.palette.info.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.info.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.info.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.info.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.info.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.info.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.info.main, theme, 0.4), }, }, }, '& .super-app-theme--Filled': { - backgroundColor: getBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.4), }, }, }, '& .super-app-theme--PartiallyFilled': { - backgroundColor: getBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.4), }, }, }, '& .super-app-theme--Rejected': { - backgroundColor: getBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.4), }, }, }, diff --git a/docs/data/data-grid/style/StylingRowsGrid.tsx b/docs/data/data-grid/style/StylingRowsGrid.tsx index 4d88308d90bc..de1d8b44e7fd 100644 --- a/docs/data/data-grid/style/StylingRowsGrid.tsx +++ b/docs/data/data-grid/style/StylingRowsGrid.tsx @@ -2,111 +2,61 @@ import * as React from 'react'; import Box from '@mui/material/Box'; import { DataGrid } from '@mui/x-data-grid'; import { useDemoData } from '@mui/x-data-grid-generator'; -import { darken, lighten, styled } from '@mui/material/styles'; +import { darken, lighten, styled, Theme } from '@mui/material/styles'; -const getBackgroundColor = (color: string, mode: string) => - mode === 'dark' ? darken(color, 0.7) : lighten(color, 0.7); - -const getHoverBackgroundColor = (color: string, mode: string) => - mode === 'dark' ? darken(color, 0.6) : lighten(color, 0.6); - -const getSelectedBackgroundColor = (color: string, mode: string) => - mode === 'dark' ? darken(color, 0.5) : lighten(color, 0.5); - -const getSelectedHoverBackgroundColor = (color: string, mode: string) => - mode === 'dark' ? darken(color, 0.4) : lighten(color, 0.4); +const getBackgroundColor = (color: string, theme: Theme, coefficient: number) => ({ + backgroundColor: darken(color, coefficient), + ...theme.applyStyles('light', { + backgroundColor: lighten(color, coefficient), + }), +}); const StyledDataGrid = styled(DataGrid)(({ theme }) => ({ '& .super-app-theme--Open': { - backgroundColor: getBackgroundColor(theme.palette.info.main, theme.palette.mode), + ...getBackgroundColor(theme.palette.info.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.info.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.info.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.info.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.info.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.info.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.info.main, theme, 0.4), }, }, }, '& .super-app-theme--Filled': { - backgroundColor: getBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.success.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.success.main, theme, 0.4), }, }, }, '& .super-app-theme--PartiallyFilled': { - backgroundColor: getBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.warning.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.warning.main, theme, 0.4), }, }, }, '& .super-app-theme--Rejected': { - backgroundColor: getBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.7), '&:hover': { - backgroundColor: getHoverBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.6), }, '&.Mui-selected': { - backgroundColor: getSelectedBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.5), '&:hover': { - backgroundColor: getSelectedHoverBackgroundColor( - theme.palette.error.main, - theme.palette.mode, - ), + ...getBackgroundColor(theme.palette.error.main, theme, 0.4), }, }, }, diff --git a/docs/data/date-pickers/base-concepts/CustomSlots.js b/docs/data/date-pickers/base-concepts/CustomSlots.js index 5a6d1197147a..46b7619f3fd3 100644 --- a/docs/data/date-pickers/base-concepts/CustomSlots.js +++ b/docs/data/date-pickers/base-concepts/CustomSlots.js @@ -13,10 +13,10 @@ const StyledButton = styled(IconButton)(({ theme }) => ({ })); const StyledDay = styled(PickersDay)(({ theme }) => ({ borderRadius: theme.shape.borderRadius, - color: - theme.palette.mode === 'light' - ? theme.palette.secondary.dark - : theme.palette.secondary.light, + color: theme.palette.secondary.light, + ...theme.applyStyles('light', { + color: theme.palette.secondary.dark, + }), })); export default function CustomSlots() { diff --git a/docs/data/date-pickers/base-concepts/CustomSlots.tsx b/docs/data/date-pickers/base-concepts/CustomSlots.tsx index 5a6d1197147a..46b7619f3fd3 100644 --- a/docs/data/date-pickers/base-concepts/CustomSlots.tsx +++ b/docs/data/date-pickers/base-concepts/CustomSlots.tsx @@ -13,10 +13,10 @@ const StyledButton = styled(IconButton)(({ theme }) => ({ })); const StyledDay = styled(PickersDay)(({ theme }) => ({ borderRadius: theme.shape.borderRadius, - color: - theme.palette.mode === 'light' - ? theme.palette.secondary.dark - : theme.palette.secondary.light, + color: theme.palette.secondary.light, + ...theme.applyStyles('light', { + color: theme.palette.secondary.dark, + }), })); export default function CustomSlots() { diff --git a/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.js b/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.js index 905c7f807657..881a6630a012 100644 --- a/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.js +++ b/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.js @@ -29,7 +29,15 @@ function CustomCalendarHeader(props) { @@ -37,7 +45,15 @@ function CustomCalendarHeader(props) { {month.format('MMMM YYYY')} diff --git a/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.tsx b/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.tsx index a7cda0e96c95..e150031d943e 100644 --- a/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.tsx +++ b/docs/data/date-pickers/custom-components/CalendarHeaderComponentRange.tsx @@ -30,7 +30,15 @@ function CustomCalendarHeader(props: PickersRangeCalendarHeaderProps) { @@ -38,7 +46,15 @@ function CustomCalendarHeader(props: PickersRangeCalendarHeaderProps) { {month.format('MMMM YYYY')} diff --git a/docs/data/date-pickers/custom-field/BrowserV6Field.js b/docs/data/date-pickers/custom-field/BrowserV6Field.js index f3a8f6cc98d1..bb3952a732ce 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6Field.js +++ b/docs/data/date-pickers/custom-field/BrowserV6Field.js @@ -29,7 +29,13 @@ const BrowserField = React.forwardRef((props, ref) => { return ( diff --git a/docs/data/date-pickers/custom-field/BrowserV6Field.tsx b/docs/data/date-pickers/custom-field/BrowserV6Field.tsx index b7b4237ad880..45fa7acdec43 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6Field.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6Field.tsx @@ -59,7 +59,13 @@ const BrowserField = React.forwardRef( return ( diff --git a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js index 61c9dd0857d1..5421fd0d4348 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.js @@ -30,7 +30,14 @@ const BrowserField = React.forwardRef((props, ref) => { return ( diff --git a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx index 0c993265f441..b52029d14cde 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6MultiInputRangeField.tsx @@ -63,7 +63,14 @@ const BrowserField = React.forwardRef( return ( diff --git a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js index dc34821c612c..4815d50972ac 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js @@ -33,7 +33,13 @@ const BrowserField = React.forwardRef((props, ref) => { return ( diff --git a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx index 29d27a1c63d7..15c4e41160ae 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx @@ -69,7 +69,13 @@ const BrowserField = React.forwardRef( return ( diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js index 45751705f59d..67ba149ec674 100644 --- a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.js @@ -13,7 +13,18 @@ function CustomInputAdornment(props) { {children} diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx index 9fda0784aff8..c55a05726acc 100644 --- a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalid.tsx @@ -14,7 +14,18 @@ function CustomInputAdornment(props: InputAdornmentProps & { hasError?: boolean {children} diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js index e6b3ea511373..8012efda6585 100644 --- a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.js @@ -11,7 +11,18 @@ function CustomInputAdornment(props) { const { hasError, children, sx, ...other } = props; return ( - + {children} ); diff --git a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx index 5e49622b3c02..28bf9e2a238e 100644 --- a/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx +++ b/docs/data/date-pickers/custom-opening-button/AddWarningIconWhenInvalidRange.tsx @@ -12,7 +12,18 @@ function CustomInputAdornment(props: InputAdornmentProps & { hasError?: boolean const { hasError, children, sx, ...other } = props; return ( - + {children} ); diff --git a/docs/data/date-pickers/date-calendar/WeekPicker.js b/docs/data/date-pickers/date-calendar/WeekPicker.js index 2154ea4918cc..02efb22ffc51 100644 --- a/docs/data/date-pickers/date-calendar/WeekPicker.js +++ b/docs/data/date-pickers/date-calendar/WeekPicker.js @@ -21,10 +21,16 @@ const CustomPickersDay = styled(PickersDay, { }, }), ...(isHovered && { - backgroundColor: theme.palette.primary[theme.palette.mode], + backgroundColor: theme.palette.primary.light, '&:hover, &:focus': { - backgroundColor: theme.palette.primary[theme.palette.mode], + backgroundColor: theme.palette.primary.light, }, + ...theme.applyStyles('dark', { + backgroundColor: theme.palette.primary.dark, + '&:hover, &:focus': { + backgroundColor: theme.palette.primary.dark, + }, + }), }), ...(day.day() === 0 && { borderTopLeftRadius: '50%', diff --git a/docs/data/date-pickers/date-calendar/WeekPicker.tsx b/docs/data/date-pickers/date-calendar/WeekPicker.tsx index 88f7fb03e3f6..7e46c36ba876 100644 --- a/docs/data/date-pickers/date-calendar/WeekPicker.tsx +++ b/docs/data/date-pickers/date-calendar/WeekPicker.tsx @@ -26,10 +26,16 @@ const CustomPickersDay = styled(PickersDay, { }, }), ...(isHovered && { - backgroundColor: theme.palette.primary[theme.palette.mode], + backgroundColor: theme.palette.primary.light, '&:hover, &:focus': { - backgroundColor: theme.palette.primary[theme.palette.mode], + backgroundColor: theme.palette.primary.light, }, + ...theme.applyStyles('dark', { + backgroundColor: theme.palette.primary.dark, + '&:hover, &:focus': { + backgroundColor: theme.palette.primary.dark, + }, + }), }), ...(day.day() === 0 && { borderTopLeftRadius: '50%', diff --git a/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.js b/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.js index 2bc8af2bb52c..6f1dbf791830 100644 --- a/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.js +++ b/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.js @@ -7,34 +7,36 @@ import { AdapterDayjs } from '@mui/x-date-pickers-pro/AdapterDayjs'; import { DateRangeCalendar } from '@mui/x-date-pickers-pro/DateRangeCalendar'; import { DateRangePickerDay as MuiDateRangePickerDay } from '@mui/x-date-pickers-pro/DateRangePickerDay'; -const DateRangePickerDay = styled(MuiDateRangePickerDay)( - ({ - theme, - isHighlighting, - isStartOfHighlighting, - isEndOfHighlighting, - outsideCurrentMonth, - }) => ({ - ...(!outsideCurrentMonth && - isHighlighting && { +const DateRangePickerDay = styled(MuiDateRangePickerDay)(({ theme }) => ({ + variants: [ + { + props: ({ isHighlighting, outsideCurrentMonth }) => + !outsideCurrentMonth && isHighlighting, + style: { borderRadius: 0, backgroundColor: theme.palette.primary.main, color: theme.palette.common.white, '&:hover, &:focus': { backgroundColor: theme.palette.primary.dark, }, - }), - ...(isStartOfHighlighting && { - borderTopLeftRadius: '50%', - borderBottomLeftRadius: '50%', - }), - ...(isEndOfHighlighting && { - borderTopRightRadius: '50%', - borderBottomRightRadius: '50%', - }), - }), -); - + }, + }, + { + props: ({ isStartOfHighlighting }) => isStartOfHighlighting, + style: { + borderTopLeftRadius: '50%', + borderBottomLeftRadius: '50%', + }, + }, + { + props: ({ isEndOfHighlighting }) => isEndOfHighlighting, + style: { + borderTopRightRadius: '50%', + borderBottomRightRadius: '50%', + }, + }, + ], +})); export default function CustomDateRangePickerDay() { return ( diff --git a/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.tsx b/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.tsx index f42faf053b0a..caf9d98b2c8f 100644 --- a/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.tsx +++ b/docs/data/date-pickers/date-range-calendar/CustomDateRangePickerDay.tsx @@ -10,34 +10,36 @@ import { DateRangePickerDayProps, } from '@mui/x-date-pickers-pro/DateRangePickerDay'; -const DateRangePickerDay = styled(MuiDateRangePickerDay)( - ({ - theme, - isHighlighting, - isStartOfHighlighting, - isEndOfHighlighting, - outsideCurrentMonth, - }) => ({ - ...(!outsideCurrentMonth && - isHighlighting && { +const DateRangePickerDay = styled(MuiDateRangePickerDay)(({ theme }) => ({ + variants: [ + { + props: ({ isHighlighting, outsideCurrentMonth }) => + !outsideCurrentMonth && isHighlighting, + style: { borderRadius: 0, backgroundColor: theme.palette.primary.main, color: theme.palette.common.white, '&:hover, &:focus': { backgroundColor: theme.palette.primary.dark, }, - }), - ...(isStartOfHighlighting && { - borderTopLeftRadius: '50%', - borderBottomLeftRadius: '50%', - }), - ...(isEndOfHighlighting && { - borderTopRightRadius: '50%', - borderBottomRightRadius: '50%', - }), - }), -) as React.ComponentType>; - + }, + }, + { + props: ({ isStartOfHighlighting }) => isStartOfHighlighting, + style: { + borderTopLeftRadius: '50%', + borderBottomLeftRadius: '50%', + }, + }, + { + props: ({ isEndOfHighlighting }) => isEndOfHighlighting, + style: { + borderTopRightRadius: '50%', + borderBottomRightRadius: '50%', + }, + }, + ], +})) as React.ComponentType>; export default function CustomDateRangePickerDay() { return ( diff --git a/docs/data/tree-view/rich-tree-view/customization/CustomStyling.js b/docs/data/tree-view/rich-tree-view/customization/CustomStyling.js index 9f943fa5f554..eedcc6b8fe7b 100644 --- a/docs/data/tree-view/rich-tree-view/customization/CustomStyling.js +++ b/docs/data/tree-view/rich-tree-view/customization/CustomStyling.js @@ -35,10 +35,7 @@ const MUI_X_PRODUCTS = [ ]; const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[200], + color: theme.palette.grey[200], [`& .${treeItemClasses.content}`]: { borderRadius: theme.spacing(0.5), padding: theme.spacing(0.5, 1), @@ -50,18 +47,23 @@ const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ }, [`& .${treeItemClasses.iconContainer}`]: { borderRadius: '50%', - backgroundColor: - theme.palette.mode === 'light' - ? alpha(theme.palette.primary.main, 0.25) - : theme.palette.primary.dark, - color: theme.palette.mode === 'dark' && theme.palette.primary.contrastText, + backgroundColor: theme.palette.primary.dark, padding: theme.spacing(0, 1.2), + ...theme.applyStyles('light', { + backgroundColor: alpha(theme.palette.primary.main, 0.25), + }), + ...theme.applyStyles('dark', { + color: theme.palette.primary.contrastText, + }), }, [`& .${treeItemClasses.groupTransition}`]: { marginLeft: 15, paddingLeft: 18, borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`, }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })); export default function CustomStyling() { diff --git a/docs/data/tree-view/rich-tree-view/customization/CustomStyling.tsx b/docs/data/tree-view/rich-tree-view/customization/CustomStyling.tsx index dd1a123cb753..de8fc4bd6f5c 100644 --- a/docs/data/tree-view/rich-tree-view/customization/CustomStyling.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/CustomStyling.tsx @@ -36,11 +36,7 @@ const MUI_X_PRODUCTS: TreeViewBaseItem[] = [ ]; const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[200], - + color: theme.palette.grey[200], [`& .${treeItemClasses.content}`]: { borderRadius: theme.spacing(0.5), padding: theme.spacing(0.5, 1), @@ -52,18 +48,23 @@ const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ }, [`& .${treeItemClasses.iconContainer}`]: { borderRadius: '50%', - backgroundColor: - theme.palette.mode === 'light' - ? alpha(theme.palette.primary.main, 0.25) - : theme.palette.primary.dark, - color: theme.palette.mode === 'dark' && theme.palette.primary.contrastText, + backgroundColor: theme.palette.primary.dark, padding: theme.spacing(0, 1.2), + ...theme.applyStyles('light', { + backgroundColor: alpha(theme.palette.primary.main, 0.25), + }), + ...theme.applyStyles('dark', { + color: theme.palette.primary.contrastText, + }), }, [`& .${treeItemClasses.groupTransition}`]: { marginLeft: 15, paddingLeft: 18, borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`, }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })); export default function CustomStyling() { diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js index a02a1e86667b..45d30698d930 100644 --- a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.js @@ -80,14 +80,14 @@ function DotIcon() { } const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[400], + color: theme.palette.grey[400], position: 'relative', [`& .${treeItemClasses.groupTransition}`]: { marginLeft: theme.spacing(3.5), }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })); const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ @@ -100,10 +100,10 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ fontWeight: 500, [`&.Mui-expanded `]: { '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { - color: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + color: theme.palette.primary.dark, + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, '&::before': { content: '""', @@ -113,22 +113,25 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ top: '44px', height: 'calc(100% - 48px)', width: '1.5px', - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.grey[300] - : theme.palette.grey[700], + backgroundColor: theme.palette.grey[700], + ...theme.applyStyles('light', { + backgroundColor: theme.palette.grey[300], + }), }, }, '&:hover': { backgroundColor: alpha(theme.palette.primary.main, 0.1), - color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + color: 'white', + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + backgroundColor: theme.palette.primary.dark, color: theme.palette.primary.contrastText, + ...theme.applyStyles('light', { + backgroundColor: theme.palette.primary.main, + }), }, })); diff --git a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx index b57e0a3fb720..70cb94cbb040 100644 --- a/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx +++ b/docs/data/tree-view/rich-tree-view/customization/FileExplorer.tsx @@ -98,14 +98,14 @@ declare module 'react' { } const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[400], + color: theme.palette.grey[400], position: 'relative', [`& .${treeItemClasses.groupTransition}`]: { marginLeft: theme.spacing(3.5), }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })) as unknown as typeof TreeItem2Root; const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ @@ -118,10 +118,10 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ fontWeight: 500, [`&.Mui-expanded `]: { '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { - color: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + color: theme.palette.primary.dark, + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, '&::before': { content: '""', @@ -131,22 +131,25 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ top: '44px', height: 'calc(100% - 48px)', width: '1.5px', - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.grey[300] - : theme.palette.grey[700], + backgroundColor: theme.palette.grey[700], + ...theme.applyStyles('light', { + backgroundColor: theme.palette.grey[300], + }), }, }, '&:hover': { backgroundColor: alpha(theme.palette.primary.main, 0.1), - color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + color: 'white', + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + backgroundColor: theme.palette.primary.dark, color: theme.palette.primary.contrastText, + ...theme.applyStyles('light', { + backgroundColor: theme.palette.primary.main, + }), }, })); diff --git a/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js index 2e27635af25f..a072303ff3d2 100644 --- a/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js +++ b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.js @@ -81,16 +81,15 @@ function DotIcon() { } const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[400], + color: theme.palette.grey[400], position: 'relative', [`& .${treeItemClasses.groupTransition}`]: { marginLeft: theme.spacing(3.5), }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })); - const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ flexDirection: 'row-reverse', borderRadius: theme.spacing(0.7), @@ -100,10 +99,10 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ fontWeight: 500, [`&.Mui-expanded `]: { '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { - color: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + color: theme.palette.primary.dark, + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, '&::before': { content: '""', @@ -113,22 +112,25 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ top: '44px', height: 'calc(100% - 48px)', width: '1.5px', - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.grey[300] - : theme.palette.grey[700], + backgroundColor: theme.palette.grey[700], + ...theme.applyStyles('light', { + backgroundColor: theme.palette.grey[300], + }), }, }, '&:hover': { backgroundColor: alpha(theme.palette.primary.main, 0.1), - color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + color: 'white', + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + backgroundColor: theme.palette.primary.dark, color: theme.palette.primary.contrastText, + ...theme.applyStyles('light', { + backgroundColor: theme.palette.primary.main, + }), }, })); diff --git a/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx index 77d933653142..0a93f04cea63 100644 --- a/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx +++ b/docs/data/tree-view/rich-tree-view/ordering/FileExplorer.tsx @@ -98,16 +98,15 @@ declare module 'react' { } const StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[400], + color: theme.palette.grey[400], position: 'relative', [`& .${treeItemClasses.groupTransition}`]: { marginLeft: theme.spacing(3.5), }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })) as unknown as typeof TreeItem2Root; - const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ flexDirection: 'row-reverse', borderRadius: theme.spacing(0.7), @@ -117,10 +116,10 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ fontWeight: 500, [`&.Mui-expanded `]: { '&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon': { - color: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + color: theme.palette.primary.dark, + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, '&::before': { content: '""', @@ -130,22 +129,25 @@ const CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({ top: '44px', height: 'calc(100% - 48px)', width: '1.5px', - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.grey[300] - : theme.palette.grey[700], + backgroundColor: theme.palette.grey[700], + ...theme.applyStyles('light', { + backgroundColor: theme.palette.grey[300], + }), }, }, '&:hover': { backgroundColor: alpha(theme.palette.primary.main, 0.1), - color: theme.palette.mode === 'light' ? theme.palette.primary.main : 'white', + color: 'white', + ...theme.applyStyles('light', { + color: theme.palette.primary.main, + }), }, [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: { - backgroundColor: - theme.palette.mode === 'light' - ? theme.palette.primary.main - : theme.palette.primary.dark, + backgroundColor: theme.palette.primary.dark, color: theme.palette.primary.contrastText, + ...theme.applyStyles('light', { + backgroundColor: theme.palette.primary.main, + }), }, })); diff --git a/docs/data/tree-view/simple-tree-view/customization/CustomStyling.js b/docs/data/tree-view/simple-tree-view/customization/CustomStyling.js index 3b2fc9d59aa6..aed1efe19d50 100644 --- a/docs/data/tree-view/simple-tree-view/customization/CustomStyling.js +++ b/docs/data/tree-view/simple-tree-view/customization/CustomStyling.js @@ -5,10 +5,7 @@ import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[200], + color: theme.palette.grey[200], [`& .${treeItemClasses.content}`]: { borderRadius: theme.spacing(0.5), padding: theme.spacing(0.5, 1), @@ -20,18 +17,23 @@ const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ }, [`& .${treeItemClasses.iconContainer}`]: { borderRadius: '50%', - backgroundColor: - theme.palette.mode === 'light' - ? alpha(theme.palette.primary.main, 0.25) - : theme.palette.primary.dark, - color: theme.palette.mode === 'dark' && theme.palette.primary.contrastText, + backgroundColor: theme.palette.primary.dark, padding: theme.spacing(0, 1.2), + ...theme.applyStyles('light', { + backgroundColor: alpha(theme.palette.primary.main, 0.25), + }), + ...theme.applyStyles('dark', { + color: theme.palette.primary.contrastText, + }), }, [`& .${treeItemClasses.groupTransition}`]: { marginLeft: 15, paddingLeft: 18, borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`, }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })); export default function CustomStyling() { diff --git a/docs/data/tree-view/simple-tree-view/customization/CustomStyling.tsx b/docs/data/tree-view/simple-tree-view/customization/CustomStyling.tsx index 8a8b2d213719..aed1efe19d50 100644 --- a/docs/data/tree-view/simple-tree-view/customization/CustomStyling.tsx +++ b/docs/data/tree-view/simple-tree-view/customization/CustomStyling.tsx @@ -5,11 +5,7 @@ import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView'; import { TreeItem, treeItemClasses } from '@mui/x-tree-view/TreeItem'; const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ - color: - theme.palette.mode === 'light' - ? theme.palette.grey[800] - : theme.palette.grey[200], - + color: theme.palette.grey[200], [`& .${treeItemClasses.content}`]: { borderRadius: theme.spacing(0.5), padding: theme.spacing(0.5, 1), @@ -21,18 +17,23 @@ const CustomTreeItem = styled(TreeItem)(({ theme }) => ({ }, [`& .${treeItemClasses.iconContainer}`]: { borderRadius: '50%', - backgroundColor: - theme.palette.mode === 'light' - ? alpha(theme.palette.primary.main, 0.25) - : theme.palette.primary.dark, - color: theme.palette.mode === 'dark' && theme.palette.primary.contrastText, + backgroundColor: theme.palette.primary.dark, padding: theme.spacing(0, 1.2), + ...theme.applyStyles('light', { + backgroundColor: alpha(theme.palette.primary.main, 0.25), + }), + ...theme.applyStyles('dark', { + color: theme.palette.primary.contrastText, + }), }, [`& .${treeItemClasses.groupTransition}`]: { marginLeft: 15, paddingLeft: 18, borderLeft: `1px dashed ${alpha(theme.palette.text.primary, 0.4)}`, }, + ...theme.applyStyles('light', { + color: theme.palette.grey[800], + }), })); export default function CustomStyling() { diff --git a/docs/src/modules/components/DemoPropsForm.tsx b/docs/src/modules/components/DemoPropsForm.tsx index c0dbea676285..6af4554500dd 100644 --- a/docs/src/modules/components/DemoPropsForm.tsx +++ b/docs/src/modules/components/DemoPropsForm.tsx @@ -129,15 +129,15 @@ function ControlledColorRadio(props: any) { ({ zIndex: 1, position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', pointerEvents: 'none', - color: (theme) => theme.palette.background.default, - }} + color: theme.palette.background.default, + })} /> } sx={{ width: '100%', height: '100%', margin: 0 }} @@ -488,19 +488,21 @@ export default function ChartDemoPropsForm({ key={placement} // variant="soft" color="primary" - sx={{ - position: 'relative', - height: '14px', - width: 32, - borderRadius: 'xs', - mx: 0.5, - ...(placement.match(/^(top|bottom)$/) && { + sx={[ + { + position: 'relative', + height: '14px', + width: 32, + borderRadius: 'xs', + mx: 0.5, + }, + placement.match(/^(top|bottom)$/) && { justifySelf: 'center', - }), - ...(placement.match(/^(top-end|bottom-end)$/) && { + }, + placement.match(/^(top-end|bottom-end)$/) && { justifySelf: 'flex-end', - }), - }} + }, + ]} > ({ fontWeight: 600, color: (theme.vars || theme).palette.text.secondary, '&.low': { - color: - theme.palette.mode === 'dark' - ? (theme.vars || theme).palette.text.primary - : (theme.vars || theme).palette.error.dark, + color: (theme.vars || theme).palette.error.dark, '& .progress-bar': { backgroundColor: (theme.vars || theme).palette.error.main, opacity: 0.3, @@ -29,26 +26,29 @@ const Root = styled('div')(({ theme }) => ({ border: `1px solid`, borderColor: (theme.vars || theme).palette.error.light, }, + ...theme.applyStyles('dark', { + color: (theme.vars || theme).palette.text.primary, + }), }, '&.medium': { - color: - theme.palette.mode === 'dark' - ? (theme.vars || theme).palette.text.primary - : (theme.vars || theme).palette.warning.dark, + color: (theme.vars || theme).palette.warning.dark, '& .progress-bar': { backgroundColor: (theme.vars || theme).palette.warning.main, - opacity: theme.palette.mode === 'dark' ? 0.4 : 0.25, + opacity: 0.25, + ...theme.applyStyles('dark', { + opacity: 0.4, + }), }, '& .progress-background': { border: `1px solid`, borderColor: (theme.vars || theme).palette.warning.light, }, + ...theme.applyStyles('dark', { + color: (theme.vars || theme).palette.text.primary, + }), }, '&.high': { - color: - theme.palette.mode === 'dark' - ? (theme.vars || theme).palette.text.primary - : (theme.vars || theme).palette.success.dark, + color: (theme.vars || theme).palette.success.dark, '& .progress-bar': { backgroundColor: (theme.vars || theme).palette.success.main, opacity: 0.3, @@ -57,6 +57,9 @@ const Root = styled('div')(({ theme }) => ({ border: `1px solid`, borderColor: (theme.vars || theme).palette.success.light, }, + ...theme.applyStyles('dark', { + color: (theme.vars || theme).palette.text.primary, + }), }, })); diff --git a/docs/src/modules/components/PickersPlayground.tsx b/docs/src/modules/components/PickersPlayground.tsx index 2b48de823b10..5980b1565b98 100644 --- a/docs/src/modules/components/PickersPlayground.tsx +++ b/docs/src/modules/components/PickersPlayground.tsx @@ -50,17 +50,20 @@ const ComponentSection = styled('div')(({ theme }) => ({ '& .MuiPickersLayout-root': { borderRadius: 8, border: '1px dashed', - borderColor: theme.palette.mode === 'light' ? theme.palette.grey[300] : theme.palette.divider, - ...(theme.palette.mode === 'dark' && { + borderColor: theme.palette.divider, + ...theme.applyStyles('dark', { backgroundColor: alpha(theme.palette.grey[900], 0.2), }), + ...theme.applyStyles('light', { + borderColor: theme.palette.grey[300], + }), }, })); const PropControlsSection = styled('div')(({ theme }) => ({ flexGrow: 1, background: alpha(theme.palette.grey[50], 0.5), - ...(theme.palette.mode === 'dark' && { + ...theme.applyStyles('dark', { backgroundColor: alpha(theme.palette.grey[900], 0.3), }), })); diff --git a/docs/src/modules/components/overview/Keyboard.tsx b/docs/src/modules/components/overview/Keyboard.tsx index 3d9fe387525c..456604d975c9 100644 --- a/docs/src/modules/components/overview/Keyboard.tsx +++ b/docs/src/modules/components/overview/Keyboard.tsx @@ -248,7 +248,7 @@ const arrowKeys: KeyType[] = [ const RootRectangle = styled('rect')(({ theme }) => ({ fill: 'white', stroke: theme.palette.grey[500], - ...(theme.palette.mode === 'dark' && { + ...theme.applyStyles('dark', { stroke: theme.palette.grey[600], fill: theme.palette.background.paper, }), @@ -261,7 +261,7 @@ const KeyRoot = styled('g')(({ theme }) => ({ const KeyRectangle = styled('rect')(({ theme }) => ({ fill: 'white', stroke: theme.palette.grey[500], - ...(theme.palette.mode === 'dark' && { + ...theme.applyStyles('dark', { stroke: theme.palette.grey[600], fill: theme.palette.background.paper, }), @@ -270,7 +270,7 @@ const KeyText = styled('text')(({ theme }) => ({ fill: theme.palette.grey[800], fontSize: 9, fontFamily: 'IBM Plex Sans', - ...(theme.palette.mode === 'dark' && { fill: theme.palette.text.primary }), + ...theme.applyStyles('dark', { fill: theme.palette.text.primary }), })); type KeyboardSvgProps = { diff --git a/packages/x-charts/src/ChartsAxisHighlight/ChartsAxisHighlight.tsx b/packages/x-charts/src/ChartsAxisHighlight/ChartsAxisHighlight.tsx index 456067392205..fb9b4d2f74de 100644 --- a/packages/x-charts/src/ChartsAxisHighlight/ChartsAxisHighlight.tsx +++ b/packages/x-charts/src/ChartsAxisHighlight/ChartsAxisHighlight.tsx @@ -37,16 +37,34 @@ export const ChartsAxisHighlightPath = styled('path', { name: 'MuiChartsAxisHighlight', slot: 'Root', overridesResolver: (_, styles) => styles.root, -})<{ ownerState: { axisHighlight: AxisHighlight } }>(({ ownerState, theme }) => ({ +})<{ ownerState: { axisHighlight: AxisHighlight } }>(({ theme }) => ({ pointerEvents: 'none', - ...(ownerState.axisHighlight === 'band' && { - fill: theme.palette.mode === 'light' ? 'gray' : 'white', - fillOpacity: 0.1, - }), - ...(ownerState.axisHighlight === 'line' && { - strokeDasharray: '5 2', - stroke: theme.palette.mode === 'light' ? '#000000' : '#ffffff', - }), + variants: [ + { + props: { + axisHighlight: 'band', + }, + style: { + fill: 'white', + fillOpacity: 0.1, + ...theme.applyStyles('light', { + fill: 'gray', + }), + }, + }, + { + props: { + axisHighlight: 'line', + }, + style: { + strokeDasharray: '5 2', + stroke: '#ffffff', + ...theme.applyStyles('light', { + stroke: '#000000', + }), + }, + }, + ], })); type AxisHighlight = 'none' | 'line' | 'band'; diff --git a/packages/x-data-grid-generator/src/renderer/renderPnl.tsx b/packages/x-data-grid-generator/src/renderer/renderPnl.tsx index 40e8c01d7c35..8246e08241da 100644 --- a/packages/x-data-grid-generator/src/renderer/renderPnl.tsx +++ b/packages/x-data-grid-generator/src/renderer/renderPnl.tsx @@ -7,11 +7,16 @@ const Value = styled('div')(({ theme }) => ({ width: '100%', fontVariantNumeric: 'tabular-nums', '&.positive': { - color: - theme.palette.mode === 'light' ? theme.palette.success.dark : theme.palette.success.light, + color: theme.palette.success.light, + ...theme.applyStyles('light', { + color: theme.palette.success.dark, + }), }, '&.negative': { - color: theme.palette.mode === 'light' ? theme.palette.error.dark : theme.palette.error.light, + color: theme.palette.error.light, + ...theme.applyStyles('light', { + color: theme.palette.error.dark, + }), }, })); diff --git a/packages/x-data-grid-premium/src/components/GridGroupingColumnLeafCell.tsx b/packages/x-data-grid-premium/src/components/GridGroupingColumnLeafCell.tsx index 22e3d381cfa7..30f29b060b8a 100644 --- a/packages/x-data-grid-premium/src/components/GridGroupingColumnLeafCell.tsx +++ b/packages/x-data-grid-premium/src/components/GridGroupingColumnLeafCell.tsx @@ -9,13 +9,16 @@ function GridGroupingColumnLeafCell(props: GridRenderCellParams) { return ( - `calc(var(--DataGrid-cellOffsetMultiplier) * ${theme.spacing(rowNode.depth)})`, - }} + sx={[ + rootProps.rowGroupingColumnMode === 'multiple' + ? { + ml: 1, + } + : (theme) => ({ + ml: `calc(var(--DataGrid-cellOffsetMultiplier) * var(--depth) * ${theme.spacing(1)})`, + }), + ]} + style={{ '--depth': rowNode.depth } as any} > {props.formattedValue ?? props.value} diff --git a/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx b/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx index 0046dc3294a4..07a397c1a0b4 100644 --- a/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx +++ b/packages/x-data-grid-premium/src/components/GridGroupingCriteriaCell.tsx @@ -75,13 +75,16 @@ export function GridGroupingCriteriaCell(props: GridGroupingCriteriaCellProps) { return ( - `calc(var(--DataGrid-cellOffsetMultiplier) * ${theme.spacing(rowNode.depth)})`, - }} + sx={[ + rootProps.rowGroupingColumnMode === 'multiple' + ? { + ml: 0, + } + : (theme) => ({ + ml: `calc(var(--DataGrid-cellOffsetMultiplier) * var(--depth) * ${theme.spacing(1)})`, + }), + ]} + style={{ '--depth': rowNode.depth } as any} >

    {filteredDescendantCount > 0 && ( diff --git a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterForm.tsx b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterForm.tsx index 1e60d9b579f7..c30e5af630d0 100644 --- a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterForm.tsx +++ b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterForm.tsx @@ -452,12 +452,24 @@ const GridFilterForm = React.forwardRef( as={rootProps.slots.baseFormControl} {...baseFormControlProps} {...logicOperatorInputProps} - sx={{ - display: hasLogicOperatorColumn ? 'flex' : 'none', - visibility: showMultiFilterOperators ? 'visible' : 'hidden', - ...(baseFormControlProps.sx || {}), - ...(logicOperatorInputProps.sx || {}), - }} + sx={[ + hasLogicOperatorColumn + ? { + display: 'flex', + } + : { + display: 'none', + }, + showMultiFilterOperators + ? { + visibility: 'visible', + } + : { + visibility: 'hidden', + }, + baseFormControlProps.sx, + logicOperatorInputProps.sx, + ]} className={clsx( classes.logicOperatorInput, baseFormControlProps.className, diff --git a/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx b/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx index 8881a0a86f24..4921f12486ed 100644 --- a/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx +++ b/packages/x-data-grid/src/components/toolbar/GridToolbarQuickFilter.tsx @@ -157,7 +157,15 @@ function GridToolbarQuickFilter(props: GridToolbarQuickFilterProps) { diff --git a/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx index a435c62372f8..52294d0cb180 100644 --- a/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx +++ b/packages/x-tree-view/src/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.tsx @@ -32,8 +32,8 @@ const TreeItem2DragAndDropOverlayRoot = styled('div', { style: { marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))', borderTop: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, - ...(theme.palette.mode === 'dark' && { - borderTop: `1px solid ${alpha((theme.vars || theme).palette.grey[100], 0.6)}`, + ...theme.applyStyles('dark', { + borderTopColor: alpha((theme.vars || theme).palette.grey[100], 0.6), }), }, }, @@ -42,8 +42,8 @@ const TreeItem2DragAndDropOverlayRoot = styled('div', { style: { marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))', borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, - ...(theme.palette.mode === 'dark' && { - borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[100], 0.6)}`, + ...theme.applyStyles('dark', { + borderBottomColor: alpha((theme.vars || theme).palette.grey[100], 0.6), }), }, }, @@ -53,8 +53,8 @@ const TreeItem2DragAndDropOverlayRoot = styled('div', { marginLeft: 'calc(var(--TreeView-indentMultiplier) * calc(var(--TreeView-itemDepth) - 1))' as any, borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, - ...(theme.palette.mode === 'dark' && { - borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`, + ...theme.applyStyles('dark', { + borderBottomColor: alpha((theme.vars || theme).palette.grey[900], 0.6), }), }, }, From 0cf9af8eac7aafb64fca353ed375796b9632b671 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Wed, 21 Aug 2024 17:42:40 +0200 Subject: [PATCH 804/912] [charts] Fix grid overflow with zooming (#14280) --- packages/x-charts/src/ChartsGrid/ChartsGrid.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx index c150244b2d39..19b880e70ed0 100644 --- a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx +++ b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx @@ -10,6 +10,7 @@ import { getChartsGridUtilityClass, chartsGridClasses, } from './chartsGridClasses'; +import { useDrawingArea } from '../hooks/useDrawingArea'; const GridRoot = styled('g', { name: 'MuiChartsGrid', @@ -68,6 +69,7 @@ export interface ChartsGridProps { function ChartsGrid(props: ChartsGridProps) { const themeProps = useThemeProps({ props, name: 'MuiChartsGrid' }); + const drawingArea = useDrawingArea(); const { vertical, horizontal, ...other } = themeProps; const { xAxis, xAxisIds, yAxis, yAxisIds } = useCartesianContext(); @@ -97,8 +99,8 @@ function ChartsGrid(props: ChartsGridProps) { xTicks.map(({ formattedValue, offset }) => ( ))} From a454350303b8f6542be1c3a49e80467f57c42375 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 17:53:04 +0200 Subject: [PATCH 805/912] Bump react-hook-form to ^7.52.2 (#14164) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/package.json b/docs/package.json index e82ed88f6f7a..58224d500825 100644 --- a/docs/package.json +++ b/docs/package.json @@ -84,7 +84,7 @@ "react": "^18.3.1", "react-docgen": "^5.4.3", "react-dom": "^18.3.1", - "react-hook-form": "^7.52.1", + "react-hook-form": "^7.52.2", "react-is": "^18.3.1", "react-router": "^6.25.1", "react-router-dom": "^6.25.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fad79e2d77f3..e7b63d1146f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -597,8 +597,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-hook-form: - specifier: ^7.52.1 - version: 7.52.1(react@18.3.1) + specifier: ^7.52.2 + version: 7.52.2(react@18.3.1) react-is: specifier: ^18.3.1 version: 18.3.1 @@ -8605,9 +8605,9 @@ packages: peerDependencies: react: ^18.3.1 - react-hook-form@7.52.1: - resolution: {integrity: sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg==} - engines: {node: '>=12.22.0'} + react-hook-form@7.52.2: + resolution: {integrity: sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A==} + engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -18529,7 +18529,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-hook-form@7.52.1(react@18.3.1): + react-hook-form@7.52.2(react@18.3.1): dependencies: react: 18.3.1 From bd1bed2328ffd701a896b311fda99cdd1b9d4e53 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 17:54:12 +0200 Subject: [PATCH 806/912] Bump globby to ^14.0.2 (#13749) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 091b95f7c6e7..46ff90ea86d5 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "format-util": "^1.0.5", "fs-extra": "^11.2.0", "glob-gitignore": "^1.0.14", - "globby": "^14.0.1", + "globby": "^14.0.2", "html-webpack-plugin": "^5.6.0", "jsdom": "24.1.1", "jss": "^10.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e7b63d1146f4..d6ba0bfcb4b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -282,8 +282,8 @@ importers: specifier: ^1.0.14 version: 1.0.14 globby: - specifier: ^14.0.1 - version: 14.0.1 + specifier: ^14.0.2 + version: 14.0.2 html-webpack-plugin: specifier: ^5.6.0 version: 5.6.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) @@ -6442,6 +6442,10 @@ packages: resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + gm@1.25.0: resolution: {integrity: sha512-4kKdWXTtgQ4biIo7hZA396HT062nDVVHPjQcurNZ3o/voYN+o5FUC5kOwuORbpExp3XbTJ3SU7iRipiIhQtovw==} engines: {node: '>=14'} @@ -16043,6 +16047,15 @@ snapshots: slash: 5.1.0 unicorn-magic: 0.1.0 + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + gm@1.25.0: dependencies: array-parallel: 0.1.3 From 9de2cdbe647955f495a53fd83c37b2227ddc58ba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 23:29:25 +0700 Subject: [PATCH 807/912] Bump @argos-ci/core to ^2.4.1 (#14086) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jose Quintas --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 46ff90ea86d5..1edc27ab1cac 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "devDependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "@argos-ci/core": "^2.4.0", + "@argos-ci/core": "^2.4.1", "@babel/cli": "^7.24.8", "@babel/core": "^7.25.2", "@babel/node": "^7.25.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6ba0bfcb4b1..1cf0d0237228 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^6.0.0 version: 6.0.0 '@argos-ci/core': - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.4.1 + version: 2.4.1 '@babel/cli': specifier: ^7.24.8 version: 7.24.8(@babel/core@7.25.2) @@ -1705,8 +1705,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@argos-ci/core@2.4.0': - resolution: {integrity: sha512-CY8IQsc71cuIeF2U47aePzH8+YWK4ePG1j+gK5aQ0r744Wc467U4xej7gChMVrAaGlZKsgoIIeXE1ezF+rCryw==} + '@argos-ci/core@2.4.1': + resolution: {integrity: sha512-Sl+5Zq4LBZF+CDB0eXGdTOLv3E9bubO2tfpDncQku5/s/N+2Ptn0JAw/Vc3EdJAtMWj1G8uy+6cvtV+eaVNnFg==} engines: {node: '>=18.0.0'} '@argos-ci/util@2.1.0': @@ -10255,7 +10255,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@argos-ci/core@2.4.0': + '@argos-ci/core@2.4.1': dependencies: '@argos-ci/util': 2.1.0 axios: 1.7.2(debug@4.3.5) From 3fb20933d0c160b31f0b0af69cd1bce40ffb9f1a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 18:41:50 +0200 Subject: [PATCH 808/912] Bump MUI Core (#14095) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 12 +- package.json | 6 +- packages/x-charts-pro/package.json | 4 +- packages/x-charts/package.json | 4 +- packages/x-data-grid-premium/package.json | 4 +- packages/x-data-grid-pro/package.json | 4 +- packages/x-data-grid/package.json | 4 +- packages/x-date-pickers-pro/package.json | 4 +- packages/x-date-pickers/package.json | 4 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 4 +- packages/x-tree-view/package.json | 4 +- pnpm-lock.yaml | 246 +++++++++++----------- test/package.json | 2 +- 15 files changed, 153 insertions(+), 153 deletions(-) diff --git a/docs/package.json b/docs/package.json index 58224d500825..d779100d9a4e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -28,14 +28,14 @@ "@emotion/server": "^11.11.0", "@emotion/styled": "^11.13.0", "@mui/docs": "6.0.0-beta.6", - "@mui/icons-material": "^5.16.5", + "@mui/icons-material": "^5.16.7", "@mui/joy": "^5.0.0-beta.48", "@mui/lab": "^5.0.0-alpha.173", - "@mui/material": "^5.16.5", - "@mui/material-nextjs": "^5.16.4", - "@mui/styles": "^5.16.5", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/material": "^5.16.7", + "@mui/material-nextjs": "^5.16.6", + "@mui/styles": "^5.16.7", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-charts": "workspace:*", "@mui/x-charts-vendor": "workspace:*", "@mui/x-data-grid": "workspace:*", diff --git a/package.json b/package.json index 1edc27ab1cac..a6aacfe942cd 100644 --- a/package.json +++ b/package.json @@ -88,12 +88,12 @@ "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", - "@mui/icons-material": "^5.16.5", + "@mui/icons-material": "^5.16.7", "@mui/internal-markdown": "^1.0.10", "@mui/internal-test-utils": "^1.0.8", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/monorepo": "github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4", - "@mui/utils": "^5.16.5", + "@mui/utils": "^5.16.6", "@next/eslint-plugin-next": "14.2.5", "@octokit/plugin-retry": "^7.1.1", "@octokit/rest": "^21.0.2", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 9ba265f42b1b..1a732caf7cd4 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -40,8 +40,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-charts": "workspace:*", "@mui/x-charts-vendor": "workspace:*", "@mui/x-license": "workspace:*", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 54f04a4596cd..4257e978a143 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -40,8 +40,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-charts-vendor": "workspace:*", "@react-spring/rafz": "^9.7.4", "@react-spring/web": "^9.7.4", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index cf7e4638db9f..48fc4458dfdf 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -44,8 +44,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-pro": "workspace:*", "@mui/x-internals": "workspace:*", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index ab5c6448633d..3331947593a0 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -44,8 +44,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", "@mui/x-internals": "workspace:*", "@mui/x-license": "workspace:*", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 7a8581595492..55f4f9df1a86 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -48,8 +48,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "clsx": "^2.1.1", "prop-types": "^15.8.1", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index dcf7ab2d033d..c5ad50c67caa 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -43,8 +43,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-date-pickers": "workspace:*", "@mui/x-license": "workspace:*", "clsx": "^2.1.1", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 89dd1a736fea..8c64899ab54c 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", "prop-types": "^15.8.1", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 9f03878c1959..6f0598e02e01 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -42,7 +42,7 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/utils": "^5.16.5" + "@mui/utils": "^5.16.6" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0" diff --git a/packages/x-license/package.json b/packages/x-license/package.json index c621a54a2c55..e3d2937605cc 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -35,7 +35,7 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/utils": "^5.16.5" + "@mui/utils": "^5.16.6" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0" diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 9d1baa2fc078..b1b2781cb227 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -44,8 +44,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "@mui/x-license": "workspace:*", "@mui/x-tree-view": "workspace:*", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index a285e4ae52b8..8bcf0160185f 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -44,8 +44,8 @@ }, "dependencies": { "@babel/runtime": "^7.25.0", - "@mui/system": "^5.16.5", - "@mui/utils": "^5.16.5", + "@mui/system": "^5.16.7", + "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1cf0d0237228..ac7d67e816bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ^11.13.0 version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/icons-material': - specifier: ^5.16.5 - version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': specifier: ^1.0.10 version: 1.0.10 @@ -93,14 +93,14 @@ importers: specifier: ^1.0.8 version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': specifier: github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4 version: https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4(encoding@0.1.13) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@next/eslint-plugin-next': specifier: 14.2.5 version: 14.2.5 @@ -427,31 +427,31 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.6 - version: 6.0.0-beta.6(v73oylu5qs3cavoyvfoft6xvce) + version: 6.0.0-beta.6(heatisv4cnelp6dhhtbupd5w6i) '@mui/icons-material': - specifier: ^5.16.5 - version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/lab': specifier: ^5.0.0-alpha.173 - version: 5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': - specifier: ^5.16.4 - version: 5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@types/react@18.3.3)(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../packages/x-charts/build @@ -719,13 +719,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-charts-vendor': specifier: workspace:* version: link:../x-charts-vendor @@ -781,13 +781,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../x-charts/build @@ -963,13 +963,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-internals': specifier: workspace:* version: link:../x-internals/build @@ -1019,10 +1019,10 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/icons-material': specifier: ^5.4.1 - version: 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-premium': specifier: workspace:* version: link:../x-data-grid-premium/build @@ -1060,13 +1060,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-data-grid': specifier: workspace:* version: link:../x-data-grid/build @@ -1128,13 +1128,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-data-grid': specifier: workspace:* version: link:../x-data-grid/build @@ -1187,13 +1187,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@types/react-transition-group': specifier: ^4.4.11 version: 4.4.11 @@ -1270,13 +1270,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-date-pickers': specifier: workspace:* version: link:../x-date-pickers/build @@ -1340,8 +1340,8 @@ importers: specifier: ^7.25.0 version: 7.25.0 '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) react: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1 @@ -1360,8 +1360,8 @@ importers: specifier: ^7.25.0 version: 7.25.0 '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) react: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1 @@ -1387,13 +1387,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-internals': specifier: workspace:* version: link:../x-internals/build @@ -1440,13 +1440,13 @@ importers: version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': - specifier: ^5.16.5 - version: 5.16.5(@types/react@18.3.3)(react@18.3.1) + specifier: ^5.16.6 + version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/x-internals': specifier: workspace:* version: link:../x-internals/build @@ -1498,8 +1498,8 @@ importers: specifier: ^11.13.0 version: 11.13.0(@types/react@18.3.3)(react@18.3.1) '@mui/material': - specifier: ^5.16.5 - version: 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../packages/x-charts/build @@ -2954,8 +2954,8 @@ packages: '@types/react': optional: true - '@mui/core-downloads-tracker@5.16.5': - resolution: {integrity: sha512-ziFn1oPm6VjvHQcdGcAO+fXvOQEgieIj0BuSqcltFU+JXIxjPdVYNTdn2HU7/Ak5Gabk6k2u7+9PV7oZ6JT5sA==} + '@mui/core-downloads-tracker@5.16.7': + resolution: {integrity: sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==} '@mui/docs@6.0.0-beta.6': resolution: {integrity: sha512-q5v8dqbtI8eWzjMv/AcASSI2PGMPq/nF8Z4gzi2S+jjFcAH/4MoknhQUReLxGW+6DaCuPfSNDtcvxIjQ9mrJ3A==} @@ -2974,8 +2974,8 @@ packages: '@types/react': optional: true - '@mui/icons-material@5.16.5': - resolution: {integrity: sha512-bn88xxU/J9UV0s6+eutq7o3TTOrOlbCX+KshFb8kxgIxJZZfYz3JbAXVMivvoMF4Md6jCVUzM9HEkf4Ajab4tw==} + '@mui/icons-material@5.16.7': + resolution: {integrity: sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -3035,8 +3035,8 @@ packages: '@types/react': optional: true - '@mui/material-nextjs@5.16.4': - resolution: {integrity: sha512-m2fY/bdfvpUXkjv2k5cwqd42FJZ8QRuZ1MoWt6RW480yIVi4ZRFpccBnJjiC4rXIeslmd/jizHi65Hbz/L/AKQ==} + '@mui/material-nextjs@5.16.6': + resolution: {integrity: sha512-Y64ybP5Pmy+GCUcu3SuMnc25CqFwBQkRn6XNXyhvc1mhR48Iq0oFKjoO5ncqfhm58OwPClIRW2tecP/PTdGNJw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/cache': ^11.11.0 @@ -3053,8 +3053,8 @@ packages: '@types/react': optional: true - '@mui/material@5.16.5': - resolution: {integrity: sha512-eQrjjg4JeczXvh/+8yvJkxWIiKNHVptB/AqpsKfZBWp5mUD5U3VsjODMuUl1K2BSq0omV3CiO/mQmWSSMKSmaA==} + '@mui/material@5.16.7': + resolution: {integrity: sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3075,8 +3075,8 @@ packages: version: 6.0.0-beta.5 engines: {pnpm: 9.6.0} - '@mui/private-theming@5.16.5': - resolution: {integrity: sha512-CSLg0YkpDqg0aXOxtjo3oTMd3XWMxvNb5d0v4AYVqwOltU8q6GvnZjhWyCLjGSCrcgfwm6/VDjaKLPlR14wxIA==} + '@mui/private-theming@5.16.6': + resolution: {integrity: sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -3085,8 +3085,8 @@ packages: '@types/react': optional: true - '@mui/styled-engine@5.16.4': - resolution: {integrity: sha512-0+mnkf+UiAmTVB8PZFqOhqf729Yh0Cxq29/5cA3VAyDVTRIUUQ8FXQhiAhUIbijFmM72rY80ahFPXIm4WDbzcA==} + '@mui/styled-engine@5.16.6': + resolution: {integrity: sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -3098,8 +3098,8 @@ packages: '@emotion/styled': optional: true - '@mui/styles@5.16.5': - resolution: {integrity: sha512-E6h6Qd1FNsKozeBQCVpfSngxgigkP5+N8IKiD97ItKaEvaCmYg4/akLVj57Y9tj9OloZxqL8IQS80hw5zF19PA==} + '@mui/styles@5.16.7': + resolution: {integrity: sha512-FfXhHP/2MlqH+vLs2tIHMeCChmqSRgkOALVNLKkPrDsvtoq5J8OraOutCn1scpvRjr9mO8ZhW6jKx2t/vUDxtQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -3108,8 +3108,8 @@ packages: '@types/react': optional: true - '@mui/system@5.16.5': - resolution: {integrity: sha512-uzIUGdrWddUx1HPxW4+B2o4vpgKyRxGe/8BxbfXVDPNPHX75c782TseoCnR/VyfnZJfqX87GcxDmnZEE1c031g==} + '@mui/system@5.16.7': + resolution: {integrity: sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3132,8 +3132,8 @@ packages: '@types/react': optional: true - '@mui/utils@5.16.5': - resolution: {integrity: sha512-CwhcA9y44XwK7k2joL3Y29mRUnoBt+gOZZdGyw7YihbEwEErJYBtDwbZwVgH68zAljGe/b+Kd5bzfl63Gi3R2A==} + '@mui/utils@5.16.6': + resolution: {integrity: sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -11787,7 +11787,7 @@ snapshots: '@babel/runtime': 7.25.0 '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 @@ -11796,16 +11796,16 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/core-downloads-tracker@5.16.5': {} + '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0-beta.6(v73oylu5qs3cavoyvfoft6xvce)': + '@mui/docs@6.0.0-beta.6(heatisv4cnelp6dhhtbupd5w6i)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/icons-material': 5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': 1.0.10 - '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) chai: 5.1.1 clipboard-copy: 4.0.1 clsx: 2.1.1 @@ -11817,10 +11817,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/icons-material@5.16.5(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.3.3 @@ -11889,10 +11889,10 @@ snapshots: dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/core-downloads-tracker': 5.16.5 - '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/core-downloads-tracker': 5.16.7 + '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -11902,14 +11902,14 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 @@ -11919,10 +11919,10 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/material-nextjs@5.16.4(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/material': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: @@ -11930,13 +11930,13 @@ snapshots: '@emotion/server': 11.11.0 '@types/react': 18.3.3 - '@mui/material@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/core-downloads-tracker': 5.16.5 - '@mui/system': 5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/core-downloads-tracker': 5.16.7 + '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 @@ -11965,16 +11965,16 @@ snapshots: - supports-color - utf-8-validate - '@mui/private-theming@5.16.5(@types/react@18.3.3)(react@18.3.1)': + '@mui/private-theming@5.16.6(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 optionalDependencies: '@types/react': 18.3.3 - '@mui/styled-engine@5.16.4(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 @@ -11985,13 +11985,13 @@ snapshots: '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/styles@5.16.5(@types/react@18.3.3)(react@18.3.1)': + '@mui/styles@5.16.7(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/hash': 0.9.2 - '@mui/private-theming': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/private-theming': 5.16.6(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 csstype: 3.1.3 hoist-non-react-statics: 3.3.2 @@ -12008,13 +12008,13 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/system@5.16.5(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/system@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/private-theming': 5.16.5(@types/react@18.3.3)(react@18.3.1) - '@mui/styled-engine': 5.16.4(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@mui/private-theming': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.5(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -12028,7 +12028,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/utils@5.16.5(@types/react@18.3.3)(react@18.3.1)': + '@mui/utils@5.16.6(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/types': 7.2.15(@types/react@18.3.3) diff --git a/test/package.json b/test/package.json index ce1c2c0d9c65..036e30910bc0 100644 --- a/test/package.json +++ b/test/package.json @@ -9,7 +9,7 @@ "@babel/runtime": "^7.25.0", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.0", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-pro": "workspace:*", "@mui/x-date-pickers": "workspace:*", From 7aaecf5fb666e05bd16b8f1ebcac37cdc1d27fd6 Mon Sep 17 00:00:00 2001 From: Armin Mehinovic <4390250+arminmeh@users.noreply.github.com> Date: Wed, 21 Aug 2024 21:30:20 +0200 Subject: [PATCH 809/912] [DataGridPremium] Fix `onCellSelectionModelChange` not triggered when additional cell range is selected (#14199) --- .../cellSelection/useGridCellSelection.ts | 2 +- .../cellSelection.DataGridPremium.test.tsx | 39 ++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts b/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts index 5c4e3020ba61..d36c314e6292 100644 --- a/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts +++ b/packages/x-data-grid-premium/src/hooks/features/cellSelection/useGridCellSelection.ts @@ -146,7 +146,7 @@ export const useGridCellSelection = ( const rowsInRange = visibleRows.rows.slice(finalStartRowIndex, finalEndRowIndex + 1); const columnsInRange = visibleColumns.slice(finalStartColumnIndex, finalEndColumnIndex + 1); - const newModel = keepOtherSelected ? apiRef.current.getCellSelectionModel() : {}; + const newModel = keepOtherSelected ? { ...apiRef.current.getCellSelectionModel() } : {}; rowsInRange.forEach((row) => { if (!newModel[row.id]) { diff --git a/packages/x-data-grid-premium/src/tests/cellSelection.DataGridPremium.test.tsx b/packages/x-data-grid-premium/src/tests/cellSelection.DataGridPremium.test.tsx index 09efe492a468..1918719266a1 100644 --- a/packages/x-data-grid-premium/src/tests/cellSelection.DataGridPremium.test.tsx +++ b/packages/x-data-grid-premium/src/tests/cellSelection.DataGridPremium.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { stub, SinonStub } from 'sinon'; +import { stub, SinonStub, spy } from 'sinon'; import { expect } from 'chai'; import { spyApi, getCell, grid } from 'test/utils/helperFn'; import { createRenderer, fireEvent, act, screen } from '@mui/internal-test-utils'; @@ -240,6 +240,43 @@ describe(' - Cell selection', () => { }); }); + describe('onCellSelectionModelChange', () => { + it('should update the selection state when a cell is selected', () => { + const onCellSelectionModelChange = spy(); + render( + , + ); + fireEvent.click(getCell(0, 0)); + + expect(onCellSelectionModelChange.callCount).to.equal(1); + expect(onCellSelectionModelChange.lastCall.args[0]).to.deep.equal({ '0': { id: true } }); + }); + + // Context: https://github.com/mui/mui-x/issues/14184 + it('should add the new cell selection range to the existing state', () => { + const onCellSelectionModelChange = spy(); + render( + , + ); + + // Add a new cell range to the selection + fireEvent.mouseDown(getCell(2, 0), { ctrlKey: true }); + fireEvent.mouseOver(getCell(3, 0), { ctrlKey: true }); + + expect(onCellSelectionModelChange.lastCall.args[0]).to.deep.equal({ + '0': { id: true }, + '2': { id: true }, + '3': { id: true }, + }); + }); + }); + describe('apiRef', () => { describe('selectCellRange', () => { it('should select all cells within the given arguments if end > start', () => { From 9d24a7b235067f5c273fc691c8c2bece94eaa889 Mon Sep 17 00:00:00 2001 From: Pascal Corpet Date: Thu, 22 Aug 2024 10:35:50 +0200 Subject: [PATCH 810/912] [data grid] Use readonly array result for getTreeDataPath (#11743) Co-authored-by: Rom Grk --- packages/x-data-grid-pro/src/models/dataGridProProps.ts | 2 +- .../x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-data-grid-pro/src/models/dataGridProProps.ts b/packages/x-data-grid-pro/src/models/dataGridProProps.ts index 4d611b57ea06..1af6cbe61f58 100644 --- a/packages/x-data-grid-pro/src/models/dataGridProProps.ts +++ b/packages/x-data-grid-pro/src/models/dataGridProProps.ts @@ -153,7 +153,7 @@ interface DataGridProRegularProps { * @param {R} row The row from which we want the path. * @returns {string[]} The path to the row. */ - getTreeDataPath?: (row: R) => string[]; + getTreeDataPath?: (row: R) => readonly string[]; } export interface DataGridProPropsWithoutDefaultValue diff --git a/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx index a4c2c120e273..61a722c634f8 100644 --- a/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/treeData.DataGridPro.test.tsx @@ -216,7 +216,7 @@ describe(' - Tree data', () => { ]); setProps({ getTreeDataPath: (row) => [...row.name.split('.').reverse()], - } as DataGridProProps); + } as Pick); expect(getColumnValues(1)).to.deep.equal([ 'A', 'A.A', From 64fbda1d4694438ed2b176310b56115c5110368a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 12:03:57 +0300 Subject: [PATCH 811/912] Bump @mui/monorepo digest to 55bea65 (#14252) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- docs/.link-check-errors.txt | 2 - package.json | 2 +- pnpm-lock.yaml | 101 +++++++++++++++--------------------- 3 files changed, 44 insertions(+), 61 deletions(-) diff --git a/docs/.link-check-errors.txt b/docs/.link-check-errors.txt index a14a38751967..cbb0918c2363 100644 --- a/docs/.link-check-errors.txt +++ b/docs/.link-check-errors.txt @@ -1,7 +1,5 @@ Broken links found by `docs:link-check` that exist: -- https://mui.com/material-ui/customization/css-theme-variables/configuration/#advanced-configuration -- https://mui.com/material-ui/customization/css-theme-variables/configuration/#changing-variable-prefixes - https://mui.com/material-ui/customization/theme-components/#creating-new-component-variants - https://mui.com/material-ui/customization/theme-components/#overrides-based-on-props - https://mui.com/material-ui/react-grid2/#whats-changed diff --git a/package.json b/package.json index a6aacfe942cd..8364de9bf3d1 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@mui/internal-markdown": "^1.0.10", "@mui/internal-test-utils": "^1.0.8", "@mui/material": "^5.16.7", - "@mui/monorepo": "github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4", + "@mui/monorepo": "github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa", "@mui/utils": "^5.16.6", "@next/eslint-plugin-next": "14.2.5", "@octokit/plugin-retry": "^7.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac7d67e816bc..e18a3204c28a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': - specifier: github:mui/material-ui#0acfe665034fdf4578156ebaf4372713cf23bce4 - version: https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4(encoding@0.1.13) + specifier: github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa + version: https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -2741,8 +2741,8 @@ packages: resolution: {integrity: sha512-9KMSDtJ/sIov+5pcH+CAfiJXSiuYgN0KLKQFg0HHWR2DwcjGYkcbmhoZcWsaOWOqq4kihN1l7wX91UoRxxKKTQ==} engines: {node: '>=18.0.0'} - '@googleapis/sheets@8.0.0': - resolution: {integrity: sha512-EwLC+bMLTz3n2EDJMhMdrNR+aTxDBPpcq3k6Ibc4eKrp8UbytNAEB0VgfQFOGJN7+BTCcjiojt08O/cwn+YnHg==} + '@googleapis/sheets@9.3.0': + resolution: {integrity: sha512-JfL3TWk//ZlVEWr73rrMuxQyQtAc4/mgvEUXu3o2jvAYzf5euzL25P3Yl12T67v5xJMm36fjdv/snuANGPQfGQ==} engines: {node: '>=12.0.0'} '@humanwhocodes/config-array@0.11.14': @@ -3070,10 +3070,10 @@ packages: '@types/react': optional: true - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4': - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4} - version: 6.0.0-beta.5 - engines: {pnpm: 9.6.0} + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa': + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa} + version: 6.0.0-rc.0 + engines: {pnpm: 9.7.1} '@mui/private-theming@5.16.6': resolution: {integrity: sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==} @@ -3755,8 +3755,8 @@ packages: '@sinonjs/text-encoding@0.7.2': resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} - '@slack/bolt@3.19.0': - resolution: {integrity: sha512-P5Yup/PbO8sE5xsuqkBkpSPkxEkfWZ6yo5ZlmBGxRhhoU1usUSU2w0bgZoiDX4WFm7ZX+3x2Dyf4VMa9kzfmVQ==} + '@slack/bolt@3.21.1': + resolution: {integrity: sha512-cql+f8DypIE96mgFTREslP1DfsTUMyVR76whdepcQ1BpP2vXO1TZJxwJHnDKcnJ+NTg8KNGfPIjDfHZUMETCKw==} engines: {node: '>=12.13.0', npm: '>=6.12.0'} '@slack/logger@3.0.0': @@ -3767,20 +3767,20 @@ packages: resolution: {integrity: sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==} engines: {node: '>= 18', npm: '>= 8.6.0'} - '@slack/oauth@2.6.2': - resolution: {integrity: sha512-2R3MyB/R63hTRXzk5J6wcui59TBxXzhk+Uh2/Xu3Wp3O4pXg/BNucQhP/DQbL/ScVhLvFtMXirLrKi0Yo5gIVw==} + '@slack/oauth@2.6.3': + resolution: {integrity: sha512-1amXs6xRkJpoH6zSgjVPgGEJXCibKNff9WNDijcejIuVy1HFAl1adh7lehaGNiHhTWfQkfKxBiF+BGn56kvoFw==} engines: {node: '>=12.13.0', npm: '>=6.12.0'} - '@slack/socket-mode@1.3.3': - resolution: {integrity: sha512-vN3zG4woRtf2Ut6rZgRW6G/Oe56uLMlnz39I08Q7DOvVfB+1MmDbNv0PNOiFgujdKXJR+bXF41/F/VvryXcqlw==} + '@slack/socket-mode@1.3.6': + resolution: {integrity: sha512-G+im7OP7jVqHhiNSdHgv2VVrnN5U7KY845/5EZimZkrD4ZmtV0P3BiWkgeJhPtdLuM7C7i6+M6h6Bh+S4OOalA==} engines: {node: '>=12.13.0', npm: '>=6.12.0'} '@slack/types@2.11.0': resolution: {integrity: sha512-UlIrDWvuLaDly3QZhCPnwUSI/KYmV1N9LyhuH6EDKCRS1HWZhyTG3Ja46T3D0rYfqdltKYFXbJSSRPwZpwO0cQ==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - '@slack/web-api@6.12.0': - resolution: {integrity: sha512-RPw6F8rWfGveGkZEJ4+4jUin5iazxRK2q3FpQDz/FvdgzC3nZmPyLx8WRzc6nh0w3MBjEbphNnp2VZksfhpBIQ==} + '@slack/web-api@6.12.1': + resolution: {integrity: sha512-dXHyHkvvziqkDdZlPRnUl/H2uvnUmdJ5B7kxiH1HIgHe18vcbUk1zjU/XCZgJFhxGeq5Zwa95Z+SbNW9mbRhtw==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} '@socket.io/component-emitter@3.1.0': @@ -4079,9 +4079,6 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/p-queue@2.3.2': - resolution: {integrity: sha512-eKAv5Ql6k78dh3ULCsSBxX6bFNuGjTmof5Q/T6PiECDq0Yf8IIn46jCyp3RJvCi8owaEmm3DZH1PEImjBMd/vQ==} - '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -4692,8 +4689,8 @@ packages: resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} - axios@1.7.2: - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + axios@1.7.4: + resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} @@ -6023,6 +6020,9 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -8075,10 +8075,6 @@ packages: override-require@1.1.1: resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==} - p-cancelable@1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - p-event@5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8151,10 +8147,6 @@ packages: resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} engines: {node: '>=8'} - p-queue@2.4.2: - resolution: {integrity: sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==} - engines: {node: '>=4'} - p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} @@ -10258,7 +10250,7 @@ snapshots: '@argos-ci/core@2.4.1': dependencies: '@argos-ci/util': 2.1.0 - axios: 1.7.2(debug@4.3.5) + axios: 1.7.4(debug@4.3.5) convict: 6.2.4 debug: 4.3.5(supports-color@8.1.1) fast-glob: 3.3.2 @@ -11222,7 +11214,7 @@ snapshots: '@codspeed/core@3.1.1': dependencies: - axios: 1.7.2(debug@4.3.5) + axios: 1.7.4(debug@4.3.5) find-up: 6.3.0 form-data: 4.0.0 node-gyp-build: 4.8.1 @@ -11512,7 +11504,7 @@ snapshots: '@gitbeaker/core': 38.12.1 '@gitbeaker/requester-utils': 38.12.1 - '@googleapis/sheets@8.0.0(encoding@0.1.13)': + '@googleapis/sheets@9.3.0(encoding@0.1.13)': dependencies: googleapis-common: 7.0.1(encoding@0.1.13) transitivePeerDependencies: @@ -11951,11 +11943,11 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/0acfe665034fdf4578156ebaf4372713cf23bce4(encoding@0.1.13)': + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13)': dependencies: - '@googleapis/sheets': 8.0.0(encoding@0.1.13) + '@googleapis/sheets': 9.3.0(encoding@0.1.13) '@netlify/functions': 2.8.1 - '@slack/bolt': 3.19.0 + '@slack/bolt': 3.21.1 execa: 9.3.1 google-auth-library: 9.13.0(encoding@0.1.13) transitivePeerDependencies: @@ -12737,17 +12729,17 @@ snapshots: '@sinonjs/text-encoding@0.7.2': {} - '@slack/bolt@3.19.0': + '@slack/bolt@3.21.1': dependencies: '@slack/logger': 4.0.0 - '@slack/oauth': 2.6.2 - '@slack/socket-mode': 1.3.3 + '@slack/oauth': 2.6.3 + '@slack/socket-mode': 1.3.6 '@slack/types': 2.11.0 - '@slack/web-api': 6.12.0 + '@slack/web-api': 6.12.1 '@types/express': 4.17.21 '@types/promise.allsettled': 1.0.6 '@types/tsscmp': 1.0.2 - axios: 1.7.2(debug@4.3.5) + axios: 1.7.4(debug@4.3.5) express: 4.18.2 path-to-regexp: 6.2.1 please-upgrade-node: 3.2.0 @@ -12768,10 +12760,10 @@ snapshots: dependencies: '@types/node': 18.19.45 - '@slack/oauth@2.6.2': + '@slack/oauth@2.6.3': dependencies: '@slack/logger': 3.0.0 - '@slack/web-api': 6.12.0 + '@slack/web-api': 6.12.1 '@types/jsonwebtoken': 8.5.9 '@types/node': 18.19.45 jsonwebtoken: 9.0.2 @@ -12779,17 +12771,14 @@ snapshots: transitivePeerDependencies: - debug - '@slack/socket-mode@1.3.3': + '@slack/socket-mode@1.3.6': dependencies: '@slack/logger': 3.0.0 - '@slack/web-api': 6.12.0 + '@slack/web-api': 6.12.1 '@types/node': 18.19.45 - '@types/p-queue': 2.3.2 '@types/ws': 7.4.7 - eventemitter3: 3.1.2 + eventemitter3: 5.0.1 finity: 0.5.4 - p-cancelable: 1.1.0 - p-queue: 2.4.2 ws: 7.5.9 transitivePeerDependencies: - bufferutil @@ -12798,13 +12787,13 @@ snapshots: '@slack/types@2.11.0': {} - '@slack/web-api@6.12.0': + '@slack/web-api@6.12.1': dependencies: '@slack/logger': 3.0.0 '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 '@types/node': 18.19.45 - axios: 1.7.2(debug@4.3.5) + axios: 1.7.4(debug@4.3.5) eventemitter3: 3.1.2 form-data: 2.5.1 is-electron: 2.2.2 @@ -13108,8 +13097,6 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/p-queue@2.3.2': {} - '@types/parse-json@4.0.2': {} '@types/promise.allsettled@1.0.6': {} @@ -13868,7 +13855,7 @@ snapshots: axe-core@4.9.1: {} - axios@1.7.2(debug@4.3.5): + axios@1.7.4(debug@4.3.5): dependencies: follow-redirects: 1.15.6(debug@4.3.5) form-data: 4.0.0 @@ -15498,6 +15485,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} + events@3.3.0: {} exceljs@4.4.0: @@ -17825,7 +17814,7 @@ snapshots: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.7.2(debug@4.3.5) + axios: 1.7.4(debug@4.3.5) chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -18036,8 +18025,6 @@ snapshots: override-require@1.1.1: {} - p-cancelable@1.1.0: {} - p-event@5.0.1: dependencies: p-timeout: 5.1.0 @@ -18102,8 +18089,6 @@ snapshots: p-pipe@3.1.0: {} - p-queue@2.4.2: {} - p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 From c94b26dae2a4c877534e6a219dc54ea517f54c77 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 22 Aug 2024 16:11:01 +0500 Subject: [PATCH 812/912] [DataGrid] Introduce selectors with arguments (#14236) --- .../GridDataSourceTreeDataGroupingCell.tsx | 11 +- .../dataSource/gridDataSourceSelector.ts | 13 +- .../src/hooks/utils/useGridSelector.ts | 75 +++++++- packages/x-data-grid/src/internals/index.ts | 8 +- .../x-data-grid/src/utils/createSelector.ts | 162 ++++++++++++++++++ 5 files changed, 262 insertions(+), 7 deletions(-) diff --git a/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx b/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx index eedd1ea4f7d3..79e002211adf 100644 --- a/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx +++ b/packages/x-data-grid-pro/src/components/GridDataSourceTreeDataGroupingCell.tsx @@ -8,12 +8,17 @@ import { GridDataSourceGroupNode, useGridSelector, } from '@mui/x-data-grid'; +import { useGridSelectorV8 } from '@mui/x-data-grid/internals'; import CircularProgress from '@mui/material/CircularProgress'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { useGridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext'; import { DataGridProProcessedProps } from '../models/dataGridProProps'; import { GridPrivateApiPro } from '../models/gridApiPro'; import { GridStatePro } from '../models/gridStatePro'; +import { + gridDataSourceErrorSelector, + gridDataSourceLoadingIdSelector, +} from '../hooks/features/dataSource/gridDataSourceSelector'; type OwnerState = DataGridProProcessedProps; @@ -50,10 +55,8 @@ function GridTreeDataGroupingCellIcon(props: GridTreeDataGroupingCellIconProps) const classes = useUtilityClasses(rootProps); const { rowNode, id, field, descendantCount } = props; - const loadingSelector = (state: GridStatePro) => state.dataSource.loading[id] ?? false; - const errorSelector = (state: GridStatePro) => state.dataSource.errors[id]; - const isDataLoading = useGridSelector(apiRef, loadingSelector); - const error = useGridSelector(apiRef, errorSelector); + const isDataLoading = useGridSelectorV8(apiRef, gridDataSourceLoadingIdSelector, id); + const error = useGridSelectorV8(apiRef, gridDataSourceErrorSelector, id); const handleClick = (event: React.MouseEvent) => { if (!rowNode.childrenExpanded) { diff --git a/packages/x-data-grid-pro/src/hooks/features/dataSource/gridDataSourceSelector.ts b/packages/x-data-grid-pro/src/hooks/features/dataSource/gridDataSourceSelector.ts index a7bee9eec1d9..6b6aa5a9404d 100644 --- a/packages/x-data-grid-pro/src/hooks/features/dataSource/gridDataSourceSelector.ts +++ b/packages/x-data-grid-pro/src/hooks/features/dataSource/gridDataSourceSelector.ts @@ -3,8 +3,9 @@ import { gridFilterModelSelector, gridSortModelSelector, gridPaginationModelSelector, + GridRowId, } from '@mui/x-data-grid'; -import { createSelector } from '@mui/x-data-grid/internals'; +import { createSelector, createSelectorV8 } from '@mui/x-data-grid/internals'; import { GridStatePro } from '../../../models/gridStatePro'; const computeStartEnd = (paginationModel: GridPaginationModel) => { @@ -37,7 +38,17 @@ export const gridDataSourceLoadingSelector = createSelector( (dataSource) => dataSource.loading, ); +export const gridDataSourceLoadingIdSelector = createSelectorV8( + gridDataSourceStateSelector, + (dataSource, id: GridRowId) => dataSource.loading[id] ?? false, +); + export const gridDataSourceErrorsSelector = createSelector( gridDataSourceStateSelector, (dataSource) => dataSource.errors, ); + +export const gridDataSourceErrorSelector = createSelectorV8( + gridDataSourceStateSelector, + (dataSource, id: GridRowId) => dataSource.errors[id], +); diff --git a/packages/x-data-grid/src/hooks/utils/useGridSelector.ts b/packages/x-data-grid/src/hooks/utils/useGridSelector.ts index 3e8720b9689d..470c7a554db6 100644 --- a/packages/x-data-grid/src/hooks/utils/useGridSelector.ts +++ b/packages/x-data-grid/src/hooks/utils/useGridSelector.ts @@ -1,10 +1,11 @@ import * as React from 'react'; import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare'; import type { GridApiCommon } from '../../models/api/gridApiCommon'; -import { OutputSelector } from '../../utils/createSelector'; +import { OutputSelector, OutputSelectorV8 } from '../../utils/createSelector'; import { useLazyRef } from './useLazyRef'; import { useOnMount } from './useOnMount'; import { warnOnce } from '../../internals/utils/warning'; +import type { GridCoreApi } from '../../models/api/gridCoreApi'; function isOutputSelector( selector: any, @@ -12,6 +13,11 @@ function isOutputSelector( return selector.acceptsApiRef; } +type Selector = + | ((state: Api['state']) => T) + | OutputSelectorV8; + +// TODO v8: Remove this function function applySelector( apiRef: React.MutableRefObject, selector: ((state: Api['state']) => T) | OutputSelector, @@ -22,11 +28,25 @@ function applySelector( return selector(apiRef.current.state); } +// TODO v8: Rename this function to `applySelector` +function applySelectorV8( + apiRef: React.MutableRefObject, + selector: Selector, + args: Args, + instanceId: GridCoreApi['instanceId'], +) { + if (isOutputSelector(selector)) { + return selector(apiRef, args); + } + return selector(apiRef.current.state, instanceId); +} + const defaultCompare = Object.is; export const objectShallowCompare = fastObjectShallowCompare; const createRefs = () => ({ state: null, equals: null, selector: null }) as any; +// TODO v8: Remove this function export const useGridSelector = ( apiRef: React.MutableRefObject, selector: ((state: Api['state']) => T) | OutputSelector, @@ -72,3 +92,56 @@ export const useGridSelector = ( return state; }; + +// TODO v8: Rename this function to `useGridSelector` +export const useGridSelectorV8 = ( + apiRef: React.MutableRefObject, + selector: Selector, + args: Args = undefined as Args, + equals: (a: T, b: T) => boolean = defaultCompare, +) => { + if (process.env.NODE_ENV !== 'production') { + if (!apiRef.current.state) { + warnOnce([ + 'MUI X: `useGridSelector` has been called before the initialization of the state.', + 'This hook can only be used inside the context of the grid.', + ]); + } + } + + const refs = useLazyRef< + { + state: T; + equals: typeof equals; + selector: typeof selector; + }, + never + >(createRefs); + const didInit = refs.current.selector !== null; + + const [state, setState] = React.useState( + // We don't use an initialization function to avoid allocations + (didInit ? null : applySelectorV8(apiRef, selector, args, apiRef.current.instanceId)) as T, + ); + + refs.current.state = state; + refs.current.equals = equals; + refs.current.selector = selector; + + useOnMount(() => { + return apiRef.current.store.subscribe(() => { + const newState = applySelectorV8( + apiRef, + refs.current.selector, + args, + apiRef.current.instanceId, + ) as T; + if (!refs.current.equals(refs.current.state, newState)) { + refs.current.state = newState; + setState(newState); + } + }); + }); + + return state; +}; diff --git a/packages/x-data-grid/src/internals/index.ts b/packages/x-data-grid/src/internals/index.ts index 1bb8284e5a27..864b5b589013 100644 --- a/packages/x-data-grid/src/internals/index.ts +++ b/packages/x-data-grid/src/internals/index.ts @@ -139,7 +139,13 @@ export type * from '../models/props/DataGridProps'; export type * from '../models/gridDataSource'; export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils'; export * from '../utils/createControllablePromise'; -export { createSelector, createSelectorMemoized } from '../utils/createSelector'; +export { + createSelector, + createSelectorV8, + createSelectorMemoized, + createSelectorMemoizedV8, +} from '../utils/createSelector'; +export { useGridSelectorV8 } from '../hooks/utils/useGridSelector'; export { gridRowGroupsToFetchSelector } from '../hooks/features/rows/gridRowsSelector'; export { findParentElementFromClassName, diff --git a/packages/x-data-grid/src/utils/createSelector.ts b/packages/x-data-grid/src/utils/createSelector.ts index 647ed4283853..a9a9bc69010f 100644 --- a/packages/x-data-grid/src/utils/createSelector.ts +++ b/packages/x-data-grid/src/utils/createSelector.ts @@ -5,12 +5,23 @@ import { warnOnce } from '../internals/utils/warning'; type CacheKey = { id: number }; +// TODO v8: Remove this type export interface OutputSelector { (apiRef: React.MutableRefObject<{ state: State; instanceId: GridCoreApi['instanceId'] }>): Result; (state: State, instanceId: GridCoreApi['instanceId']): Result; acceptsApiRef: boolean; } +// TODO v8: Rename this type to `OutputSelector` +export interface OutputSelectorV8 { + ( + apiRef: React.MutableRefObject<{ state: State; instanceId: GridCoreApi['instanceId'] }>, + args: Args, + ): Result; + (state: State, instanceId: GridCoreApi['instanceId']): Result; + acceptsApiRef: boolean; +} + type StateFromSelector = T extends (first: infer F, ...args: any[]) => any ? F extends { state: infer F2 } ? F2 @@ -26,16 +37,38 @@ type StateFromSelectorList = Selectors extends : StateFromSelectorList : {}; +// TODO v8: Remove this type type SelectorArgs>, Result> = // Input selectors as a separate array | [selectors: [...Selectors], combiner: (...args: SelectorResultArray) => Result] // Input selectors as separate inline arguments | [...Selectors, (...args: SelectorResultArray) => Result]; +type SelectorResultArrayWithArgs>, Args> = [ + ...SelectorResultArray, + Args, +]; + +// TODO v8: Rename this type to `SelectorArgs` +type SelectorArgsV8>, Args, Result> = + // Input selectors as a separate array + | [ + selectors: [...Selectors], + combiner: (...args: SelectorResultArrayWithArgs) => Result, + ] + // Input selectors as separate inline arguments + | [...Selectors, (...args: SelectorResultArrayWithArgs) => Result]; + +// TODO v8: Remove this type type CreateSelectorFunction = >, Result>( ...items: SelectorArgs ) => OutputSelector, Result>; +// TODO v8: Rename this type to `CreateSelectorFunction` +type CreateSelectorFunctionV8 = >, Args, Result>( + ...items: SelectorArgsV8 +) => OutputSelectorV8, Args, Result>; + const cache = new WeakMap>(); function checkIsAPIRef(value: any) { @@ -44,6 +77,7 @@ function checkIsAPIRef(value: any) { const DEFAULT_INSTANCE_ID = { id: 'default' }; +// TODO v8: Remove this function export const createSelector = (( a: Function, b: Function, @@ -125,6 +159,89 @@ export const createSelector = (( return selector; }) as unknown as CreateSelectorFunction; +// TODO v8: Rename this function to `createSelector` +export const createSelectorV8 = (( + a: Function, + b: Function, + c?: Function, + d?: Function, + e?: Function, + f?: Function, + ...other: any[] +) => { + if (other.length > 0) { + throw new Error('Unsupported number of selectors'); + } + + let selector: any; + + if (a && b && c && d && e && f) { + selector = (stateOrApiRef: any, args: any, instanceIdParam: any) => { + const isAPIRef = checkIsAPIRef(stateOrApiRef); + const instanceId = + instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID); + const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; + const va = a(state, args, instanceId); + const vb = b(state, args, instanceId); + const vc = c(state, args, instanceId); + const vd = d(state, args, instanceId); + const ve = e(state, args, instanceId); + return f(va, vb, vc, vd, ve, args); + }; + } else if (a && b && c && d && e) { + selector = (stateOrApiRef: any, args: any, instanceIdParam: any) => { + const isAPIRef = checkIsAPIRef(stateOrApiRef); + const instanceId = + instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID); + const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; + const va = a(state, args, instanceId); + const vb = b(state, args, instanceId); + const vc = c(state, args, instanceId); + const vd = d(state, args, instanceId); + return e(va, vb, vc, vd, args); + }; + } else if (a && b && c && d) { + selector = (stateOrApiRef: any, args: any, instanceIdParam: any) => { + const isAPIRef = checkIsAPIRef(stateOrApiRef); + const instanceId = + instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID); + const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; + const va = a(state, args, instanceId); + const vb = b(state, args, instanceId); + const vc = c(state, args, instanceId); + return d(va, vb, vc, args); + }; + } else if (a && b && c) { + selector = (stateOrApiRef: any, args: any, instanceIdParam: any) => { + const isAPIRef = checkIsAPIRef(stateOrApiRef); + const instanceId = + instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID); + const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; + const va = a(state, args, instanceId); + const vb = b(state, args, instanceId); + return c(va, vb, args); + }; + } else if (a && b) { + selector = (stateOrApiRef: any, args: any, instanceIdParam: any) => { + const isAPIRef = checkIsAPIRef(stateOrApiRef); + const instanceId = + instanceIdParam ?? (isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID); + const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; + const va = a(state, args, instanceId); + return b(va, args); + }; + } else { + throw new Error('Missing arguments'); + } + + // We use this property to detect if the selector was created with createSelector + // or it's only a simple function the receives the state and returns part of it. + selector.acceptsApiRef = true; + + return selector; +}) as unknown as CreateSelectorFunctionV8; + +// TODO v8: Remove this function export const createSelectorMemoized: CreateSelectorFunction = (...args: any) => { const selector = (stateOrApiRef: any, instanceId?: any) => { const isAPIRef = checkIsAPIRef(stateOrApiRef); @@ -168,3 +285,48 @@ export const createSelectorMemoized: CreateSelectorFunction = (...args: any) => return selector; }; + +// TODO v8: Rename this function to `createSelectorMemoized` +export const createSelectorMemoizedV8: CreateSelectorFunctionV8 = (...args: any) => { + const selector = (stateOrApiRef: any, selectorArgs: any, instanceId?: any) => { + const isAPIRef = checkIsAPIRef(stateOrApiRef); + const cacheKey = isAPIRef + ? stateOrApiRef.current.instanceId + : (instanceId ?? DEFAULT_INSTANCE_ID); + const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef; + + if (process.env.NODE_ENV !== 'production') { + if (cacheKey.id === 'default') { + warnOnce([ + 'MUI X: A selector was called without passing the instance ID, which may impact the performance of the grid.', + 'To fix, call it with `apiRef`, for example `mySelector(apiRef)`, or pass the instance ID explicitly, for example `mySelector(state, apiRef.current.instanceId)`.', + ]); + } + } + + const cacheArgsInit = cache.get(cacheKey); + const cacheArgs = cacheArgsInit ?? new Map(); + const cacheFn = cacheArgs?.get(args); + + if (cacheArgs && cacheFn) { + // We pass the cache key because the called selector might have as + // dependency another selector created with this `createSelector`. + return cacheFn(state, selectorArgs, cacheKey); + } + + const fn = reselectCreateSelector(...args); + + if (!cacheArgsInit) { + cache.set(cacheKey, cacheArgs); + } + cacheArgs.set(args, fn); + + return fn(state, selectorArgs, cacheKey); + }; + + // We use this property to detect if the selector was created with createSelector + // or it's only a simple function the receives the state and returns part of it. + selector.acceptsApiRef = true; + + return selector; +}; From a270b3dad28c2dd39a3bdc3175492252e02d29d6 Mon Sep 17 00:00:00 2001 From: Arthur Suh Balduini <34691066+arthurbalduini@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:11:14 +0200 Subject: [PATCH 813/912] [TimePicker] Handle `Space` and `Enter` on `TimeClock` component (#14151) Co-authored-by: Arthur Balduini --- .../x-date-pickers/src/TimeClock/Clock.tsx | 5 +++ .../src/TimeClock/tests/TimeClock.test.tsx | 41 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/packages/x-date-pickers/src/TimeClock/Clock.tsx b/packages/x-date-pickers/src/TimeClock/Clock.tsx index f47484d497ec..d04f7c4f7ebe 100644 --- a/packages/x-date-pickers/src/TimeClock/Clock.tsx +++ b/packages/x-date-pickers/src/TimeClock/Clock.tsx @@ -332,6 +332,11 @@ export function Clock(inProps: ClockProps) handleValueChange(viewValue - keyboardControlStep, 'partial'); event.preventDefault(); break; + case 'Enter': + case ' ': + handleValueChange(viewValue, 'finish'); + event.preventDefault(); + break; default: // do nothing } diff --git a/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx b/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx index 5ecc40f8b19c..794aee81b6c9 100644 --- a/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx +++ b/packages/x-date-pickers/src/TimeClock/tests/TimeClock.test.tsx @@ -139,6 +139,47 @@ describe('', () => { expect(reason).to.equal('partial'); }); + [ + { + keyName: 'Enter', + keyValue: 'Enter', + }, + { + keyName: 'Space', + keyValue: ' ', + }, + ].forEach(({ keyName, keyValue }) => { + it(`sets value on ${keyName} press`, () => { + const handleChange = spy(); + render( + , + ); + const listbox = screen.getByRole('listbox'); + + fireEvent.keyDown(listbox, { key: 'ArrowDown' }); + fireEvent.keyDown(listbox, { key: keyValue }); + + expect(handleChange.callCount).to.equal(2); + let [newDate, reason] = handleChange.lastCall.args; + + expect(adapterToUse.getHours(newDate)).to.equal(3); + expect(reason).to.equal('partial'); + + fireEvent.keyDown(listbox, { key: 'ArrowUp' }); + fireEvent.keyDown(listbox, { key: keyValue }); + + expect(handleChange.callCount).to.equal(4); + [newDate, reason] = handleChange.lastCall.args; + + expect(adapterToUse.getMinutes(newDate)).to.equal(21); + expect(reason).to.equal('finish'); + }); + }); + it('should display options, but not update value when readOnly prop is passed', function test() { // Only run in supported browsers if (typeof Touch === 'undefined') { From 45b28354e18d4178e3ebe2fa33e89fca6e4221dd Mon Sep 17 00:00:00 2001 From: Rotem Bar-Sela <44998514+rotembarsela@users.noreply.github.com> Date: Fri, 23 Aug 2024 10:04:46 +0300 Subject: [PATCH 814/912] [l10n] Improve Hebrew (he-IL) locale (#14287) Signed-off-by: Lukas Tyla Co-authored-by: Lukas Tyla --- docs/data/data-grid/localization/data.json | 2 +- docs/data/date-pickers/localization/data.json | 2 +- packages/x-data-grid/src/locales/heIL.ts | 8 ++++---- packages/x-date-pickers/src/locales/heIL.ts | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 4fd53d5e7a28..683b63a22b7f 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -115,7 +115,7 @@ "languageTag": "he-IL", "importName": "heIL", "localeName": "Hebrew", - "missingKeysCount": 4, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/heIL.ts" }, diff --git a/docs/data/date-pickers/localization/data.json b/docs/data/date-pickers/localization/data.json index 258248275852..da12d1f4ffe4 100644 --- a/docs/data/date-pickers/localization/data.json +++ b/docs/data/date-pickers/localization/data.json @@ -99,7 +99,7 @@ "languageTag": "he-IL", "importName": "heIL", "localeName": "Hebrew", - "missingKeysCount": 1, + "missingKeysCount": 0, "totalKeysCount": 50, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-date-pickers/src/locales/heIL.ts" }, diff --git a/packages/x-data-grid/src/locales/heIL.ts b/packages/x-data-grid/src/locales/heIL.ts index ab33e54907aa..aad7217923e9 100644 --- a/packages/x-data-grid/src/locales/heIL.ts +++ b/packages/x-data-grid/src/locales/heIL.ts @@ -39,10 +39,10 @@ const heILGrid: Partial = { toolbarExportExcel: 'ייצוא ל- Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', - // columnsManagementReset: 'Reset', + columnsManagementSearchTitle: 'חיפוש', + columnsManagementNoColumns: 'אין עמודות', + columnsManagementShowHideAllText: 'הצג/הסתר הכל', + columnsManagementReset: 'אתחול', // Filter panel text filterPanelAddFilter: 'הוסף מסנן', diff --git a/packages/x-date-pickers/src/locales/heIL.ts b/packages/x-date-pickers/src/locales/heIL.ts index 5068ec458a50..cb588abaf349 100644 --- a/packages/x-date-pickers/src/locales/heIL.ts +++ b/packages/x-date-pickers/src/locales/heIL.ts @@ -91,7 +91,7 @@ const heILPickers: Partial> = { hours: 'שעות', minutes: 'דקות', seconds: 'שניות', - // meridiem: 'Meridiem', + meridiem: 'יחידת זמן', // Common empty: 'ריק', From b321b4076a977148d8f23cfd57e49906df4534b8 Mon Sep 17 00:00:00 2001 From: Nora <72460825+noraleonte@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:24:06 +0300 Subject: [PATCH 815/912] v7.14.0 (#14294) Signed-off-by: Nora <72460825+noraleonte@users.noreply.github.com> Co-authored-by: Bilal Shafi Co-authored-by: Lukas Tyla Co-authored-by: Andrew Cherniavskii Co-authored-by: Arthur Suh Balduini <34691066+arthurbalduini@users.noreply.github.com> --- CHANGELOG.md | 84 ++++++++++++++++++++- package.json | 2 +- packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- scripts/releaseChangelog.mjs | 2 +- 17 files changed, 98 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8220ce8c304e..e31b5b55466d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,86 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.14.0 + +_Aug 23, 2024_ + +We'd like to offer a big thanks to the 14 contributors who made this release possible. Here are some highlights ✨: + +- 💫 Allow [filtering the axis on zoom](https://mui.com/x/react-charts/zoom-and-pan/#zoom-filtering), making the axis adapt by removing values outside the view. + + filtering the axis on zoom + +- 📊 Improve bar chart performances +- 🌍 Improve Czech (cs-CZ) and Hebrew (he-IL) locales on the Data Grid +- 🌍 Improve Chinese (zh-HK), Hebrew (he-IL), and Vietnamese (vi-VN) locales on the Date and Time Pickers +- 🐞 Bugfixes + + + +### Data Grid + +#### `@mui/x-data-grid@7.14.0` + +- [DataGrid] Use readonly array result for `getTreeDataPath` (#11743) @pcorpet +- [DataGrid] Use `event.key` for `Tab` and `Escape` keys (#14170) @k-rajat19 +- [DataGrid] Introduce selectors with arguments (#14236) @MBilalShafi +- [DataGrid] include `api` in `gridCellParams` interface (#14201) @k-rajat19 +- [l10n] Improve Czech (cs-CZ) locale (#14135) @chirimiri22 +- [l10n] Improve Hebrew (he-IL) locale (#14287) @rotembarsela + +#### `@mui/x-data-grid-pro@7.14.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.14.0`. + +#### `@mui/x-data-grid-premium@7.14.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.14.0`, plus: + +- [DataGridPremium] Fix clipboard paste not working for a single cell on non-first page (#14261) @arminmeh +- [DataGridPremium] Fix `onCellSelectionModelChange` not triggered when additional cell range is selected (#14199) @arminmeh + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.14.0` + +- [l10n] Improve Chinese (zh-HK) locale (#13289) @yeeharn +- [l10n] Improve Hebrew (he-IL) locale (#14287) @rotembarsela +- [l10n] Improve Vietnamese (vi-VN) locale (#14238) @locnbk2002 +- [TimePicker] Handle `Space` and `Enter` on the `TimeClock` component @arthurbalduini + +#### `@mui/x-date-pickers-pro@7.14.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.14.0`. + +### Charts + +#### `@mui/x-charts@7.14.0` + +- [charts] Fix grid overflow with zooming (#14280) @alexfauquette +- [charts] Improve bar chart performances (#14278) @alexfauquette +- [charts] Test pointer events (#14042) @alexfauquette +- [charts] Use `isPointInside` function for both graphs and axis (#14222) @JCQuintas + +#### `@mui/x-charts-pro@7.0.0-alpha.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@7.14.0`, plus: + +- [charts-pro] Zoom axis filtering (#14121) @JCQuintas + +### Docs + +- [docs] Consistent use of UTC and timezones (#14250) @oliviertassinari +- [docs] Fix missing leading slashes in URLs (#14249) @oliviertassinari +- [docs] Dash usage revision on pickers pages (#14260) @arthurbalduini + +### Core + +- [core] Follow JSDocs convention @oliviertassinari +- [core] Prepare for material v6 (#14143) @LukasTy +- [code-infra] Set up `eslint-plugin-testing-library` (#14232) @LukasTy +- [infra] Updated mui-x roadmap links with new project URL (#14271) @michelengelen + ## 7.13.0 _Aug 16, 2024_ @@ -58,7 +138,7 @@ Same changes as in `@mui/x-date-pickers@7.13.0`. - [charts] Rename `CartesianContextProvider` to `CartesianProvider` (#14102) @JCQuintas - [charts] Support axis with the same value for all data points (#14191) @alexfauquette -#### `@mui/x-date-charts-pro@7.0.0-alpha.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') +#### `@mui/x-charts-pro@7.0.0-alpha.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') Same changes as in `@mui/x-charts@7.13.0`. @@ -132,7 +212,7 @@ Same changes as in `@mui/x-date-pickers@7.12.1`. - [charts] Fix charts vendor publish config (#14073) @JCQuintas - [charts] Move `plugins` to `PluginProvider` (#14056) @JCQuintas -#### `@mui/x-date-charts-pro@7.0.0-alpha.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') +#### `@mui/x-charts-pro@7.0.0-alpha.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') Same changes as in `@mui/x-charts@7.12.1`, plus: diff --git a/package.json b/package.json index 8364de9bf3d1..def5a457245c 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.12.1", + "version": "7.14.0", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 1a732caf7cd4..d31f069848b1 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-pro", - "version": "7.0.0-alpha.1", + "version": "7.0.0-alpha.2", "description": "The Pro plan edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 7b8f79a316af..ca4a8fc7e8cc 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-vendor", - "version": "7.13.0", + "version": "7.14.0", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", "main": "./index.js", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 4257e978a143..874c7b07c93e 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.13.0", + "version": "7.14.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.js", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index faf0f8548bff..7e82ccbd7d79 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-codemod", - "version": "7.11.0", + "version": "7.14.0", "bin": "./codemod.js", "private": false, "author": "MUI Team", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 8351109190ac..58c78fef9668 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.13.0", + "version": "7.14.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 48fc4458dfdf..bf392d664a19 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.13.0", + "version": "7.14.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 3331947593a0..de2be80567aa 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.13.0", + "version": "7.14.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 55f4f9df1a86..545043bd84c9 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.13.0", + "version": "7.14.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index c5ad50c67caa..f9c5a5652c91 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.13.0", + "version": "7.14.0", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 8c64899ab54c..293e3d380203 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.13.0", + "version": "7.14.0", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 6f0598e02e01..6f724738f245 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-internals", - "version": "7.13.0", + "version": "7.14.0", "description": "Utility functions for the MUI X packages (internal use only).", "author": "MUI Team", "license": "MIT", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index e3d2937605cc..426b7131c144 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.13.0", + "version": "7.14.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index b1b2781cb227..74be7984c887 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.13.0", + "version": "7.14.0", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 8bcf0160185f..ad46c9603f12 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.13.0", + "version": "7.14.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index 18cf5e6de253..22fd5a708d60 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -316,7 +316,7 @@ ${logChangelogSection(pickersProCommits)} ${logChangelogSection(chartsCommits)} -#### \`@mui/x-date-charts-pro@__VERSION-ALPHA__\` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') +#### \`@mui/x-charts-pro@__VERSION-ALPHA__\` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') Same changes as in \`@mui/x-charts@__VERSION__\`${chartsProCommits.length > 0 ? ', plus:\n' : '.'} ${logChangelogSection(chartsProCommits)} From 3f90e768089b77d0fedb7238fbe39062a0a713a6 Mon Sep 17 00:00:00 2001 From: Gene Arch Date: Sun, 25 Aug 2024 06:41:49 -0500 Subject: [PATCH 816/912] [DataGrid Pro]: export GridRowReorderCell (#14079) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Signed-off-by: Gene Arch Co-authored-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Olivier Tassinari Co-authored-by: Rom Grk Co-authored-by: Gene Arch --- .../aggregation/gridAggregationInterfaces.ts | 2 +- .../src/components/GridRowReorderCell.tsx | 70 +++++++++++++++++++ .../x-data-grid-pro/src/components/index.ts | 1 + scripts/x-data-grid-premium.exports.json | 3 + scripts/x-data-grid-pro.exports.json | 2 + 5 files changed, 77 insertions(+), 1 deletion(-) diff --git a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts index 82ecbce2fc1c..212bdef1a008 100644 --- a/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts +++ b/packages/x-data-grid-premium/src/hooks/features/aggregation/gridAggregationInterfaces.ts @@ -74,7 +74,7 @@ export interface GridAggregationFunction { getCellValue?: (params: GridAggregationGetCellValueParams) => V; } -interface GridAggregationParams { +export interface GridAggregationParams { values: (V | undefined)[]; groupId: GridRowId; field: GridColDef['field']; diff --git a/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx b/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx index 8cac92c40b11..eb8aa484be6b 100644 --- a/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx +++ b/packages/x-data-grid-pro/src/components/GridRowReorderCell.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; import { GridRenderCellParams, @@ -96,6 +97,75 @@ function GridRowReorderCell(params: GridRenderCellParams) { ); } +GridRowReorderCell.propTypes = { + // ----------------------------- Warning -------------------------------- + // | These PropTypes are generated from the TypeScript type definitions | + // | To update them edit the TypeScript types and run "pnpm proptypes" | + // ---------------------------------------------------------------------- + /** + * GridApi that let you manipulate the grid. + */ + api: PropTypes.object.isRequired, + /** + * The mode of the cell. + */ + cellMode: PropTypes.oneOf(['edit', 'view']).isRequired, + /** + * The column of the row that the current cell belongs to. + */ + colDef: PropTypes.object.isRequired, + /** + * The column field of the cell that triggered the event. + */ + field: PropTypes.string.isRequired, + /** + * A ref allowing to set imperative focus. + * It can be passed to the element that should receive focus. + * @ignore - do not document. + */ + focusElementRef: PropTypes.oneOfType([ + PropTypes.func, + PropTypes.shape({ + current: PropTypes.shape({ + focus: PropTypes.func.isRequired, + }), + }), + ]), + /** + * The cell value formatted with the column valueFormatter. + */ + formattedValue: PropTypes.any, + /** + * If true, the cell is the active element. + */ + hasFocus: PropTypes.bool.isRequired, + /** + * The grid row id. + */ + id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + /** + * If true, the cell is editable. + */ + isEditable: PropTypes.bool, + /** + * The row model of the row that the current cell belongs to. + */ + row: PropTypes.any.isRequired, + /** + * The node of the row that the current cell belongs to. + */ + rowNode: PropTypes.object.isRequired, + /** + * the tabIndex value. + */ + tabIndex: PropTypes.oneOf([-1, 0]).isRequired, + /** + * The cell value. + * If the column has `valueGetter`, use `params.row` to directly access the fields. + */ + value: PropTypes.any, +} as any; + export { GridRowReorderCell }; export const renderRowReorderCell = (params: GridRenderCellParams) => { diff --git a/packages/x-data-grid-pro/src/components/index.ts b/packages/x-data-grid-pro/src/components/index.ts index c49dfb937ee3..a6d5ef33c37d 100644 --- a/packages/x-data-grid-pro/src/components/index.ts +++ b/packages/x-data-grid-pro/src/components/index.ts @@ -2,5 +2,6 @@ export * from './GridTreeDataGroupingCell'; export * from './GridColumnMenuPinningItem'; export * from './GridDetailPanelToggleCell'; +export * from './GridRowReorderCell'; export * from '../material/icons'; export * from './headerFiltering'; diff --git a/scripts/x-data-grid-premium.exports.json b/scripts/x-data-grid-premium.exports.json index ac6c300397a0..7b0db79eb357 100644 --- a/scripts/x-data-grid-premium.exports.json +++ b/scripts/x-data-grid-premium.exports.json @@ -95,6 +95,7 @@ { "name": "gridAggregationLookupSelector", "kind": "Variable" }, { "name": "GridAggregationModel", "kind": "TypeAlias" }, { "name": "gridAggregationModelSelector", "kind": "Variable" }, + { "name": "GridAggregationParams", "kind": "Interface" }, { "name": "GridAggregationPosition", "kind": "TypeAlias" }, { "name": "GridAggregationRule", "kind": "Interface" }, { "name": "GridAggregationRules", "kind": "TypeAlias" }, @@ -528,6 +529,7 @@ { "name": "GridRowProApi", "kind": "Interface" }, { "name": "GridRowProPrivateApi", "kind": "Interface" }, { "name": "GridRowProps", "kind": "Interface" }, + { "name": "GridRowReorderCell", "kind": "Function" }, { "name": "GridRowScrollEndParams", "kind": "Interface" }, { "name": "gridRowsDataRowIdToIdLookupSelector", "kind": "Variable" }, { "name": "GridRowSelectionApi", "kind": "Interface" }, @@ -648,6 +650,7 @@ { "name": "renderEditDateCell", "kind": "Variable" }, { "name": "renderEditInputCell", "kind": "Variable" }, { "name": "renderEditSingleSelectCell", "kind": "Variable" }, + { "name": "renderRowReorderCell", "kind": "Variable" }, { "name": "RowPropsOverrides", "kind": "Interface" }, { "name": "selectedGridRowsCountSelector", "kind": "Variable" }, { "name": "selectedGridRowsSelector", "kind": "Variable" }, diff --git a/scripts/x-data-grid-pro.exports.json b/scripts/x-data-grid-pro.exports.json index e9620df666a0..4673f4bd5afb 100644 --- a/scripts/x-data-grid-pro.exports.json +++ b/scripts/x-data-grid-pro.exports.json @@ -482,6 +482,7 @@ { "name": "GridRowProApi", "kind": "Interface" }, { "name": "GridRowProPrivateApi", "kind": "Interface" }, { "name": "GridRowProps", "kind": "Interface" }, + { "name": "GridRowReorderCell", "kind": "Function" }, { "name": "GridRowScrollEndParams", "kind": "Interface" }, { "name": "gridRowsDataRowIdToIdLookupSelector", "kind": "Variable" }, { "name": "GridRowSelectionApi", "kind": "Interface" }, @@ -600,6 +601,7 @@ { "name": "renderEditDateCell", "kind": "Variable" }, { "name": "renderEditInputCell", "kind": "Variable" }, { "name": "renderEditSingleSelectCell", "kind": "Variable" }, + { "name": "renderRowReorderCell", "kind": "Variable" }, { "name": "RowPropsOverrides", "kind": "Interface" }, { "name": "selectedGridRowsCountSelector", "kind": "Variable" }, { "name": "selectedGridRowsSelector", "kind": "Variable" }, From f88191f50e812220b01072757fe6fa0bd23c831e Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 25 Aug 2024 14:24:15 +0200 Subject: [PATCH 817/912] [docs] Clarify contribution guide references --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ab7f01f18cde..179ac396d3c6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,8 @@ # Contributing to MUI X -## MUI X vs. Material UI, Base UI, MUI System, Joy UI +## MUI X vs. MUI organization -MUI X is an extension of the core open-source libraries of MUI (Material UI, Base UI, MUI System, Joy UI). +MUI X is an extension of the core open-source libraries of the MUI organization (Material UI, Base UI, MUI System, Joy UI). The repositories are part of the same codebase. `mui/mui-x` imports the code infrastructure from [`mui/material-ui`](https://github.com/mui/material-ui). You can find the "contributing" guide for the main repository in [mui/material-ui/CONTRIBUTING.md](https://github.com/mui/material-ui/blob/HEAD/CONTRIBUTING.md). From 436c2d785ee9d6c85951f387131e62c30dd10b57 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 25 Aug 2024 14:30:57 +0200 Subject: [PATCH 818/912] =?UTF-8?q?[docs]=20Fix=20use=20of=20Material?= =?UTF-8?q?=C2=A0UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelogOld/CHANGELOG.v4.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/changelogOld/CHANGELOG.v4.md b/changelogOld/CHANGELOG.v4.md index 2c3c89c28fc7..c54c6f19d175 100644 --- a/changelogOld/CHANGELOG.v4.md +++ b/changelogOld/CHANGELOG.v4.md @@ -8,8 +8,8 @@ _Aug 27, 2021_ We have been iterating on the component for [18 months](https://github.com/mui/mui-x/commit/705cb0f387b5f3aa056bf40c4183a2342b317447). With the introduction of the [row edit](https://mui.com/x/react-data-grid/editing/#row-editing) feature, many bug fixes, and polishing of the documentation, we believe the component is ready for a stable release. -The MUI X v4.0.0 release supports [MUI Core](https://github.com/mui/material-ui) v4 and has partial support for v5-beta. With the soon-to-be-released v5 version of the core components, we are moving ongoing work to the v5 release line (Core and X). -The support for existing projects on Material UI v4 won't be a priority going forward. We encourage you to migrate to MUI Core v5-beta and soon MUI X v5-beta. We don't patch, fix, or alter older versions. Using MUI Core v4 with MUI X v5 might lead to extra bundle size and configuration. +The MUI X v4.0.0 release supports [Material UI](https://github.com/mui/material-ui) v4 and has partial support for v5-beta. With the soon-to-be-released v5 version of the core components, we are moving ongoing work to the v5 release line (Core and X). +The support for existing projects on Material UI v4 won't be a priority going forward. We encourage you to migrate to MUI Core v5-beta and soon MUI X v5-beta. We don't patch, fix, or alter older versions. Using Material UI v4 with MUI X v5 might lead to extra bundle size and configuration. A big thanks to the 6 contributors who made this release possible. Here are some highlights ✨: @@ -600,7 +600,7 @@ Big thanks to the 10 contributors who made this release possible. Here are some - ⚡️ Components that use portals, like `Select` and `Autocomplete`, can now be used in the cell editing (#1772) @m4theushw - 📃 Apply the `valueFormatter` to the CSV exporting (#1922) @DanailH - 💅 Rename CSS classes to match the convention of the core components (#1872) @DanailH -- 🌎 Isolate translations from MUI Core and MUI X (#1913) @DanailH +- 🌎 Isolate translations from Material UI and MUI X (#1913) @DanailH - 🚀 Improve performance when finding column indexes and updating rows (#1903, #1923) @Janpot @N2D4 - 🐞 Bugfixes @@ -609,7 +609,7 @@ Big thanks to the 10 contributors who made this release possible. Here are some #### Breaking changes - [DataGrid] The `onEditCellChangeCommitted` prop won't be called with an event when committing changes by clicking outside the cell (#1910) @m4theushw -- [DataGrid] Translation for MUI Core components are no longer included in the MUI X translation (#1913) @DanailH +- [DataGrid] Translation for Material UI components are no longer included in the MUI X translation (#1913) @DanailH ```diff import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'; @@ -684,7 +684,7 @@ Big thanks to the 10 contributors who made this release possible. Here are some - [DataGrid] Improve Brazilian Portuguese (pt-BR) locale (#1861) @aline-matos - [DataGrid] Improve type of the blur event (#1918) @oliviertassinari - [DataGrid] Improve updateRows performance (#1923) @N2D4 -- [DataGrid] Include MUI Core component localizations in `localeText` (#1913) @DanailH +- [DataGrid] Include Material UI component localizations in `localeText` (#1913) @DanailH - [DataGrid] Make the CSV export respect the `valueFormatter` (#1922) @DanailH - [DataGrid] Remove `disableClickEventBubbling` (#1910) @m4theushw - [DataGrid] Rename CSS classes according to new convention (#1872) @DanailH From 231705cd3295cd59769acc6c560978fc60fa63af Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 25 Aug 2024 15:40:55 +0200 Subject: [PATCH 819/912] [charts][docs] Fix sentence case h2 --- docs/data/charts/getting-started/getting-started.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index fbd74b8ecb3d..c325d7940d6b 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -73,18 +73,18 @@ To help folks using CommonJS, the `@mui/x-charts` package uses a vendored packag If you need some D3 functions, you can import them with `@mui/x-charts-vendor/d3-color`. -## Displaying Charts +## Displaying charts A Chart can be rendered in one of two ways: as a single component, or by composing subcomponents. -### Single Charts +### Single charts For common use cases, the single component is the recommended way. Those components' names end with "Chart", as opposed to "Plot", and only require the series prop describing the data to render. {{"demo": "SimpleCharts.js"}} -### Composed Charts +### Composed charts To combine different Charts, like Lines with Bars, you can use composition with the `ChartContainer` wrapper. From f45f7537643f177ca4b97d49f20c5ce79e113f74 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 25 Aug 2024 15:44:33 +0200 Subject: [PATCH 820/912] [docs] Fix outdated link to support page --- .github/ISSUE_TEMPLATE/3.pro-support.yml | 2 +- .github/ISSUE_TEMPLATE/4.premium-support.yml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/3.pro-support.yml b/.github/ISSUE_TEMPLATE/3.pro-support.yml index 5c240d8e03c5..d2971f1ea242 100644 --- a/.github/ISSUE_TEMPLATE/3.pro-support.yml +++ b/.github/ISSUE_TEMPLATE/3.pro-support.yml @@ -13,7 +13,7 @@ body: id: contact attributes: label: Order ID or Support key 💳 - description: The order ID of the purchased Pro plan. Community users can [learn more about support](https://mui.com/getting-started/support/) in the documentation. + description: The order ID of the purchased Pro plan. Community users can [learn more about support](https://mui.com/x/introduction/support/) in the documentation. placeholder: 'e.g. 11111' validations: required: true diff --git a/.github/ISSUE_TEMPLATE/4.premium-support.yml b/.github/ISSUE_TEMPLATE/4.premium-support.yml index 3cecec347296..9e410f1ef5ba 100644 --- a/.github/ISSUE_TEMPLATE/4.premium-support.yml +++ b/.github/ISSUE_TEMPLATE/4.premium-support.yml @@ -13,7 +13,7 @@ body: id: contact attributes: label: Order ID or Support key 💳 - description: The order ID of the purchased Premium plan. Community users can [learn more about support](https://mui.com/getting-started/support/) in the documentation. + description: The order ID of the purchased Premium plan. Community users can [learn more about support](https://mui.com/x/introduction/support/) in the documentation. placeholder: 'e.g. 11111' validations: required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 51792745ac79..5efac3c9faf8 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ contact_links: - name: Support ❔ - url: https://mui.com/getting-started/support/ + url: https://mui.com/x/introduction/support/ about: I need support with MUI X. From bdd0686b34636aa0e206e0b52a86da72b2851a2a Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 25 Aug 2024 15:53:45 +0200 Subject: [PATCH 821/912] [docs] Fix Stack Overflow issue canned response --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/workflows/support-stackoverflow.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 5efac3c9faf8..5494cf0593c4 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ contact_links: - name: Support ❔ url: https://mui.com/x/introduction/support/ - about: I need support with MUI X. + about: I need support with MUI X. diff --git a/.github/workflows/support-stackoverflow.yml b/.github/workflows/support-stackoverflow.yml index c9d8069a636f..d6c113db37c6 100644 --- a/.github/workflows/support-stackoverflow.yml +++ b/.github/workflows/support-stackoverflow.yml @@ -22,12 +22,12 @@ jobs: # Comment to post on issues marked as support requests. Add a link # to a support page, or set to `false` to disable issue-comment: | - 👋 Thanks for using MUI X! + 👋 Thanks for using this project! We use GitHub issues as a bug and feature requests tracker, however, this issue appears to be a support request. - For support, please check out https://mui.com/x/introduction/support/. Thanks! + For support with MUI X please check out https://mui.com/x/introduction/support/. Thanks! If you have a question on Stack Overflow, you are welcome to link to it here, it might help others. If your issue is subsequently confirmed as a bug, and the report follows the issue template, it can be reopened. From 2e9f2d084cca1a93c53ba70e66a192b754a15b6d Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 26 Aug 2024 01:55:25 +0200 Subject: [PATCH 822/912] [license] Prepare renaming of argument names --- .../src/generateLicense/generateLicense.ts | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/x-license/src/generateLicense/generateLicense.ts b/packages/x-license/src/generateLicense/generateLicense.ts index badebb90d782..107b510888d0 100644 --- a/packages/x-license/src/generateLicense/generateLicense.ts +++ b/packages/x-license/src/generateLicense/generateLicense.ts @@ -8,25 +8,36 @@ const licenseVersion = '2'; export interface LicenseDetails { orderNumber: string; expiryDate: Date; - scope: LicenseScope; - licensingModel: LicensingModel; + scope?: LicenseScope; + planScope?: LicenseScope; // TODO deprecate + licenseModel?: LicensingModel; + licensingModel?: LicensingModel; // TODO deprecate planVersion: PlanVersion; } function getClearLicenseString(details: LicenseDetails) { - if (details.scope && !LICENSE_SCOPES.includes(details.scope)) { + // TODO remove + if (details.licensingModel) { + details.licenseModel = details.licensingModel; + } + // TODO remove + if (details.scope) { + details.planScope = details.scope; + } + + if (details.planScope && !LICENSE_SCOPES.includes(details.planScope)) { throw new Error('MUI X: Invalid scope'); } - if (details.licensingModel && !LICENSING_MODELS.includes(details.licensingModel)) { + if (details.licenseModel && !LICENSING_MODELS.includes(details.licenseModel)) { throw new Error('MUI X: Invalid licensing model'); } const keyParts = [ `O=${details.orderNumber}`, `E=${details.expiryDate.getTime()}`, - `S=${details.scope}`, - `LM=${details.licensingModel}`, + `S=${details.planScope}`, + `LM=${details.licenseModel}`, `PV=${details.planVersion}`, `KV=${licenseVersion}`, ]; From 182a28d074debe0dc9b99a67e01b65f36a8d5561 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:04:10 +0300 Subject: [PATCH 823/912] Bump pnpm to 9.8.0 (#14309) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 128 +++++++++++++++++++++++++------------------------ 2 files changed, 67 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index def5a457245c..dd0770ccbc56 100644 --- a/package.json +++ b/package.json @@ -198,9 +198,9 @@ "react-is": "^18.3.1", "@types/node": "^18.19.45" }, - "packageManager": "pnpm@9.6.0", + "packageManager": "pnpm@9.8.0", "engines": { - "pnpm": "9.6.0" + "pnpm": "9.8.0" }, "pnpm": { "patchedDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e18a3204c28a..987ce46c8f9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -172,7 +172,7 @@ importers: version: 4.9.1 babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) babel-plugin-istanbul: specifier: ^7.0.0 version: 7.0.0 @@ -202,7 +202,7 @@ importers: version: 1.12.0(chai@4.5.0) compression-webpack-plugin: specifier: ^11.1.0 - version: 11.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 11.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -235,7 +235,7 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-import-resolver-webpack: specifier: ^0.13.8 - version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) eslint-plugin-filenames: specifier: ^1.3.2 version: 1.3.2(eslint@8.57.0) @@ -286,7 +286,7 @@ importers: version: 14.0.2 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) jsdom: specifier: 24.1.1 version: 24.1.1 @@ -316,10 +316,10 @@ importers: version: 0.4.0 karma-webpack: specifier: ^5.0.1 - version: 5.0.1(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 5.0.1(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) lerna: specifier: ^8.1.8 - version: 8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13) + version: 8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -370,10 +370,10 @@ importers: version: 3.0.0 string-replace-loader: specifier: ^3.1.0 - version: 3.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 3.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) terser-webpack-plugin: specifier: ^5.3.10 - version: 5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + version: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) tsx: specifier: ^4.16.2 version: 4.16.2 @@ -388,7 +388,7 @@ importers: version: 0.12.5 webpack: specifier: ^5.92.1 - version: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + version: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2 @@ -686,7 +686,7 @@ importers: version: 4.2.6 '@types/webpack-bundle-analyzer': specifier: ^4.7.0 - version: 4.7.0(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + version: 4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) gm: specifier: ^1.25.0 version: 1.25.0 @@ -11678,12 +11678,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@lerna/create@8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': + '@lerna/create@8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': dependencies: '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 - '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) + '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5))) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 @@ -11722,7 +11722,7 @@ snapshots: npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 - nx: 17.3.0(@swc/core@1.6.13) + nx: 17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)) p-map: 4.0.0 p-map-series: 2.1.0 p-queue: 6.6.2 @@ -12220,28 +12220,28 @@ snapshots: - bluebird - supports-color - '@nrwl/devkit@17.3.0(nx@17.3.0(@swc/core@1.6.13))': + '@nrwl/devkit@17.3.0(nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)))': dependencies: - '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) + '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5))) transitivePeerDependencies: - nx - '@nrwl/tao@17.3.0(@swc/core@1.6.13)': + '@nrwl/tao@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5))': dependencies: - nx: 17.3.0(@swc/core@1.6.13) + nx: 17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)) tslib: 2.6.2 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug - '@nx/devkit@17.3.0(nx@17.3.0(@swc/core@1.6.13))': + '@nx/devkit@17.3.0(nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)))': dependencies: - '@nrwl/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) + '@nrwl/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5))) ejs: 3.1.9 enquirer: 2.3.6 ignore: 5.3.1 - nx: 17.3.0(@swc/core@1.6.13) + nx: 17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)) semver: 7.5.3 tmp: 0.2.3 tslib: 2.6.2 @@ -13169,11 +13169,11 @@ snapshots: '@types/unist@2.0.10': {} - '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))': + '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))': dependencies: '@types/node': 18.19.45 tapable: 2.2.1 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) transitivePeerDependencies: - '@swc/core' - esbuild @@ -13335,7 +13335,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/browser@2.0.4(typescript@5.5.4)(vitest@2.0.4)': + '@vitest/browser@2.0.4(playwright@1.46.0)(typescript@5.5.4)(vitest@2.0.4)': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) @@ -13345,6 +13345,8 @@ snapshots: sirv: 2.0.4 vitest: 2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) ws: 8.18.0 + optionalDependencies: + playwright: 1.46.0 transitivePeerDependencies: - bufferutil - typescript @@ -13482,19 +13484,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) '@xtuc/ieee754@1.2.0': {} @@ -13867,12 +13869,12 @@ snapshots: dependencies: deep-equal: 2.2.3 - babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) babel-plugin-istanbul@7.0.0: dependencies: @@ -14389,11 +14391,11 @@ snapshots: dependencies: mime-db: 1.52.0 - compression-webpack-plugin@11.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + compression-webpack-plugin@11.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) compression@1.7.4: dependencies: @@ -15216,7 +15218,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: array.prototype.find: 2.2.2 debug: 3.2.7 @@ -15230,18 +15232,18 @@ snapshots: lodash: 4.17.21 resolve: 2.0.0-next.5 semver: 5.7.2 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) transitivePeerDependencies: - supports-color @@ -15263,7 +15265,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -16198,7 +16200,7 @@ snapshots: readable-stream: 1.0.34 through2: 0.4.2 - html-webpack-plugin@5.6.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -16206,7 +16208,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -16917,11 +16919,11 @@ snapshots: dependencies: graceful-fs: 4.2.11 - karma-webpack@5.0.1(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + karma-webpack@5.0.1(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: glob: 7.2.3 minimatch: 9.0.4 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-merge: 4.2.2 karma@6.4.4: @@ -16972,13 +16974,13 @@ snapshots: dependencies: readable-stream: 2.3.8 - lerna@8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13): + lerna@8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.8(@swc/core@1.6.13)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) + '@lerna/create': 8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4) '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 - '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13)) + '@nx/devkit': 17.3.0(nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5))) '@octokit/plugin-enterprise-rest': 6.0.1 '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 @@ -17023,7 +17025,7 @@ snapshots: npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 - nx: 17.3.0(@swc/core@1.6.13) + nx: 17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)) p-map: 4.0.0 p-map-series: 2.1.0 p-pipe: 3.1.0 @@ -17808,9 +17810,9 @@ snapshots: nwsapi@2.2.12: {} - nx@17.3.0(@swc/core@1.6.13): + nx@17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)): dependencies: - '@nrwl/tao': 17.3.0(@swc/core@1.6.13) + '@nrwl/tao': 17.3.0(@swc/core@1.6.13(@swc/helpers@0.5.5)) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 @@ -19230,11 +19232,11 @@ snapshots: strict-event-emitter@0.5.1: optional: true - string-replace-loader@3.1.0(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + string-replace-loader@3.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) string-width@4.2.3: dependencies: @@ -19433,25 +19435,25 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.6.3 - terser-webpack-plugin@5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))): + terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) optionalDependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) optionalDependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) @@ -19886,7 +19888,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.45 - '@vitest/browser': 2.0.4(typescript@5.5.4)(vitest@2.0.4) + '@vitest/browser': 2.0.4(playwright@1.46.0)(typescript@5.5.4)(vitest@2.0.4) '@vitest/ui': 2.0.5(vitest@2.0.4) jsdom: 24.1.1 transitivePeerDependencies: @@ -19940,9 +19942,9 @@ snapshots: webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -19951,7 +19953,7 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4) + webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-bundle-analyzer: 4.10.2 @@ -19968,7 +19970,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)): + webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -19991,7 +19993,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: @@ -20001,7 +20003,7 @@ snapshots: - esbuild - uglify-js - webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4): + webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -20024,7 +20026,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(webpack@5.92.1(@swc/core@1.6.13)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: From 847de9aed747a25bd61b6173d7c392d3dddc1e1d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:05:14 +0300 Subject: [PATCH 824/912] Bump github/codeql-action action to v3.26.5 (#14308) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecards.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 38ce7892b350..abc9c765dd17 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/init@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 with: languages: typescript # If you wish to specify custom queries, you can do so here or in a config file. @@ -29,4 +29,4 @@ jobs: # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/analyze@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index e04f536c60ad..12a50e8c2866 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -44,6 +44,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 with: sarif_file: results.sarif From 133aa955171634b915be8ae31718966359e0e749 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:06:01 +0300 Subject: [PATCH 825/912] Bump eslint-plugin-mocha to ^10.5.0 (#14307) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index dd0770ccbc56..c81e74f7c182 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "eslint-plugin-jsdoc": "^48.8.3", "eslint-plugin-jsx-a11y": "^6.9.0", "eslint-plugin-material-ui": "workspace:^", - "eslint-plugin-mocha": "^10.4.3", + "eslint-plugin-mocha": "^10.5.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-compiler": "0.0.0-experimental-9ed098e-20240725", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 987ce46c8f9b..bc482b9f8406 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,8 +252,8 @@ importers: specifier: workspace:^ version: link:packages/eslint-plugin-material-ui eslint-plugin-mocha: - specifier: ^10.4.3 - version: 10.4.3(eslint@8.57.0) + specifier: ^10.5.0 + version: 10.5.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.2.1 version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) @@ -5894,8 +5894,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - eslint-plugin-mocha@10.4.3: - resolution: {integrity: sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==} + eslint-plugin-mocha@10.5.0: + resolution: {integrity: sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw==} engines: {node: '>=14.0.0'} peerDependencies: eslint: '>=7.0.0' @@ -15318,7 +15318,7 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - eslint-plugin-mocha@10.4.3(eslint@8.57.0): + eslint-plugin-mocha@10.5.0(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-utils: 3.0.0(eslint@8.57.0) From 781928409b3937ad0ff35df78aef7027c8528d85 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:06:46 +0300 Subject: [PATCH 826/912] Bump eslint-plugin-jsdoc to ^48.11.0 (#14306) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 57 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index c81e74f7c182..4be44404094f 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "eslint-import-resolver-webpack": "^0.13.8", "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.8.3", + "eslint-plugin-jsdoc": "^48.11.0", "eslint-plugin-jsx-a11y": "^6.9.0", "eslint-plugin-material-ui": "workspace:^", "eslint-plugin-mocha": "^10.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc482b9f8406..cf8ac6e079c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -243,8 +243,8 @@ importers: specifier: ^2.29.1 version: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsdoc: - specifier: ^48.8.3 - version: 48.8.3(eslint@8.57.0) + specifier: ^48.11.0 + version: 48.11.0(eslint@8.57.0) eslint-plugin-jsx-a11y: specifier: ^6.9.0 version: 6.9.0(eslint@8.57.0) @@ -4428,8 +4428,8 @@ packages: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -5882,8 +5882,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsdoc@48.8.3: - resolution: {integrity: sha512-AtIvwwW9D17MRkM0Z0y3/xZYaa9mdAvJrkY6fU/HNUwGbmMtHVvK4qRM9CDixGVtfNrQitb8c6zQtdh6cTOvLg==} + eslint-plugin-jsdoc@48.11.0: + resolution: {integrity: sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -5960,11 +5960,19 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -13532,17 +13540,17 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.11.3): + acorn-import-attributes@1.9.5(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk@8.3.2: {} - acorn@8.11.3: {} + acorn@8.12.1: {} add-stream@1.0.0: {} @@ -15282,7 +15290,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@48.8.3(eslint@8.57.0): + eslint-plugin-jsdoc@48.11.0(eslint@8.57.0): dependencies: '@es-joy/jsdoccomment': 0.46.0 are-docs-informative: 0.0.2 @@ -15290,6 +15298,7 @@ snapshots: debug: 4.3.5(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint: 8.57.0 + espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 semver: 7.6.3 @@ -15400,6 +15409,8 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.0.0: {} + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -15443,10 +15454,16 @@ snapshots: transitivePeerDependencies: - supports-color + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 esprima@2.7.3: {} @@ -19460,7 +19477,7 @@ snapshots: terser@5.27.0: dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -19924,7 +19941,7 @@ snapshots: webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk: 8.3.2 commander: 7.2.0 debounce: 1.2.1 @@ -19977,8 +19994,8 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.3 chrome-trace-event: 1.0.3 enhanced-resolve: 5.17.0 @@ -20010,8 +20027,8 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.3 chrome-trace-event: 1.0.3 enhanced-resolve: 5.17.0 From 9b2a70661d5776c04d4ca0d63ab9804e0a6ff3d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:12:03 +0300 Subject: [PATCH 827/912] Bump @emotion/react to ^11.13.3 (#14317) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 214 +++++++++++++-------------- test/package.json | 2 +- test/performance-charts/package.json | 2 +- 5 files changed, 111 insertions(+), 111 deletions(-) diff --git a/docs/package.json b/docs/package.json index d779100d9a4e..dbd10e508bee 100644 --- a/docs/package.json +++ b/docs/package.json @@ -24,7 +24,7 @@ "@babel/runtime-corejs2": "^7.25.0", "@docsearch/react": "^3.6.1", "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.0", + "@emotion/react": "^11.13.3", "@emotion/server": "^11.11.0", "@emotion/styled": "^11.13.0", "@mui/docs": "6.0.0-beta.6", diff --git a/package.json b/package.json index 4be44404094f..5b69f8fb200c 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@babel/traverse": "^7.25.3", "@babel/types": "^7.25.2", "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.0", + "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@mui/icons-material": "^5.16.7", "@mui/internal-markdown": "^1.0.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf8ac6e079c3..d8632150f4ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,14 +78,14 @@ importers: specifier: ^11.13.1 version: 11.13.1 '@emotion/react': - specifier: ^11.13.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.3 + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/icons-material': specifier: ^5.16.7 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': specifier: ^1.0.10 version: 1.0.10 @@ -94,7 +94,7 @@ importers: version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': specifier: github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa version: https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13) @@ -417,38 +417,38 @@ importers: specifier: ^11.13.1 version: 11.13.1 '@emotion/react': - specifier: ^11.13.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.3 + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/server': specifier: ^11.11.0 version: 11.11.0 '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.6 - version: 6.0.0-beta.6(heatisv4cnelp6dhhtbupd5w6i) + version: 6.0.0-beta.6(qldo6khlupzuyxlkybrvconkvm) '@mui/icons-material': specifier: ^5.16.7 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 - version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/lab': specifier: ^5.0.0-alpha.173 - version: 5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.6 - version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.7 version: 5.16.7(@types/react@18.3.3)(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -713,16 +713,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -775,16 +775,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -957,16 +957,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -994,7 +994,7 @@ importers: version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 - version: 5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': specifier: ^7.2.15 version: 7.2.15(@types/react@18.3.3) @@ -1013,16 +1013,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/icons-material': specifier: ^5.4.1 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-premium': specifier: workspace:* version: link:../x-data-grid-premium/build @@ -1054,16 +1054,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -1122,16 +1122,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -1181,16 +1181,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -1264,16 +1264,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -1381,16 +1381,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -1434,16 +1434,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) @@ -1495,11 +1495,11 @@ importers: specifier: ^11.13.1 version: 11.13.1 '@emotion/react': - specifier: ^11.13.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.3 + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@mui/material': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../packages/x-charts/build @@ -1582,8 +1582,8 @@ importers: specifier: ^3.1.1 version: 3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@emotion/react': - specifier: ^11.13.0 - version: 11.13.0(@types/react@18.3.3)(react@18.3.1) + specifier: ^11.13.3 + version: 11.13.3(@types/react@18.3.3)(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../../packages/x-charts/build @@ -2494,8 +2494,8 @@ packages: '@emotion/memoize@0.9.0': resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - '@emotion/react@11.13.0': - resolution: {integrity: sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==} + '@emotion/react@11.13.3': + resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -2503,8 +2503,8 @@ packages: '@types/react': optional: true - '@emotion/serialize@1.3.0': - resolution: {integrity: sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==} + '@emotion/serialize@1.3.1': + resolution: {integrity: sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==} '@emotion/server@11.11.0': resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} @@ -2527,12 +2527,12 @@ packages: '@types/react': optional: true + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + '@emotion/unitless@0.8.1': resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - '@emotion/unitless@0.9.0': - resolution: {integrity: sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0': resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} peerDependencies: @@ -11268,7 +11268,7 @@ snapshots: '@babel/runtime': 7.25.0 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 - '@emotion/serialize': 1.3.0 + '@emotion/serialize': 1.3.1 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 @@ -11300,12 +11300,12 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1)': + '@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 - '@emotion/serialize': 1.3.0 + '@emotion/serialize': 1.3.1 '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 @@ -11316,11 +11316,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/serialize@1.3.0': + '@emotion/serialize@1.3.1': dependencies: '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.9.0 + '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.0 csstype: 3.1.3 @@ -11333,13 +11333,13 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/serialize': 1.3.0 + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/serialize': 1.3.1 '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.0 react: 18.3.1 @@ -11348,9 +11348,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/unitless@0.8.1': {} + '@emotion/unitless@0.10.0': {} - '@emotion/unitless@0.9.0': {} + '@emotion/unitless@0.8.1': {} '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)': dependencies: @@ -11798,14 +11798,14 @@ snapshots: '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0-beta.6(heatisv4cnelp6dhhtbupd5w6i)': + '@mui/docs@6.0.0-beta.6(qldo6khlupzuyxlkybrvconkvm)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/internal-markdown': 1.0.10 - '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) chai: 5.1.1 clipboard-copy: 4.0.1 clsx: 2.1.1 @@ -11817,10 +11817,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.3.3 @@ -11859,7 +11859,7 @@ snapshots: '@babel/register': 7.24.6(@babel/core@7.25.2) '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) '@testing-library/dom': 10.4.0 '@testing-library/react': 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) @@ -11885,12 +11885,12 @@ snapshots: - supports-color - utf-8-validate - '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 - '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 @@ -11898,16 +11898,16 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 @@ -11915,14 +11915,14 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 - '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/material': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: @@ -11930,11 +11930,11 @@ snapshots: '@emotion/server': 11.11.0 '@types/react': 18.3.3 - '@mui/material@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/core-downloads-tracker': 5.16.7 - '@mui/system': 5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) '@popperjs/core': 2.11.8 @@ -11947,8 +11947,8 @@ snapshots: react-is: 18.3.1 react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13)': @@ -11974,7 +11974,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/styled-engine@5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 @@ -11982,8 +11982,8 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@mui/styles@5.16.7(@types/react@18.3.3)(react@18.3.1)': dependencies: @@ -12008,11 +12008,11 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@mui/system@5.16.7(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/system@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/private-theming': 5.16.6(@types/react@18.3.3)(react@18.3.1) - '@mui/styled-engine': 5.16.6(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.3) '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 @@ -12020,8 +12020,8 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.13.0(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.0(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 '@mui/types@7.2.15(@types/react@18.3.3)': diff --git a/test/package.json b/test/package.json index 036e30910bc0..b826ca7a644c 100644 --- a/test/package.json +++ b/test/package.json @@ -8,7 +8,7 @@ "devDependencies": { "@babel/runtime": "^7.25.0", "@emotion/cache": "^11.13.1", - "@emotion/react": "^11.13.0", + "@emotion/react": "^11.13.3", "@mui/material": "^5.16.7", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-pro": "workspace:*", diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index 664aaa705441..fdb03ac670c7 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "@codspeed/vitest-plugin": "^3.1.1", - "@emotion/react": "^11.13.0", + "@emotion/react": "^11.13.3", "@mui/x-charts": "workspace:*", "@mui/x-charts-pro": "workspace:*", "@testing-library/jest-dom": "^6.4.8", From 1dc0d779758bd4b3c404eed349ed1d18303849f2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:12:44 +0300 Subject: [PATCH 828/912] Bump @next/eslint-plugin-next to 14.2.6 (#14319) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 5b69f8fb200c..364d9ee47510 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "@mui/material": "^5.16.7", "@mui/monorepo": "github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa", "@mui/utils": "^5.16.6", - "@next/eslint-plugin-next": "14.2.5", + "@next/eslint-plugin-next": "14.2.6", "@octokit/plugin-retry": "^7.1.1", "@octokit/rest": "^21.0.2", "@playwright/test": "^1.44.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8632150f4ce..134213b9f3ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,8 +102,8 @@ importers: specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.3)(react@18.3.1) '@next/eslint-plugin-next': - specifier: 14.2.5 - version: 14.2.5 + specifier: 14.2.6 + version: 14.2.6 '@octokit/plugin-retry': specifier: ^7.1.1 version: 7.1.1(@octokit/core@4.2.4(encoding@0.1.13)) @@ -3157,8 +3157,8 @@ packages: '@next/env@14.2.5': resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} - '@next/eslint-plugin-next@14.2.5': - resolution: {integrity: sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g==} + '@next/eslint-plugin-next@14.2.6': + resolution: {integrity: sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==} '@next/swc-darwin-arm64@14.2.5': resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} @@ -12053,7 +12053,7 @@ snapshots: '@next/env@14.2.5': {} - '@next/eslint-plugin-next@14.2.5': + '@next/eslint-plugin-next@14.2.6': dependencies: glob: 10.3.10 From 3f3169e363b1bb8dc08f8d440db72ad73246c7cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:15:15 +0300 Subject: [PATCH 829/912] Bump @argos-ci/core to ^2.5.0 (#14325) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 335 +++++++++++++++++++++++++------------------------ 2 files changed, 175 insertions(+), 162 deletions(-) diff --git a/package.json b/package.json index 364d9ee47510..9293cd789321 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "devDependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "@argos-ci/core": "^2.4.1", + "@argos-ci/core": "^2.5.0", "@babel/cli": "^7.24.8", "@babel/core": "^7.25.2", "@babel/node": "^7.25.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 134213b9f3ed..8493bf54ad10 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^6.0.0 version: 6.0.0 '@argos-ci/core': - specifier: ^2.4.1 - version: 2.4.1 + specifier: ^2.5.0 + version: 2.5.0 '@babel/cli': specifier: ^7.24.8 version: 7.24.8(@babel/core@7.25.2) @@ -1705,12 +1705,16 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@argos-ci/core@2.4.1': - resolution: {integrity: sha512-Sl+5Zq4LBZF+CDB0eXGdTOLv3E9bubO2tfpDncQku5/s/N+2Ptn0JAw/Vc3EdJAtMWj1G8uy+6cvtV+eaVNnFg==} + '@argos-ci/api-client@0.2.0': + resolution: {integrity: sha512-stqugeAtbHjD2MwezvgJ4hU0HvlEGwGDVsJvUUD4YoRS0putS8yFjXuempkc90XGeHDEfYZgvG372rcK7/FClA==} engines: {node: '>=18.0.0'} - '@argos-ci/util@2.1.0': - resolution: {integrity: sha512-/78zJjZJCh3i7Eh3/lo7ybXK2pzXFGUNHbK3SgJNKNbFiBDllNRfy+x0kccjvN2gCCDz877jnFOlSoZZuMK56A==} + '@argos-ci/core@2.5.0': + resolution: {integrity: sha512-xNHKWzuSLHXm/5fhdEQv8zUwExeEkYzw6CV/Ha9rUBBTPomZL5CNxpXQ/ww1AA4mRC5dq3CfgreRq8qj7HQMVQ==} + engines: {node: '>=18.0.0'} + + '@argos-ci/util@2.1.1': + resolution: {integrity: sha512-UyACLQe9rvCPbo9muhrLte1AD75kQlcGBuecjmaotaF9MBMj+9Yz+TYs1jJrlLMgqowfIgbXjBYmkXRUn36tCg==} engines: {node: '>=18.0.0'} '@babel/cli@7.24.8': @@ -2762,116 +2766,108 @@ packages: resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} - '@img/sharp-darwin-arm64@0.33.4': - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.4': - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.4': - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.4': - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.4': - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.4': - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.4': - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.4': - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.4': - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.4': - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.4': - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -5477,8 +5473,8 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -8053,6 +8049,12 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + openapi-fetch@0.11.1: + resolution: {integrity: sha512-WtDQsrvxjXuCmo6u6WMQPfUaya8cLfL+ZCaXorPo9MMumqlU/Km/SrCXsEcJH234D4iykOkvJ6Q/iWBzK7+3rA==} + + openapi-typescript-helpers@0.0.12: + resolution: {integrity: sha512-FO+5kTWO6KDutigamr2MRwciYkAUYhqdctlyVRrQOe2uxif2/O2+GcS07jNnP36AUK6ubSsGu3GeBiYIc6eQzA==} + opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -9005,9 +9007,9 @@ packages: shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -10255,19 +10257,24 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@argos-ci/core@2.4.1': + '@argos-ci/api-client@0.2.0': dependencies: - '@argos-ci/util': 2.1.0 - axios: 1.7.4(debug@4.3.5) + openapi-fetch: 0.11.1 + + '@argos-ci/core@2.5.0': + dependencies: + '@argos-ci/api-client': 0.2.0 + '@argos-ci/util': 2.1.1 + axios: 1.7.4(debug@4.3.6) convict: 6.2.4 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) fast-glob: 3.3.2 - sharp: 0.33.4 + sharp: 0.33.5 tmp: 0.2.3 transitivePeerDependencies: - supports-color - '@argos-ci/util@2.1.0': {} + '@argos-ci/util@2.1.1': {} '@babel/cli@7.24.8(@babel/core@7.25.2)': dependencies: @@ -10303,7 +10310,7 @@ snapshots: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 convert-source-map: 2.0.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -10363,7 +10370,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -11197,7 +11204,7 @@ snapshots: '@babel/parser': 7.25.3 '@babel/template': 7.25.0 '@babel/types': 7.25.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -11222,7 +11229,7 @@ snapshots: '@codspeed/core@3.1.1': dependencies: - axios: 1.7.4(debug@4.3.5) + axios: 1.7.4(debug@4.3.6) find-up: 6.3.0 form-data: 4.0.0 node-gyp-build: 4.8.1 @@ -11445,7 +11452,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -11522,7 +11529,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11533,79 +11540,79 @@ snapshots: '@hutson/parse-repository-url@3.0.2': {} - '@img/sharp-darwin-arm64@0.33.4': + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.33.4': + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.2': + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.2': + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.2': + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.2': + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-s390x@1.0.2': + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.2': + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.2': + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-linux-arm64@0.33.4': + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm@0.33.4': + '@img/sharp-linux-arm@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-s390x@0.33.4': + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-x64@0.33.4': + '@img/sharp-linux-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.4': + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.4': + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-wasm32@0.33.4': + '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 optional: true - '@img/sharp-win32-ia32@0.33.4': + '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-x64@0.33.4': + '@img/sharp-win32-x64@0.33.5': optional: true '@inquirer/confirm@3.1.17': @@ -12747,7 +12754,7 @@ snapshots: '@types/express': 4.17.21 '@types/promise.allsettled': 1.0.6 '@types/tsscmp': 1.0.2 - axios: 1.7.4(debug@4.3.5) + axios: 1.7.4(debug@4.3.6) express: 4.18.2 path-to-regexp: 6.2.1 please-upgrade-node: 3.2.0 @@ -12801,7 +12808,7 @@ snapshots: '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 '@types/node': 18.19.45 - axios: 1.7.4(debug@4.3.5) + axios: 1.7.4(debug@4.3.6) eventemitter3: 3.1.2 form-data: 2.5.1 is-electron: 2.2.2 @@ -13225,7 +13232,7 @@ snapshots: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.16.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: typescript: 5.5.4 @@ -13246,7 +13253,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -13262,7 +13269,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -13276,7 +13283,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/visitor-keys': 7.16.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -13556,13 +13563,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color agent-base@7.1.0: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -13865,9 +13872,9 @@ snapshots: axe-core@4.9.1: {} - axios@1.7.4(debug@4.3.5): + axios@1.7.4(debug@4.3.6): dependencies: - follow-redirects: 1.15.6(debug@4.3.5) + follow-redirects: 1.15.6(debug@4.3.6) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -14692,7 +14699,7 @@ snapshots: chalk: 2.4.2 commander: 2.20.3 core-js: 3.35.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) fast-json-patch: 3.1.1 get-stdin: 6.0.0 http-proxy-agent: 5.0.0 @@ -14780,7 +14787,7 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.5(supports-color@8.1.1): + debug@4.3.6(supports-color@8.1.1): dependencies: ms: 2.1.2 optionalDependencies: @@ -14991,7 +14998,7 @@ snapshots: base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) engine.io-parser: 5.2.1 ws: 8.11.0 transitivePeerDependencies: @@ -15295,7 +15302,7 @@ snapshots: '@es-joy/jsdoccomment': 0.46.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint: 8.57.0 espree: 10.1.0 @@ -15424,7 +15431,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -15767,9 +15774,9 @@ snapshots: flow-parser@0.227.0: {} - follow-redirects@1.15.6(debug@4.3.5): + follow-redirects@1.15.6(debug@4.3.6): optionalDependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) for-each@0.3.3: dependencies: @@ -16248,21 +16255,21 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.6(debug@4.3.5) + follow-redirects: 1.15.6(debug@4.3.6) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -16270,14 +16277,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -16614,7 +16621,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -17251,7 +17258,7 @@ snapshots: log4js@6.9.1: dependencies: date-format: 4.0.14 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) flatted: 3.3.1 rfdc: 1.3.1 streamroller: 3.1.5 @@ -17428,7 +17435,7 @@ snapshots: micromark@2.11.4: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -17547,7 +17554,7 @@ snapshots: ansi-colors: 4.1.3 browser-stdout: 1.3.1 chokidar: 3.5.3 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 @@ -17833,7 +17840,7 @@ snapshots: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.7.4(debug@4.3.5) + axios: 1.7.4(debug@4.3.6) chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -17994,6 +18001,12 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + openapi-fetch@0.11.1: + dependencies: + openapi-typescript-helpers: 0.0.12 + + openapi-typescript-helpers@0.0.12: {} + opener@1.5.2: {} optionator@0.8.3: @@ -19025,31 +19038,31 @@ snapshots: shallowequal@1.1.0: {} - sharp@0.33.4: + sharp@0.33.5: dependencies: color: 4.2.3 detect-libc: 2.0.3 semver: 7.6.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.4 - '@img/sharp-darwin-x64': 0.33.4 - '@img/sharp-libvips-darwin-arm64': 1.0.2 - '@img/sharp-libvips-darwin-x64': 1.0.2 - '@img/sharp-libvips-linux-arm': 1.0.2 - '@img/sharp-libvips-linux-arm64': 1.0.2 - '@img/sharp-libvips-linux-s390x': 1.0.2 - '@img/sharp-libvips-linux-x64': 1.0.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.4 - '@img/sharp-linux-arm64': 0.33.4 - '@img/sharp-linux-s390x': 0.33.4 - '@img/sharp-linux-x64': 0.33.4 - '@img/sharp-linuxmusl-arm64': 0.33.4 - '@img/sharp-linuxmusl-x64': 0.33.4 - '@img/sharp-wasm32': 0.33.4 - '@img/sharp-win32-ia32': 0.33.4 - '@img/sharp-win32-x64': 0.33.4 + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 shebang-command@2.0.0: dependencies: @@ -19124,7 +19137,7 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -19133,7 +19146,7 @@ snapshots: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) engine.io: 6.5.4 socket.io-adapter: 2.5.2 socket.io-parser: 4.2.4 @@ -19145,7 +19158,7 @@ snapshots: socks-proxy-agent@8.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -19239,7 +19252,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -19602,7 +19615,7 @@ snapshots: tuf-js@2.2.0: dependencies: '@tufjs/models': 2.0.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) make-fetch-happen: 13.0.0 transitivePeerDependencies: - supports-color @@ -19858,7 +19871,7 @@ snapshots: vite-node@2.0.4(@types/node@18.19.45)(terser@5.27.0): dependencies: cac: 6.7.14 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) pathe: 1.1.2 tinyrainbow: 1.2.0 vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) @@ -19892,7 +19905,7 @@ snapshots: '@vitest/spy': 2.0.4 '@vitest/utils': 2.0.4 chai: 5.1.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) execa: 8.0.1 magic-string: 0.30.10 pathe: 1.1.2 From 71439b579c5b5dfb5dbf6ceae23075913655d412 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:31:18 +0300 Subject: [PATCH 830/912] Bump vitest to 2.0.5 (#14324) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 345 +++------------------------ test/performance-charts/package.json | 2 +- 2 files changed, 40 insertions(+), 307 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8493bf54ad10..cba1cf57a99c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1580,7 +1580,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) + version: 3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@emotion/react': specifier: ^11.13.3 version: 11.13.3(@types/react@18.3.3)(react@18.3.1) @@ -1607,7 +1607,7 @@ importers: version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0)) '@vitest/ui': specifier: 2.0.5 - version: 2.0.5(vitest@2.0.4) + version: 2.0.5(vitest@2.0.5) jsdom: specifier: ^24.1.1 version: 24.1.1 @@ -1618,8 +1618,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vitest: - specifier: 2.0.4 - version: 2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + specifier: 2.0.5 + version: 2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) packages: @@ -2431,12 +2431,6 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@bundled-es-modules/cookie@2.0.0': - resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} - - '@bundled-es-modules/statuses@1.0.1': - resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} - '@codspeed/core@3.1.1': resolution: {integrity: sha512-ONhERVDAtkm0nc+FYPivDozoMOlNUP2BWRBFDJYATGA18Iap5Kd2mZ1/Lwz54RB5+g+3YDOpsvotHa4hd3Q+7Q==} @@ -2871,22 +2865,6 @@ packages: cpu: [x64] os: [win32] - '@inquirer/confirm@3.1.17': - resolution: {integrity: sha512-qCpt/AABzPynz8tr69VDvhcjwmzAryipWXtW8Vi6m651da4H/d0Bdn55LkxXD7Rp2gfgxvxzTdb66AhIA8gzBA==} - engines: {node: '>=18'} - - '@inquirer/core@9.0.5': - resolution: {integrity: sha512-QWG41I7vn62O9stYKg/juKXt1PEbr/4ZZCPb4KgXDQGwgA9M5NBTQ7FnOvT1ridbxkm/wTxLCNraUs7y47pIRQ==} - engines: {node: '>=18'} - - '@inquirer/figures@1.0.5': - resolution: {integrity: sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==} - engines: {node: '>=18'} - - '@inquirer/type@1.5.1': - resolution: {integrity: sha512-m3YgGQlKNS0BM+8AFiJkCsTqHEFCWn6s/Rqye3mYwvqY6LdfUv12eSwbsgNzrYyrLXiy7IrrjDLPysaSBwEfhw==} - engines: {node: '>=18'} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2931,14 +2909,6 @@ packages: resolution: {integrity: sha512-wi72R01tgjBjzG2kjRyTHl4yCTKDfDMIXRyKz9E/FBa9SkFvUOAE4bdyY9MhEsRZmSWL7+CYE8Flv/HScRpBbA==} engines: {node: '>=18.0.0'} - '@mswjs/cookies@1.1.1': - resolution: {integrity: sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==} - engines: {node: '>=18'} - - '@mswjs/interceptors@0.29.1': - resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} - engines: {node: '>=18'} - '@mui/base@5.0.0-beta.40': resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} engines: {node: '>=12.0.0'} @@ -3552,15 +3522,6 @@ packages: '@octokit/types@9.3.2': resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} - '@open-draft/deferred-promise@2.2.0': - resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - - '@open-draft/logger@0.3.0': - resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} - - '@open-draft/until@2.1.0': - resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@opentelemetry/api@1.8.0': resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} @@ -3937,9 +3898,6 @@ packages: '@types/cookie@0.4.1': resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} @@ -4066,9 +4024,6 @@ packages: '@types/moment-jalaali@0.7.9': resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} - '@types/mute-stream@0.0.4': - resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - '@types/node@18.19.45': resolution: {integrity: sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==} @@ -4129,9 +4084,6 @@ packages: '@types/sinonjs__fake-timers@8.1.5': resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} - '@types/statuses@2.0.5': - resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - '@types/stylis@4.2.5': resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} @@ -4147,9 +4099,6 @@ packages: '@types/webpack-bundle-analyzer@4.7.0': resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} - '@types/wrap-ansi@3.0.0': - resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - '@types/ws@7.4.7': resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} @@ -4258,47 +4207,26 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 - '@vitest/browser@2.0.4': - resolution: {integrity: sha512-QsIkbqPqHsXvgxjCjjgKjuWKmrC0VJgpaDkuEmOy5gTnErhhifWIfp3HpH92K7cscfaIao+RlKv5f8nUMgjfmA==} - peerDependencies: - playwright: '*' - safaridriver: '*' - vitest: 2.0.4 - webdriverio: '*' - peerDependenciesMeta: - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - - '@vitest/expect@2.0.4': - resolution: {integrity: sha512-39jr5EguIoanChvBqe34I8m1hJFI4+jxvdOpD7gslZrVQBKhh8H9eD7J/LJX4zakrw23W+dITQTDqdt43xVcJw==} - - '@vitest/pretty-format@2.0.4': - resolution: {integrity: sha512-RYZl31STbNGqf4l2eQM1nvKPXE0NhC6Eq0suTTePc4mtMQ1Fn8qZmjV4emZdEdG2NOWGKSCrHZjmTqDCDoeFBw==} + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/runner@2.0.4': - resolution: {integrity: sha512-Gk+9Su/2H2zNfNdeJR124gZckd5st4YoSuhF1Rebi37qTXKnqYyFCd9KP4vl2cQHbtuVKjfEKrNJxHHCW8thbQ==} + '@vitest/runner@2.0.5': + resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} - '@vitest/snapshot@2.0.4': - resolution: {integrity: sha512-or6Mzoz/pD7xTvuJMFYEtso1vJo1S5u6zBTinfl+7smGUhqybn6VjzCDMhmTyVOFWwkCMuNjmNNxnyXPgKDoPw==} + '@vitest/snapshot@2.0.5': + resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} - '@vitest/spy@2.0.4': - resolution: {integrity: sha512-uTXU56TNoYrTohb+6CseP8IqNwlNdtPwEO0AWl+5j7NelS6x0xZZtP0bDWaLvOfUbaYwhhWp1guzXUxkC7mW7Q==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} '@vitest/ui@2.0.5': resolution: {integrity: sha512-m+ZpVt/PVi/nbeRKEjdiYeoh0aOfI9zr3Ria9LO7V2PlMETtAXJS3uETEZkc8Be2oOl8mhd7Ew+5SRBXRYncNw==} peerDependencies: vitest: 2.0.5 - '@vitest/utils@2.0.4': - resolution: {integrity: sha512-Zc75QuuoJhOBnlo99ZVUkJIuq4Oj0zAkrQ2VzCqNCx6wAwViHEh5Fnp4fiJTE9rA+sAoXRf00Z9xGgfEzV6fzQ==} - '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -5033,10 +4961,6 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} - cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} - client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -6471,10 +6395,6 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql@16.9.0: - resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - gtoken@7.0.1: resolution: {integrity: sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==} engines: {node: '>=14.0.0'} @@ -6541,9 +6461,6 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - headers-polyfill@4.0.3: - resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} - hermes-estree@0.20.1: resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} @@ -6841,9 +6758,6 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -7771,16 +7685,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.3.2: - resolution: {integrity: sha512-vDn6d6a50vxPE+HnaKQfpmZ4SVXlOjF97yD5FJcUT3v2/uZ65qvTYNL25yOmnrfCNWZ4wtAS7EbtXxygMug2Tw==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - typescript: '>= 4.7.x' - peerDependenciesMeta: - typescript: - optional: true - multimatch@5.0.0: resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} engines: {node: '>=10'} @@ -8079,9 +7983,6 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - outvariant@1.4.3: - resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - override-require@1.1.1: resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==} @@ -9179,9 +9080,6 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - strict-event-emitter@0.5.1: - resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} - string-replace-loader@3.1.0: resolution: {integrity: sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ==} peerDependencies: @@ -9572,10 +9470,6 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.23.0: - resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} - engines: {node: '>=16'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -9775,8 +9669,8 @@ packages: vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - vite-node@2.0.4: - resolution: {integrity: sha512-ZpJVkxcakYtig5iakNeL7N3trufe3M6vGuzYAr4GsbCTwobDeyPJpE4cjDhhPluv8OvQCFzu2LWp6GkoKRITXA==} + vite-node@2.0.5: + resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -9808,15 +9702,15 @@ packages: terser: optional: true - vitest@2.0.4: - resolution: {integrity: sha512-luNLDpfsnxw5QSW4bISPe6tkxVvv5wn2BBs/PuDRkhXZ319doZyLOBr1sjfB5yCEpTiU7xCAdViM8TNVGPwoog==} + vitest@2.0.5: + resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.19.45 - '@vitest/browser': 2.0.4 - '@vitest/ui': 2.0.4 + '@vitest/browser': 2.0.5 + '@vitest/ui': 2.0.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -10115,10 +10009,6 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} - engines: {node: '>=18'} - yoctocolors@2.0.2: resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} engines: {node: '>=18'} @@ -11217,16 +11107,6 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@bundled-es-modules/cookie@2.0.0': - dependencies: - cookie: 0.5.0 - optional: true - - '@bundled-es-modules/statuses@1.0.1': - dependencies: - statuses: 2.0.1 - optional: true - '@codspeed/core@3.1.1': dependencies: axios: 1.7.4(debug@4.3.6) @@ -11236,11 +11116,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': dependencies: '@codspeed/core': 3.1.1 vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) - vitest: 2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) transitivePeerDependencies: - debug @@ -11615,37 +11495,6 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true - '@inquirer/confirm@3.1.17': - dependencies: - '@inquirer/core': 9.0.5 - '@inquirer/type': 1.5.1 - optional: true - - '@inquirer/core@9.0.5': - dependencies: - '@inquirer/figures': 1.0.5 - '@inquirer/type': 1.5.1 - '@types/mute-stream': 0.0.4 - '@types/node': 18.19.45 - '@types/wrap-ansi': 3.0.0 - ansi-escapes: 4.3.2 - cli-spinners: 2.9.2 - cli-width: 4.1.0 - mute-stream: 1.0.0 - signal-exit: 4.1.0 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 - optional: true - - '@inquirer/figures@1.0.5': - optional: true - - '@inquirer/type@1.5.1': - dependencies: - mute-stream: 1.0.0 - optional: true - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -11776,19 +11625,6 @@ snapshots: - supports-color - typescript - '@mswjs/cookies@1.1.1': - optional: true - - '@mswjs/interceptors@0.29.1': - dependencies: - '@open-draft/deferred-promise': 2.2.0 - '@open-draft/logger': 0.3.0 - '@open-draft/until': 2.1.0 - is-node-process: 1.2.0 - outvariant: 1.4.3 - strict-event-emitter: 0.5.1 - optional: true - '@mui/base@5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 @@ -12572,18 +12408,6 @@ snapshots: dependencies: '@octokit/openapi-types': 18.1.1 - '@open-draft/deferred-promise@2.2.0': - optional: true - - '@open-draft/logger@0.3.0': - dependencies: - is-node-process: 1.2.0 - outvariant: 1.4.3 - optional: true - - '@open-draft/until@2.1.0': - optional: true - '@opentelemetry/api@1.8.0': optional: true @@ -12967,9 +12791,6 @@ snapshots: '@types/cookie@0.4.1': {} - '@types/cookie@0.6.0': - optional: true - '@types/cors@2.8.17': dependencies: '@types/node': 18.19.45 @@ -13101,11 +12922,6 @@ snapshots: dependencies: moment: 2.30.1 - '@types/mute-stream@0.0.4': - dependencies: - '@types/node': 18.19.45 - optional: true - '@types/node@18.19.45': dependencies: undici-types: 5.26.5 @@ -13173,9 +12989,6 @@ snapshots: '@types/sinonjs__fake-timers@8.1.5': {} - '@types/statuses@2.0.5': - optional: true - '@types/stylis@4.2.5': {} '@types/stylis@4.2.6': {} @@ -13195,9 +13008,6 @@ snapshots: - uglify-js - webpack-cli - '@types/wrap-ansi@3.0.0': - optional: true - '@types/ws@7.4.7': dependencies: '@types/node': 18.19.45 @@ -13350,55 +13160,33 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/browser@2.0.4(playwright@1.46.0)(typescript@5.5.4)(vitest@2.0.4)': - dependencies: - '@testing-library/dom': 10.4.0 - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) - '@vitest/utils': 2.0.4 - magic-string: 0.30.10 - msw: 2.3.2(typescript@5.5.4) - sirv: 2.0.4 - vitest: 2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) - ws: 8.18.0 - optionalDependencies: - playwright: 1.46.0 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - optional: true - - '@vitest/expect@2.0.4': + '@vitest/expect@2.0.5': dependencies: - '@vitest/spy': 2.0.4 - '@vitest/utils': 2.0.4 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.4': - dependencies: - tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.0.4': + '@vitest/runner@2.0.5': dependencies: - '@vitest/utils': 2.0.4 + '@vitest/utils': 2.0.5 pathe: 1.1.2 - '@vitest/snapshot@2.0.4': + '@vitest/snapshot@2.0.5': dependencies: - '@vitest/pretty-format': 2.0.4 + '@vitest/pretty-format': 2.0.5 magic-string: 0.30.10 pathe: 1.1.2 - '@vitest/spy@2.0.4': + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.0 - '@vitest/ui@2.0.5(vitest@2.0.4)': + '@vitest/ui@2.0.5(vitest@2.0.5)': dependencies: '@vitest/utils': 2.0.5 fast-glob: 3.3.2 @@ -13407,14 +13195,7 @@ snapshots: pathe: 1.1.2 sirv: 2.0.4 tinyrainbow: 1.2.0 - vitest: 2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) - - '@vitest/utils@2.0.4': - dependencies: - '@vitest/pretty-format': 2.0.4 - estree-walker: 3.0.3 - loupe: 3.1.1 - tinyrainbow: 1.2.0 + vitest: 2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) '@vitest/utils@2.0.5': dependencies: @@ -14290,9 +14071,6 @@ snapshots: cli-width@3.0.0: {} - cli-width@4.1.0: - optional: true - client-only@0.0.1: {} clipboard-copy@4.0.1: {} @@ -16112,9 +15890,6 @@ snapshots: graphemer@1.4.0: {} - graphql@16.9.0: - optional: true - gtoken@7.0.1(encoding@0.1.13): dependencies: gaxios: 6.1.1(encoding@0.1.13) @@ -16173,9 +15948,6 @@ snapshots: he@1.2.0: {} - headers-polyfill@4.0.3: - optional: true - hermes-estree@0.20.1: {} hermes-parser@0.20.1: @@ -16481,9 +16253,6 @@ snapshots: is-negative-zero@2.0.3: {} - is-node-process@1.2.0: - optional: true - is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -17601,29 +17370,6 @@ snapshots: ms@2.1.3: {} - msw@2.3.2(typescript@5.5.4): - dependencies: - '@bundled-es-modules/cookie': 2.0.0 - '@bundled-es-modules/statuses': 1.0.1 - '@inquirer/confirm': 3.1.17 - '@mswjs/cookies': 1.1.1 - '@mswjs/interceptors': 0.29.1 - '@open-draft/until': 2.1.0 - '@types/cookie': 0.6.0 - '@types/statuses': 2.0.5 - chalk: 4.1.2 - graphql: 16.9.0 - headers-polyfill: 4.0.3 - is-node-process: 1.2.0 - outvariant: 1.4.3 - path-to-regexp: 6.2.1 - strict-event-emitter: 0.5.1 - type-fest: 4.23.0 - yargs: 17.7.2 - optionalDependencies: - typescript: 5.5.4 - optional: true - multimatch@5.0.0: dependencies: '@types/minimatch': 3.0.5 @@ -18052,9 +17798,6 @@ snapshots: os-tmpdir@1.0.2: {} - outvariant@1.4.3: - optional: true - override-require@1.1.1: {} p-event@5.0.1: @@ -19259,9 +19002,6 @@ snapshots: streamsearch@1.1.0: {} - strict-event-emitter@0.5.1: - optional: true - string-replace-loader@3.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: loader-utils: 2.0.4 @@ -19648,9 +19388,6 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.23.0: - optional: true - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -19868,7 +19605,7 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite-node@2.0.4(@types/node@18.19.45)(terser@5.27.0): + vite-node@2.0.5(@types/node@18.19.45)(terser@5.27.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@8.1.1) @@ -19895,15 +19632,15 @@ snapshots: fsevents: 2.3.3 terser: 5.27.0 - vitest@2.0.4(@types/node@18.19.45)(@vitest/browser@2.0.4)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0): + vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.4 + '@vitest/expect': 2.0.5 '@vitest/pretty-format': 2.0.5 - '@vitest/runner': 2.0.4 - '@vitest/snapshot': 2.0.4 - '@vitest/spy': 2.0.4 - '@vitest/utils': 2.0.4 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 chai: 5.1.1 debug: 4.3.6(supports-color@8.1.1) execa: 8.0.1 @@ -19914,12 +19651,11 @@ snapshots: tinypool: 1.0.0 tinyrainbow: 1.2.0 vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) - vite-node: 2.0.4(@types/node@18.19.45)(terser@5.27.0) + vite-node: 2.0.5(@types/node@18.19.45)(terser@5.27.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.45 - '@vitest/browser': 2.0.4(playwright@1.46.0)(typescript@5.5.4)(vitest@2.0.4) - '@vitest/ui': 2.0.5(vitest@2.0.4) + '@vitest/ui': 2.0.5(vitest@2.0.5) jsdom: 24.1.1 transitivePeerDependencies: - less @@ -20292,9 +20028,6 @@ snapshots: yocto-queue@1.0.0: {} - yoctocolors-cjs@2.1.2: - optional: true - yoctocolors@2.0.2: {} zip-stream@4.1.1: diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index fdb03ac670c7..684fb5aa2378 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -20,6 +20,6 @@ "jsdom": "^24.1.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "vitest": "2.0.4" + "vitest": "2.0.5" } } From bfe2070829274e44ee7772f36a6346ffe47f1ff6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:35:42 +0300 Subject: [PATCH 831/912] Bump axe-core to 4.10.0 (#14329) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 9293cd789321..c16953ab0815 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/parser": "^7.16.1", "autoprefixer": "^10.4.20", - "axe-core": "4.9.1", + "axe-core": "4.10.0", "babel-loader": "^9.1.3", "babel-plugin-istanbul": "^7.0.0", "babel-plugin-module-resolver": "^5.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cba1cf57a99c..4187d34b10eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -168,8 +168,8 @@ importers: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.41) axe-core: - specifier: 4.9.1 - version: 4.9.1 + specifier: 4.10.0 + version: 4.10.0 babel-loader: specifier: ^9.1.3 version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) @@ -4609,8 +4609,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.9.1: - resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} axios@1.7.4: @@ -13651,7 +13651,7 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.9.1: {} + axe-core@4.10.0: {} axios@1.7.4(debug@4.3.6): dependencies: @@ -15098,7 +15098,7 @@ snapshots: array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.9.1 + axe-core: 4.10.0 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 From d48d99443b052fe1d44011a5cf9ebb12fae98f7d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:36:56 +0300 Subject: [PATCH 832/912] Bump @testing-library/jest-dom to ^6.5.0 (#14326) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 11 +++++------ test/performance-charts/package.json | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4187d34b10eb..33db6a26a6c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1591,8 +1591,8 @@ importers: specifier: workspace:* version: link:../../packages/x-charts-pro/build '@testing-library/jest-dom': - specifier: ^6.4.8 - version: 6.4.8 + specifier: ^6.5.0 + version: 6.5.0 '@testing-library/react': specifier: ^16.0.0 version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -3828,8 +3828,8 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.4.8': - resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@testing-library/react@16.0.0': @@ -12715,10 +12715,9 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.8': + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.25.0 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index 684fb5aa2378..0a4bb3cad472 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -11,7 +11,7 @@ "@emotion/react": "^11.13.3", "@mui/x-charts": "workspace:*", "@mui/x-charts-pro": "workspace:*", - "@testing-library/jest-dom": "^6.4.8", + "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", "@vitejs/plugin-react": "^4.3.1", From 7c1c2744f6659d62718127e049fbc2abdf9d7dd1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:38:40 +0300 Subject: [PATCH 833/912] Bump React router to ^6.26.1 (#14328) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 4 ++-- pnpm-lock.yaml | 36 ++++++++++++++++++------------------ test/package.json | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/package.json b/docs/package.json index dbd10e508bee..6b84b3c4a6b2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -86,8 +86,8 @@ "react-dom": "^18.3.1", "react-hook-form": "^7.52.2", "react-is": "^18.3.1", - "react-router": "^6.25.1", - "react-router-dom": "^6.25.1", + "react-router": "^6.26.1", + "react-router-dom": "^6.26.1", "react-runner": "^1.0.5", "react-simple-code-editor": "^0.14.1", "recast": "^0.23.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33db6a26a6c3..16bd6be2542c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -603,11 +603,11 @@ importers: specifier: ^18.3.1 version: 18.3.1 react-router: - specifier: ^6.25.1 - version: 6.25.1(react@18.3.1) + specifier: ^6.26.1 + version: 6.26.1(react@18.3.1) react-router-dom: - specifier: ^6.25.1 - version: 6.25.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.26.1 + version: 6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-runner: specifier: ^1.0.5 version: 1.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1567,8 +1567,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-router-dom: - specifier: ^6.25.1 - version: 6.25.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.26.1 + version: 6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) stylis: specifier: ^4.3.2 version: 4.3.2 @@ -3572,8 +3572,8 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@remix-run/router@1.18.0': - resolution: {integrity: sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw==} + '@remix-run/router@1.19.1': + resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} engines: {node: '>=14.0.0'} '@rollup/rollup-android-arm-eabi@4.18.1': @@ -8525,15 +8525,15 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-router-dom@6.25.1: - resolution: {integrity: sha512-0tUDpbFvk35iv+N89dWNrJp+afLgd+y4VtorJZuOCXK0kkCWjEvb3vTJM++SYvMEpbVwXKf3FjeVveVEb6JpDQ==} + react-router-dom@6.26.1: + resolution: {integrity: sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.25.1: - resolution: {integrity: sha512-u8ELFr5Z6g02nUtpPAggP73Jigj1mRePSwhS/2nkTrlPU5yEkH1vYzWNyvSnSzeeE2DNqWdH+P8OhIh9wuXhTw==} + react-router@6.26.1: + resolution: {integrity: sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -12456,7 +12456,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@remix-run/router@1.18.0': {} + '@remix-run/router@1.19.1': {} '@rollup/rollup-android-arm-eabi@4.18.1': optional: true @@ -18309,16 +18309,16 @@ snapshots: react-refresh@0.14.2: {} - react-router-dom@6.25.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@remix-run/router': 1.18.0 + '@remix-run/router': 1.19.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-router: 6.25.1(react@18.3.1) + react-router: 6.26.1(react@18.3.1) - react-router@6.25.1(react@18.3.1): + react-router@6.26.1(react@18.3.1): dependencies: - '@remix-run/router': 1.18.0 + '@remix-run/router': 1.19.1 react: 18.3.1 react-runner@1.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): diff --git a/test/package.json b/test/package.json index b826ca7a644c..1e2a306a15c1 100644 --- a/test/package.json +++ b/test/package.json @@ -32,7 +32,7 @@ "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.25.1", + "react-router-dom": "^6.26.1", "stylis": "^4.3.2", "stylis-plugin-rtl": "^2.1.1" } From 377d5a000cfb9684d3d30af708691c3bec69aaf8 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Mon, 26 Aug 2024 12:22:46 +0300 Subject: [PATCH 834/912] [charts-pro] Avoid relative reference to `@mui/x-charts` package (#14335) Co-authored-by: alex --- .codesandbox/ci.json | 2 ++ docs/pages/x/api/charts/charts-surface.json | 4 ++-- .../context/CartesianProviderPro/createAxisFilterMapper.ts | 2 +- packages/x-charts/src/{ => ChartsSurface}/ChartsSurface.tsx | 2 +- packages/x-charts/src/ChartsSurface/index.ts | 1 + packages/x-charts/src/{constants.ts => constants/index.ts} | 0 packages/x-charts/src/internals/index.ts | 1 + 7 files changed, 8 insertions(+), 4 deletions(-) rename packages/x-charts/src/{ => ChartsSurface}/ChartsSurface.tsx (98%) create mode 100644 packages/x-charts/src/ChartsSurface/index.ts rename packages/x-charts/src/{constants.ts => constants/index.ts} (100%) diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json index f709cfa8489c..f46a89cf5698 100644 --- a/.codesandbox/ci.json +++ b/.codesandbox/ci.json @@ -11,8 +11,10 @@ "packages/x-date-pickers", "packages/x-date-pickers-pro", "packages/x-charts", + "packages/x-charts-pro", "packages/x-charts-vendor", "packages/x-tree-view", + "packages/x-tree-view-pro", "packages/x-internals" ], "publishDirectory": { diff --git a/docs/pages/x/api/charts/charts-surface.json b/docs/pages/x/api/charts/charts-surface.json index bd8d62382ec4..6e280f8a0119 100644 --- a/docs/pages/x/api/charts/charts-surface.json +++ b/docs/pages/x/api/charts/charts-surface.json @@ -6,13 +6,13 @@ }, "name": "ChartsSurface", "imports": [ - "import { ChartsSurface } from '/packages/x-charts/src/ChartsSurface.tsx';", + "import { ChartsSurface } from '@mui/x-charts/ChartsSurface';", "import { ChartsSurface } from '@mui/x-charts';", "import { ChartsSurface } from '@mui/x-charts-pro';" ], "classes": [], "muiName": "MuiChartsSurface", - "filename": "/packages/x-charts/src/ChartsSurface.tsx", + "filename": "/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx", "inheritance": null, "demos": "", "cssComponent": false diff --git a/packages/x-charts-pro/src/context/CartesianProviderPro/createAxisFilterMapper.ts b/packages/x-charts-pro/src/context/CartesianProviderPro/createAxisFilterMapper.ts index 9e488801f8b3..3a94d3512bb8 100644 --- a/packages/x-charts-pro/src/context/CartesianProviderPro/createAxisFilterMapper.ts +++ b/packages/x-charts-pro/src/context/CartesianProviderPro/createAxisFilterMapper.ts @@ -6,10 +6,10 @@ import { ZoomAxisFilters, GetZoomAxisFilters, isDefined, + getScale, } from '@mui/x-charts/internals'; import { ChartsAxisProps, ScaleName, AxisConfig } from '@mui/x-charts'; import { ZoomData } from '../ZoomProvider'; -import { getScale } from '../../../../x-charts/src/internals/getScale'; type CreateAxisFilterMapperParams = { zoomData: ZoomData[]; diff --git a/packages/x-charts/src/ChartsSurface.tsx b/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx similarity index 98% rename from packages/x-charts/src/ChartsSurface.tsx rename to packages/x-charts/src/ChartsSurface/ChartsSurface.tsx index 47147d81f2a0..949b93ea9774 100644 --- a/packages/x-charts/src/ChartsSurface.tsx +++ b/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx @@ -1,7 +1,7 @@ import { styled, SxProps, Theme } from '@mui/material/styles'; import PropTypes from 'prop-types'; import * as React from 'react'; -import { useAxisEvents } from './hooks/useAxisEvents'; +import { useAxisEvents } from '../hooks/useAxisEvents'; type ViewBox = { x?: number; diff --git a/packages/x-charts/src/ChartsSurface/index.ts b/packages/x-charts/src/ChartsSurface/index.ts new file mode 100644 index 000000000000..488a89f2528f --- /dev/null +++ b/packages/x-charts/src/ChartsSurface/index.ts @@ -0,0 +1 @@ +export * from './ChartsSurface'; diff --git a/packages/x-charts/src/constants.ts b/packages/x-charts/src/constants/index.ts similarity index 100% rename from packages/x-charts/src/constants.ts rename to packages/x-charts/src/constants/index.ts diff --git a/packages/x-charts/src/internals/index.ts b/packages/x-charts/src/internals/index.ts index 883adb5e4424..e3eca45c3d56 100644 --- a/packages/x-charts/src/internals/index.ts +++ b/packages/x-charts/src/internals/index.ts @@ -22,6 +22,7 @@ export * from './getLabel'; export * from './getSVGPoint'; export * from './isDefined'; export { unstable_cleanupDOM } from './domUtils'; +export * from './getScale'; // contexts From 83d3b11364d6c9b2cdf881030fcacd2ee71b6157 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:27:21 +0200 Subject: [PATCH 835/912] Bump typescript-eslint to ^7.18.0 (#14311) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 +- .../eslint-plugin-material-ui/package.json | 4 +- pnpm-lock.yaml | 138 +++++++++--------- 3 files changed, 73 insertions(+), 73 deletions(-) diff --git a/package.json b/package.json index c16953ab0815..1a6921720f45 100644 --- a/package.json +++ b/package.json @@ -113,8 +113,8 @@ "@types/requestidlecallback": "^0.3.7", "@types/sinon": "^17.0.3", "@types/yargs": "^17.0.33", - "@typescript-eslint/eslint-plugin": "^7.16.1", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", "autoprefixer": "^10.4.20", "axe-core": "4.10.0", "babel-loader": "^9.1.3", diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index c5f013fb9f82..49bd03fbe7f0 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -6,8 +6,8 @@ "main": "src/index.js", "devDependencies": { "@types/eslint": "^8.56.11", - "@typescript-eslint/utils": "^7.16.1", - "@typescript-eslint/parser": "^7.16.1" + "@typescript-eslint/utils": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0" }, "scripts": { "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/eslint-plugin-material-ui/**/*.test.js' --timeout 3000" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16bd6be2542c..5e0096cbc99a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,11 +159,11 @@ importers: specifier: ^17.0.33 version: 17.0.33 '@typescript-eslint/eslint-plugin': - specifier: ^7.16.1 - version: 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + specifier: ^7.18.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/parser': - specifier: ^7.16.1 - version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) + specifier: ^7.18.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.41) @@ -226,10 +226,10 @@ importers: version: 8.57.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -241,7 +241,7 @@ importers: version: 1.3.2(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsdoc: specifier: ^48.11.0 version: 48.11.0(eslint@8.57.0) @@ -700,11 +700,11 @@ importers: specifier: ^8.56.11 version: 8.56.11 '@typescript-eslint/parser': - specifier: ^7.16.1 - version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) + specifier: ^7.18.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/utils': - specifier: ^7.16.1 - version: 7.16.1(eslint@8.57.0)(typescript@5.5.4) + specifier: ^7.18.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) packages/x-charts: dependencies: @@ -4108,8 +4108,8 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@7.16.1': - resolution: {integrity: sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==} + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -4119,8 +4119,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.16.1': - resolution: {integrity: sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==} + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4133,12 +4133,12 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@7.16.1': - resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.16.1': - resolution: {integrity: sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==} + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4151,8 +4151,8 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@7.16.1': - resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -4164,8 +4164,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.16.1': - resolution: {integrity: sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -4179,8 +4179,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@7.16.1': - resolution: {integrity: sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==} + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4189,8 +4189,8 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@7.16.1': - resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} '@ungap/structured-clone@1.2.0': @@ -13017,14 +13017,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.16.1 - '@typescript-eslint/type-utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.16.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -13035,12 +13035,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 7.16.1 - '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.16.1 + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: @@ -13053,15 +13053,15 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@7.16.1': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/visitor-keys': 7.16.1 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@7.16.1(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) - '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) @@ -13072,7 +13072,7 @@ snapshots: '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@7.16.1': {} + '@typescript-eslint/types@7.18.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)': dependencies: @@ -13088,10 +13088,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.16.1(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/visitor-keys': 7.16.1 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 @@ -13118,12 +13118,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@7.16.1(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.16.1 - '@typescript-eslint/types': 7.16.1 - '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) eslint: 8.57.0 transitivePeerDependencies: - supports-color @@ -13134,9 +13134,9 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.16.1': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -14969,29 +14969,29 @@ snapshots: optionalDependencies: source-map: 0.2.0 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.0))(eslint-plugin-react@7.35.0(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) @@ -15015,7 +15015,7 @@ snapshots: array.prototype.find: 2.2.2 debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -15028,11 +15028,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) @@ -15047,7 +15047,7 @@ snapshots: lodash.snakecase: 4.1.1 lodash.upperfirst: 4.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.3 @@ -15057,7 +15057,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -15068,7 +15068,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack From 558a877c1ca17ba6f1a5b107665ed4eac6295943 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:49:52 +0200 Subject: [PATCH 836/912] Bump webpack to ^5.94.0 (#14312) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 128 +++++++++++++++++++++++-------------------------- 2 files changed, 60 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 1a6921720f45..671c6d635846 100644 --- a/package.json +++ b/package.json @@ -189,7 +189,7 @@ "typescript": "^5.5.4", "unist-util-visit": "^2.0.3", "util": "^0.12.5", - "webpack": "^5.92.1", + "webpack": "^5.94.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4", "yargs": "^17.7.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e0096cbc99a..ab9fda6a073f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -172,7 +172,7 @@ importers: version: 4.10.0 babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) babel-plugin-istanbul: specifier: ^7.0.0 version: 7.0.0 @@ -202,7 +202,7 @@ importers: version: 1.12.0(chai@4.5.0) compression-webpack-plugin: specifier: ^11.1.0 - version: 11.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 11.1.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -235,7 +235,7 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-import-resolver-webpack: specifier: ^0.13.8 - version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) eslint-plugin-filenames: specifier: ^1.3.2 version: 1.3.2(eslint@8.57.0) @@ -286,7 +286,7 @@ importers: version: 14.0.2 html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) jsdom: specifier: 24.1.1 version: 24.1.1 @@ -316,7 +316,7 @@ importers: version: 0.4.0 karma-webpack: specifier: ^5.0.1 - version: 5.0.1(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 5.0.1(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) lerna: specifier: ^8.1.8 version: 8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13) @@ -370,10 +370,10 @@ importers: version: 3.0.0 string-replace-loader: specifier: ^3.1.0 - version: 3.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 3.1.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) terser-webpack-plugin: specifier: ^5.3.10 - version: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + version: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) tsx: specifier: ^4.16.2 version: 4.16.2 @@ -387,14 +387,14 @@ importers: specifier: ^0.12.5 version: 0.12.5 webpack: - specifier: ^5.92.1 - version: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + specifier: ^5.94.0 + version: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2 webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) + version: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) yargs: specifier: ^17.7.2 version: 17.7.2 @@ -686,7 +686,7 @@ importers: version: 4.2.6 '@types/webpack-bundle-analyzer': specifier: ^4.7.0 - version: 4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + version: 4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) gm: specifier: ^1.25.0 version: 1.25.0 @@ -3937,9 +3937,6 @@ packages: '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@8.56.11': resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==} @@ -5621,8 +5618,8 @@ packages: resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} engines: {node: '>=0.6'} - enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} enquirer@2.3.6: @@ -9785,8 +9782,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack@5.92.1: - resolution: {integrity: sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==} + webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -12824,11 +12821,6 @@ snapshots: '@types/doctrine@0.0.9': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 8.56.11 - '@types/estree': 1.0.5 - '@types/eslint@8.56.11': dependencies: '@types/estree': 1.0.5 @@ -12996,11 +12988,11 @@ snapshots: '@types/unist@2.0.10': {} - '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))': + '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))': dependencies: '@types/node': 18.19.45 tapable: 2.2.1 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) transitivePeerDependencies: - '@swc/core' - esbuild @@ -13279,20 +13271,20 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4))': dependencies: - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) '@xtuc/ieee754@1.2.0': {} @@ -13664,12 +13656,12 @@ snapshots: dependencies: deep-equal: 2.2.3 - babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) babel-plugin-istanbul@7.0.0: dependencies: @@ -14183,11 +14175,11 @@ snapshots: dependencies: mime-db: 1.52.0 - compression-webpack-plugin@11.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + compression-webpack-plugin@11.1.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) compression@1.7.4: dependencies: @@ -14789,7 +14781,7 @@ snapshots: memory-fs: 0.2.0 tapable: 0.1.10 - enhanced-resolve@5.17.0: + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -15010,7 +15002,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: array.prototype.find: 2.2.2 debug: 3.2.7 @@ -15024,18 +15016,18 @@ snapshots: lodash: 4.17.21 resolve: 2.0.0-next.5 semver: 5.7.2 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.29.1)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) transitivePeerDependencies: - supports-color @@ -15057,7 +15049,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.29.1)(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -15995,7 +15987,7 @@ snapshots: readable-stream: 1.0.34 through2: 0.4.2 - html-webpack-plugin@5.6.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -16003,7 +15995,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -16711,11 +16703,11 @@ snapshots: dependencies: graceful-fs: 4.2.11 - karma-webpack@5.0.1(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + karma-webpack@5.0.1(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: glob: 7.2.3 minimatch: 9.0.4 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-merge: 4.2.2 karma@6.4.4: @@ -19001,11 +18993,11 @@ snapshots: streamsearch@1.1.0: {} - string-replace-loader@3.1.0(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + string-replace-loader@3.1.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) string-width@4.2.3: dependencies: @@ -19204,25 +19196,25 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.6.3 - terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))): + terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) optionalDependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) optionalDependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) @@ -19704,12 +19696,12 @@ snapshots: - bufferutil - utf-8-validate - webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1): + webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -19718,7 +19710,7 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-bundle-analyzer: 4.10.2 @@ -19735,9 +19727,8 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1)): + webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)): dependencies: - '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 @@ -19746,7 +19737,7 @@ snapshots: acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.3 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -19758,19 +19749,18 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1))) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4): + webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4): dependencies: - '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 @@ -19779,7 +19769,7 @@ snapshots: acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.3 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.17.0 + enhanced-resolve: 5.17.1 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -19791,11 +19781,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.92.1(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.92.1) + webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild From 41c181fa6654f54b9ee488350d19e33f24db6620 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:06:58 +0700 Subject: [PATCH 837/912] Bump tsx to ^4.18.0 (#14310) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- package.json | 2 +- pnpm-lock.yaml | 260 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 255 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 671c6d635846..178bef417105 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "stream-browserify": "^3.0.0", "string-replace-loader": "^3.1.0", "terser-webpack-plugin": "^5.3.10", - "tsx": "^4.16.2", + "tsx": "^4.18.0", "typescript": "^5.5.4", "unist-util-visit": "^2.0.3", "util": "^0.12.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab9fda6a073f..5ce084863118 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -375,8 +375,8 @@ importers: specifier: ^5.3.10 version: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) tsx: - specifier: ^4.16.2 - version: 4.16.2 + specifier: ^4.18.0 + version: 4.18.0 typescript: specifier: ^5.5.4 version: 5.5.4 @@ -2552,138 +2552,282 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5699,6 +5843,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -9410,8 +9559,8 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.16.2: - resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} + tsx@4.18.0: + resolution: {integrity: sha512-a1jaKBSVQkd6yEc1/NI7G6yHFfefIcuf3QJST7ZEyn4oQnxLYrZR5uZAM8UrwUa3Ge8suiZHcNS1gNrEvmobqg==} engines: {node: '>=18.0.0'} hasBin: true @@ -11253,72 +11402,144 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.1': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 @@ -14942,6 +15163,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -19336,9 +19584,9 @@ snapshots: tslib: 1.14.1 typescript: 5.5.4 - tsx@4.16.2: + tsx@4.18.0: dependencies: - esbuild: 0.21.5 + esbuild: 0.23.1 get-tsconfig: 4.7.5 optionalDependencies: fsevents: 2.3.3 From 01456a3daf42dde43b3f649da9e4726772b7319b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:45:33 +0000 Subject: [PATCH 838/912] Bump @types/react to ^18.3.4 (#14320) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 346 +++++++++++++++++++++++----------------------- test/package.json | 2 +- 3 files changed, 175 insertions(+), 175 deletions(-) diff --git a/package.json b/package.json index 178bef417105..db59c40b38a9 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "@types/lodash": "^4.17.7", "@types/mocha": "^10.0.7", "@types/node": "^18.19.45", - "@types/react": "^18.3.3", + "@types/react": "^18.3.4", "@types/react-dom": "^18.3.0", "@types/react-test-renderer": "^18.3.0", "@types/requestidlecallback": "^0.3.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ce084863118..6bc2dc7cb8d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -79,28 +79,28 @@ importers: version: 11.13.1 '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/icons-material': specifier: ^5.16.7 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/internal-markdown': specifier: ^1.0.10 version: 1.0.10 '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': specifier: github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa version: https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@next/eslint-plugin-next': specifier: 14.2.6 version: 14.2.6 @@ -141,8 +141,8 @@ importers: specifier: ^18.19.45 version: 18.19.45 '@types/react': - specifier: ^18.3.3 - version: 18.3.3 + specifier: ^18.3.4 + version: 18.3.4 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 @@ -412,46 +412,46 @@ importers: version: 7.25.0 '@docsearch/react': specifier: ^3.6.1 - version: 3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) + version: 3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/server': specifier: ^11.11.0 version: 11.11.0 '@emotion/styled': specifier: ^11.13.0 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.6 - version: 6.0.0-beta.6(qldo6khlupzuyxlkybrvconkvm) + version: 6.0.0-beta.6(5g2vm74xnrzd3pobh7oqiqftoi) '@mui/icons-material': specifier: ^5.16.7 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 - version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/lab': specifier: ^5.0.0-alpha.173 - version: 5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.6 - version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.7 - version: 5.16.7(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@types/react@18.3.4)(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../packages/x-charts/build @@ -713,19 +713,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-charts-vendor': specifier: workspace:* version: link:../x-charts-vendor @@ -750,7 +750,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -775,19 +775,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../x-charts/build @@ -957,19 +957,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-internals': specifier: workspace:* version: link:../x-internals/build @@ -991,13 +991,13 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 - version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': specifier: ^7.2.15 - version: 7.2.15(@types/react@18.3.3) + version: 7.2.15(@types/react@18.3.4) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1013,16 +1013,16 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/icons-material': specifier: ^5.4.1 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-premium': specifier: workspace:* version: link:../x-data-grid-premium/build @@ -1054,19 +1054,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-data-grid': specifier: workspace:* version: link:../x-data-grid/build @@ -1103,7 +1103,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1122,19 +1122,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-data-grid': specifier: workspace:* version: link:../x-data-grid/build @@ -1165,7 +1165,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1181,19 +1181,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@types/react-transition-group': specifier: ^4.4.11 version: 4.4.11 @@ -1215,7 +1215,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1264,19 +1264,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-date-pickers': specifier: workspace:* version: link:../x-date-pickers/build @@ -1307,7 +1307,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1341,14 +1341,14 @@ importers: version: 7.25.0 '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) react: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1 devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1361,14 +1361,14 @@ importers: version: 7.25.0 '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) react: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1 devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1381,19 +1381,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-internals': specifier: workspace:* version: link:../x-internals/build @@ -1418,7 +1418,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1434,19 +1434,19 @@ importers: version: 7.25.0 '@emotion/react': specifier: ^11.9.0 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/styled': specifier: ^11.8.1 - version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 - version: 5.16.6(@types/react@18.3.3)(react@18.3.1) + version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/x-internals': specifier: workspace:* version: link:../x-internals/build @@ -1477,7 +1477,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1496,10 +1496,10 @@ importers: version: 11.13.1 '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@mui/material': specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../packages/x-charts/build @@ -1543,8 +1543,8 @@ importers: specifier: ^15.7.12 version: 15.7.12 '@types/react': - specifier: ^18.3.3 - version: 18.3.3 + specifier: ^18.3.4 + version: 18.3.4 chai: specifier: ^4.5.0 version: 4.5.0 @@ -1583,7 +1583,7 @@ importers: version: 3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@emotion/react': specifier: ^11.13.3 - version: 11.13.3(@types/react@18.3.3)(react@18.3.1) + version: 11.13.3(@types/react@18.3.4)(react@18.3.1) '@mui/x-charts': specifier: workspace:* version: link:../../packages/x-charts/build @@ -1595,7 +1595,7 @@ importers: version: 6.5.0 '@testing-library/react': specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': specifier: ^14.5.2 version: 14.5.2(@testing-library/dom@10.4.0) @@ -4201,8 +4201,8 @@ packages: '@types/react-transition-group@4.4.11': resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/react@18.3.4': + resolution: {integrity: sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==} '@types/requestidlecallback@0.3.7': resolution: {integrity: sha512-5/EwNH3H/+M2zxATq9UidyD7rCq3WhK5Te/XhdhqP270QoGInVkoNBj6kK2Ah5slkZewkX8XJb7WDaYhmJu+eg==} @@ -11276,14 +11276,14 @@ snapshots: '@docsearch/css@3.6.1': {} - '@docsearch/react@3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)': + '@docsearch/react@3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)': dependencies: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) '@docsearch/css': 3.6.1 algoliasearch: 4.22.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) search-insights: 2.13.0 @@ -11333,7 +11333,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1)': + '@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/babel-plugin': 11.12.0 @@ -11345,7 +11345,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 transitivePeerDependencies: - supports-color @@ -11366,18 +11366,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) '@emotion/serialize': 1.3.1 '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.0 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 transitivePeerDependencies: - supports-color @@ -11843,30 +11843,30 @@ snapshots: - supports-color - typescript - '@mui/base@5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/base@5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/types': 7.2.15(@types/react@18.3.4) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0-beta.6(qldo6khlupzuyxlkybrvconkvm)': + '@mui/docs@6.0.0-beta.6(5g2vm74xnrzd3pobh7oqiqftoi)': dependencies: '@babel/runtime': 7.25.0 - '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/internal-markdown': 1.0.10 - '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) chai: 5.1.1 clipboard-copy: 4.0.1 clsx: 2.1.1 @@ -11876,15 +11876,15 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 - '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@mui/internal-docs-utils@1.0.10': dependencies: @@ -11913,16 +11913,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) '@babel/register': 7.24.6(@babel/core@7.25.2) '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) '@testing-library/dom': 10.4.0 - '@testing-library/react': 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/react': 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) chai: 4.5.0 chai-dom: 1.12.0(chai@4.5.0) @@ -11946,58 +11946,58 @@ snapshots: - supports-color - utf-8-validate - '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 - '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@mui/types': 7.2.15(@types/react@18.3.4) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@types/react': 18.3.4 - '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@mui/types': 7.2.15(@types/react@18.3.4) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@types/react': 18.3.4 - '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@emotion/cache': 11.13.1 '@emotion/server': 11.11.0 - '@types/react': 18.3.3 + '@types/react': 18.3.4 - '@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/core-downloads-tracker': 5.16.7 - '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@mui/types': 7.2.15(@types/react@18.3.4) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 @@ -12008,9 +12008,9 @@ snapshots: react-is: 18.3.1 react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@types/react': 18.3.4 '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13)': dependencies: @@ -12026,16 +12026,16 @@ snapshots: - supports-color - utf-8-validate - '@mui/private-theming@5.16.6(@types/react@18.3.3)(react@18.3.1)': + '@mui/private-theming@5.16.6(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 - '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/cache': 11.13.1 @@ -12043,16 +12043,16 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/styles@5.16.7(@types/react@18.3.3)(react@18.3.1)': + '@mui/styles@5.16.7(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@emotion/hash': 0.9.2 - '@mui/private-theming': 5.16.6(@types/react@18.3.3)(react@18.3.1) - '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/private-theming': 5.16.6(@types/react@18.3.4)(react@18.3.1) + '@mui/types': 7.2.15(@types/react@18.3.4) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) clsx: 2.1.1 csstype: 3.1.3 hoist-non-react-statics: 3.3.2 @@ -12067,39 +12067,39 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 - '@mui/system@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)': + '@mui/system@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/private-theming': 5.16.6(@types/react@18.3.3)(react@18.3.1) - '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@mui/types': 7.2.15(@types/react@18.3.3) - '@mui/utils': 5.16.6(@types/react@18.3.3)(react@18.3.1) + '@mui/private-theming': 5.16.6(@types/react@18.3.4)(react@18.3.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(react@18.3.1) + '@mui/types': 7.2.15(@types/react@18.3.4) + '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.13.3(@types/react@18.3.3)(react@18.3.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) - '@types/react': 18.3.3 + '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@types/react': 18.3.4 - '@mui/types@7.2.15(@types/react@18.3.3)': + '@mui/types@7.2.15(@types/react@18.3.4)': optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 - '@mui/utils@5.16.6(@types/react@18.3.3)(react@18.3.1)': + '@mui/utils@5.16.6(@types/react@18.3.4)(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 - '@mui/types': 7.2.15(@types/react@18.3.3) + '@mui/types': 7.2.15(@types/react@18.3.4) '@types/prop-types': 15.7.12 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-is: 18.3.1 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@netlify/functions@2.8.1': dependencies: @@ -12943,14 +12943,14 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@types/react-dom': 18.3.0 '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': @@ -13152,28 +13152,28 @@ snapshots: '@types/react-dom@18.3.0': dependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@types/react-test-renderer@18.3.0': dependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 '@types/react-transition-group@4.4.11': dependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.4 - '@types/react@18.3.3': + '@types/react@18.3.4': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 diff --git a/test/package.json b/test/package.json index 1e2a306a15c1..0169df4855e1 100644 --- a/test/package.json +++ b/test/package.json @@ -24,7 +24,7 @@ "@types/karma": "^6.3.8", "@types/moment-jalaali": "^0.7.9", "@types/prop-types": "^15.7.12", - "@types/react": "^18.3.3", + "@types/react": "^18.3.4", "chai": "^4.5.0", "dayjs": "^1.11.11", "moment": "^2.30.1", From 61556bba1a5dcfef48b4eb2f79afd12b2a07a7e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:39:22 +0300 Subject: [PATCH 839/912] Bump @types/eslint to ^8.56.12 (#14342) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/eslint-plugin-material-ui/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/eslint-plugin-material-ui/package.json b/packages/eslint-plugin-material-ui/package.json index 49bd03fbe7f0..2a8687a71bd3 100644 --- a/packages/eslint-plugin-material-ui/package.json +++ b/packages/eslint-plugin-material-ui/package.json @@ -5,7 +5,7 @@ "description": "Custom eslint rules for MUI X.", "main": "src/index.js", "devDependencies": { - "@types/eslint": "^8.56.11", + "@types/eslint": "^8.56.12", "@typescript-eslint/utils": "^7.18.0", "@typescript-eslint/parser": "^7.18.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bc2dc7cb8d4..2531910a1a2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: version: 10.5.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) + version: 5.2.1(@types/eslint@8.56.12)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) eslint-plugin-react: specifier: ^7.35.0 version: 7.35.0(eslint@8.57.0) @@ -697,8 +697,8 @@ importers: packages/eslint-plugin-material-ui: devDependencies: '@types/eslint': - specifier: ^8.56.11 - version: 8.56.11 + specifier: ^8.56.12 + version: 8.56.12 '@typescript-eslint/parser': specifier: ^7.18.0 version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) @@ -4081,8 +4081,8 @@ packages: '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - '@types/eslint@8.56.11': - resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==} + '@types/eslint@8.56.12': + resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -13042,7 +13042,7 @@ snapshots: '@types/doctrine@0.0.9': {} - '@types/eslint@8.56.11': + '@types/eslint@8.56.12': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -15358,14 +15358,14 @@ snapshots: globals: 13.24.0 rambda: 7.5.0 - eslint-plugin-prettier@5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(@types/eslint@8.56.12)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): dependencies: eslint: 8.57.0 prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: - '@types/eslint': 8.56.11 + '@types/eslint': 8.56.12 eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-plugin-react-compiler@0.0.0-experimental-9ed098e-20240725(eslint@8.57.0): From 87afbd9aa00898c08e8badc459b7c70454ccffe5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:39:49 +0300 Subject: [PATCH 840/912] Bump @types/node to ^18.19.46 (#14343) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 100 ++++++++++++++++++++++++------------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index db59c40b38a9..d6215f2af416 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "@types/karma": "^6.3.8", "@types/lodash": "^4.17.7", "@types/mocha": "^10.0.7", - "@types/node": "^18.19.45", + "@types/node": "^18.19.46", "@types/react": "^18.3.4", "@types/react-dom": "^18.3.0", "@types/react-test-renderer": "^18.3.0", @@ -196,7 +196,7 @@ }, "resolutions": { "react-is": "^18.3.1", - "@types/node": "^18.19.45" + "@types/node": "^18.19.46" }, "packageManager": "pnpm@9.8.0", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2531910a1a2f..d94a4b4abf55 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: react-is: ^18.3.1 - '@types/node': ^18.19.45 + '@types/node': ^18.19.46 patchedDependencies: babel-plugin-replace-imports@1.0.2: @@ -138,8 +138,8 @@ importers: specifier: ^10.0.7 version: 10.0.7 '@types/node': - specifier: ^18.19.45 - version: 18.19.45 + specifier: ^18.19.46 + version: 18.19.46 '@types/react': specifier: ^18.3.4 version: 18.3.4 @@ -1580,7 +1580,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) + version: 3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) '@emotion/react': specifier: ^11.13.3 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1601,10 +1601,10 @@ importers: version: 14.5.2(@testing-library/dom@10.4.0) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0)) + version: 4.3.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0)) '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0)) + version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0)) '@vitest/ui': specifier: 2.0.5 version: 2.0.5(vitest@2.0.5) @@ -1619,7 +1619,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + version: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) packages: @@ -4165,8 +4165,8 @@ packages: '@types/moment-jalaali@0.7.9': resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} - '@types/node@18.19.45': - resolution: {integrity: sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==} + '@types/node@18.19.46': + resolution: {integrity: sha512-vnRgMS7W6cKa1/0G3/DTtQYpVrZ8c0Xm6UkLaVFrb9jtcVC3okokW09Ki1Qdrj9ISokszD69nY4WDLRlvHlhAA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -9825,7 +9825,7 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': ^18.19.45 + '@types/node': ^18.19.46 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -9854,7 +9854,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.19.45 + '@types/node': ^18.19.46 '@vitest/browser': 2.0.5 '@vitest/ui': 2.0.5 happy-dom: '*' @@ -11262,11 +11262,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': dependencies: '@codspeed/core': 3.1.1 - vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) - vitest: 2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) transitivePeerDependencies: - debug @@ -11565,7 +11565,7 @@ snapshots: '@fast-csv/format@4.3.5': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 lodash.escaperegexp: 4.1.2 lodash.isboolean: 3.0.3 lodash.isequal: 4.5.0 @@ -11574,7 +11574,7 @@ snapshots: '@fast-csv/parse@4.3.6': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 lodash.escaperegexp: 4.1.2 lodash.groupby: 4.6.0 lodash.isfunction: 3.0.9 @@ -12811,18 +12811,18 @@ snapshots: '@slack/logger@3.0.0': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@slack/logger@4.0.0': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@slack/oauth@2.6.3': dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.1 '@types/jsonwebtoken': 8.5.9 - '@types/node': 18.19.45 + '@types/node': 18.19.46 jsonwebtoken: 9.0.2 lodash.isstring: 4.0.1 transitivePeerDependencies: @@ -12832,7 +12832,7 @@ snapshots: dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.1 - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/ws': 7.4.7 eventemitter3: 5.0.1 finity: 0.5.4 @@ -12849,7 +12849,7 @@ snapshots: '@slack/logger': 3.0.0 '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 - '@types/node': 18.19.45 + '@types/node': 18.19.46 axios: 1.7.4(debug@4.3.6) eventemitter3: 3.1.2 form-data: 2.5.1 @@ -12992,7 +12992,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/chai-dom@1.11.3': dependencies: @@ -13004,13 +13004,13 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/cookie@0.4.1': {} '@types/cors@2.8.17': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/d3-array@3.2.1': {} @@ -13051,7 +13051,7 @@ snapshots: '@types/express-serve-static-core@4.17.42': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13068,7 +13068,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/gtag.js@0.0.20': {} @@ -13080,7 +13080,7 @@ snapshots: '@types/is-stream@1.1.0': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/istanbul-lib-coverage@2.0.6': {} @@ -13095,15 +13095,15 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/jsonwebtoken@8.5.9': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/karma@6.3.8': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -13134,7 +13134,7 @@ snapshots: dependencies: moment: 2.30.1 - '@types/node@18.19.45': + '@types/node@18.19.46': dependencies: undici-types: 5.26.5 @@ -13187,13 +13187,13 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/sinon@17.0.3': dependencies: @@ -13211,7 +13211,7 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 tapable: 2.2.1 webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) transitivePeerDependencies: @@ -13222,7 +13222,7 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@types/yargs-parser@21.0.3': {} @@ -13354,21 +13354,21 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))': dependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) - vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@18.19.45)(terser@5.27.0))': + '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -13407,7 +13407,7 @@ snapshots: pathe: 1.1.2 sirv: 2.0.4 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) '@vitest/utils@2.0.5': dependencies: @@ -14983,7 +14983,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 18.19.45 + '@types/node': 18.19.46 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -16698,7 +16698,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -19844,13 +19844,13 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite-node@2.0.5(@types/node@18.19.45)(terser@5.27.0): + vite-node@2.0.5(@types/node@18.19.46)(terser@5.27.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@8.1.1) pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -19861,17 +19861,17 @@ snapshots: - supports-color - terser - vite@5.3.4(@types/node@18.19.45)(terser@5.27.0): + vite@5.3.4(@types/node@18.19.46)(terser@5.27.0): dependencies: esbuild: 0.21.5 postcss: 8.4.41 rollup: 4.18.1 optionalDependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 fsevents: 2.3.3 terser: 5.27.0 - vitest@2.0.5(@types/node@18.19.45)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0): + vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -19889,11 +19889,11 @@ snapshots: tinybench: 2.8.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.3.4(@types/node@18.19.45)(terser@5.27.0) - vite-node: 2.0.5(@types/node@18.19.45)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) + vite-node: 2.0.5(@types/node@18.19.46)(terser@5.27.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 18.19.45 + '@types/node': 18.19.46 '@vitest/ui': 2.0.5(vitest@2.0.5) jsdom: 24.1.1 transitivePeerDependencies: From ca98f92a87d042b69c33e7390c5b99c62e1efc72 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:43:10 +0300 Subject: [PATCH 841/912] Bump luxon to ^3.5.0 (#14346) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/package.json b/docs/package.json index 6b84b3c4a6b2..1fda11832d6f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -69,7 +69,7 @@ "fg-loadcss": "^3.1.0", "jscodeshift": "0.16.1", "lodash": "^4.17.21", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "lz-string": "^1.5.0", "markdown-to-jsx": "^7.4.7", "moment": "^2.30.1", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index f9c5a5652c91..91e022781208 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -101,7 +101,7 @@ "date-fns": "^2.30.0", "date-fns-jalali": "^2.30.0-0", "dayjs": "^1.11.11", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "moment": "^2.30.1", "rimraf": "^5.0.10" }, diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 293e3d380203..c7720222741a 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -105,7 +105,7 @@ "date-fns": "^2.30.0", "date-fns-jalali": "^2.30.0-0", "dayjs": "^1.11.11", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "moment": "^2.30.1", "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d94a4b4abf55..2f35ae16003b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -552,8 +552,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 luxon: - specifier: ^3.4.4 - version: 3.4.4 + specifier: ^3.5.0 + version: 3.5.0 lz-string: specifier: ^1.5.0 version: 1.5.0 @@ -1238,8 +1238,8 @@ importers: specifier: ^1.11.11 version: 1.11.11 luxon: - specifier: ^3.4.4 - version: 3.4.4 + specifier: ^3.5.0 + version: 3.5.0 moment: specifier: ^2.30.1 version: 2.30.1 @@ -1324,8 +1324,8 @@ importers: specifier: ^1.11.11 version: 1.11.11 luxon: - specifier: ^3.4.4 - version: 3.4.4 + specifier: ^3.5.0 + version: 3.5.0 moment: specifier: ^2.30.1 version: 2.30.1 @@ -7550,8 +7550,8 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - luxon@3.4.4: - resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} engines: {node: '>=12'} lz-string@1.5.0: @@ -17306,7 +17306,7 @@ snapshots: dependencies: yallist: 4.0.0 - luxon@3.4.4: {} + luxon@3.5.0: {} lz-string@1.5.0: {} From b9da2710b6e62f8e57366d3d39b398daad8e7853 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:44:06 +0300 Subject: [PATCH 842/912] Bump markdown-to-jsx to ^7.5.0 (#14347) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/package.json b/docs/package.json index 1fda11832d6f..469471e85f53 100644 --- a/docs/package.json +++ b/docs/package.json @@ -71,7 +71,7 @@ "lodash": "^4.17.21", "luxon": "^3.5.0", "lz-string": "^1.5.0", - "markdown-to-jsx": "^7.4.7", + "markdown-to-jsx": "^7.5.0", "moment": "^2.30.1", "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f35ae16003b..48b21e6ddaee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -558,8 +558,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 markdown-to-jsx: - specifier: ^7.4.7 - version: 7.4.7(react@18.3.1) + specifier: ^7.5.0 + version: 7.5.0(react@18.3.1) moment: specifier: ^2.30.1 version: 2.30.1 @@ -7593,8 +7593,8 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true - markdown-to-jsx@7.4.7: - resolution: {integrity: sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==} + markdown-to-jsx@7.5.0: + resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' @@ -17358,7 +17358,7 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - markdown-to-jsx@7.4.7(react@18.3.1): + markdown-to-jsx@7.5.0(react@18.3.1): dependencies: react: 18.3.1 From be76c991b420f8acbf39e06784ed7b792ee2f773 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:46:28 +0300 Subject: [PATCH 843/912] Bump react-hook-form to ^7.53.0 (#14348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/package.json b/docs/package.json index 469471e85f53..1c087766086f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -84,7 +84,7 @@ "react": "^18.3.1", "react-docgen": "^5.4.3", "react-dom": "^18.3.1", - "react-hook-form": "^7.52.2", + "react-hook-form": "^7.53.0", "react-is": "^18.3.1", "react-router": "^6.26.1", "react-router-dom": "^6.26.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48b21e6ddaee..984c83721afe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -597,8 +597,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-hook-form: - specifier: ^7.52.2 - version: 7.52.2(react@18.3.1) + specifier: ^7.53.0 + version: 7.53.0(react@18.3.1) react-is: specifier: ^18.3.1 version: 18.3.1 @@ -8658,8 +8658,8 @@ packages: peerDependencies: react: ^18.3.1 - react-hook-form@7.52.2: - resolution: {integrity: sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A==} + react-hook-form@7.53.0: + resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -18541,7 +18541,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-hook-form@7.52.2(react@18.3.1): + react-hook-form@7.53.0(react@18.3.1): dependencies: react: 18.3.1 From df770817ffa43892a2bfeb911bb1adf9044a3219 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 16:07:00 +0200 Subject: [PATCH 844/912] Bump jsdom to v24.1.3 (#14344) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 30 ++++++++++++++-------------- test/performance-charts/package.json | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index d6215f2af416..5b80e1d871ff 100644 --- a/package.json +++ b/package.json @@ -156,7 +156,7 @@ "glob-gitignore": "^1.0.14", "globby": "^14.0.2", "html-webpack-plugin": "^5.6.0", - "jsdom": "24.1.1", + "jsdom": "24.1.3", "jss": "^10.10.0", "jss-plugin-template": "^10.10.0", "jss-rtl": "^0.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 984c83721afe..e83bccf13076 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -288,8 +288,8 @@ importers: specifier: ^5.6.0 version: 5.6.0(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) jsdom: - specifier: 24.1.1 - version: 24.1.1 + specifier: 24.1.3 + version: 24.1.3 jss: specifier: ^10.10.0 version: 10.10.0 @@ -1580,7 +1580,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0)) + version: 3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0)) '@emotion/react': specifier: ^11.13.3 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1609,8 +1609,8 @@ importers: specifier: 2.0.5 version: 2.0.5(vitest@2.0.5) jsdom: - specifier: ^24.1.1 - version: 24.1.1 + specifier: ^24.1.3 + version: 24.1.3 react: specifier: ^18.3.1 version: 18.3.1 @@ -1619,7 +1619,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + version: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) packages: @@ -7142,8 +7142,8 @@ packages: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} - jsdom@24.1.1: - resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==} + jsdom@24.1.3: + resolution: {integrity: sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==} engines: {node: '>=18'} peerDependencies: canvas: ^2.11.2 @@ -11262,11 +11262,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0))': dependencies: '@codspeed/core': 3.1.1 vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) - vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) transitivePeerDependencies: - debug @@ -11929,7 +11929,7 @@ snapshots: dom-accessibility-api: 0.7.0 format-util: 1.0.5 fs-extra: 11.2.0 - jsdom: 24.1.1 + jsdom: 24.1.3 lodash: 4.17.21 mocha: 10.7.3 playwright: 1.46.0 @@ -13407,7 +13407,7 @@ snapshots: pathe: 1.1.2 sirv: 2.0.4 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) '@vitest/utils@2.0.5': dependencies: @@ -16741,7 +16741,7 @@ snapshots: jsdoc-type-pratt-parser@4.0.0: {} - jsdom@24.1.1: + jsdom@24.1.3: dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -19871,7 +19871,7 @@ snapshots: fsevents: 2.3.3 terser: 5.27.0 - vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.1)(terser@5.27.0): + vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -19895,7 +19895,7 @@ snapshots: optionalDependencies: '@types/node': 18.19.46 '@vitest/ui': 2.0.5(vitest@2.0.5) - jsdom: 24.1.1 + jsdom: 24.1.3 transitivePeerDependencies: - less - lightningcss diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index 0a4bb3cad472..3262a67bfce3 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -17,7 +17,7 @@ "@vitejs/plugin-react": "^4.3.1", "@vitejs/plugin-react-swc": "^3.7.0", "@vitest/ui": "2.0.5", - "jsdom": "^24.1.1", + "jsdom": "^24.1.3", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "2.0.5" From ff5ac2d9f1faa3ee5ca17b32f86139700e4a9f55 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 27 Aug 2024 10:28:51 +0200 Subject: [PATCH 845/912] [code-infra] Typecheck nested folders in playground (#14352) --- docs/pages/playground/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/playground/tsconfig.json b/docs/pages/playground/tsconfig.json index a1dce267bbde..d8edc36bd626 100644 --- a/docs/pages/playground/tsconfig.json +++ b/docs/pages/playground/tsconfig.json @@ -1,5 +1,5 @@ { "extends": "../../tsconfig.json", - "include": ["*"], + "include": ["**/*"], "exclude": [] } From 95da5e3da42b744bb4d549dafe7da49feda3de46 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:35:20 +0300 Subject: [PATCH 846/912] Bump next to ^14.2.6 (#14322) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 102 +++++++++++++++++++++++----------------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/docs/package.json b/docs/package.json index 1c087766086f..731f310bab76 100644 --- a/docs/package.json +++ b/docs/package.json @@ -76,7 +76,7 @@ "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", "moment-timezone": "^0.5.45", - "next": "^14.2.5", + "next": "^14.2.6", "nprogress": "^0.2.0", "postcss": "^8.4.41", "prismjs": "^1.29.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e83bccf13076..1e0e9aa8b4c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -427,7 +427,7 @@ importers: version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/docs': specifier: 6.0.0-beta.6 - version: 6.0.0-beta.6(5g2vm74xnrzd3pobh7oqiqftoi) + version: 6.0.0-beta.6(qeh4qocfzy3vvrano7hggrp5gy) '@mui/icons-material': specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -442,7 +442,7 @@ importers: version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.6 - version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.7 version: 5.16.7(@types/react@18.3.4)(react@18.3.1) @@ -573,8 +573,8 @@ importers: specifier: ^0.5.45 version: 0.5.45 next: - specifier: ^14.2.5 - version: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^14.2.6 + version: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: specifier: ^0.2.0 version: 0.2.0 @@ -3264,62 +3264,62 @@ packages: resolution: {integrity: sha512-2KYkyluThg1AKfd0JWI7FzpS4A/fzVVGYIf6AM4ydWyNj8eI/86GQVLeRgDoH7CNOxt243R5tutWlmHpVq0/Ew==} engines: {node: '>=18.0.0'} - '@next/env@14.2.5': - resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + '@next/env@14.2.6': + resolution: {integrity: sha512-bs5DFKV+08EjWrl8EB+KKqev1ZTNONH1vFCaHh911aaB362NnP32UDTbE9VQhyiAgbFqJsfDkSxFERNDDb3j0g==} '@next/eslint-plugin-next@14.2.6': resolution: {integrity: sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==} - '@next/swc-darwin-arm64@14.2.5': - resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + '@next/swc-darwin-arm64@14.2.6': + resolution: {integrity: sha512-BtJZb+hYXGaVJJivpnDoi3JFVn80SHKCiiRUW3kk1SY6UCUy5dWFFSbh+tGi5lHAughzeduMyxbLt3pspvXNSg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.5': - resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + '@next/swc-darwin-x64@14.2.6': + resolution: {integrity: sha512-ZHRbGpH6KHarzm6qEeXKSElSXh8dS2DtDPjQt3IMwY8QVk7GbdDYjvV4NgSnDA9huGpGgnyy3tH8i5yHCqVkiQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.5': - resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + '@next/swc-linux-arm64-gnu@14.2.6': + resolution: {integrity: sha512-O4HqUEe3ZvKshXHcDUXn1OybN4cSZg7ZdwHJMGCXSUEVUqGTJVsOh17smqilIjooP/sIJksgl+1kcf2IWMZWHg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.5': - resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + '@next/swc-linux-arm64-musl@14.2.6': + resolution: {integrity: sha512-xUcdhr2hfalG8RDDGSFxQ75yOG894UlmFS4K2M0jLrUhauRBGOtUOxoDVwiIIuZQwZ3Y5hDsazNjdYGB0cQ9yQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.5': - resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + '@next/swc-linux-x64-gnu@14.2.6': + resolution: {integrity: sha512-InosKxw8UMcA/wEib5n2QttwHSKHZHNSbGcMepBM0CTcNwpxWzX32KETmwbhKod3zrS8n1vJ+DuJKbL9ZAB0Ag==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.5': - resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + '@next/swc-linux-x64-musl@14.2.6': + resolution: {integrity: sha512-d4QXfJmt5pGJ7cG8qwxKSBnO5AXuKAFYxV7qyDRHnUNvY/dgDh+oX292gATpB2AAHgjdHd5ks1wXxIEj6muLUQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.5': - resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + '@next/swc-win32-arm64-msvc@14.2.6': + resolution: {integrity: sha512-AlgIhk4/G+PzOG1qdF1b05uKTMsuRatFlFzAi5G8RZ9h67CVSSuZSbqGHbJDlcV1tZPxq/d4G0q6qcHDKWf4aQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.5': - resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + '@next/swc-win32-ia32-msvc@14.2.6': + resolution: {integrity: sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@next/swc-win32-x64-msvc@14.2.5': - resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + '@next/swc-win32-x64-msvc@14.2.6': + resolution: {integrity: sha512-NANtw+ead1rSDK1jxmzq3TYkl03UNK2KHqUYf1nIhNci6NkeqBD4s1njSzYGIlSHxCK+wSaL8RXZm4v+NF/pMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -7866,8 +7866,8 @@ packages: nested-error-stacks@2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - next@14.2.5: - resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} + next@14.2.6: + resolution: {integrity: sha512-57Su7RqXs5CBKKKOagt8gPhMM3CpjgbeQhrtei2KLAA1vTNm7jfKS+uDARkSW8ZETUflDCBIsUKGSyQdRs4U4g==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -11859,7 +11859,7 @@ snapshots: '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0-beta.6(5g2vm74xnrzd3pobh7oqiqftoi)': + '@mui/docs@6.0.0-beta.6(qeh4qocfzy3vvrano7hggrp5gy)': dependencies: '@babel/runtime': 7.25.0 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11871,7 +11871,7 @@ snapshots: clipboard-copy: 4.0.1 clsx: 2.1.1 csstype: 3.1.3 - next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: 0.2.0 prop-types: 15.8.1 react: 18.3.1 @@ -11980,11 +11980,11 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/react': 18.3.4 - '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.0 '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next: 14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@emotion/cache': 11.13.1 @@ -12112,37 +12112,37 @@ snapshots: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 - '@next/env@14.2.5': {} + '@next/env@14.2.6': {} '@next/eslint-plugin-next@14.2.6': dependencies: glob: 10.3.10 - '@next/swc-darwin-arm64@14.2.5': + '@next/swc-darwin-arm64@14.2.6': optional: true - '@next/swc-darwin-x64@14.2.5': + '@next/swc-darwin-x64@14.2.6': optional: true - '@next/swc-linux-arm64-gnu@14.2.5': + '@next/swc-linux-arm64-gnu@14.2.6': optional: true - '@next/swc-linux-arm64-musl@14.2.5': + '@next/swc-linux-arm64-musl@14.2.6': optional: true - '@next/swc-linux-x64-gnu@14.2.5': + '@next/swc-linux-x64-gnu@14.2.6': optional: true - '@next/swc-linux-x64-musl@14.2.5': + '@next/swc-linux-x64-musl@14.2.6': optional: true - '@next/swc-win32-arm64-msvc@14.2.5': + '@next/swc-win32-arm64-msvc@14.2.6': optional: true - '@next/swc-win32-ia32-msvc@14.2.5': + '@next/swc-win32-ia32-msvc@14.2.6': optional: true - '@next/swc-win32-x64-msvc@14.2.5': + '@next/swc-win32-x64-msvc@14.2.6': optional: true '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': @@ -17642,9 +17642,9 @@ snapshots: nested-error-stacks@2.1.1: {} - next@14.2.5(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.5 + '@next/env': 14.2.6 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001647 @@ -17654,15 +17654,15 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(@babel/core@7.25.2)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.5 - '@next/swc-darwin-x64': 14.2.5 - '@next/swc-linux-arm64-gnu': 14.2.5 - '@next/swc-linux-arm64-musl': 14.2.5 - '@next/swc-linux-x64-gnu': 14.2.5 - '@next/swc-linux-x64-musl': 14.2.5 - '@next/swc-win32-arm64-msvc': 14.2.5 - '@next/swc-win32-ia32-msvc': 14.2.5 - '@next/swc-win32-x64-msvc': 14.2.5 + '@next/swc-darwin-arm64': 14.2.6 + '@next/swc-darwin-x64': 14.2.6 + '@next/swc-linux-arm64-gnu': 14.2.6 + '@next/swc-linux-arm64-musl': 14.2.6 + '@next/swc-linux-x64-gnu': 14.2.6 + '@next/swc-linux-x64-musl': 14.2.6 + '@next/swc-win32-arm64-msvc': 14.2.6 + '@next/swc-win32-ia32-msvc': 14.2.6 + '@next/swc-win32-x64-msvc': 14.2.6 '@opentelemetry/api': 1.8.0 '@playwright/test': 1.44.1 transitivePeerDependencies: From 89350cef98109096d0c01866cfc05a1441763c24 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Tue, 27 Aug 2024 10:49:45 +0200 Subject: [PATCH 847/912] [charts] Fix tooltip with horizontal layout (#14337) --- .../ChartsAxisTooltipContent.tsx | 2 +- .../ChartsTooltip/contentDisplayed.test.tsx | 251 ++++++++++++++++++ .../src/context/InteractionProvider.tsx | 6 +- packages/x-charts/src/hooks/useAxisEvents.ts | 2 +- 4 files changed, 257 insertions(+), 4 deletions(-) create mode 100644 packages/x-charts/src/ChartsTooltip/contentDisplayed.test.tsx diff --git a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx index 874d00f3ca35..b9daca3379cb 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsAxisTooltipContent.tsx @@ -56,7 +56,7 @@ function ChartsAxisTooltipContent(props: { }) { const { content, contentProps, axisData, sx, classes } = props; - const isXaxis = (axisData.x && axisData.x.index) !== undefined; + const isXaxis = axisData.x && axisData.x.index !== -1; const dataIndex = isXaxis ? axisData.x && axisData.x.index : axisData.y && axisData.y.index; const axisValue = isXaxis ? axisData.x && axisData.x.value : axisData.y && axisData.y.value; diff --git a/packages/x-charts/src/ChartsTooltip/contentDisplayed.test.tsx b/packages/x-charts/src/ChartsTooltip/contentDisplayed.test.tsx new file mode 100644 index 000000000000..6b4634241e3d --- /dev/null +++ b/packages/x-charts/src/ChartsTooltip/contentDisplayed.test.tsx @@ -0,0 +1,251 @@ +import * as React from 'react'; +import { expect } from 'chai'; +import { createRenderer, fireEvent } from '@mui/internal-test-utils'; +import { BarChart } from '@mui/x-charts/BarChart'; +import { firePointerEvent } from '../tests/firePointerEvent'; + +const config = { + dataset: [ + { x: 'A', v1: 4, v2: 2 }, + { x: 'B', v1: 1, v2: 1 }, + ], + margin: { top: 0, left: 0, bottom: 0, right: 0 }, + width: 400, + height: 400, +}; + +// Plot as follow to simplify click position +// +// | X +// | X +// | X X +// | X X X X +// ---A---B- + +const isJSDOM = /jsdom/.test(window.navigator.userAgent); + +describe('ChartsTooltip', () => { + const { render } = createRenderer(); + + describe('axis trigger', () => { + it('should show right values with vertical layout', function test() { + if (isJSDOM) { + // can't do Pointer event with JSDom https://github.com/jsdom/jsdom/issues/2527 + this.skip(); + } + + render( +
    + +
    , + ); + const svg = document.querySelector('svg')!; + + firePointerEvent(svg, 'pointermove', { + clientX: 198, + clientY: 60, + }); + + let cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal([ + // Header + 'A', + // First row + '', // mark + 'S1', // label + '4', // value + // Second row + '', + 'S2', + '2', + ]); + + firePointerEvent(svg, 'pointermove', { + clientX: 201, + clientY: 60, + }); + + cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal([ + // Header + 'B', + // First row + '', + 'S1', + '1', + // Second row + '', + 'S2', + '1', + ]); + }); + + it('should show right values with horizontal layout', function test() { + if (isJSDOM) { + // can't do Pointer event with JSDom https://github.com/jsdom/jsdom/issues/2527 + this.skip(); + } + + render( +
    + +
    , + ); + const svg = document.querySelector('svg')!; + + firePointerEvent(svg, 'pointermove', { + clientX: 150, + clientY: 60, + }); + + let cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal([ + // Header + 'A', + // First row + '', + 'S1', + '4', + // Second row + '', + 'S2', + '2', + ]); + + firePointerEvent(svg, 'pointermove', { + clientX: 150, + clientY: 220, + }); + + cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal([ + // Header + 'B', + // First row + '', + 'S1', + '1', + // Second row + '', + 'S2', + '1', + ]); + }); + }); + + describe('item trigger', () => { + it('should show right values with vertical layout', function test() { + if (isJSDOM) { + // can't do Pointer event with JSDom https://github.com/jsdom/jsdom/issues/2527 + this.skip(); + } + + render( +
    + +
    , + ); + const svg = document.querySelector('svg')!; + const rectangles = document.querySelectorAll('rect'); + + fireEvent.pointerEnter(rectangles[0]); + + firePointerEvent(svg, 'pointermove', { + clientX: 150, + clientY: 60, + }); // Only to set the tooltip position + + let cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal(['', 'S1', '4']); + + fireEvent.pointerEnter(rectangles[3]); + cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal(['', 'S2', '1']); + }); + + it('should show right values with horizontal layout', function test() { + if (isJSDOM) { + // can't do Pointer event with JSDom https://github.com/jsdom/jsdom/issues/2527 + this.skip(); + } + + render( +
    + +
    , + ); + const svg = document.querySelector('svg')!; + const rectangles = document.querySelectorAll('rect'); + + fireEvent.pointerEnter(rectangles[0]); + + firePointerEvent(svg, 'pointermove', { + clientX: 150, + clientY: 60, + }); // Only to set the tooltip position + + let cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal(['', 'S1', '4']); + + fireEvent.pointerEnter(rectangles[3]); + cells = document.querySelectorAll('.MuiChartsTooltip-root td'); + expect([...cells].map((cell) => cell.textContent)).to.deep.equal(['', 'S2', '1']); + }); + }); +}); diff --git a/packages/x-charts/src/context/InteractionProvider.tsx b/packages/x-charts/src/context/InteractionProvider.tsx index 2c26dc32aea9..35cee12e71e6 100644 --- a/packages/x-charts/src/context/InteractionProvider.tsx +++ b/packages/x-charts/src/context/InteractionProvider.tsx @@ -10,11 +10,13 @@ export type ItemInteractionData = ChartItemIdentifier export type AxisInteractionData = { x: null | { value: number | Date | string; - index?: number; + // Set to -1 if no index. + index: number; }; y: null | { value: number | Date | string; - index?: number; + // Set to -1 if no index. + index: number; }; }; diff --git a/packages/x-charts/src/hooks/useAxisEvents.ts b/packages/x-charts/src/hooks/useAxisEvents.ts index 83994d170929..789f9ea45d54 100644 --- a/packages/x-charts/src/hooks/useAxisEvents.ts +++ b/packages/x-charts/src/hooks/useAxisEvents.ts @@ -39,7 +39,7 @@ export const useAxisEvents = (disableAxisListener: boolean) => { const value = scale.invert(mouseValue); if (axisData === undefined) { - return { value }; + return { value, index: -1 }; } const valueAsNumber = getAsANumber(value); From 1080a7692dfb8b045173b1a80ea7282fb6a70991 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:07:57 +0300 Subject: [PATCH 848/912] Bump babel to ^7.25.4 (#14345) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- docs/package.json | 4 +- package.json | 12 +- packages/x-charts-pro/package.json | 2 +- .../lib-vendor/d3-array/src/disjoint.js | 4 +- .../lib-vendor/d3-array/src/reduce.js | 4 +- .../lib-vendor/d3-array/src/superset.js | 4 +- packages/x-charts-vendor/package.json | 4 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 4 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 471 +++++++++--------- test/package.json | 2 +- 21 files changed, 253 insertions(+), 280 deletions(-) diff --git a/docs/package.json b/docs/package.json index 731f310bab76..ec5de6e647e8 100644 --- a/docs/package.json +++ b/docs/package.json @@ -20,8 +20,8 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@babel/runtime": "^7.25.0", - "@babel/runtime-corejs2": "^7.25.0", + "@babel/runtime": "^7.25.4", + "@babel/runtime-corejs2": "^7.25.4", "@docsearch/react": "^3.6.1", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", diff --git a/package.json b/package.json index 5b80e1d871ff..d2a741fdcbd8 100644 --- a/package.json +++ b/package.json @@ -73,18 +73,18 @@ "@babel/cli": "^7.24.8", "@babel/core": "^7.25.2", "@babel/node": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-constant-elements": "^7.25.1", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-env": "^7.25.3", + "@babel/plugin-transform-runtime": "^7.25.4", + "@babel/preset-env": "^7.25.4", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "@babel/register": "^7.24.6", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/traverse": "^7.25.4", + "@babel/types": "^7.25.4", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index d31f069848b1..29939b28bf56 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -39,7 +39,7 @@ "directory": "packages/x-charts-pro" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-charts": "workspace:*", diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js index 7cac5ed41b85..cd03b0951bce 100644 --- a/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/disjoint.js @@ -11,10 +11,10 @@ function disjoint(values, other) { for (const v of values) { if (set.has(v)) return false; let value, done; - while (({ + while ({ value, done - } = iterator.next())) { + } = iterator.next()) { if (done) break; if (Object.is(v, value)) return false; set.add(value); diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js index caddffcdcccc..6ab350666079 100644 --- a/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/reduce.js @@ -18,10 +18,10 @@ function reduce(values, reducer, value) { if (done) return; ++index; } - while (({ + while ({ done, value: next - } = iterator.next()), !done) { + } = iterator.next(), !done) { value = reducer(value, next, ++index, values); } return value; diff --git a/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js b/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js index 04de9d7af7d0..99bb8182ab29 100644 --- a/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js +++ b/packages/x-charts-vendor/lib-vendor/d3-array/src/superset.js @@ -11,10 +11,10 @@ function superset(values, other) { const io = intern(o); if (set.has(io)) continue; let value, done; - while (({ + while ({ value, done - } = iterator.next())) { + } = iterator.next()) { if (done) return false; const ivalue = intern(value); set.add(ivalue); diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index ca4a8fc7e8cc..4acecee461a4 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -24,7 +24,7 @@ } }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@types/d3-color": "^3.1.3", "@types/d3-delaunay": "^6.0.4", "@types/d3-interpolate": "^3.0.4", @@ -41,7 +41,7 @@ "robust-predicates": "^3.0.2" }, "devDependencies": { - "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.25.4", "@types/d3-array": "^3.2.1", "@types/d3-format": "^3.0.4", "@types/d3-path": "^3.1.0", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 874c7b07c93e..7e7af14bdd80 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -39,7 +39,7 @@ "directory": "packages/x-charts" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-charts-vendor": "workspace:*", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 7e82ccbd7d79..f37f5c4f5027 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -33,8 +33,8 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@babel/runtime": "^7.25.0", - "@babel/traverse": "^7.25.3", + "@babel/runtime": "^7.25.4", + "@babel/traverse": "^7.25.4", "jscodeshift": "0.16.1", "yargs": "^17.7.2" }, diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 58c78fef9668..d536e8f6f65d 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -33,7 +33,7 @@ "directory": "packages/x-data-grid-generator" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.12", "clsx": "^2.1.1", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index bf392d664a19..a6ad24fdafdf 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-data-grid-premium" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index de2be80567aa..be95359f3715 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-data-grid-pro" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 545043bd84c9..662ab849333c 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -47,7 +47,7 @@ "directory": "packages/x-data-grid" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 91e022781208..340a204f08ad 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -42,7 +42,7 @@ "directory": "packages/x-date-pickers-pro" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-date-pickers": "workspace:*", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index c7720222741a..5d1786f84940 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -45,7 +45,7 @@ "directory": "packages/x-date-pickers" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@types/react-transition-group": "^4.4.11", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 6f724738f245..0d51cdd4450d 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -41,7 +41,7 @@ "directory": "packages/x-internals" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/utils": "^5.16.6" }, "peerDependencies": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 426b7131c144..2cd4e8bb37a8 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -34,7 +34,7 @@ "directory": "packages/x-license" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/utils": "^5.16.6" }, "peerDependencies": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 74be7984c887..0fbc80c05c2a 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-tree-view-pro" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index ad46c9603f12..9ed3a9c2429c 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-tree-view" }, "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e0e9aa8b4c2..f763d7638b89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,14 +39,14 @@ importers: specifier: ^7.25.0 version: 7.25.0(@babel/core@7.25.2) '@babel/plugin-transform-class-properties': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-object-rest-spread': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-private-methods': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-private-property-in-object': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) @@ -54,11 +54,11 @@ importers: specifier: ^7.25.1 version: 7.25.1(@babel/core@7.25.2) '@babel/plugin-transform-runtime': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@babel/preset-env': - specifier: ^7.25.3 - version: 7.25.3(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@babel/preset-react': specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) @@ -69,11 +69,11 @@ importers: specifier: ^7.24.6 version: 7.24.6(@babel/core@7.25.2) '@babel/traverse': - specifier: ^7.25.3 - version: 7.25.3 + specifier: ^7.25.4 + version: 7.25.4 '@babel/types': - specifier: ^7.25.2 - version: 7.25.2 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 @@ -405,11 +405,11 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@babel/runtime-corejs2': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@docsearch/react': specifier: ^3.6.1 version: 3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) @@ -547,7 +547,7 @@ importers: version: 3.1.0 jscodeshift: specifier: 0.16.1 - version: 0.16.1(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + version: 0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -709,8 +709,8 @@ importers: packages/x-charts: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -771,8 +771,8 @@ importers: packages/x-charts-pro: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -836,8 +836,8 @@ importers: packages/x-charts-vendor: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@types/d3-color': specifier: ^3.1.3 version: 3.1.3 @@ -882,8 +882,8 @@ importers: version: 3.0.2 devDependencies: '@babel/plugin-transform-runtime': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.25.4 + version: 7.25.4(@babel/core@7.25.2) '@types/d3-array': specifier: ^3.2.1 version: 3.2.1 @@ -924,14 +924,14 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@babel/traverse': - specifier: ^7.25.3 - version: 7.25.3 + specifier: ^7.25.4 + version: 7.25.4 jscodeshift: specifier: 0.16.1 - version: 0.16.1(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + version: 0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)) yargs: specifier: ^17.7.2 version: 17.7.2 @@ -953,8 +953,8 @@ importers: packages/x-data-grid: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1009,8 +1009,8 @@ importers: packages/x-data-grid-generator: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1050,8 +1050,8 @@ importers: packages/x-data-grid-premium: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1118,8 +1118,8 @@ importers: packages/x-data-grid-pro: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1177,8 +1177,8 @@ importers: packages/x-date-pickers: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1260,8 +1260,8 @@ importers: packages/x-date-pickers-pro: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1337,8 +1337,8 @@ importers: packages/x-internals: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1357,8 +1357,8 @@ importers: packages/x-license: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1377,8 +1377,8 @@ importers: packages/x-tree-view: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1430,8 +1430,8 @@ importers: packages/x-tree-view-pro: dependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1489,8 +1489,8 @@ importers: test: devDependencies: '@babel/runtime': - specifier: ^7.25.0 - version: 7.25.0 + specifier: ^7.25.4 + version: 7.25.4 '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 @@ -1728,16 +1728,16 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/generator@7.25.5': + resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': @@ -1752,8 +1752,8 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.7': - resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + '@babel/helper-create-class-features-plugin@7.25.4': + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1764,19 +1764,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.1': - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.8': resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} @@ -1819,10 +1811,6 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} @@ -1854,8 +1842,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + '@babel/parser@7.25.4': + resolution: {integrity: sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -2022,8 +2010,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.25.0': - resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + '@babel/plugin-transform-async-generator-functions@7.25.4': + resolution: {integrity: sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2046,8 +2034,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.7': - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + '@babel/plugin-transform-class-properties@7.25.4': + resolution: {integrity: sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2058,8 +2046,8 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.0': - resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + '@babel/plugin-transform-classes@7.25.4': + resolution: {integrity: sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2232,8 +2220,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + '@babel/plugin-transform-private-methods@7.25.4': + resolution: {integrity: sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2304,8 +2292,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.24.7': - resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + '@babel/plugin-transform-runtime@7.25.4': + resolution: {integrity: sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2364,14 +2352,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.24.7': - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + '@babel/plugin-transform-unicode-sets-regex@7.25.4': + resolution: {integrity: sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.25.3': - resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} + '@babel/preset-env@7.25.4': + resolution: {integrity: sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2408,24 +2396,24 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime-corejs2@7.25.0': - resolution: {integrity: sha512-aoYVE3tm+vgAoezmXFWmVcp+NlSdsUqQMPL7c6zRxq8KDHCf570pamC7005Q/UkSlTuoL6oeE16zIw/9J3YFyw==} + '@babel/runtime-corejs2@7.25.4': + resolution: {integrity: sha512-6IxkDkxN13FQAB8FGF+vrvZVA77EqG4UzCwVGc9x9Ylerj70W3nMUwoXDbj2LtJxXlFKM256APcDQIItT2OFYA==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + '@babel/runtime@7.25.4': + resolution: {integrity: sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==} engines: {node: '>=6.9.0'} '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/traverse@7.25.4': + resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + '@babel/types@7.25.4': + resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -4786,8 +4774,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -5320,8 +5308,8 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} core-js@2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} @@ -10331,20 +10319,20 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.2': {} + '@babel/compat-data@7.25.4': {} '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 + '@babel/generator': 7.25.5 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.4 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 convert-source-map: 2.0.0 debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -10353,43 +10341,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.0': + '@babel/generator@7.25.5': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.4 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 + '@babel/traverse': 7.25.4 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10401,7 +10387,7 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.25.2)': + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 @@ -10412,26 +10398,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.25.2 - - '@babel/helper-function-name@7.24.7': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color @@ -10441,13 +10418,13 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@babel/helper-plugin-utils@7.24.8': {} @@ -10456,7 +10433,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color @@ -10465,28 +10442,24 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.25.2 - '@babel/helper-string-parser@7.24.8': {} '@babel/helper-validator-identifier@7.24.7': {} @@ -10496,15 +10469,15 @@ snapshots: '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@babel/highlight@7.24.7': dependencies: @@ -10523,15 +10496,15 @@ snapshots: regenerator-runtime: 0.14.1 v8flags: 3.2.0 - '@babel/parser@7.25.3': + '@babel/parser@7.25.4': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color @@ -10558,14 +10531,14 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -10685,13 +10658,13 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color @@ -10714,10 +10687,10 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -10725,20 +10698,20 @@ snapshots: '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10810,7 +10783,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color @@ -10859,7 +10832,7 @@ snapshots: '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.4 transitivePeerDependencies: - supports-color @@ -10930,10 +10903,10 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -10942,7 +10915,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) transitivePeerDependencies: @@ -10987,7 +10960,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 transitivePeerDependencies: - supports-color @@ -11008,13 +10981,13 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: @@ -11052,7 +11025,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: @@ -11075,15 +11048,15 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 - '@babel/preset-env@7.25.3(@babel/core@7.25.2)': + '@babel/preset-env@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.4 '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -11113,13 +11086,13 @@ snapshots: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) @@ -11147,7 +11120,7 @@ snapshots: '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) @@ -11160,12 +11133,12 @@ snapshots: '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.25.4(@babel/core@7.25.2) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.25.2) - core-js-compat: 3.37.1 + core-js-compat: 3.38.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -11181,7 +11154,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 esutils: 2.0.3 '@babel/preset-react@7.24.7(@babel/core@7.25.2)': @@ -11218,34 +11191,34 @@ snapshots: '@babel/regjsgen@0.8.0': {} - '@babel/runtime-corejs2@7.25.0': + '@babel/runtime-corejs2@7.25.4': dependencies: core-js: 2.6.12 regenerator-runtime: 0.14.1 - '@babel/runtime@7.25.0': + '@babel/runtime@7.25.4': dependencies: regenerator-runtime: 0.14.1 '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 - '@babel/traverse@7.25.3': + '@babel/traverse@7.25.4': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.25.5 + '@babel/parser': 7.25.4 '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.2': + '@babel/types@7.25.4': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -11298,7 +11271,7 @@ snapshots: '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.1 @@ -11335,7 +11308,7 @@ snapshots: '@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.1 @@ -11368,7 +11341,7 @@ snapshots: '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -11845,7 +11818,7 @@ snapshots: '@mui/base@5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -11861,7 +11834,7 @@ snapshots: '@mui/docs@6.0.0-beta.6(qeh4qocfzy3vvrano7hggrp5gy)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/internal-markdown': 1.0.10 @@ -11880,7 +11853,7 @@ snapshots: '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: @@ -11893,7 +11866,7 @@ snapshots: '@mui/internal-markdown@1.0.10': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 lodash: 4.17.21 marked: 13.0.3 prismjs: 1.29.0 @@ -11904,7 +11877,7 @@ snapshots: '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@mui/internal-docs-utils': 1.0.10 doctrine: 3.0.0 lodash: 4.17.21 @@ -11918,7 +11891,7 @@ snapshots: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) '@babel/register': 7.24.6(@babel/core@7.25.2) - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@emotion/cache': 11.13.1 '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) '@testing-library/dom': 10.4.0 @@ -11948,7 +11921,7 @@ snapshots: '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -11965,7 +11938,7 @@ snapshots: '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -11982,7 +11955,7 @@ snapshots: '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 @@ -11993,7 +11966,7 @@ snapshots: '@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/core-downloads-tracker': 5.16.7 '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) @@ -12028,7 +12001,7 @@ snapshots: '@mui/private-theming@5.16.6(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 @@ -12037,7 +12010,7 @@ snapshots: '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -12048,7 +12021,7 @@ snapshots: '@mui/styles@5.16.7(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@emotion/hash': 0.9.2 '@mui/private-theming': 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) @@ -12071,7 +12044,7 @@ snapshots: '@mui/system@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/private-theming': 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) @@ -12091,7 +12064,7 @@ snapshots: '@mui/utils@5.16.6(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@mui/types': 7.2.15(@types/react@18.3.4) '@types/prop-types': 15.7.12 clsx: 2.1.1 @@ -12925,7 +12898,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -12945,7 +12918,7 @@ snapshots: '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -12970,24 +12943,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.4 + '@babel/types': 7.25.4 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 '@types/body-parser@1.19.5': dependencies: @@ -13896,7 +13869,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 cosmiconfig: 7.1.0 resolve: 1.22.8 @@ -13910,40 +13883,40 @@ snapshots: babel-plugin-optimize-clsx@2.6.2: dependencies: - '@babel/generator': 7.25.0 + '@babel/generator': 7.25.5 '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.4 find-cache-dir: 3.3.2 lodash: 4.17.21 object-hash: 2.2.0 babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.25.2): dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.4 '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.2) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.2) - core-js-compat: 3.37.1 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.25.2) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color babel-plugin-preval@5.1.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 '@types/babel__core': 7.20.5 babel-plugin-macros: 3.1.0 require-from-string: 2.0.2 @@ -14523,7 +14496,7 @@ snapshots: cookie@0.5.0: {} - core-js-compat@3.37.1: + core-js-compat@3.38.1: dependencies: browserslist: 4.23.3 @@ -14617,7 +14590,7 @@ snapshots: css-vendor@2.0.8: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 is-in-browser: 1.1.3 css-what@6.1.0: {} @@ -14751,13 +14724,13 @@ snapshots: date-fns-jalali@2.30.0-0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 date-fns-jalali@3.6.0-1: {} date-fns@2.30.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 date-fns@3.6.0: {} @@ -14899,7 +14872,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 csstype: 3.1.3 dom-serialize@2.2.1: @@ -15371,7 +15344,7 @@ snapshots: eslint-plugin-react-compiler@0.0.0-experimental-9ed098e-20240725(eslint@8.57.0): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.4 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.25.2) eslint: 8.57.0 hermes-parser: 0.20.1 @@ -15510,8 +15483,8 @@ snapshots: estree-to-babel@3.2.1: dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.4 + '@babel/types': 7.25.4 c8: 7.14.0 transitivePeerDependencies: - supports-color @@ -16605,7 +16578,7 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -16713,15 +16686,15 @@ snapshots: dependencies: argparse: 2.0.1 - jscodeshift@0.16.1(@babel/preset-env@7.25.3(@babel/core@7.25.2)): + jscodeshift@0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/parser': 7.25.4 + '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.25.2) '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) '@babel/register': 7.24.6(@babel/core@7.25.2) @@ -16735,7 +16708,7 @@ snapshots: temp: 0.9.4 write-file-atomic: 5.0.1 optionalDependencies: - '@babel/preset-env': 7.25.3(@babel/core@7.25.2) + '@babel/preset-env': 7.25.4(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -16834,46 +16807,46 @@ snapshots: jss-plugin-camel-case@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 hyphenate-style-name: 1.0.4 jss: 10.10.0 jss-plugin-default-unit@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 jss: 10.10.0 jss-plugin-global@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 jss: 10.10.0 jss-plugin-nested@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-props-sort@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 jss: 10.10.0 jss-plugin-rule-value-function@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-template@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-vendor-prefixer@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 css-vendor: 2.0.8 jss: 10.10.0 @@ -16884,7 +16857,7 @@ snapshots: jss@10.10.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 csstype: 3.1.3 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -18523,8 +18496,8 @@ snapshots: react-docgen@5.4.3: dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/runtime': 7.25.0 + '@babel/generator': 7.25.5 + '@babel/runtime': 7.25.4 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -18574,7 +18547,7 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -18702,7 +18675,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 regexp.prototype.flags@1.5.2: dependencies: @@ -18864,7 +18837,7 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.4 run-async@2.4.1: {} diff --git a/test/package.json b/test/package.json index 0169df4855e1..411ccad2a47b 100644 --- a/test/package.json +++ b/test/package.json @@ -6,7 +6,7 @@ "typescript": "tsc -p tsconfig.json" }, "devDependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.4", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@mui/material": "^5.16.7", From 1fadc9ea66d9a81df3b03cd6133d5132b8d71de0 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Tue, 27 Aug 2024 13:43:08 +0200 Subject: [PATCH 849/912] [core] Avoid visual regression when using `@mui/material@6` (#14357) --- docs/data/data-grid/row-height/ExpandableCells.js | 2 +- docs/data/data-grid/row-height/ExpandableCells.tsx | 2 +- docs/data/date-pickers/custom-field/BrowserV6Field.js | 3 +++ docs/data/date-pickers/custom-field/BrowserV6Field.tsx | 3 +++ .../custom-field/BrowserV6SingleInputRangeField.js | 2 +- .../custom-field/BrowserV6SingleInputRangeField.tsx | 2 +- docs/data/date-pickers/custom-field/BrowserV7Field.js | 3 +++ docs/data/date-pickers/custom-field/BrowserV7Field.tsx | 3 +++ .../custom-field/BrowserV7SingleInputRangeField.js | 3 +++ .../custom-field/BrowserV7SingleInputRangeField.tsx | 3 +++ 10 files changed, 22 insertions(+), 4 deletions(-) diff --git a/docs/data/data-grid/row-height/ExpandableCells.js b/docs/data/data-grid/row-height/ExpandableCells.js index 1a1c4d10b31d..45b22e8734c0 100644 --- a/docs/data/data-grid/row-height/ExpandableCells.js +++ b/docs/data/data-grid/row-height/ExpandableCells.js @@ -34,7 +34,7 @@ function ExpandableCell({ value }) { setExpanded(!expanded)} > {expanded ? 'view less' : 'view more'} diff --git a/docs/data/data-grid/row-height/ExpandableCells.tsx b/docs/data/data-grid/row-height/ExpandableCells.tsx index 4ac5b11fa122..7f5f0874d6d4 100644 --- a/docs/data/data-grid/row-height/ExpandableCells.tsx +++ b/docs/data/data-grid/row-height/ExpandableCells.tsx @@ -39,7 +39,7 @@ function ExpandableCell({ value }: GridRenderCellParams) { setExpanded(!expanded)} > {expanded ? 'view less' : 'view more'} diff --git a/docs/data/date-pickers/custom-field/BrowserV6Field.js b/docs/data/date-pickers/custom-field/BrowserV6Field.js index bb3952a732ce..63be3f56e884 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6Field.js +++ b/docs/data/date-pickers/custom-field/BrowserV6Field.js @@ -33,6 +33,9 @@ const BrowserField = React.forwardRef((props, ref) => { { display: 'flex', alignItems: 'center', + '& .MuiInputAdornment-root': { + height: 'auto', + }, }, sx || {}, ]} diff --git a/docs/data/date-pickers/custom-field/BrowserV6Field.tsx b/docs/data/date-pickers/custom-field/BrowserV6Field.tsx index 45fa7acdec43..49138cd42863 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6Field.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6Field.tsx @@ -63,6 +63,9 @@ const BrowserField = React.forwardRef( { display: 'flex', alignItems: 'center', + '& .MuiInputAdornment-root': { + height: 'auto', + }, }, sx || {}, ]} diff --git a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js index 4815d50972ac..311029bbc6fa 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.js @@ -63,7 +63,7 @@ const BrowserSingleInputDateRangeField = React.forwardRef((props, ref) => { textFieldProps.InputProps = { ...textFieldProps.InputProps, endAdornment: ( - + diff --git a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx index 15c4e41160ae..6db84b3f6c57 100644 --- a/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV6SingleInputRangeField.tsx @@ -118,7 +118,7 @@ const BrowserSingleInputDateRangeField = React.forwardRef( textFieldProps.InputProps = { ...textFieldProps.InputProps, endAdornment: ( - + diff --git a/docs/data/date-pickers/custom-field/BrowserV7Field.js b/docs/data/date-pickers/custom-field/BrowserV7Field.js index 2454d803bf30..78497c2f81a5 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7Field.js +++ b/docs/data/date-pickers/custom-field/BrowserV7Field.js @@ -13,6 +13,9 @@ import { Unstable_PickersSectionList as PickersSectionList } from '@mui/x-date-p const BrowserFieldRoot = styled('div', { name: 'BrowserField', slot: 'Root' })({ display: 'flex', alignItems: 'center', + '& .MuiInputAdornment-root': { + height: 'auto', + }, }); const BrowserFieldContent = styled('div', { name: 'BrowserField', slot: 'Content' })( diff --git a/docs/data/date-pickers/custom-field/BrowserV7Field.tsx b/docs/data/date-pickers/custom-field/BrowserV7Field.tsx index a84e535d4340..202c6dd74e0a 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7Field.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV7Field.tsx @@ -21,6 +21,9 @@ import { Unstable_PickersSectionList as PickersSectionList } from '@mui/x-date-p const BrowserFieldRoot = styled('div', { name: 'BrowserField', slot: 'Root' })({ display: 'flex', alignItems: 'center', + '& .MuiInputAdornment-root': { + height: 'auto', + }, }); const BrowserFieldContent = styled('div', { name: 'BrowserField', slot: 'Content' })( diff --git a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js index 57cc103e1c69..26c10f367f97 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js +++ b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.js @@ -16,6 +16,9 @@ import { Unstable_PickersSectionList as PickersSectionList } from '@mui/x-date-p const BrowserFieldRoot = styled('div', { name: 'BrowserField', slot: 'Root' })({ display: 'flex', alignItems: 'center', + '& .MuiInputAdornment-root': { + height: 'auto', + }, }); const BrowserFieldContent = styled('div', { name: 'BrowserField', slot: 'Content' })( diff --git a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx index dd04c5aae06e..5c925effbaab 100644 --- a/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx +++ b/docs/data/date-pickers/custom-field/BrowserV7SingleInputRangeField.tsx @@ -30,6 +30,9 @@ import { BaseSingleInputFieldProps } from '@mui/x-date-pickers/models'; const BrowserFieldRoot = styled('div', { name: 'BrowserField', slot: 'Root' })({ display: 'flex', alignItems: 'center', + '& .MuiInputAdornment-root': { + height: 'auto', + }, }); const BrowserFieldContent = styled('div', { name: 'BrowserField', slot: 'Content' })( From 515450fb52a5d8482433f2099bb41c1fe5f95625 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Tue, 27 Aug 2024 15:13:00 +0300 Subject: [PATCH 850/912] [core] Remove renovate rule targeting only `next` releases of `@mui/docs` (#14364) --- renovate.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/renovate.json b/renovate.json index 43c1d692a475..e8960ee9db0d 100644 --- a/renovate.json +++ b/renovate.json @@ -107,11 +107,6 @@ { "groupName": "GitHub Actions", "matchManagers": ["github-actions"] - }, - { - "groupName": "@mui/docs", - "matchPackageNames": ["@mui/docs"], - "followTag": "next" } ], "postUpdateOptions": ["pnpmDedupe"], From 2c8d5fcb347b154ac9de7b4754e354091e61af5a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 19:35:06 +0700 Subject: [PATCH 851/912] Bump MUI Internal (#14321) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 6 +- package.json | 4 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 116 +++++++++++----------- 13 files changed, 73 insertions(+), 73 deletions(-) diff --git a/docs/package.json b/docs/package.json index ec5de6e647e8..6b205ba9872a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -27,7 +27,7 @@ "@emotion/react": "^11.13.3", "@emotion/server": "^11.11.0", "@emotion/styled": "^11.13.0", - "@mui/docs": "6.0.0-beta.6", + "@mui/docs": "6.0.0", "@mui/icons-material": "^5.16.7", "@mui/joy": "^5.0.0-beta.48", "@mui/lab": "^5.0.0-alpha.173", @@ -101,8 +101,8 @@ "devDependencies": { "@babel/plugin-transform-react-constant-elements": "^7.25.1", "@babel/preset-typescript": "^7.24.7", - "@mui/internal-docs-utils": "^1.0.10", - "@mui/internal-scripts": "^1.0.16", + "@mui/internal-docs-utils": "^1.0.11", + "@mui/internal-scripts": "^1.0.18", "@types/chance": "^1.1.6", "@types/d3-scale": "^4.0.8", "@types/d3-scale-chromatic": "^3.0.3", diff --git a/package.json b/package.json index d2a741fdcbd8..802da58f6c93 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@mui/icons-material": "^5.16.7", - "@mui/internal-markdown": "^1.0.10", - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-markdown": "^1.0.11", + "@mui/internal-test-utils": "^1.0.10", "@mui/material": "^5.16.7", "@mui/monorepo": "github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa", "@mui/utils": "^5.16.6", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 7e7af14bdd80..23d1c3b3d248 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -64,7 +64,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@react-spring/core": "^9.7.4", "@react-spring/shared": "^9.7.4", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index a6ad24fdafdf..be6f543e42c9 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -72,7 +72,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", "rimraf": "^5.0.10" diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index be95359f3715..72204827ec4c 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 662ab849333c..b15ac1b96fbd 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -71,7 +71,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@mui/joy": "^5.0.0-beta.48", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 340a204f08ad..015d92f04b60 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -95,7 +95,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 5d1786f84940..7a5ea6153cc8 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -97,7 +97,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 0d51cdd4450d..94f4803fdbd6 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -48,7 +48,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "rimraf": "^5.0.10" }, "engines": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 2cd4e8bb37a8..8bb6e2528f4a 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -41,7 +41,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "rimraf": "^5.0.10" }, "engines": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 0fbc80c05c2a..5db48bc3e193 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 9ed3a9c2429c..520e0c882539 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -68,7 +68,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.8", + "@mui/internal-test-utils": "^1.0.10", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f763d7638b89..91a7006a09dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,11 +87,11 @@ importers: specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/internal-markdown': - specifier: ^1.0.10 - version: 1.0.10 + specifier: ^1.0.11 + version: 1.0.11 '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -426,8 +426,8 @@ importers: specifier: ^11.13.0 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/docs': - specifier: 6.0.0-beta.6 - version: 6.0.0-beta.6(qeh4qocfzy3vvrano7hggrp5gy) + specifier: 6.0.0 + version: 6.0.0(qeh4qocfzy3vvrano7hggrp5gy) '@mui/icons-material': specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -643,11 +643,11 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@mui/internal-docs-utils': - specifier: ^1.0.10 - version: 1.0.10 + specifier: ^1.0.11 + version: 1.0.11 '@mui/internal-scripts': - specifier: ^1.0.16 - version: 1.0.16 + specifier: ^1.0.18 + version: 1.0.18 '@types/chance': specifier: ^1.1.6 version: 1.1.6 @@ -749,8 +749,8 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -990,8 +990,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1102,8 +1102,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1164,8 +1164,8 @@ importers: version: 4.1.8 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1214,8 +1214,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1306,8 +1306,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1347,8 +1347,8 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1367,8 +1367,8 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1417,8 +1417,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1476,8 +1476,8 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.8 - version: 1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.0.10 + version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -3055,14 +3055,14 @@ packages: '@mui/core-downloads-tracker@5.16.7': resolution: {integrity: sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==} - '@mui/docs@6.0.0-beta.6': - resolution: {integrity: sha512-q5v8dqbtI8eWzjMv/AcASSI2PGMPq/nF8Z4gzi2S+jjFcAH/4MoknhQUReLxGW+6DaCuPfSNDtcvxIjQ9mrJ3A==} + '@mui/docs@6.0.0': + resolution: {integrity: sha512-rB1EBgVafBSffCCr1N3NsiJYR3MHKyfc2vVL4iOtwyL1+6GGOlppqZycInaoyQaMKR8Jw/uSyakof7anufcJcg==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/base': '*' - '@mui/icons-material': ^5.0.0 - '@mui/material': ^5.0.0 - '@mui/system': ^5.0.0 + '@mui/icons-material': ^5.0.0 || ^6.0.0 + '@mui/material': ^5.0.0 || ^6.0.0 + '@mui/system': ^5.0.0 || ^6.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 chai: ^4.4.1 csstype: ^3.1.3 @@ -3083,17 +3083,17 @@ packages: '@types/react': optional: true - '@mui/internal-docs-utils@1.0.10': - resolution: {integrity: sha512-q22BGAi4cwWv0DhZJB3y54dcBT3s5MPGvMgeeffANFwLw21/WvzLyLPyFOPheklX8ZO8yBnpQ6rYCAuwbIlCeg==} + '@mui/internal-docs-utils@1.0.11': + resolution: {integrity: sha512-vnI+2mLMZSl4V3EDbXLj/pYpEH4xDBjLxhgBnEp2R6Agf89w6l6LRshrZADqHVVy9WEJ3ywoIZ1bYQCQd1bzzw==} - '@mui/internal-markdown@1.0.10': - resolution: {integrity: sha512-3shXvqaql/vLtnuTSaOPNSX9wh+gZBhHR4EI3Crk+QVZVtzPZNGss1thXwMF/O/BztFkkCHE2VNHHLCjo+9VJQ==} + '@mui/internal-markdown@1.0.11': + resolution: {integrity: sha512-eKinbHo+/qlNkpuvnG0w7eBZApWM10DcNSK909aPv2AaWgAJ6ObCjcbpNCf8OfLb92xQrNcHFBVhEWcsddwflg==} - '@mui/internal-scripts@1.0.16': - resolution: {integrity: sha512-yoFavVhIHra7CQ2CpNnbMVbW2aSBeza5a3NrIWjS2enqtdHa0ejxQiDjWJezZXgdnow5urE1R1Kid7Q8Et8nIw==} + '@mui/internal-scripts@1.0.18': + resolution: {integrity: sha512-4qgDg1u0beQnR1KySBcexfh/JDOobpdsHYLkKicb4tZxVzvDlW/cZ2zYS2gQVYqkpJfhiKhRbeafns5LYSQgXg==} - '@mui/internal-test-utils@1.0.8': - resolution: {integrity: sha512-FBp7oqBliCdXQegFyRlx0Ud4w7DGPzA/lGN81tJOCTG/nnI/tDzv1jGT6t0Cg3rngSMR+siv7OJeY6r+nIoA/w==} + '@mui/internal-test-utils@1.0.10': + resolution: {integrity: sha512-2duysXjYP4hvMw7LCbEyR20Jbt5hOoBEnfkC+7k7UWCMrLvhboVf+X2XkQ8V2ZEf4Q3VJ2vTVUMOYp1S26miig==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -8421,8 +8421,8 @@ packages: engines: {node: '>=16'} hasBin: true - playwright-core@1.46.0: - resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} + playwright-core@1.46.1: + resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} engines: {node: '>=18'} hasBin: true @@ -8431,8 +8431,8 @@ packages: engines: {node: '>=16'} hasBin: true - playwright@1.46.0: - resolution: {integrity: sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==} + playwright@1.46.1: + resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} engines: {node: '>=18'} hasBin: true @@ -11832,12 +11832,12 @@ snapshots: '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0-beta.6(qeh4qocfzy3vvrano7hggrp5gy)': + '@mui/docs@6.0.0(qeh4qocfzy3vvrano7hggrp5gy)': dependencies: '@babel/runtime': 7.25.4 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/internal-markdown': 1.0.10 + '@mui/internal-markdown': 1.0.11 '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) chai: 5.1.1 @@ -11859,26 +11859,26 @@ snapshots: optionalDependencies: '@types/react': 18.3.4 - '@mui/internal-docs-utils@1.0.10': + '@mui/internal-docs-utils@1.0.11': dependencies: rimraf: 5.0.10 typescript: 5.5.4 - '@mui/internal-markdown@1.0.10': + '@mui/internal-markdown@1.0.11': dependencies: '@babel/runtime': 7.25.4 lodash: 4.17.21 marked: 13.0.3 prismjs: 1.29.0 - '@mui/internal-scripts@1.0.16': + '@mui/internal-scripts@1.0.18': dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) '@babel/types': 7.25.4 - '@mui/internal-docs-utils': 1.0.10 + '@mui/internal-docs-utils': 1.0.11 doctrine: 3.0.0 lodash: 4.17.21 typescript: 5.5.4 @@ -11886,7 +11886,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.8(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) @@ -11905,7 +11905,7 @@ snapshots: jsdom: 24.1.3 lodash: 4.17.21 mocha: 10.7.3 - playwright: 1.46.0 + playwright: 1.46.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -18289,7 +18289,7 @@ snapshots: playwright-core@1.44.1: {} - playwright-core@1.46.0: {} + playwright-core@1.46.1: {} playwright@1.44.1: dependencies: @@ -18297,9 +18297,9 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - playwright@1.46.0: + playwright@1.46.1: dependencies: - playwright-core: 1.46.0 + playwright-core: 1.46.1 optionalDependencies: fsevents: 2.3.2 From 0c30a6f35a7e21035d0245661d98bbfb8bad5037 Mon Sep 17 00:00:00 2001 From: Lucas Hilgert <77863078+lhilgert9@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:48:51 +0200 Subject: [PATCH 852/912] [charts] Add missing `themeAugmentation` in pro plan (#14313) Co-authored-by: Jose Quintas Co-authored-by: alex --- .../charts/getting-started/getting-started.md | 27 ++++++++ docs/pages/x/api/charts/bar-chart.json | 2 +- docs/pages/x/api/charts/line-chart.json | 2 +- docs/pages/x/api/charts/pie-chart.json | 2 +- docs/pages/x/api/charts/scatter-chart.json | 2 +- .../src/BarChartPro/BarChartPro.tsx | 4 +- packages/x-charts-pro/src/Heatmap/Heatmap.tsx | 6 +- .../src/LineChartPro/LineChartPro.tsx | 4 +- .../src/ScatterChartPro/ScatterChartPro.tsx | 4 +- .../src/themeAugmentation/components.d.ts | 25 +++++++ .../src/themeAugmentation/index.js | 1 + .../src/themeAugmentation/index.ts | 4 ++ .../src/themeAugmentation/overrides.d.ts | 13 ++++ .../src/themeAugmentation/props.d.ts | 22 +++++++ .../themeAugmentation.spec.ts | 39 +++++++++++ .../x-charts/src/BarChart/BarChart.test.tsx | 4 +- packages/x-charts/src/BarChart/BarChart.tsx | 4 +- .../src/BarChart/BarLabel/BarLabel.tsx | 6 +- .../x-charts/src/ChartsGrid/ChartsGrid.tsx | 8 +-- .../src/ChartsSurface/ChartsSurface.tsx | 5 +- .../x-charts/src/LineChart/LineChart.test.tsx | 4 +- packages/x-charts/src/LineChart/LineChart.tsx | 4 +- .../x-charts/src/PieChart/PieChart.test.tsx | 4 +- packages/x-charts/src/PieChart/PieChart.tsx | 4 +- .../src/ScatterChart/ScatterChart.test.tsx | 4 +- .../src/ScatterChart/ScatterChart.tsx | 4 +- .../components/AxisSharedComponents.tsx | 8 +-- .../src/themeAugmentation/components.d.ts | 14 +--- .../src/themeAugmentation/overrides.d.ts | 13 ++-- .../x-charts/src/themeAugmentation/props.d.ts | 17 +---- .../themeAugmentation.spec.ts | 66 ++----------------- 31 files changed, 199 insertions(+), 127 deletions(-) create mode 100644 packages/x-charts-pro/src/themeAugmentation/components.d.ts create mode 100644 packages/x-charts-pro/src/themeAugmentation/index.js create mode 100644 packages/x-charts-pro/src/themeAugmentation/index.ts create mode 100644 packages/x-charts-pro/src/themeAugmentation/overrides.d.ts create mode 100644 packages/x-charts-pro/src/themeAugmentation/props.d.ts create mode 100644 packages/x-charts-pro/src/themeAugmentation/themeAugmentation.spec.ts diff --git a/docs/data/charts/getting-started/getting-started.md b/docs/data/charts/getting-started/getting-started.md index c325d7940d6b..6c6057abfc00 100644 --- a/docs/data/charts/getting-started/getting-started.md +++ b/docs/data/charts/getting-started/getting-started.md @@ -118,3 +118,30 @@ Visit the [Axis page](/x/react-charts/axis/) for more details. MUI X Charts follows the Material UI styling and features all of the customization tools you'd find there, making tweaking charts as straightforward as designing buttons. Visit the [Styling page](/x/react-charts/styling/) for more details. + +## TypeScript + +In order to benefit from the [CSS overrides](/material-ui/customization/theme-components/#theme-style-overrides) and [default prop customization](/material-ui/customization/theme-components/#theme-default-props) with the theme, TypeScript users need to import the following types. +Internally, it uses module augmentation to extend the default theme structure. + +```tsx +import type {} from '@mui/x-charts/themeAugmentation'; +import type {} from '@mui/x-charts-pro/themeAugmentation'; + +const theme = createTheme({ + components: { + MuiChartsAxis: { + styleOverrides: { + tick: { + stroke: '#006BD6', + }, + }, + }, + }, +}); +``` + +:::info +You don't have to import the theme augmentation from both `@mui/x-charts` and `@mui/x-charts-pro` when using `@mui/x-charts-pro`. +Importing it from `@mui/x-charts-pro` is enough. +::: diff --git a/docs/pages/x/api/charts/bar-chart.json b/docs/pages/x/api/charts/bar-chart.json index 98abf0ef7ad1..4fbc846f9948 100644 --- a/docs/pages/x/api/charts/bar-chart.json +++ b/docs/pages/x/api/charts/bar-chart.json @@ -191,7 +191,7 @@ ], "classes": [], "spread": true, - "themeDefaultProps": false, + "themeDefaultProps": true, "muiName": "MuiBarChart", "forwardsRefTo": "SVGSVGElement", "filename": "/packages/x-charts/src/BarChart/BarChart.tsx", diff --git a/docs/pages/x/api/charts/line-chart.json b/docs/pages/x/api/charts/line-chart.json index bc272032eb1d..51e2f75d22ab 100644 --- a/docs/pages/x/api/charts/line-chart.json +++ b/docs/pages/x/api/charts/line-chart.json @@ -186,7 +186,7 @@ ], "classes": [], "spread": true, - "themeDefaultProps": false, + "themeDefaultProps": true, "muiName": "MuiLineChart", "forwardsRefTo": "SVGSVGElement", "filename": "/packages/x-charts/src/LineChart/LineChart.tsx", diff --git a/docs/pages/x/api/charts/pie-chart.json b/docs/pages/x/api/charts/pie-chart.json index 887c162a7a5c..cc208bd3f97c 100644 --- a/docs/pages/x/api/charts/pie-chart.json +++ b/docs/pages/x/api/charts/pie-chart.json @@ -170,7 +170,7 @@ ], "classes": [], "spread": true, - "themeDefaultProps": false, + "themeDefaultProps": true, "muiName": "MuiPieChart", "forwardsRefTo": "SVGSVGElement", "filename": "/packages/x-charts/src/PieChart/PieChart.tsx", diff --git a/docs/pages/x/api/charts/scatter-chart.json b/docs/pages/x/api/charts/scatter-chart.json index 352dfeeaad5b..f9daa7ae5b4b 100644 --- a/docs/pages/x/api/charts/scatter-chart.json +++ b/docs/pages/x/api/charts/scatter-chart.json @@ -176,7 +176,7 @@ ], "classes": [], "spread": true, - "themeDefaultProps": false, + "themeDefaultProps": true, "muiName": "MuiScatterChart", "forwardsRefTo": "SVGSVGElement", "filename": "/packages/x-charts/src/ScatterChart/ScatterChart.tsx", diff --git a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx index 9f03659068b1..f07082ebd628 100644 --- a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx +++ b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { BarChartProps, BarPlot } from '@mui/x-charts/BarChart'; import { ChartsOnAxisClickHandler } from '@mui/x-charts/ChartsOnAxisClickHandler'; import { ChartsGrid } from '@mui/x-charts/ChartsGrid'; @@ -29,7 +30,8 @@ export interface BarChartProProps extends BarChartProps, ZoomProps {} * * - [BarChart API](https://mui.com/x/api/charts/bar-chart/) */ -const BarChartPro = React.forwardRef(function BarChartPro(props: BarChartProProps, ref) { +const BarChartPro = React.forwardRef(function BarChartPro(inProps: BarChartProProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiBarChartPro' }); const { zoom, onZoomChange, ...other } = props; const { chartContainerProps, diff --git a/packages/x-charts-pro/src/Heatmap/Heatmap.tsx b/packages/x-charts-pro/src/Heatmap/Heatmap.tsx index 7b393a9f11a1..eac118054262 100644 --- a/packages/x-charts-pro/src/Heatmap/Heatmap.tsx +++ b/packages/x-charts-pro/src/Heatmap/Heatmap.tsx @@ -1,7 +1,8 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { interpolateRgbBasis } from '@mui/x-charts-vendor/d3-interpolate'; +import { useThemeProps } from '@mui/material/styles'; import useId from '@mui/utils/useId'; +import { interpolateRgbBasis } from '@mui/x-charts-vendor/d3-interpolate'; import { ChartsAxis, ChartsAxisProps } from '@mui/x-charts/ChartsAxis'; import { ChartsTooltip, @@ -104,7 +105,8 @@ const defaultColorMap = interpolateRgbBasis([ '#084081', ]); -const Heatmap = React.forwardRef(function Heatmap(props: HeatmapProps, ref) { +const Heatmap = React.forwardRef(function Heatmap(inProps: HeatmapProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiHeatmap' }); const { xAxis, yAxis, diff --git a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx index 323d37fb05d5..90782a38be2d 100644 --- a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx +++ b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { AreaPlot, AreaPlotProps, @@ -36,7 +37,8 @@ export interface LineChartProProps extends LineChartProps, ZoomProps {} * * - [LineChart API](https://mui.com/x/api/charts/line-chart/) */ -const LineChartPro = React.forwardRef(function LineChartPro(props: LineChartProProps, ref) { +const LineChartPro = React.forwardRef(function LineChartPro(inProps: LineChartProProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiLineChartPro' }); const { zoom, onZoomChange, ...other } = props; const { chartContainerProps, diff --git a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx index 1ca22d2eb060..06679a1e0b2d 100644 --- a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx +++ b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { ChartsOverlay } from '@mui/x-charts/ChartsOverlay'; import { ScatterChartProps, ScatterPlot } from '@mui/x-charts/ScatterChart'; import { ZAxisContextProvider } from '@mui/x-charts/context'; @@ -27,9 +28,10 @@ export interface ScatterChartProProps extends ScatterChartProps, ZoomProps {} * - [ScatterChart API](https://mui.com/x/api/charts/scatter-chart/) */ const ScatterChartPro = React.forwardRef(function ScatterChartPro( - props: ScatterChartProProps, + inProps: ScatterChartProProps, ref, ) { + const props = useThemeProps({ props: inProps, name: 'MuiScatterChartPro' }); const { zoom, onZoomChange, ...other } = props; const { chartContainerProps, diff --git a/packages/x-charts-pro/src/themeAugmentation/components.d.ts b/packages/x-charts-pro/src/themeAugmentation/components.d.ts new file mode 100644 index 000000000000..1638a9e2a284 --- /dev/null +++ b/packages/x-charts-pro/src/themeAugmentation/components.d.ts @@ -0,0 +1,25 @@ +import { ComponentsProps, ComponentsOverrides } from '@mui/material/styles'; + +export interface ChartsProComponents { + // BarChartPro components + MuiBarChartPro?: { + defaultProps?: ComponentsProps['MuiBarChartPro']; + }; + // LineChartPro components + MuiLineChartPro?: { + defaultProps?: ComponentsProps['MuiLineChartPro']; + }; + // Heatmap components + MuiHeatmap?: { + defaultProps?: ComponentsProps['MuiHeatmap']; + styleOverrides?: ComponentsOverrides['MuiHeatmap']; + }; + // ScatterChartPro components + MuiScatterChartPro?: { + defaultProps?: ComponentsProps['MuiScatterChartPro']; + }; +} + +declare module '@mui/material/styles' { + interface Components extends ChartsProComponents {} +} diff --git a/packages/x-charts-pro/src/themeAugmentation/index.js b/packages/x-charts-pro/src/themeAugmentation/index.js new file mode 100644 index 000000000000..6467405078b0 --- /dev/null +++ b/packages/x-charts-pro/src/themeAugmentation/index.js @@ -0,0 +1 @@ +// Prefer to use `import type {} from '@mui/x-charts-pro/themeAugmentation';` instead to avoid importing an empty file. diff --git a/packages/x-charts-pro/src/themeAugmentation/index.ts b/packages/x-charts-pro/src/themeAugmentation/index.ts new file mode 100644 index 000000000000..1a4a7fc3c80d --- /dev/null +++ b/packages/x-charts-pro/src/themeAugmentation/index.ts @@ -0,0 +1,4 @@ +export * from '@mui/x-charts/themeAugmentation'; +export * from './overrides'; +export * from './props'; +export * from './components'; diff --git a/packages/x-charts-pro/src/themeAugmentation/overrides.d.ts b/packages/x-charts-pro/src/themeAugmentation/overrides.d.ts new file mode 100644 index 000000000000..b57a5f0362d6 --- /dev/null +++ b/packages/x-charts-pro/src/themeAugmentation/overrides.d.ts @@ -0,0 +1,13 @@ +import { HeatmapClassKey } from '../Heatmap'; + +export interface ChartsProComponentNameToClassKey { + // Heatmap components + MuiHeatmap: HeatmapClassKey; +} + +declare module '@mui/material/styles' { + interface ComponentNameToClassKey extends ChartsProComponentNameToClassKey {} +} + +// disable automatic export +export {}; diff --git a/packages/x-charts-pro/src/themeAugmentation/props.d.ts b/packages/x-charts-pro/src/themeAugmentation/props.d.ts new file mode 100644 index 000000000000..501228568298 --- /dev/null +++ b/packages/x-charts-pro/src/themeAugmentation/props.d.ts @@ -0,0 +1,22 @@ +import { ScatterChartProProps } from '../ScatterChartPro'; +import { BarChartProProps } from '../BarChartPro'; +import { HeatmapProps } from '../Heatmap/Heatmap'; +import { LineChartProProps } from '../LineChartPro'; + +export interface ChartsProComponentsPropsList { + // BarChartPro components + MuiBarChartPro: BarChartProProps; + // LineChartPro components + MuiLineChartPro: LineChartProProps; + // Heatmap components + MuiHeatmap: HeatmapProps; + // ScatterChartPro components + MuiScatterChartPro: ScatterChartProProps; +} + +declare module '@mui/material/styles' { + interface ComponentsPropsList extends ChartsProComponentsPropsList {} +} + +// disable automatic export +export {}; diff --git a/packages/x-charts-pro/src/themeAugmentation/themeAugmentation.spec.ts b/packages/x-charts-pro/src/themeAugmentation/themeAugmentation.spec.ts new file mode 100644 index 000000000000..074742162da1 --- /dev/null +++ b/packages/x-charts-pro/src/themeAugmentation/themeAugmentation.spec.ts @@ -0,0 +1,39 @@ +import { createTheme } from '@mui/material/styles'; + +createTheme({ + components: { + MuiBarChartPro: { + defaultProps: { + title: 'toto', + // @ts-expect-error invalid MuiChartsAxis prop + someRandomProp: true, + }, + }, + MuiLineChartPro: { + defaultProps: { + title: 'toto', + // @ts-expect-error invalid MuiChartsAxis prop + someRandomProp: true, + }, + }, + MuiScatterChartPro: { + defaultProps: { + title: 'toto', + // @ts-expect-error invalid MuiChartsAxis prop + someRandomProp: true, + }, + }, + MuiHeatmap: { + defaultProps: { + title: 'toto', + // @ts-expect-error invalid MuiChartsAxis prop + someRandomProp: true, + }, + styleOverrides: { + highlighted: { backgroundColor: 'red' }, + // @ts-expect-error invalid MuiChartsAxis class key + constent: { color: 'red' }, + }, + }, + }, +}); diff --git a/packages/x-charts/src/BarChart/BarChart.test.tsx b/packages/x-charts/src/BarChart/BarChart.test.tsx index 7f9dffa98069..f93e1352ca78 100644 --- a/packages/x-charts/src/BarChart/BarChart.test.tsx +++ b/packages/x-charts/src/BarChart/BarChart.test.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; -import { createRenderer, describeConformance } from '@mui/internal-test-utils'; +import { createRenderer } from '@mui/internal-test-utils/createRenderer'; +import { describeConformance } from 'test/utils/describeConformance'; import { BarChart } from '@mui/x-charts/BarChart'; describe('', () => { @@ -20,7 +21,6 @@ describe('', () => { 'slotPropsProp', 'slotPropsCallback', 'slotsProp', - 'themeDefaultProps', 'themeStyleOverrides', 'themeVariants', 'themeCustomPalette', diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index bba9190cabac..7aca01261877 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { BarPlot, BarPlotProps, BarPlotSlotProps, BarPlotSlots } from './BarPlot'; import { ResponsiveChartContainer, @@ -109,7 +110,8 @@ export interface BarChartProps * * - [BarChart API](https://mui.com/x/api/charts/bar-chart/) */ -const BarChart = React.forwardRef(function BarChart(props: BarChartProps, ref) { +const BarChart = React.forwardRef(function BarChart(inProps: BarChartProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiBarChart' }); const { chartContainerProps, barPlotProps, diff --git a/packages/x-charts/src/BarChart/BarLabel/BarLabel.tsx b/packages/x-charts/src/BarChart/BarLabel/BarLabel.tsx index 7b18ddf9568a..d3c9af981dee 100644 --- a/packages/x-charts/src/BarChart/BarLabel/BarLabel.tsx +++ b/packages/x-charts/src/BarChart/BarLabel/BarLabel.tsx @@ -29,10 +29,10 @@ export const BarLabelComponent = styled(animated.text, { export type BarLabelProps = Omit, 'ref' | 'id'> & BarLabelOwnerState; -function BarLabel(props: BarLabelProps) { - const themeProps = useThemeProps({ props, name: 'MuiBarLabel' }); +function BarLabel(inProps: BarLabelProps) { + const props = useThemeProps({ props: inProps, name: 'MuiBarLabel' }); - const { seriesId, dataIndex, color, isFaded, isHighlighted, classes, ...otherProps } = themeProps; + const { seriesId, dataIndex, color, isFaded, isHighlighted, classes, ...otherProps } = props; return ; } diff --git a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx index 19b880e70ed0..497d23977067 100644 --- a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx +++ b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx @@ -66,14 +66,14 @@ export interface ChartsGridProps { * * - [ChartsGrid API](https://mui.com/x/api/charts/charts-axis/) */ -function ChartsGrid(props: ChartsGridProps) { - const themeProps = useThemeProps({ props, name: 'MuiChartsGrid' }); +function ChartsGrid(inProps: ChartsGridProps) { + const props = useThemeProps({ props: inProps, name: 'MuiChartsGrid' }); const drawingArea = useDrawingArea(); - const { vertical, horizontal, ...other } = themeProps; + const { vertical, horizontal, ...other } = props; const { xAxis, xAxisIds, yAxis, yAxisIds } = useCartesianContext(); - const classes = useUtilityClasses(themeProps); + const classes = useUtilityClasses(props); const horizontalAxisId = yAxisIds[0]; const verticalAxisId = xAxisIds[0]; diff --git a/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx b/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx index 949b93ea9774..769a65fb5835 100644 --- a/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx +++ b/packages/x-charts/src/ChartsSurface/ChartsSurface.tsx @@ -1,4 +1,4 @@ -import { styled, SxProps, Theme } from '@mui/material/styles'; +import { styled, SxProps, Theme, useThemeProps } from '@mui/material/styles'; import PropTypes from 'prop-types'; import * as React from 'react'; import { useAxisEvents } from '../hooks/useAxisEvents'; @@ -42,9 +42,10 @@ const ChartChartsSurfaceStyles = styled('svg', { })); const ChartsSurface = React.forwardRef(function ChartsSurface( - props: ChartsSurfaceProps, + inProps: ChartsSurfaceProps, ref, ) { + const props = useThemeProps({ props: inProps, name: 'MuiChartsSurface' }); const { children, width, diff --git a/packages/x-charts/src/LineChart/LineChart.test.tsx b/packages/x-charts/src/LineChart/LineChart.test.tsx index 760dc0317e61..1ec0c3f8ac2a 100644 --- a/packages/x-charts/src/LineChart/LineChart.test.tsx +++ b/packages/x-charts/src/LineChart/LineChart.test.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; -import { createRenderer, describeConformance } from '@mui/internal-test-utils'; +import { createRenderer } from '@mui/internal-test-utils/createRenderer'; +import { describeConformance } from 'test/utils/describeConformance'; import { LineChart } from '@mui/x-charts/LineChart'; describe('', () => { @@ -19,7 +20,6 @@ describe('', () => { 'slotPropsProp', 'slotPropsCallback', 'slotsProp', - 'themeDefaultProps', 'themeStyleOverrides', 'themeVariants', 'themeCustomPalette', diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index a8e65b19c18a..0bd258bfd715 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { AreaPlot, AreaPlotProps, AreaPlotSlotProps, AreaPlotSlots } from './AreaPlot'; import { LinePlot, LinePlotProps, LinePlotSlotProps, LinePlotSlots } from './LinePlot'; import { @@ -135,7 +136,8 @@ export interface LineChartProps * * - [LineChart API](https://mui.com/x/api/charts/line-chart/) */ -const LineChart = React.forwardRef(function LineChart(props: LineChartProps, ref) { +const LineChart = React.forwardRef(function LineChart(inProps: LineChartProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiLineChart' }); const { chartContainerProps, axisClickHandlerProps, diff --git a/packages/x-charts/src/PieChart/PieChart.test.tsx b/packages/x-charts/src/PieChart/PieChart.test.tsx index d77fe8f25861..d1d5c3fd55ff 100644 --- a/packages/x-charts/src/PieChart/PieChart.test.tsx +++ b/packages/x-charts/src/PieChart/PieChart.test.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; -import { createRenderer, describeConformance } from '@mui/internal-test-utils'; +import { createRenderer } from '@mui/internal-test-utils/createRenderer'; +import { describeConformance } from 'test/utils/describeConformance'; import { PieChart } from '@mui/x-charts/PieChart'; describe('', () => { @@ -30,7 +31,6 @@ describe('', () => { 'slotPropsProp', 'slotPropsCallback', 'slotsProp', - 'themeDefaultProps', 'themeStyleOverrides', 'themeVariants', 'themeCustomPalette', diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 769553547ee5..dca99305017f 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { ResponsiveChartContainer, ResponsiveChartContainerProps, @@ -123,7 +124,8 @@ const defaultRTLMargin = { top: 5, bottom: 5, left: 100, right: 5 }; * * - [PieChart API](https://mui.com/x/api/charts/pie-chart/) */ -const PieChart = React.forwardRef(function PieChart(props: PieChartProps, ref) { +const PieChart = React.forwardRef(function PieChart(inProps: PieChartProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiPieChart' }); const { xAxis, yAxis, diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.test.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.test.tsx index e96d0e0681a1..6a0810ce8dd3 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.test.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.test.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; -import { createRenderer, describeConformance } from '@mui/internal-test-utils'; +import { createRenderer } from '@mui/internal-test-utils/createRenderer'; +import { describeConformance } from 'test/utils/describeConformance'; import { ScatterChart } from '@mui/x-charts/ScatterChart'; describe('', () => { @@ -31,7 +32,6 @@ describe('', () => { 'slotPropsProp', 'slotPropsCallback', 'slotsProp', - 'themeDefaultProps', 'themeStyleOverrides', 'themeVariants', 'themeCustomPalette', diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index 7689c17a7563..ecd3bbe6c2c3 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useThemeProps } from '@mui/material/styles'; import { ScatterPlot, ScatterPlotProps, @@ -118,7 +119,8 @@ export interface ScatterChartProps * * - [ScatterChart API](https://mui.com/x/api/charts/scatter-chart/) */ -const ScatterChart = React.forwardRef(function ScatterChart(props: ScatterChartProps, ref) { +const ScatterChart = React.forwardRef(function ScatterChart(inProps: ScatterChartProps, ref) { + const props = useThemeProps({ props: inProps, name: 'MuiScatterChart' }); const { chartContainerProps, zAxisProps, diff --git a/packages/x-charts/src/internals/components/AxisSharedComponents.tsx b/packages/x-charts/src/internals/components/AxisSharedComponents.tsx index ba6078ebe23b..5fb7076d5455 100644 --- a/packages/x-charts/src/internals/components/AxisSharedComponents.tsx +++ b/packages/x-charts/src/internals/components/AxisSharedComponents.tsx @@ -6,21 +6,21 @@ export const AxisRoot = styled('g', { slot: 'Root', overridesResolver: (props, styles) => styles.root, })(({ theme }) => ({ - [`& .${axisClasses.tickLabel}`]: { + [`.${axisClasses.tickLabel}`]: { ...theme.typography.caption, fill: (theme.vars || theme).palette.text.primary, }, - [`& .${axisClasses.label}`]: { + [`.${axisClasses.label}`]: { ...theme.typography.body1, fill: (theme.vars || theme).palette.text.primary, }, - [`& .${axisClasses.line}`]: { + [`.${axisClasses.line}`]: { stroke: (theme.vars || theme).palette.text.primary, shapeRendering: 'crispEdges', strokeWidth: 1, }, - [`& .${axisClasses.tick}`]: { + [`.${axisClasses.tick}`]: { stroke: (theme.vars || theme).palette.text.primary, shapeRendering: 'crispEdges', }, diff --git a/packages/x-charts/src/themeAugmentation/components.d.ts b/packages/x-charts/src/themeAugmentation/components.d.ts index f08071da49ac..fbb03f04b14a 100644 --- a/packages/x-charts/src/themeAugmentation/components.d.ts +++ b/packages/x-charts/src/themeAugmentation/components.d.ts @@ -2,7 +2,6 @@ import { ComponentsProps, ComponentsOverrides } from '@mui/material/styles'; export interface ChartsComponents { MuiChartsAxis?: { - defaultProps?: ComponentsProps['MuiChartsAxis']; styleOverrides?: ComponentsOverrides['MuiChartsAxis']; }; MuiChartsXAxis?: { @@ -12,12 +11,8 @@ export interface ChartsComponents { defaultProps?: ComponentsProps['MuiChartsYAxis']; }; MuiChartsAxisHighlight?: { - defaultProps?: ComponentsProps['MuiChartsAxisHighlight']; styleOverrides?: ComponentsOverrides['MuiChartsAxisHighlight']; }; - MuiChartsClipPath?: { - defaultProps?: ComponentsProps['MuiChartsClipPath']; - }; MuiChartsGrid?: { defaultProps?: ComponentsProps['MuiChartsGrid']; styleOverrides?: ComponentsOverrides['MuiChartsGrid']; @@ -32,12 +27,12 @@ export interface ChartsComponents { }; MuiChartsSurface?: { defaultProps?: ComponentsProps['MuiChartsSurface']; + styleOverrides?: ComponentsOverrides['MuiChartsSurface']; }; MuiBarChart?: { defaultProps?: ComponentsProps['MuiBarChart']; }; MuiBarElement?: { - defaultProps?: ComponentsProps['MuiBarElement']; styleOverrides?: ComponentsOverrides['MuiBarElement']; }; MuiBarLabel?: { @@ -48,23 +43,18 @@ export interface ChartsComponents { defaultProps?: ComponentsProps['MuiLineChart']; }; MuiAreaElement?: { - defaultProps?: ComponentsProps['MuiAreaElement']; styleOverrides?: ComponentsOverrides['MuiAreaElement']; }; MuiLineElement?: { - defaultProps?: ComponentsProps['MuiLineElement']; styleOverrides?: ComponentsOverrides['MuiLineElement']; }; MuiMarkElement?: { - defaultProps?: ComponentsProps['MuiMarkElement']; styleOverrides?: ComponentsOverrides['MuiMarkElement']; }; MuiScatterChart?: { defaultProps?: ComponentsProps['MuiScatterChart']; }; - MuiScatter?: { - defaultProps?: ComponentsProps['MuiScatter']; - }; + MuiScatter?: {}; } declare module '@mui/material/styles' { diff --git a/packages/x-charts/src/themeAugmentation/overrides.d.ts b/packages/x-charts/src/themeAugmentation/overrides.d.ts index c2699e9f67d0..24f6ce49c23f 100644 --- a/packages/x-charts/src/themeAugmentation/overrides.d.ts +++ b/packages/x-charts/src/themeAugmentation/overrides.d.ts @@ -1,35 +1,34 @@ import { BarLabelClassKey } from '../BarChart'; import { BarElementClassKey } from '../BarChart/BarElement'; -import { ChartsAxisClassKey } from '../ChartsAxis'; import { ChartsAxisHighlightClassKey } from '../ChartsAxisHighlight'; import { ChartsGridClassKey } from '../ChartsGrid'; import { ChartsLegendClassKey } from '../ChartsLegend'; + import { ChartsTooltipClassKey } from '../ChartsTooltip'; import { AreaElementClassKey, LineElementClassKey, MarkElementClassKey } from '../LineChart'; -// prettier-ignore -export interface PickersComponentNameToClassKey { - MuiChartsAxis: ChartsAxisClassKey; +export interface ChartsComponentNameToClassKey { + MuiChartsAxis: 'root'; // Only the root component of axes is styled MuiChartsAxisHighlight: ChartsAxisHighlightClassKey; MuiChartsGrid: ChartsGridClassKey; MuiChartsLegend: ChartsLegendClassKey; MuiChartsTooltip: ChartsTooltipClassKey; + MuiChartsSurface: 'root'; // BarChart components MuiBarElement: BarElementClassKey; MuiBarLabel: BarLabelClassKey; // LineChart components - MuiAreaElement: AreaElementClassKey; MuiLineElement: LineElementClassKey; MuiMarkElement: MarkElementClassKey; + // ScatterChart components - } declare module '@mui/material/styles' { - interface ComponentNameToClassKey extends PickersComponentNameToClassKey {} + interface ComponentNameToClassKey extends ChartsComponentNameToClassKey {} } // disable automatic export diff --git a/packages/x-charts/src/themeAugmentation/props.d.ts b/packages/x-charts/src/themeAugmentation/props.d.ts index 7dc62f397400..0fe35a41d87d 100644 --- a/packages/x-charts/src/themeAugmentation/props.d.ts +++ b/packages/x-charts/src/themeAugmentation/props.d.ts @@ -1,26 +1,18 @@ import { BarLabelProps } from '../BarChart/BarLabel'; import { BarChartProps } from '../BarChart/BarChart'; -import { BarElementProps } from '../BarChart/BarElement'; -import { ChartsAxisProps } from '../ChartsAxis'; -import { ChartsAxisHighlightProps } from '../ChartsAxisHighlight'; -import { ChartsClipPathProps } from '../ChartsClipPath'; import { ChartsGridProps } from '../ChartsGrid'; import { ChartsLegendProps } from '../ChartsLegend'; import { ChartsSurfaceProps } from '../ChartsSurface'; import { ChartsTooltipProps } from '../ChartsTooltip'; -import { AreaElementProps, LineElementProps, MarkElementProps } from '../LineChart'; import { LineChartProps } from '../LineChart/LineChart'; -import { ScatterProps } from '../ScatterChart/Scatter'; import { ScatterChartProps } from '../ScatterChart/ScatterChart'; +import { PieChartProps } from '../PieChart/PieChart'; import { ChartsXAxisProps, ChartsYAxisProps } from '../models/axis'; import { ChartSeriesType } from '../models/seriesType/config'; export interface ChartsComponentsPropsList { - MuiChartsAxis: ChartsAxisProps; MuiChartsXAxis: ChartsXAxisProps; MuiChartsYAxis: ChartsYAxisProps; - MuiChartsAxisHighlight: ChartsAxisHighlightProps; - MuiChartsClipPath: ChartsClipPathProps; MuiChartsGrid: ChartsGridProps; MuiChartsLegend: ChartsLegendProps; MuiChartsTooltip: ChartsTooltipProps; @@ -28,16 +20,13 @@ export interface ChartsComponentsPropsList { // BarChart components MuiBarChart: BarChartProps; - MuiBarElement: BarElementProps; MuiBarLabel: BarLabelProps; // LineChart components MuiLineChart: LineChartProps; - MuiAreaElement: AreaElementProps; - MuiLineElement: LineElementProps; - MuiMarkElement: MarkElementProps; // ScatterChart components MuiScatterChart: ScatterChartProps; - MuiScatter: ScatterProps; + // PieChart components + MuiPieChart: PieChartProps; } declare module '@mui/material/styles' { diff --git a/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts b/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts index 695a934ee6ed..1c71789139c7 100644 --- a/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts +++ b/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts @@ -3,15 +3,10 @@ import { createTheme } from '@mui/material/styles'; createTheme({ components: { MuiChartsAxis: { - defaultProps: { - leftAxis: 'test', - // @ts-expect-error invalid MuiChartsAxis prop - someRandomProp: true, - }, styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiChartsAxis class key - constent: { color: 'red' }, + line: { color: 'red' }, }, }, MuiChartsXAxis: { @@ -29,29 +24,12 @@ createTheme({ }, }, MuiChartsAxisHighlight: { - defaultProps: { - x: 'line', - // @ts-expect-error invalid MuiChartsAxisHighlight prop - someRandomProp: true, - }, styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiChartsAxisHighlight class key constent: { color: 'red' }, }, }, - MuiChartsClipPath: { - defaultProps: { - id: 'test', - // @ts-expect-error invalid MuiChartsClipPath prop - someRandomProp: true, - }, - // styleOverrides: { - // root: { backgroundColor: 'red' }, - // // @ts-expect-error invalid MuiChartsClipPath class key - // constent: { color: 'red' }, - // }, - }, MuiChartsLegend: { defaultProps: { direction: 'row', @@ -82,11 +60,11 @@ createTheme({ // @ts-expect-error invalid MuiChartsSurface prop someRandomProp: true, }, - // styleOverrides: { - // root: { backgroundColor: 'red' }, - // // @ts-expect-error invalid MuiChartsSurface class key - // constent: { color: 'red' }, - // }, + styleOverrides: { + root: { backgroundColor: 'red' }, + // @ts-expect-error invalid MuiChartsSurface class key + constent: { color: 'red' }, + }, }, // BarChart components @@ -103,11 +81,6 @@ createTheme({ // }, }, MuiBarElement: { - defaultProps: { - id: 'toto', - // @ts-expect-error invalid MuiBarElement prop - someRandomProp: true, - }, styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiBarElement class key @@ -128,11 +101,6 @@ createTheme({ // }, }, MuiAreaElement: { - defaultProps: { - id: 'toto', - // @ts-expect-error invalid MuiAreaElement prop - someRandomProp: true, - }, styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiAreaElement class key @@ -140,11 +108,6 @@ createTheme({ }, }, MuiLineElement: { - defaultProps: { - id: 'toto', - // @ts-expect-error invalid MuiLineElement prop - someRandomProp: true, - }, styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiLineElement class key @@ -152,11 +115,6 @@ createTheme({ }, }, MuiMarkElement: { - defaultProps: { - id: 'toto', - // @ts-expect-error invalid MuiMarkElement prop - someRandomProp: true, - }, styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiMarkElement class key @@ -176,17 +134,5 @@ createTheme({ // constent: { color: 'red' }, // }, }, - MuiScatter: { - defaultProps: { - markerSize: 10, - // @ts-expect-error invalid MuiScatter prop - someRandomProp: true, - }, - // styleOverrides: { - // root: { backgroundColor: 'red' }, - // // @ts-expect-error invalid MuiScatter class key - // constent: { color: 'red' }, - // }, - }, }, }); From 8e82705a5615a85c60be0de308386e20e1c91875 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 27 Aug 2024 15:25:27 +0200 Subject: [PATCH 853/912] [docs] Update deprecated props in docs (#14295) Signed-off-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/charts/bars/BarAnimation.js | 4 ++-- docs/data/charts/bars/BarAnimation.tsx | 4 ++-- docs/data/charts/bars/BarClickNoSnap.js | 6 +++--- docs/data/charts/lines/LineClickNoSnap.js | 6 +++--- docs/data/charts/pie/PieActiveArc.js | 2 +- docs/data/charts/pie/PieActiveArc.tsx | 2 +- docs/data/charts/pie/PieActiveArc.tsx.preview | 2 +- docs/data/charts/scatter/ScatterClickNoSnap.js | 4 ++-- docs/data/charts/tooltip/ElementHighlights.js | 4 ++-- docs/data/charts/tooltip/ElementHighlights.tsx | 4 ++-- docs/data/charts/tooltip/SyncHighlight.js | 4 ++-- docs/data/charts/tooltip/SyncHighlight.tsx | 4 ++-- 12 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/data/charts/bars/BarAnimation.js b/docs/data/charts/bars/BarAnimation.js index fc02054c2216..57230a2ea212 100644 --- a/docs/data/charts/bars/BarAnimation.js +++ b/docs/data/charts/bars/BarAnimation.js @@ -68,8 +68,8 @@ export default function BarAnimation() { } const highlightScope = { - highlighted: 'series', - faded: 'global', + highlight: 'series', + fade: 'global', }; const series = [ diff --git a/docs/data/charts/bars/BarAnimation.tsx b/docs/data/charts/bars/BarAnimation.tsx index 882a33e02afc..9bdd402a65e7 100644 --- a/docs/data/charts/bars/BarAnimation.tsx +++ b/docs/data/charts/bars/BarAnimation.tsx @@ -68,8 +68,8 @@ export default function BarAnimation() { } const highlightScope = { - highlighted: 'series', - faded: 'global', + highlight: 'series', + fade: 'global', } as const; const series = [ diff --git a/docs/data/charts/bars/BarClickNoSnap.js b/docs/data/charts/bars/BarClickNoSnap.js index 779097099389..8f5dc6ad8bf5 100644 --- a/docs/data/charts/bars/BarClickNoSnap.js +++ b/docs/data/charts/bars/BarClickNoSnap.js @@ -17,7 +17,7 @@ const barChartsParams = { label: 'A', stack: 'total', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, { @@ -26,7 +26,7 @@ const barChartsParams = { label: 'B', stack: 'total', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, { @@ -34,7 +34,7 @@ const barChartsParams = { data: [4, 2, 5, 4, 1], label: 'C', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, ], diff --git a/docs/data/charts/lines/LineClickNoSnap.js b/docs/data/charts/lines/LineClickNoSnap.js index 7cb6be04697b..8038b4ffc1f1 100644 --- a/docs/data/charts/lines/LineClickNoSnap.js +++ b/docs/data/charts/lines/LineClickNoSnap.js @@ -18,7 +18,7 @@ const lineChartsParams = { area: true, stack: 'total', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, { @@ -28,7 +28,7 @@ const lineChartsParams = { area: true, stack: 'total', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, { @@ -38,7 +38,7 @@ const lineChartsParams = { area: true, stack: 'total', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, ], diff --git a/docs/data/charts/pie/PieActiveArc.js b/docs/data/charts/pie/PieActiveArc.js index 4c967f452fc0..df49ae3bd67f 100644 --- a/docs/data/charts/pie/PieActiveArc.js +++ b/docs/data/charts/pie/PieActiveArc.js @@ -13,7 +13,7 @@ export default function PieActiveArc() { series={[ { data, - highlightScope: { faded: 'global', highlighted: 'item' }, + highlightScope: { fade: 'global', highlight: 'item' }, faded: { innerRadius: 30, additionalRadius: -30, color: 'gray' }, }, ]} diff --git a/docs/data/charts/pie/PieActiveArc.tsx b/docs/data/charts/pie/PieActiveArc.tsx index 4c967f452fc0..df49ae3bd67f 100644 --- a/docs/data/charts/pie/PieActiveArc.tsx +++ b/docs/data/charts/pie/PieActiveArc.tsx @@ -13,7 +13,7 @@ export default function PieActiveArc() { series={[ { data, - highlightScope: { faded: 'global', highlighted: 'item' }, + highlightScope: { fade: 'global', highlight: 'item' }, faded: { innerRadius: 30, additionalRadius: -30, color: 'gray' }, }, ]} diff --git a/docs/data/charts/pie/PieActiveArc.tsx.preview b/docs/data/charts/pie/PieActiveArc.tsx.preview index 23a3a41ec838..ef820474ebef 100644 --- a/docs/data/charts/pie/PieActiveArc.tsx.preview +++ b/docs/data/charts/pie/PieActiveArc.tsx.preview @@ -2,7 +2,7 @@ series={[ { data, - highlightScope: { faded: 'global', highlighted: 'item' }, + highlightScope: { fade: 'global', highlight: 'item' }, faded: { innerRadius: 30, additionalRadius: -30, color: 'gray' }, }, ]} diff --git a/docs/data/charts/scatter/ScatterClickNoSnap.js b/docs/data/charts/scatter/ScatterClickNoSnap.js index 546306d7c508..a4ccaee0a4e4 100644 --- a/docs/data/charts/scatter/ScatterClickNoSnap.js +++ b/docs/data/charts/scatter/ScatterClickNoSnap.js @@ -27,7 +27,7 @@ const scatterChartsParams = { ], label: 'A', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, { @@ -46,7 +46,7 @@ const scatterChartsParams = { ], label: 'B', highlightScope: { - highlighted: 'item', + highlight: 'item', }, }, ], diff --git a/docs/data/charts/tooltip/ElementHighlights.js b/docs/data/charts/tooltip/ElementHighlights.js index e0430b791871..cb1494936f79 100644 --- a/docs/data/charts/tooltip/ElementHighlights.js +++ b/docs/data/charts/tooltip/ElementHighlights.js @@ -73,13 +73,13 @@ const pieChartsParams = { data: [{ value: 5 }, { value: 10 }, { value: 15 }], label: 'Series 1', outerRadius: 80, - highlighted: { additionalRadius: 10 }, + highlight: { additionalRadius: 10 }, }, { data: [{ value: 5 }, { value: 10 }, { value: 15 }], label: 'Series 1', innerRadius: 90, - highlighted: { additionalRadius: 10 }, + highlight: { additionalRadius: 10 }, }, ], height: 400, diff --git a/docs/data/charts/tooltip/ElementHighlights.tsx b/docs/data/charts/tooltip/ElementHighlights.tsx index 1f4f758750d0..5b7f3b760cab 100644 --- a/docs/data/charts/tooltip/ElementHighlights.tsx +++ b/docs/data/charts/tooltip/ElementHighlights.tsx @@ -73,13 +73,13 @@ const pieChartsParams = { data: [{ value: 5 }, { value: 10 }, { value: 15 }], label: 'Series 1', outerRadius: 80, - highlighted: { additionalRadius: 10 }, + highlight: { additionalRadius: 10 }, }, { data: [{ value: 5 }, { value: 10 }, { value: 15 }], label: 'Series 1', innerRadius: 90, - highlighted: { additionalRadius: 10 }, + highlight: { additionalRadius: 10 }, }, ], height: 400, diff --git a/docs/data/charts/tooltip/SyncHighlight.js b/docs/data/charts/tooltip/SyncHighlight.js index 5e80c02859ba..b6275d7b6c13 100644 --- a/docs/data/charts/tooltip/SyncHighlight.js +++ b/docs/data/charts/tooltip/SyncHighlight.js @@ -32,7 +32,7 @@ const barChartsProps = { { data: [3, 4, 1, 6, 5], id: 'sync', - highlightScope: { highlighted: 'item', faded: 'global' }, + highlightScope: { highlight: 'item', fade: 'global' }, }, ], xAxis: [{ scaleType: 'band', data: ['A', 'B', 'C', 'D', 'E'] }], @@ -55,7 +55,7 @@ const pieChartProps = { { value: 6, label: 'D', id: 'D' }, { value: 5, label: 'E', id: 'E' }, ], - highlightScope: { highlighted: 'item', faded: 'global' }, + highlightScope: { highlight: 'item', fade: 'global' }, }, ], height: 400, diff --git a/docs/data/charts/tooltip/SyncHighlight.tsx b/docs/data/charts/tooltip/SyncHighlight.tsx index 9575512dcd47..1da00da5021c 100644 --- a/docs/data/charts/tooltip/SyncHighlight.tsx +++ b/docs/data/charts/tooltip/SyncHighlight.tsx @@ -33,7 +33,7 @@ const barChartsProps: BarChartProps = { { data: [3, 4, 1, 6, 5], id: 'sync', - highlightScope: { highlighted: 'item', faded: 'global' }, + highlightScope: { highlight: 'item', fade: 'global' }, }, ], xAxis: [{ scaleType: 'band', data: ['A', 'B', 'C', 'D', 'E'] }], @@ -56,7 +56,7 @@ const pieChartProps: PieChartProps = { { value: 6, label: 'D', id: 'D' }, { value: 5, label: 'E', id: 'E' }, ], - highlightScope: { highlighted: 'item', faded: 'global' }, + highlightScope: { highlight: 'item', fade: 'global' }, }, ], height: 400, From 97afd65d2338b42982923771dc647e20e4d6676a Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Wed, 28 Aug 2024 12:52:13 +0200 Subject: [PATCH 854/912] [charts] Fix `LineChart` transition stopping before completion (#14366) --- .../x-charts/src/LineChart/MarkElement.tsx | 2 +- .../x-charts/src/internals/useAnimatedPath.ts | 45 ++++++++++++------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/packages/x-charts/src/LineChart/MarkElement.tsx b/packages/x-charts/src/LineChart/MarkElement.tsx index 137f44f252b7..b86ef162168d 100644 --- a/packages/x-charts/src/LineChart/MarkElement.tsx +++ b/packages/x-charts/src/LineChart/MarkElement.tsx @@ -107,7 +107,7 @@ function MarkElement(props: MarkElementProps) { }); const { axis } = React.useContext(InteractionContext); - const position = useSpring({ x, y, immediate: skipAnimation }); + const position = useSpring({ to: { x, y }, immediate: skipAnimation }); const ownerState = { id, classes: innerClasses, diff --git a/packages/x-charts/src/internals/useAnimatedPath.ts b/packages/x-charts/src/internals/useAnimatedPath.ts index 9f29447fe138..03b0470b0db0 100644 --- a/packages/x-charts/src/internals/useAnimatedPath.ts +++ b/packages/x-charts/src/internals/useAnimatedPath.ts @@ -1,29 +1,42 @@ import * as React from 'react'; import { interpolateString } from '@mui/x-charts-vendor/d3-interpolate'; -import { useSpring, to } from '@react-spring/web'; +import { useSpring } from '@react-spring/web'; function usePrevious(value: T) { - const ref = React.useRef(null); - React.useEffect(() => { - ref.current = value; - }, [value]); + const ref = React.useRef<{ currentPath: T; previousPath?: T }>({ + currentPath: value, + previousPath: undefined, + }); + if (ref.current.currentPath !== value) { + ref.current = { + currentPath: value, + previousPath: ref.current.currentPath, + }; + } + return ref.current; } -// Taken from Nivo export const useAnimatedPath = (path: string, skipAnimation?: boolean) => { - const previousPath = usePrevious(path); + const memoryRef = usePrevious(path); + const interpolator = React.useMemo( - () => (previousPath ? interpolateString(previousPath, path) : () => path), - [previousPath, path], + () => + memoryRef.previousPath + ? interpolateString(memoryRef.previousPath, memoryRef.currentPath) + : () => memoryRef.currentPath, + [memoryRef.currentPath, memoryRef.previousPath], ); - const { value } = useSpring({ - from: { value: 0 }, - to: { value: 1 }, - reset: true, - immediate: skipAnimation, - }); + const [{ value }] = useSpring( + { + from: { value: 0 }, + to: { value: 1 }, + reset: true, + immediate: skipAnimation, + }, + [memoryRef.currentPath], + ); - return to([value], interpolator); + return value.to(interpolator); }; From 113a61207d8afa836bce60a3a2c002d38cec0e9c Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Wed, 28 Aug 2024 23:47:03 +0200 Subject: [PATCH 855/912] [infra] Fix Issue cleanup action A follow-up on https://github.com/mui/mui-x/pull/13957#discussion_r1718833226 --- scripts/githubActions/orderIdValidation.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/githubActions/orderIdValidation.js b/scripts/githubActions/orderIdValidation.js index 1acc23cc1d00..c98fea6e9722 100644 --- a/scripts/githubActions/orderIdValidation.js +++ b/scripts/githubActions/orderIdValidation.js @@ -22,11 +22,15 @@ module.exports = async ({ core, context, github }) => { } else { const order = await fetch(`${orderApi}${orderId}`, { headers: { - Authorization: orderApiToken, + Authorization: `Basic ${orderApiToken}`, 'User-Agent': 'MUI-Tools-Private/X-Orders-Inspector v1', }, }); + if (!order.ok) { + core.info(`Request to ${orderApi} failed. Response status code: ${order.status}.`); + } + const orderDetails = await order.json(); core.debug(`>>> Order Items: ${orderDetails.line_items?.join(',')}`); From 1a23942b90f1b46fafc82c8db78c873d9f4bbae1 Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Thu, 29 Aug 2024 10:11:56 +0200 Subject: [PATCH 856/912] [charts] Keep axis root classe usage explicit (#14378) --- .../src/internals/components/AxisSharedComponents.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/x-charts/src/internals/components/AxisSharedComponents.tsx b/packages/x-charts/src/internals/components/AxisSharedComponents.tsx index 5fb7076d5455..ba6078ebe23b 100644 --- a/packages/x-charts/src/internals/components/AxisSharedComponents.tsx +++ b/packages/x-charts/src/internals/components/AxisSharedComponents.tsx @@ -6,21 +6,21 @@ export const AxisRoot = styled('g', { slot: 'Root', overridesResolver: (props, styles) => styles.root, })(({ theme }) => ({ - [`.${axisClasses.tickLabel}`]: { + [`& .${axisClasses.tickLabel}`]: { ...theme.typography.caption, fill: (theme.vars || theme).palette.text.primary, }, - [`.${axisClasses.label}`]: { + [`& .${axisClasses.label}`]: { ...theme.typography.body1, fill: (theme.vars || theme).palette.text.primary, }, - [`.${axisClasses.line}`]: { + [`& .${axisClasses.line}`]: { stroke: (theme.vars || theme).palette.text.primary, shapeRendering: 'crispEdges', strokeWidth: 1, }, - [`.${axisClasses.tick}`]: { + [`& .${axisClasses.tick}`]: { stroke: (theme.vars || theme).palette.text.primary, shapeRendering: 'crispEdges', }, From a8794b65f7dfcc862aa93fcf8f1529506444da6f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:31:43 +0300 Subject: [PATCH 857/912] Bump @mui/monorepo digest to 029eb3b (#14316) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- docs/.link-check-errors.txt | 3 --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/.link-check-errors.txt b/docs/.link-check-errors.txt index cbb0918c2363..6ecc503cc78a 100644 --- a/docs/.link-check-errors.txt +++ b/docs/.link-check-errors.txt @@ -1,5 +1,2 @@ Broken links found by `docs:link-check` that exist: -- https://mui.com/material-ui/customization/theme-components/#creating-new-component-variants -- https://mui.com/material-ui/customization/theme-components/#overrides-based-on-props -- https://mui.com/material-ui/react-grid2/#whats-changed diff --git a/package.json b/package.json index 802da58f6c93..db70f91832aa 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@mui/internal-markdown": "^1.0.11", "@mui/internal-test-utils": "^1.0.10", "@mui/material": "^5.16.7", - "@mui/monorepo": "github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa", + "@mui/monorepo": "github:mui/material-ui#029eb3b1f4837591e729779da9a82f0a66187770", "@mui/utils": "^5.16.6", "@next/eslint-plugin-next": "14.2.6", "@octokit/plugin-retry": "^7.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91a7006a09dc..3150f4133589 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': - specifier: github:mui/material-ui#55bea65c83c1beac77382fe961f8aa72eec21daa - version: https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13) + specifier: github:mui/material-ui#029eb3b1f4837591e729779da9a82f0a66187770 + version: https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770(encoding@0.1.13) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -3168,9 +3168,9 @@ packages: '@types/react': optional: true - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa': - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa} - version: 6.0.0-rc.0 + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770': + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770} + version: 6.0.0 engines: {pnpm: 9.7.1} '@mui/private-theming@5.16.6': @@ -11985,7 +11985,7 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/react': 18.3.4 - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/55bea65c83c1beac77382fe961f8aa72eec21daa(encoding@0.1.13)': + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770(encoding@0.1.13)': dependencies: '@googleapis/sheets': 9.3.0(encoding@0.1.13) '@netlify/functions': 2.8.1 From bba14d0445743768568ca501e6579723283e9eb1 Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Thu, 29 Aug 2024 11:57:38 +0300 Subject: [PATCH 858/912] [core] Use `useRtl` instead of `useTheme` to access direction (#14359) --- .../ChartsLegend/ContinuousColorLegend.tsx | 6 +-- .../src/ChartsLegend/LegendPerItem.tsx | 9 ++-- .../x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 5 +- packages/x-charts/src/PieChart/PieChart.tsx | 8 +-- packages/x-charts/src/internals/useIsRTL.ts | 6 --- .../components/GridColumnMenuPinningItem.tsx | 6 +-- .../columnReorder/useGridColumnReorder.tsx | 14 ++--- .../src/components/cell/GridActionsCell.tsx | 6 +-- .../src/hooks/core/gridCoreSelector.ts | 2 +- .../src/hooks/core/useGridInitialization.ts | 4 +- .../src/hooks/core/useGridIsRtl.tsx | 20 ++++++++ .../src/hooks/core/useGridTheme.tsx | 20 -------- .../columnHeaders/useGridColumnHeaders.tsx | 7 +-- .../columnResize/useGridColumnResize.tsx | 10 ++-- .../features/columns/gridColumnsSelector.ts | 12 ++--- .../useGridKeyboardNavigation.ts | 51 ++++++++----------- .../hooks/features/scroll/useGridScroll.ts | 8 +-- .../virtualization/useGridVirtualScroller.tsx | 26 +++++----- .../src/models/gridStateCommunity.ts | 3 +- 19 files changed, 101 insertions(+), 122 deletions(-) delete mode 100644 packages/x-charts/src/internals/useIsRTL.ts create mode 100644 packages/x-data-grid/src/hooks/core/useGridIsRtl.tsx delete mode 100644 packages/x-data-grid/src/hooks/core/useGridTheme.tsx diff --git a/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx b/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx index d331e317f945..00880553da64 100644 --- a/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/ContinuousColorLegend.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { ScaleSequential } from '@mui/x-charts-vendor/d3-scale'; import { useTheme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import ChartsContinuousGradient from '../internals/components/ChartsAxesGradients/ChartsContinuousGradient'; import { AxisDefaultized, ContinuousScaleName } from '../models/axis'; import { useChartId, useDrawingArea } from '../hooks'; @@ -205,6 +206,7 @@ const defaultLabelFormatter: LabelFormatter = ({ formattedValue }) => formattedV function ContinuousColorLegend(props: ContinuousColorLegendProps) { const theme = useTheme(); + const isRtl = useRtl(); const { id: idProp, minLabel = defaultLabelFormatter, @@ -224,8 +226,6 @@ function ContinuousColorLegend(props: ContinuousColorLegendProps) { const chartId = useChartId(); const id = idProp ?? `gradient-legend-${chartId}`; - const isRTL = theme.direction === 'rtl'; - const axisItem = useAxis({ axisDirection, axisId }); const { width, height, left, right, top, bottom } = useDrawingArea(); @@ -277,7 +277,7 @@ function ContinuousColorLegend(props: ContinuousColorLegendProps) { // Place bar and texts const barBox = - direction === 'column' || (isRTL && direction === 'row') + direction === 'column' || (isRtl && direction === 'row') ? { width: thickness, height: size } : { width: size, height: thickness }; diff --git a/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx b/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx index dd61aeb4e9f8..da5ef97569b5 100644 --- a/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx +++ b/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import NoSsr from '@mui/material/NoSsr'; import { useTheme, styled } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { DrawingArea } from '../context/DrawingProvider'; import { DefaultizedProps } from '../models/helpers'; import { ChartsText, ChartsTextStyle } from '../ChartsText'; @@ -111,7 +112,7 @@ export function LegendPerItem(props: LegendPerItemProps) { labelStyle: inLabelStyle, } = props; const theme = useTheme(); - const isRTL = theme.direction === 'rtl'; + const isRtl = useRtl(); const drawingArea = useDrawingArea(); const labelStyle = React.useMemo( @@ -200,11 +201,11 @@ export function LegendPerItem(props: LegendPerItemProps) { diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index 281ce8d1b3d2..a26a6b4f67d8 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { useCartesianContext } from '../context/CartesianProvider'; import { useTicks } from '../hooks/useTicks'; import { useDrawingArea } from '../hooks/useDrawingArea'; @@ -77,7 +78,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { } = defaultizedProps; const theme = useTheme(); - const isRTL = theme.direction === 'rtl'; + const isRtl = useRtl(); const classes = useUtilityClasses({ ...defaultizedProps, theme }); @@ -106,7 +107,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { const TickLabel = slots?.axisTickLabel ?? ChartsText; const Label = slots?.axisLabel ?? ChartsText; - const revertAnchor = (!isRTL && position === 'right') || (isRTL && position !== 'right'); + const revertAnchor = (!isRtl && position === 'right') || (isRtl && position !== 'right'); const axisTickLabelProps = useSlotProps({ elementType: TickLabel, externalSlotProps: slotProps?.axisTickLabel, diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index dca99305017f..51fe9e0d87a3 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import PropTypes from 'prop-types'; +import { useRtl } from '@mui/system/RtlProvider'; import { useThemeProps } from '@mui/material/styles'; import { ResponsiveChartContainer, @@ -30,7 +31,6 @@ import { ChartsXAxisProps, ChartsYAxisProps, } from '../models/axis'; -import { useIsRTL } from '../internals/useIsRTL'; import { ChartsOverlay, ChartsOverlayProps, @@ -153,12 +153,12 @@ const PieChart = React.forwardRef(function PieChart(inProps: PieChartProps, ref) className, ...other } = props; - const isRTL = useIsRTL(); + const isRtl = useRtl(); - const margin = { ...(isRTL ? defaultRTLMargin : defaultMargin), ...marginProps }; + const margin = { ...(isRtl ? defaultRTLMargin : defaultMargin), ...marginProps }; const legend: ChartsLegendProps = { direction: 'column', - position: { vertical: 'middle', horizontal: isRTL ? 'left' : 'right' }, + position: { vertical: 'middle', horizontal: isRtl ? 'left' : 'right' }, ...legendProps, }; diff --git a/packages/x-charts/src/internals/useIsRTL.ts b/packages/x-charts/src/internals/useIsRTL.ts deleted file mode 100644 index 21e7f0fe692d..000000000000 --- a/packages/x-charts/src/internals/useIsRTL.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { useTheme } from '@mui/material/styles'; - -export const useIsRTL = () => { - const theme = useTheme(); - return theme.direction === 'rtl'; -}; diff --git a/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx b/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx index 743fcb3fc341..0a07624dc306 100644 --- a/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx +++ b/packages/x-data-grid-pro/src/components/GridColumnMenuPinningItem.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useTheme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import PropTypes from 'prop-types'; import MenuItem from '@mui/material/MenuItem'; import ListItemIcon from '@mui/material/ListItemIcon'; @@ -12,7 +12,7 @@ function GridColumnMenuPinningItem(props: GridColumnMenuItemProps) { const { colDef, onClick } = props; const apiRef = useGridApiContext(); const rootProps = useGridRootProps(); - const theme = useTheme(); + const isRtl = useRtl(); const pinColumn = React.useCallback( (side: GridPinnedColumnPosition) => (event: React.MouseEvent) => { @@ -76,7 +76,7 @@ function GridColumnMenuPinningItem(props: GridColumnMenuItemProps) { ); } - if (theme.direction === 'rtl') { + if (isRtl) { return ( {pinToRightMenuItem} diff --git a/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx b/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx index e882e42ea10a..9f47e47ab497 100644 --- a/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx +++ b/packages/x-data-grid-pro/src/hooks/features/columnReorder/useGridColumnReorder.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import composeClasses from '@mui/utils/composeClasses'; -import { useTheme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { CursorCoordinates, useGridApiEventHandler, @@ -75,7 +75,7 @@ export const useGridColumnReorder = ( const removeDnDStylesTimeout = React.useRef>(); const ownerState = { classes: props.classes }; const classes = useUtilityClasses(ownerState); - const theme = useTheme(); + const isRtl = useRtl(); React.useEffect(() => { return () => { @@ -219,14 +219,10 @@ export const useGridColumnReorder = ( const cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates); const hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && - (theme.direction === 'rtl' - ? dragColIndex < targetColIndex - : targetColIndex < dragColIndex); + (isRtl ? dragColIndex < targetColIndex : targetColIndex < dragColIndex); const hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && - (theme.direction === 'rtl' - ? targetColIndex < dragColIndex - : dragColIndex < targetColIndex); + (isRtl ? targetColIndex < dragColIndex : dragColIndex < targetColIndex); if (hasMovedLeft || hasMovedRight) { let canBeReordered: boolean; @@ -298,7 +294,7 @@ export const useGridColumnReorder = ( cursorPosition.current = coordinates; } }, - [apiRef, logger, theme.direction], + [apiRef, logger, isRtl], ); const handleDragEnd = React.useCallback>( diff --git a/packages/x-data-grid/src/components/cell/GridActionsCell.tsx b/packages/x-data-grid/src/components/cell/GridActionsCell.tsx index 2abc7adc0e45..39c20b5c639e 100644 --- a/packages/x-data-grid/src/components/cell/GridActionsCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridActionsCell.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import MenuList from '@mui/material/MenuList'; -import { useTheme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { unstable_useId as useId } from '@mui/utils'; import { GridRenderCellParams } from '../../models/params/gridCellParams'; import { gridClasses } from '../../constants/gridClasses'; @@ -47,7 +47,7 @@ function GridActionsCell(props: GridActionsCellProps) { const buttonRef = React.useRef(null); const ignoreCallToFocus = React.useRef(false); const touchRippleRefs = React.useRef>({}); - const theme = useTheme(); + const isRtl = useRtl(); const menuId = useId(); const buttonId = useId(); const rootProps = useGridRootProps(); @@ -149,7 +149,7 @@ function GridActionsCell(props: GridActionsCellProps) { } // for rtl mode we need to reverse the direction - const rtlMod = theme.direction === 'rtl' ? -1 : 1; + const rtlMod = isRtl ? -1 : 1; const indexMod = (direction === 'left' ? -1 : 1) * rtlMod; // if the button that should receive focus is disabled go one more step diff --git a/packages/x-data-grid/src/hooks/core/gridCoreSelector.ts b/packages/x-data-grid/src/hooks/core/gridCoreSelector.ts index b48fbbb0d2a0..3ec68fdafab0 100644 --- a/packages/x-data-grid/src/hooks/core/gridCoreSelector.ts +++ b/packages/x-data-grid/src/hooks/core/gridCoreSelector.ts @@ -4,4 +4,4 @@ import { GridStateCommunity } from '../../models/gridStateCommunity'; * Get the theme state * @category Core */ -export const gridThemeSelector = (state: GridStateCommunity) => state.theme; +export const gridIsRtlSelector = (state: GridStateCommunity) => state.isRtl; diff --git a/packages/x-data-grid/src/hooks/core/useGridInitialization.ts b/packages/x-data-grid/src/hooks/core/useGridInitialization.ts index 104363f8ba80..d59852b43a54 100644 --- a/packages/x-data-grid/src/hooks/core/useGridInitialization.ts +++ b/packages/x-data-grid/src/hooks/core/useGridInitialization.ts @@ -2,7 +2,7 @@ import * as React from 'react'; import type { GridApiCommon, GridPrivateApiCommon } from '../../models/api/gridApiCommon'; import { DataGridProcessedProps } from '../../models/props/DataGridProps'; import { useGridRefs } from './useGridRefs'; -import { useGridTheme } from './useGridTheme'; +import { useGridIsRtl } from './useGridIsRtl'; import { useGridLoggerFactory } from './useGridLoggerFactory'; import { useGridApiInitialization } from './useGridApiInitialization'; import { useGridLocaleText } from './useGridLocaleText'; @@ -23,7 +23,7 @@ export const useGridInitialization = < const privateApiRef = useGridApiInitialization(inputApiRef, props); useGridRefs(privateApiRef); - useGridTheme(privateApiRef); + useGridIsRtl(privateApiRef); useGridLoggerFactory(privateApiRef, props); useGridStateInitialization(privateApiRef); useGridPipeProcessing(privateApiRef); diff --git a/packages/x-data-grid/src/hooks/core/useGridIsRtl.tsx b/packages/x-data-grid/src/hooks/core/useGridIsRtl.tsx new file mode 100644 index 000000000000..576952df12ca --- /dev/null +++ b/packages/x-data-grid/src/hooks/core/useGridIsRtl.tsx @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { useRtl } from '@mui/system/RtlProvider'; +import { GridPrivateApiCommon } from '../../models/api/gridApiCommon'; + +export const useGridIsRtl = (apiRef: React.MutableRefObject): void => { + const isRtl = useRtl(); + + if (apiRef.current.state.isRtl === undefined) { + apiRef.current.state.isRtl = isRtl; + } + + const isFirstEffect = React.useRef(true); + React.useEffect(() => { + if (isFirstEffect.current) { + isFirstEffect.current = false; + } else { + apiRef.current.setState((state) => ({ ...state, isRtl })); + } + }, [apiRef, isRtl]); +}; diff --git a/packages/x-data-grid/src/hooks/core/useGridTheme.tsx b/packages/x-data-grid/src/hooks/core/useGridTheme.tsx deleted file mode 100644 index 9647f596bd28..000000000000 --- a/packages/x-data-grid/src/hooks/core/useGridTheme.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react'; -import { useTheme } from '@mui/material/styles'; -import { GridPrivateApiCommon } from '../../models/api/gridApiCommon'; - -export const useGridTheme = (apiRef: React.MutableRefObject): void => { - const theme = useTheme(); - - if (!apiRef.current.state.theme) { - apiRef.current.state.theme = theme; - } - - const isFirstEffect = React.useRef(true); - React.useEffect(() => { - if (isFirstEffect.current) { - isFirstEffect.current = false; - } else { - apiRef.current.setState((state) => ({ ...state, theme })); - } - }, [apiRef, theme]); -}; diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index de3a72f4a844..6653bc4367ff 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import clsx from 'clsx'; -import { styled, useTheme } from '@mui/material/styles'; +import { styled } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { useGridSelector } from '../../utils'; import { useGridRootProps } from '../../utils/useGridRootProps'; @@ -98,7 +99,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const [resizeCol, setResizeCol] = React.useState(''); const apiRef = useGridPrivateApiContext(); - const theme = useTheme(); + const isRtl = useRtl(); const rootProps = useGridRootProps(); const dimensions = useGridSelector(apiRef, gridDimensionsSelector); const hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector); @@ -110,7 +111,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const offsetLeft = computeOffsetLeft( columnPositions, renderContext, - theme.direction, + isRtl, pinnedColumns.left.length, ); const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width; diff --git a/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx b/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx index 6e4b3cc9573e..b087e8243b9e 100644 --- a/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx +++ b/packages/x-data-grid/src/hooks/features/columnResize/useGridColumnResize.tsx @@ -4,7 +4,7 @@ import { unstable_useEventCallback as useEventCallback, } from '@mui/utils'; import useLazyRef from '@mui/utils/useLazyRef'; -import { useTheme, Direction } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { findGridCellElementsFromCol, findGridElement, @@ -112,11 +112,11 @@ function flipResizeDirection(side: ResizeDirection) { return 'Right'; } -function getResizeDirection(separator: HTMLElement, direction: Direction) { +function getResizeDirection(separator: HTMLElement, isRtl: boolean) { const side = separator.classList.contains(gridClasses['columnSeparator--sideRight']) ? 'Right' : 'Left'; - if (direction === 'rtl') { + if (isRtl) { // Resizing logic should be mirrored in the RTL case return flipResizeDirection(side); } @@ -280,7 +280,7 @@ export const useGridColumnResize = ( | 'onColumnWidthChange' >, ) => { - const theme = useTheme(); + const isRtl = useRtl(); const logger = useGridLogger(apiRef, 'useGridColumnResize'); const refs = useLazyRef(createResizeRefs).current; @@ -491,7 +491,7 @@ export const useGridColumnResize = ( ? [] : findRightPinnedHeadersBeforeCol(apiRef.current, refs.columnHeaderElement); - resizeDirection.current = getResizeDirection(separator, theme.direction); + resizeDirection.current = getResizeDirection(separator, isRtl); initialOffsetToSeparator.current = computeOffsetToSeparator( xStart, diff --git a/packages/x-data-grid/src/hooks/features/columns/gridColumnsSelector.ts b/packages/x-data-grid/src/hooks/features/columns/gridColumnsSelector.ts index c06920307eb8..f252388bc18f 100644 --- a/packages/x-data-grid/src/hooks/features/columns/gridColumnsSelector.ts +++ b/packages/x-data-grid/src/hooks/features/columns/gridColumnsSelector.ts @@ -5,7 +5,7 @@ import { GridPinnedColumnFields, EMPTY_PINNED_COLUMN_FIELDS, } from './gridColumnsInterfaces'; -import { gridThemeSelector } from '../../core/gridCoreSelector'; +import { gridIsRtlSelector } from '../../core/gridCoreSelector'; /** * Get the columns state @@ -85,13 +85,9 @@ export const gridVisiblePinnedColumnDefinitionsSelector = createSelectorMemoized gridColumnsStateSelector, gridPinnedColumnsSelector, gridVisibleColumnFieldsSelector, - gridThemeSelector, - (columnsState, model, visibleColumnFields, theme) => { - const visiblePinnedFields = filterVisibleColumns( - model, - visibleColumnFields, - theme.direction === 'rtl', - ); + gridIsRtlSelector, + (columnsState, model, visibleColumnFields, isRtl) => { + const visiblePinnedFields = filterVisibleColumns(model, visibleColumnFields, isRtl); const visiblePinnedColumns = { left: visiblePinnedFields.left.map((field) => columnsState.lookup[field]), right: visiblePinnedFields.right.map((field) => columnsState.lookup[field]), diff --git a/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts b/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts index 1854e8a134b0..d11ecf537ce0 100644 --- a/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts +++ b/packages/x-data-grid/src/hooks/features/keyboardNavigation/useGridKeyboardNavigation.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useTheme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { GridEventListener } from '../../../models/events'; import { GridApiCommunity, GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; import { GridCellParams } from '../../../models/params/gridCellParams'; @@ -38,18 +38,18 @@ const getLeftColumnIndex = ({ currentColIndex, firstColIndex, lastColIndex, - direction, + isRtl, }: { currentColIndex: number; firstColIndex: number; lastColIndex: number; - direction: 'rtl' | 'ltr'; + isRtl: boolean; }) => { - if (direction === 'rtl') { + if (isRtl) { if (currentColIndex < lastColIndex) { return currentColIndex + 1; } - } else if (direction === 'ltr') { + } else if (!isRtl) { if (currentColIndex > firstColIndex) { return currentColIndex - 1; } @@ -61,18 +61,18 @@ const getRightColumnIndex = ({ currentColIndex, firstColIndex, lastColIndex, - direction, + isRtl, }: { currentColIndex: number; firstColIndex: number; lastColIndex: number; - direction: 'rtl' | 'ltr'; + isRtl: boolean; }) => { - if (direction === 'rtl') { + if (isRtl) { if (currentColIndex > firstColIndex) { return currentColIndex - 1; } - } else if (direction === 'ltr') { + } else if (!isRtl) { if (currentColIndex < lastColIndex) { return currentColIndex + 1; } @@ -103,7 +103,7 @@ export const useGridKeyboardNavigation = ( ): void => { const logger = useGridLogger(apiRef, 'useGridKeyboardNavigation'); const initialCurrentPageRows = useGridVisibleRows(apiRef, props).rows; - const theme = useTheme(); + const isRtl = useRtl(); const currentPageRows = React.useMemo( () => enrichPageRowsWithPinnedRows(apiRef, initialCurrentPageRows), @@ -220,7 +220,7 @@ export const useGridKeyboardNavigation = ( currentColIndex: colIndexBefore, firstColIndex, lastColIndex, - direction: theme.direction, + isRtl, }); if (rightColIndex !== null) { @@ -235,7 +235,7 @@ export const useGridKeyboardNavigation = ( currentColIndex: colIndexBefore, firstColIndex, lastColIndex, - direction: theme.direction, + isRtl, }); if (leftColIndex !== null) { goToHeader(leftColIndex, event); @@ -300,7 +300,7 @@ export const useGridKeyboardNavigation = ( goToHeaderFilter, goToCell, getRowIdFromIndex, - theme.direction, + isRtl, goToHeader, goToGroupHeader, ], @@ -337,7 +337,7 @@ export const useGridKeyboardNavigation = ( currentColIndex: colIndexBefore, firstColIndex, lastColIndex, - direction: theme.direction, + isRtl, }); if (rightColIndex !== null) { @@ -352,7 +352,7 @@ export const useGridKeyboardNavigation = ( currentColIndex: colIndexBefore, firstColIndex, lastColIndex, - direction: theme.direction, + isRtl, }); if (leftColIndex !== null) { goToHeaderFilter(leftColIndex, event); @@ -407,7 +407,7 @@ export const useGridKeyboardNavigation = ( apiRef, currentPageRows.length, goToHeaderFilter, - theme.direction, + isRtl, goToHeader, goToCell, getRowIdFromIndex, @@ -535,7 +535,6 @@ export const useGridKeyboardNavigation = ( return; } - const direction = theme.direction; const viewportPageSize = apiRef.current.getViewportPageSize(); const colIndexBefore = (params as GridCellParams).field @@ -573,14 +572,10 @@ export const useGridKeyboardNavigation = ( currentColIndex: colIndexBefore, firstColIndex, lastColIndex, - direction, + isRtl, }); if (rightColIndex !== null) { - goToCell( - rightColIndex, - getRowIdFromIndex(rowIndexBefore), - direction === 'rtl' ? 'left' : 'right', - ); + goToCell(rightColIndex, getRowIdFromIndex(rowIndexBefore), isRtl ? 'left' : 'right'); } break; } @@ -590,14 +585,10 @@ export const useGridKeyboardNavigation = ( currentColIndex: colIndexBefore, firstColIndex, lastColIndex, - direction, + isRtl, }); if (leftColIndex !== null) { - goToCell( - leftColIndex, - getRowIdFromIndex(rowIndexBefore), - direction === 'rtl' ? 'right' : 'left', - ); + goToCell(leftColIndex, getRowIdFromIndex(rowIndexBefore), isRtl ? 'right' : 'left'); } break; } @@ -685,7 +676,7 @@ export const useGridKeyboardNavigation = ( [ apiRef, currentPageRows, - theme.direction, + isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, diff --git a/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts b/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts index 0c5543e0d12e..798ffd854c01 100644 --- a/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts +++ b/packages/x-data-grid/src/hooks/features/scroll/useGridScroll.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useTheme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import { GridCellIndexCoordinates } from '../../../models/gridCell'; import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; import { useGridLogger } from '../../utils/useGridLogger'; @@ -55,7 +55,7 @@ export const useGridScroll = ( apiRef: React.MutableRefObject, props: Pick, ): void => { - const theme = useTheme(); + const isRtl = useRtl(); const logger = useGridLogger(apiRef, 'useGridScroll'); const colRef = apiRef.current.columnHeadersContainerRef; const virtualScrollerRef = apiRef.current.virtualScrollerRef!; @@ -145,7 +145,7 @@ export const useGridScroll = ( const scroll = React.useCallback( (params: Partial) => { if (virtualScrollerRef.current && params.left !== undefined && colRef.current) { - const direction = theme.direction === 'rtl' ? -1 : 1; + const direction = isRtl ? -1 : 1; colRef.current.scrollLeft = params.left; virtualScrollerRef.current.scrollLeft = direction * params.left; logger.debug(`Scrolling left: ${params.left}`); @@ -156,7 +156,7 @@ export const useGridScroll = ( } logger.debug(`Scrolling, updating container, and viewport`); }, - [virtualScrollerRef, theme.direction, colRef, logger], + [virtualScrollerRef, isRtl, colRef, logger], ); const getScrollPosition = React.useCallback(() => { diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx index 4c12b9b87a56..614af3bf0847 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx @@ -7,7 +7,7 @@ import { import useLazyRef from '@mui/utils/useLazyRef'; import useTimeout from '@mui/utils/useTimeout'; import { useResizeObserver } from '@mui/x-internals/useResizeObserver'; -import { useTheme, Theme } from '@mui/material/styles'; +import { useRtl } from '@mui/system/RtlProvider'; import type { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity'; import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext'; import { useGridRootProps } from '../../utils/useGridRootProps'; @@ -68,7 +68,7 @@ const EMPTY_SCROLL_POSITION = { top: 0, left: 0 }; export const EMPTY_DETAIL_PANELS = Object.freeze(new Map()); const createScrollCache = ( - mode: 'ltr' | 'rtl', + isRtl: boolean, rowBufferPx: number, columnBufferPx: number, verticalBuffer: number, @@ -76,7 +76,7 @@ const createScrollCache = ( ) => ({ direction: ScrollDirection.NONE, buffer: bufferForDirection( - mode, + isRtl, ScrollDirection.NONE, rowBufferPx, columnBufferPx, @@ -109,7 +109,7 @@ export const useGridVirtualScroller = () => { const hasBottomPinnedRows = pinnedRows.bottom.length > 0; const [panels, setPanels] = React.useState(EMPTY_DETAIL_PANELS); - const theme = useTheme(); + const isRtl = useRtl(); const cellFocus = useGridSelector(apiRef, gridFocusCellSelector); const cellTabIndex = useGridSelector(apiRef, gridTabIndexCellSelector); const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector); @@ -149,7 +149,7 @@ export const useGridVirtualScroller = () => { const frozenContext = React.useRef(undefined); const scrollCache = useLazyRef(() => createScrollCache( - theme.direction, + isRtl, rootProps.rowBufferPx, rootProps.columnBufferPx, dimensions.rowHeight * 15, @@ -254,7 +254,7 @@ export const useGridVirtualScroller = () => { scrollCache.direction = direction; scrollCache.buffer = bufferForDirection( - theme.direction, + isRtl, direction, rootProps.rowBufferPx, rootProps.columnBufferPx, @@ -290,12 +290,12 @@ export const useGridVirtualScroller = () => { if (scrollTop < 0) { return; } - if (theme.direction === 'ltr') { + if (!isRtl) { if (scrollLeft < 0) { return; } } - if (theme.direction === 'rtl') { + if (isRtl) { if (scrollLeft > 0) { return; } @@ -466,7 +466,7 @@ export const useGridVirtualScroller = () => { const offsetLeft = computeOffsetLeft( columnPositions, currentRenderContext, - theme.direction, + isRtl, pinnedColumns.left.length, ); const showBottomBorder = isLastVisibleInSection && params.position === 'top'; @@ -943,10 +943,10 @@ export function areRenderContextsEqual(context1: GridRenderContext, context2: Gr export function computeOffsetLeft( columnPositions: number[], renderContext: GridColumnsRenderContext, - direction: Theme['direction'], + isRtl: boolean, pinnedLeftLength: number, ) { - const factor = direction === 'ltr' ? 1 : -1; + const factor = isRtl ? -1 : 1; const left = factor * (columnPositions[renderContext.firstColumnIndex] ?? 0) - (columnPositions[pinnedLeftLength] ?? 0); @@ -976,14 +976,14 @@ function directionForDelta(dx: number, dy: number) { } function bufferForDirection( - mode: 'ltr' | 'rtl', + isRtl: boolean, direction: ScrollDirection, rowBufferPx: number, columnBufferPx: number, verticalBuffer: number, horizontalBuffer: number, ) { - if (mode === 'rtl') { + if (isRtl) { switch (direction) { case ScrollDirection.LEFT: direction = ScrollDirection.RIGHT; diff --git a/packages/x-data-grid/src/models/gridStateCommunity.ts b/packages/x-data-grid/src/models/gridStateCommunity.ts index 7e00992692bf..ee737b4b8a51 100644 --- a/packages/x-data-grid/src/models/gridStateCommunity.ts +++ b/packages/x-data-grid/src/models/gridStateCommunity.ts @@ -1,4 +1,3 @@ -import type { Theme } from '@mui/material/styles'; import type { GridColumnMenuState, GridColumnsInitialState, @@ -31,7 +30,7 @@ import type { GridColumnResizeState } from '../hooks/features/columnResize'; * The state of `DataGrid`. */ export interface GridStateCommunity { - theme: Theme; + isRtl: boolean; dimensions: GridDimensionsState; rows: GridRowsState; visibleRowsLookup: GridVisibleRowsLookupState; From d9416d778f7639eb822905986765b2fd11b952af Mon Sep 17 00:00:00 2001 From: Lukas Tyla Date: Thu, 29 Aug 2024 12:17:21 +0300 Subject: [PATCH 859/912] [core] Allow only v5.x for `MUI Core` renovate group (#14382) --- renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index e8960ee9db0d..4196a9df8eda 100644 --- a/renovate.json +++ b/renovate.json @@ -90,7 +90,8 @@ "@mui/system", "@mui/types", "@mui/utils" - ] + ], + "allowedVersions": "< 6.0.0" }, { "groupName": "MUI Internal", From 70b6cb716063dce01463ec9a72505ebe20971e31 Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Thu, 29 Aug 2024 11:41:42 +0200 Subject: [PATCH 860/912] [core] Support `@mui/material@6` peer dependency (#14142) Co-authored-by: Lukas --- .circleci/config.yml | 30 ++- docs/data/data-grid/joy-ui/GridJoyUISlots.js | 10 +- docs/data/data-grid/joy-ui/GridJoyUISlots.tsx | 10 +- .../modules/components/ChartFeaturesGrid.js | 4 +- .../modules/components/InstallationGrid.js | 4 +- package.json | 1 + packages/x-charts-pro/package.json | 6 +- .../src/tests/materialVersion.test.tsx | 5 + packages/x-charts/package.json | 6 +- .../src/tests/materialVersion.test.tsx | 5 + packages/x-data-grid-generator/package.json | 6 +- packages/x-data-grid-premium/package.json | 6 +- .../aggregation.DataGridPremium.test.tsx | 1 + .../src/tests/materialVersion.test.tsx | 5 + packages/x-data-grid-pro/package.json | 6 +- .../src/tests/materialVersion.test.tsx | 5 + packages/x-data-grid/package.json | 6 +- .../src/tests/columnHeaders.DataGrid.test.tsx | 55 +++-- .../src/tests/materialVersion.test.tsx | 5 + .../src/tests/rowSelection.DataGrid.test.tsx | 18 +- packages/x-date-pickers-pro/package.json | 6 +- .../DateRangeCalendar.test.tsx | 7 +- .../tests/DesktopDateRangePicker.test.tsx | 23 +- .../describes.DesktopDateRangePicker.test.tsx | 7 +- .../tests/DesktopDateTimeRangePicker.test.tsx | 19 +- ...cribes.DesktopDateTimeRangePicker.test.tsx | 15 +- .../tests/MobileDateRangePicker.test.tsx | 77 ++++--- .../describes.MobileDateRangePicker.test.tsx | 5 +- ...scribes.MobileDateTimeRangePicker.test.tsx | 17 +- .../src/tests/materialVersion.test.tsx | 5 + packages/x-date-pickers/package.json | 6 +- .../DateCalendar/tests/DateCalendar.test.tsx | 199 +++++++++--------- .../tests/describes.DateCalendar.test.tsx | 5 +- .../tests/timezone.DateCalendar.test.tsx | 9 +- .../tests/DesktopDatePicker.test.tsx | 19 +- .../describes.DesktopDatePicker.test.tsx | 5 +- .../tests/DesktopDateTimePicker.test.tsx | 70 +++--- .../describes.DesktopDateTimePicker.test.tsx | 15 +- .../tests/DesktopTimePicker.test.tsx | 79 ++++--- .../describes.DesktopTimePicker.test.tsx | 13 +- .../tests/timezone.DigitalClock.test.tsx | 9 +- .../tests/MobileDatePicker.test.tsx | 3 +- .../tests/describes.MobileDatePicker.test.tsx | 3 +- .../tests/MobileDateTimePicker.test.tsx | 11 +- .../describes.MobileDateTimePicker.test.tsx | 9 +- .../tests/MobileTimePicker.test.tsx | 27 ++- .../tests/describes.MobileTimePicker.test.tsx | 7 +- .../tests/describes.MonthCalendar.test.tsx | 7 +- .../PickersActionBar.test.tsx | 29 ++- .../tests/describes.YearCalendar.test.tsx | 5 +- .../src/tests/materialVersion.test.tsx | 5 + packages/x-tree-view-pro/package.json | 6 +- .../src/tests/materialVersion.test.tsx | 5 + packages/x-tree-view/package.json | 6 +- .../src/tests/materialVersion.test.tsx | 5 + pnpm-lock.yaml | 172 +++++++-------- scripts/useMaterialUIv6.mjs | 12 ++ test/README.md | 38 +++- test/circleci-workflow.png | Bin 0 -> 40490 bytes test/karma.conf.js | 1 + test/package.json | 8 +- test/regressions/index.test.js | 22 ++ test/utils/checkMaterialVersion.ts | 43 ++++ .../describeValue/testPickerActionBar.tsx | 19 +- .../testPickerOpenCloseLifeCycle.tsx | 24 +-- .../pickers/describeValue/testShortcuts.tsx | 9 +- test/utils/pickers/misc.ts | 2 + test/utils/pickers/openPicker.ts | 21 +- test/utils/pickers/viewHandlers.ts | 13 +- 69 files changed, 761 insertions(+), 555 deletions(-) create mode 100644 packages/x-charts-pro/src/tests/materialVersion.test.tsx create mode 100644 packages/x-charts/src/tests/materialVersion.test.tsx create mode 100644 packages/x-data-grid-premium/src/tests/materialVersion.test.tsx create mode 100644 packages/x-data-grid-pro/src/tests/materialVersion.test.tsx create mode 100644 packages/x-data-grid/src/tests/materialVersion.test.tsx create mode 100644 packages/x-date-pickers-pro/src/tests/materialVersion.test.tsx create mode 100644 packages/x-date-pickers/src/tests/materialVersion.test.tsx create mode 100644 packages/x-tree-view-pro/src/tests/materialVersion.test.tsx create mode 100644 packages/x-tree-view/src/tests/materialVersion.test.tsx create mode 100644 scripts/useMaterialUIv6.mjs create mode 100644 test/circleci-workflow.png create mode 100644 test/utils/checkMaterialVersion.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 53f9f97eed6c..72bff75bfe51 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -99,6 +99,14 @@ commands: # log a patch for maintainers who want to check out this change git --no-pager diff HEAD + - when: + condition: + equal: [material-ui-v6, << pipeline.parameters.workflow >>] + steps: + - run: + name: Install @mui/material@next + command: pnpm use-material-ui-v6 + - when: condition: << parameters.browsers >> steps: @@ -248,7 +256,7 @@ jobs: command: pnpm docs:typescript:formatted --disable-cache - run: name: '`pnpm docs:typescript:formatted` changes committed?' - command: git add -A && git diff --exit-code --staged + command: git add -A && git diff --exit-code --staged docs/src docs/data - run: name: Tests TypeScript definitions command: pnpm typescript:ci @@ -383,3 +391,23 @@ workflows: <<: *default-context react-version: next name: test_e2e-react@next + + material-ui-v6: + when: + equal: [material-ui-v6, << pipeline.parameters.workflow >>] + jobs: + - test_unit: + <<: *default-context + name: test_unit-material@next + - test_browser: + <<: *default-context + name: test_browser-material@next + - test_regressions: + <<: *default-context + name: test_regressions-material@next + - test_e2e: + <<: *default-context + name: test_e2e-material@next + - test_types: + <<: *default-context + name: test_types-material@next diff --git a/docs/data/data-grid/joy-ui/GridJoyUISlots.js b/docs/data/data-grid/joy-ui/GridJoyUISlots.js index 7d88bad69902..35c89967fc53 100644 --- a/docs/data/data-grid/joy-ui/GridJoyUISlots.js +++ b/docs/data/data-grid/joy-ui/GridJoyUISlots.js @@ -3,8 +3,8 @@ import Box from '@mui/material/Box'; import { DataGrid, GridToolbar, GridActionsCellItem } from '@mui/x-data-grid'; import { unstable_joySlots } from '@mui/x-data-grid/joy'; import { - experimental_extendTheme as materialExtendTheme, - Experimental_CssVarsProvider as MaterialCssVarsProvider, + createTheme, + ThemeProvider as MaterialThemeProvider, THEME_ID as MATERIAL_THEME_ID, } from '@mui/material/styles'; import { CssVarsProvider as JoyCssVarsProvider } from '@mui/joy/styles'; @@ -18,7 +18,7 @@ import { randomArrayItem, } from '@mui/x-data-grid-generator'; -const materialTheme = materialExtendTheme({ +const materialTheme = createTheme({ components: { MuiSvgIcon: { styleOverrides: { @@ -97,7 +97,7 @@ export default function GridJoyUISlots() { }, []); return ( - + - + ); } diff --git a/docs/data/data-grid/joy-ui/GridJoyUISlots.tsx b/docs/data/data-grid/joy-ui/GridJoyUISlots.tsx index 8bcd13834ceb..6b1817921dcc 100644 --- a/docs/data/data-grid/joy-ui/GridJoyUISlots.tsx +++ b/docs/data/data-grid/joy-ui/GridJoyUISlots.tsx @@ -3,8 +3,8 @@ import Box from '@mui/material/Box'; import { DataGrid, GridToolbar, GridActionsCellItem } from '@mui/x-data-grid'; import { unstable_joySlots } from '@mui/x-data-grid/joy'; import { - experimental_extendTheme as materialExtendTheme, - Experimental_CssVarsProvider as MaterialCssVarsProvider, + createTheme, + ThemeProvider as MaterialThemeProvider, THEME_ID as MATERIAL_THEME_ID, } from '@mui/material/styles'; import { CssVarsProvider as JoyCssVarsProvider } from '@mui/joy/styles'; @@ -19,7 +19,7 @@ import { } from '@mui/x-data-grid-generator'; import type {} from '@mui/material/themeCssVarsAugmentation'; -const materialTheme = materialExtendTheme({ +const materialTheme = createTheme({ components: { MuiSvgIcon: { styleOverrides: { @@ -106,7 +106,7 @@ export default function GridJoyUISlots() { }, []); return ( - + - + ); } diff --git a/docs/src/modules/components/ChartFeaturesGrid.js b/docs/src/modules/components/ChartFeaturesGrid.js index ecff879e95c2..36af272ba23c 100644 --- a/docs/src/modules/components/ChartFeaturesGrid.js +++ b/docs/src/modules/components/ChartFeaturesGrid.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import Grid from '@mui/material/Unstable_Grid2'; +import Grid from '@mui/material/Grid'; import { InfoCard } from '@mui/docs/InfoCard'; import LineAxisRoundedIcon from '@mui/icons-material/LineAxisRounded'; import DashboardCustomizeRoundedIcon from '@mui/icons-material/DashboardCustomizeRounded'; @@ -45,7 +45,7 @@ export default function ChartFeaturesGrid() { return ( {content.map(({ icon, title, link }) => ( - + ))} diff --git a/docs/src/modules/components/InstallationGrid.js b/docs/src/modules/components/InstallationGrid.js index a5dcda305945..a917df909e2a 100644 --- a/docs/src/modules/components/InstallationGrid.js +++ b/docs/src/modules/components/InstallationGrid.js @@ -1,5 +1,5 @@ import * as React from 'react'; -import Grid from '@mui/material/Unstable_Grid2'; +import Grid from '@mui/material/Grid'; import { InfoCard } from '@mui/docs/InfoCard'; import AccountTreeRounded from '@mui/icons-material/AccountTreeRounded'; import PivotTableChartRoundedIcon from '@mui/icons-material/PivotTableChartRounded'; @@ -38,7 +38,7 @@ export default function InstallationGrid() { return ( {content.map(({ icon, title, description, link }) => ( - + - Aggregation', () => { }), ).getByText('max'), ); + clock.runToLast(); expect(getColumnValues(0)).to.deep.equal(['0', '1', '2', '3', '4', '5', '5' /* Agg */]); }); diff --git a/packages/x-data-grid-premium/src/tests/materialVersion.test.tsx b/packages/x-data-grid-premium/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-data-grid-premium/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 72204827ec4c..1bffa00b34bd 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -44,7 +44,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.4", - "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", "@mui/x-internals": "workspace:*", @@ -57,7 +56,8 @@ "peerDependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, @@ -71,6 +71,8 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", + "@mui/material": "^5.16.5", + "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-data-grid-pro/src/tests/materialVersion.test.tsx b/packages/x-data-grid-pro/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-data-grid-pro/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index b15ac1b96fbd..dd1ea5206375 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -48,7 +48,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.4", - "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "clsx": "^2.1.1", @@ -58,7 +57,8 @@ "peerDependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, @@ -73,6 +73,8 @@ "devDependencies": { "@mui/internal-test-utils": "^1.0.10", "@mui/joy": "^5.0.0-beta.48", + "@mui/material": "^5.16.5", + "@mui/system": "^5.16.7", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" diff --git a/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx b/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx index 0d8a7c325d47..d2fe4adf9853 100644 --- a/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/columnHeaders.DataGrid.test.tsx @@ -1,14 +1,13 @@ import * as React from 'react'; -import { createRenderer, fireEvent, screen, within } from '@mui/internal-test-utils'; +import { createRenderer, screen, waitFor, within } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { DataGrid } from '@mui/x-data-grid'; import { getColumnHeaderCell, getColumnHeadersTextContent } from 'test/utils/helperFn'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); describe(' - Column headers', () => { - const { render, clock } = createRenderer({ clock: 'fake' }); + const { render } = createRenderer(); const baselineProps = { autoHeight: isJSDOM, @@ -52,8 +51,8 @@ describe(' - Column headers', () => { }); describe('Column menu', () => { - it('should allow to hide column', () => { - render( + it('should allow to hide column', async () => { + const { user } = render(
    - Column headers', () => { expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'brand']); - fireEvent.click(within(getColumnHeaderCell(0)).getByLabelText('Menu')); - fireEvent.click(screen.getByRole('menuitem', { name: 'Hide column' })); - clock.runToLast(); + await user.click(within(getColumnHeaderCell(0)).getByLabelText('Menu')); + await user.click(screen.getByRole('menuitem', { name: 'Hide column' })); expect(getColumnHeadersTextContent()).to.deep.equal(['brand']); }); - it('should not allow to hide the only visible column', () => { - render( + it('should not allow to hide the only visible column', async () => { + const { user } = render(
    - Column headers', () => { expect(getColumnHeadersTextContent()).to.deep.equal(['id']); - fireEvent.click(within(getColumnHeaderCell(0)).getByLabelText('Menu')); - fireEvent.click(screen.getByRole('menuitem', { name: 'Hide column' })); - clock.runToLast(); + await user.click(within(getColumnHeaderCell(0)).getByLabelText('Menu')); + await user + .setup({ pointerEventsCheck: 0 }) + .click(screen.getByRole('menuitem', { name: 'Hide column' })); expect(getColumnHeadersTextContent()).to.deep.equal(['id']); }); - it('should not allow to hide the only visible column that has menu', () => { - render( + it('should not allow to hide the only visible column that has menu', async () => { + const { user } = render(
    - Column headers', () => { expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'brand']); - fireEvent.click(within(getColumnHeaderCell(1)).getByLabelText('Menu')); - fireEvent.click(screen.getByRole('menuitem', { name: 'Hide column' })); - clock.runToLast(); + await user.click(within(getColumnHeaderCell(1)).getByLabelText('Menu')); + await user + .setup({ pointerEventsCheck: 0 }) + .click(screen.getByRole('menuitem', { name: 'Hide column' })); expect(getColumnHeadersTextContent()).to.deep.equal(['id', 'brand']); }); it('menu icon button should close column menu when already open', async () => { - render( + const { user } = render(
    , ); - fireUserEvent.mousePress(within(getColumnHeaderCell(0)).getByLabelText('Menu')); - clock.runToLast(); + await user.click(within(getColumnHeaderCell(0)).getByLabelText('Menu')); expect(screen.queryByRole('menu')).not.to.equal(null); - fireUserEvent.mousePress(within(getColumnHeaderCell(0)).getByLabelText('Menu')); - clock.runToLast(); - expect(screen.queryByRole('menu')).to.equal(null); + await user.click(within(getColumnHeaderCell(0)).getByLabelText('Menu')); + await waitFor(() => { + expect(screen.queryByRole('menu')).to.equal(null); + }); }); }); - it('should display sort column menu items as per sortingOrder prop', () => { - render( + it('should display sort column menu items as per sortingOrder prop', async () => { + const { user } = render(
    - Column headers', () => { ); const columnCell = getColumnHeaderCell(0); const menuIconButton = columnCell.querySelector('button[aria-label="Menu"]')!; - fireEvent.click(menuIconButton); - clock.runToLast(); + await user.click(menuIconButton); expect(screen.queryByRole('menuitem', { name: /asc/i })).not.to.equal(null); expect(screen.queryByRole('menuitem', { name: /desc/i })).not.to.equal(null); diff --git a/packages/x-data-grid/src/tests/materialVersion.test.tsx b/packages/x-data-grid/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-data-grid/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx b/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx index 23f1c8f406d2..b39a5d79d580 100644 --- a/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/rowSelection.DataGrid.test.tsx @@ -1,7 +1,14 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { createRenderer, fireEvent, screen, act, waitFor } from '@mui/internal-test-utils'; +import { + createRenderer, + fireEvent, + screen, + act, + waitFor, + flushMicrotasks, +} from '@mui/internal-test-utils'; import { DataGrid, DataGridProps, @@ -221,7 +228,7 @@ describe(' - Row selection', () => { expect(getRow(0).querySelector('input')).to.have.property('checked', false); }); - it('should set focus on the cell when clicking the checkbox', () => { + it('should set focus on the cell when clicking the checkbox', async () => { render(); expect(getActiveCell()).to.equal(null); @@ -230,7 +237,9 @@ describe(' - Row selection', () => { fireUserEvent.mousePress(checkboxInput!); - expect(getActiveCell()).to.equal('0-0'); + await waitFor(() => { + expect(getActiveCell()).to.equal('0-0'); + }); }); it('should select all visible rows regardless of pagination', () => { @@ -527,7 +536,7 @@ describe(' - Row selection', () => { describe('ripple', () => { clock.withFakeTimers(); - it('should keep only one ripple visible when navigating between checkboxes', function test() { + it('should keep only one ripple visible when navigating between checkboxes', async function test() { if (isJSDOM) { // JSDOM doesn't fire "blur" when .focus is called in another element // FIXME Firefox doesn't show any ripple @@ -539,6 +548,7 @@ describe(' - Row selection', () => { fireEvent.keyDown(cell, { key: 'ArrowLeft' }); fireEvent.keyDown(getCell(1, 0).querySelector('input')!, { key: 'ArrowUp' }); clock.runToLast(); // Wait for transition + await flushMicrotasks(); expect(document.querySelectorAll('.MuiTouchRipple-rippleVisible')).to.have.length(1); }); }); diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 015d92f04b60..727da9ac2882 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -43,7 +43,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.4", - "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-date-pickers": "workspace:*", "@mui/x-license": "workspace:*", @@ -54,7 +53,8 @@ "peerDependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", "date-fns": "^2.25.0 || ^3.2.0", "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", "dayjs": "^1.10.7", @@ -96,6 +96,8 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", + "@mui/material": "^5.16.5", + "@mui/system": "^5.16.7", "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", diff --git a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx index 2dc85c2aa91d..6c4f54626d5a 100644 --- a/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx +++ b/packages/x-date-pickers-pro/src/DateRangeCalendar/DateRangeCalendar.test.tsx @@ -15,7 +15,6 @@ import { } from '@mui/x-date-pickers-pro/DateRangeCalendar'; import { DateRangePickerDay } from '@mui/x-date-pickers-pro/DateRangePickerDay'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; import { RangePosition } from '../models'; const getPickerDay = (name: string, picker = 'January 2018') => @@ -535,7 +534,7 @@ describe('', () => { ); const renderCountBeforeChange = RenderCount.callCount; - fireUserEvent.mousePress(getPickerDay('2')); + fireEvent.click(getPickerDay('2')); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(2); // 2 render * 1 day }); @@ -550,10 +549,10 @@ describe('', () => { />, ); - fireUserEvent.mousePress(getPickerDay('2')); + fireEvent.click(getPickerDay('2')); const renderCountBeforeChange = RenderCount.callCount; - fireUserEvent.mousePress(getPickerDay('4')); + fireEvent.click(getPickerDay('4')); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(6); // 2 render * 3 day }); }); diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx index ee452e3e68ad..8ec961707343 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/DesktopDateRangePicker.test.tsx @@ -15,7 +15,6 @@ import { getFieldSectionsContainer, getTextbox, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -48,7 +47,7 @@ describe('', () => { expect(screen.getByText('May 2019')).toBeVisible(); }); - it(`should not crash when opening picker with invalid date value`, async () => { + it(`should not crash when opening picker with invalid date value`, () => { render( ', () => { expect(onClose.callCount).to.equal(0); // Change the start date - fireUserEvent.mousePress(getPickerDay('3')); + fireEvent.click(getPickerDay('3')); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(defaultValue[1]); // Change the end date - fireUserEvent.mousePress(getPickerDay('5')); + fireEvent.click(getPickerDay('5')); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 5)); @@ -288,7 +287,7 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the end date - fireUserEvent.mousePress(getPickerDay('3')); + fireEvent.click(getPickerDay('3')); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 3)); @@ -319,7 +318,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'end' }); // Change the end date - fireUserEvent.mousePress(getPickerDay('3')); + fireEvent.click(getPickerDay('3')); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -347,7 +346,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Change the start date (already tested) - fireUserEvent.mousePress(getPickerDay('3')); + fireEvent.click(getPickerDay('3')); // Dismiss the picker // eslint-disable-next-line material-ui/disallow-active-element-as-key-event-target -- don't care @@ -418,7 +417,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Change the start date (already tested) - fireUserEvent.mousePress(getPickerDay('3')); + fireEvent.click(getPickerDay('3')); clock.runToLast(); // Dismiss the picker @@ -454,7 +453,7 @@ describe('', () => { ); // Dismiss the picker - fireUserEvent.mousePress(document.body); + fireEvent.click(document.body); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -522,7 +521,7 @@ describe('', () => { expect(screen.getByRole('tooltip')).toBeVisible(); // Change the start date (already tested) - fireUserEvent.mousePress(getPickerDay('3')); + fireEvent.click(getPickerDay('3')); clock.runToLast(); act(() => { @@ -560,7 +559,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Clear the date - fireUserEvent.mousePress(screen.getByText(/clear/i)); + fireEvent.click(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(1); // Start date change expect(onChange.lastCall.args[0]).to.deep.equal([null, null]); expect(onAccept.callCount).to.equal(1); @@ -587,7 +586,7 @@ describe('', () => { openPicker({ type: 'date-range', variant: 'desktop', initialFocus: 'start' }); // Clear the date - fireUserEvent.mousePress(screen.getByText(/clear/i)); + fireEvent.click(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); diff --git a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx index 2639cbebef6b..640ac3b6c5f3 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateRangePicker/tests/describes.DesktopDateRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { adapterToUse, createPickerRenderer, @@ -13,7 +13,6 @@ import { import { DesktopDateRangePicker } from '@mui/x-date-pickers-pro/DesktopDateRangePicker'; import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -87,7 +86,7 @@ describe(' - Describes', () => { } if (isOpened) { - fireUserEvent.mousePress( + fireEvent.click( screen.getAllByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), })[0], @@ -149,7 +148,7 @@ describe(' - Describes', () => { } if (isOpened) { - fireUserEvent.mousePress( + fireEvent.click( screen.getAllByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), })[0], diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx index e866a5140081..078ffbc61c0b 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/DesktopDateTimeRangePicker.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -8,7 +8,6 @@ import { getFieldSectionsContainer, expectFieldValueV7, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DesktopDateTimeRangePicker } from '../DesktopDateTimeRangePicker'; describe('', () => { @@ -24,16 +23,16 @@ describe('', () => { openPicker({ type: 'date-time-range', variant: 'desktop', initialFocus: 'start' }); // select start date range - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: '4 hours' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: '5 minutes' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireEvent.click(screen.getByRole('gridcell', { name: '11' })); + fireEvent.click(screen.getByRole('option', { name: '4 hours' })); + fireEvent.click(screen.getByRole('option', { name: '5 minutes' })); + fireEvent.click(screen.getByRole('option', { name: 'PM' })); // select end date range on the same day - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '11' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: '5 hours' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: '10 minutes' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + fireEvent.click(screen.getByRole('gridcell', { name: '11' })); + fireEvent.click(screen.getByRole('option', { name: '5 hours' })); + fireEvent.click(screen.getByRole('option', { name: '10 minutes' })); + fireEvent.click(screen.getByRole('option', { name: 'PM' })); const startSectionsContainer = getFieldSectionsContainer(0); const endSectionsContainer = getFieldSectionsContainer(1); diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx index bd7c125ec4b4..d9b960a96037 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/tests/describes.DesktopDateTimeRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { describeConformance, screen } from '@mui/internal-test-utils'; +import { describeConformance, fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -9,7 +9,6 @@ import { describeRangeValidation, getFieldSectionsContainer, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DesktopDateTimeRangePicker } from '../DesktopDateTimeRangePicker'; describe(' - Describes', () => { @@ -102,7 +101,7 @@ describe(' - Describes', () => { ]; } if (isOpened) { - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), }), @@ -113,10 +112,8 @@ describe(' - Describes', () => { hasMeridiem ? 'hours12h' : 'hours24h', ); const hoursNumber = adapterToUse.getHours(newValue[setEndDate ? 1 : 0]); - fireUserEvent.mousePress( - screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), - ); - fireUserEvent.mousePress( + fireEvent.click(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); + fireEvent.click( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue[setEndDate ? 1 : 0])} minutes`, }), @@ -124,9 +121,7 @@ describe(' - Describes', () => { if (hasMeridiem) { // meridiem is an extra view on `DesktopDateTimeRangePicker` // we need to click it to finish selection - fireUserEvent.mousePress( - screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), - ); + fireEvent.click(screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' })); } } else { selectSection('day'); diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx index 177cf4752e9a..76383fe45d87 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/MobileDateRangePicker.test.tsx @@ -9,12 +9,11 @@ import { openPicker, getFieldSectionsContainer, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DateRange } from '@mui/x-date-pickers-pro/models'; import { SingleInputDateRangeField } from '@mui/x-date-pickers-pro/SingleInputDateRangeField'; describe('', () => { - const { render } = createPickerRenderer({ clock: 'fake' }); + const { render } = createPickerRenderer(); describe('Field slot: SingleInputDateRangeField', () => { it('should render the input with a given `name` when `SingleInputDateRangeField` is used', () => { @@ -37,29 +36,43 @@ describe('', () => { }); describe('picker state', () => { - it('should open when focusing the start input', () => { + it('should open when focusing the start input', async () => { const onOpen = spy(); - render(); + const { user } = render( + , + ); - openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); + await openPicker({ + type: 'date-range', + variant: 'mobile', + initialFocus: 'start', + click: user.click, + }); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); }); - it('should open when focusing the end input', () => { + it('should open when focusing the end input', async () => { const onOpen = spy(); - render(); + const { user } = render( + , + ); - openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'end' }); + await openPicker({ + type: 'date-range', + variant: 'mobile', + initialFocus: 'end', + click: user.click, + }); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); }); - it('should call onChange with updated start date then call onChange with updated end date when opening from start input', () => { + it('should call onChange with updated start date then call onChange with updated end date when opening from start input', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); @@ -68,7 +81,7 @@ describe('', () => { adapterToUse.date('2018-01-06'), ]; - render( + const { user } = render( ', () => { expect(onClose.callCount).to.equal(0); // Change the start date - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + await user.click(screen.getByRole('gridcell', { name: '3' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(defaultValue[1]); // Change the end date - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '5' })); + await user.click(screen.getByRole('gridcell', { name: '5' })); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 5)); @@ -100,7 +113,7 @@ describe('', () => { expect(onClose.callCount).to.equal(0); }); - it('should call onChange with updated end date when opening from end input', () => { + it('should call onChange with updated end date when opening from end input', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); @@ -109,7 +122,7 @@ describe('', () => { adapterToUse.date('2018-01-06'), ]; - render( + const { user } = render( ', () => { expect(onClose.callCount).to.equal(0); // Change the end date - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + await user.click(screen.getByRole('gridcell', { name: '3' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); expect(onChange.lastCall.args[0][1]).toEqualDateTime(new Date(2018, 0, 3)); @@ -134,7 +147,7 @@ describe('', () => { expect(onClose.callCount).to.equal(0); }); - it('should call onClose and onAccept when selecting the end date if props.closeOnSelect = true', () => { + it('should call onClose and onAccept when selecting the end date if props.closeOnSelect = true', async () => { const onAccept = spy(); const onClose = spy(); const defaultValue: DateRange = [ @@ -142,7 +155,7 @@ describe('', () => { adapterToUse.date('2018-01-06'), ]; - render( + const { user } = render( ', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'end' }); // Change the end date - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + await user.click(screen.getByRole('gridcell', { name: '3' })); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); @@ -163,7 +176,7 @@ describe('', () => { expect(onClose.callCount).to.equal(1); }); - it('should call onClose and onChange with the initial value when clicking "Cancel" button', () => { + it('should call onClose and onChange with the initial value when clicking "Cancel" button', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); @@ -172,7 +185,7 @@ describe('', () => { adapterToUse.date('2018-01-06'), ]; - render( + const { user } = render( ', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Change the start date (already tested) - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + await user.click(screen.getByRole('gridcell', { name: '3' })); // Cancel the modifications - fireUserEvent.mousePress(screen.getByText(/cancel/i)); + await user.click(screen.getByText(/cancel/i)); expect(onChange.callCount).to.equal(2); // Start date change + reset expect(onChange.lastCall.args[0][0]).toEqualDateTime(defaultValue[0]); expect(onChange.lastCall.args[0][1]).toEqualDateTime(defaultValue[1]); @@ -197,7 +210,7 @@ describe('', () => { expect(onClose.callCount).to.equal(1); }); - it('should call onClose and onAccept with the live value and onAccept with the live value when clicking the "OK"', () => { + it('should call onClose and onAccept with the live value and onAccept with the live value when clicking the "OK"', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); @@ -206,7 +219,7 @@ describe('', () => { adapterToUse.date('2018-01-06'), ]; - render( + const { user } = render( ', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Change the start date (already tested) - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); + await user.click(screen.getByRole('gridcell', { name: '3' })); // Accept the modifications - fireUserEvent.mousePress(screen.getByText(/ok/i)); + await user.click(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal(1); // Start date change expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0][0]).toEqualDateTime(new Date(2018, 0, 3)); @@ -230,7 +243,7 @@ describe('', () => { expect(onClose.callCount).to.equal(1); }); - it('should call onClose, onChange with empty value and onAccept with empty value when pressing the "Clear" button', () => { + it('should call onClose, onChange with empty value and onAccept with empty value when pressing the "Clear" button', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); @@ -239,7 +252,7 @@ describe('', () => { adapterToUse.date('2018-01-06'), ]; - render( + const { user } = render( ', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Clear the date - fireUserEvent.mousePress(screen.getByText(/clear/i)); + await user.click(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(1); // Start date change expect(onChange.lastCall.args[0]).to.deep.equal([null, null]); expect(onAccept.callCount).to.equal(1); @@ -261,12 +274,12 @@ describe('', () => { expect(onClose.callCount).to.equal(1); }); - it('should not call onChange or onAccept when pressing "Clear" button with an already null value', () => { + it('should not call onChange or onAccept when pressing "Clear" button with an already null value', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render( + const { user } = render( ', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); // Clear the date - fireUserEvent.mousePress(screen.getByText(/clear/i)); + await user.click(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); diff --git a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx index 7503ccadc73e..3410aec62f20 100644 --- a/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateRangePicker/tests/describes.MobileDateRangePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen, fireDiscreteEvent } from '@mui/internal-test-utils'; +import { screen, fireDiscreteEvent, fireEvent } from '@mui/internal-test-utils'; import { MobileDateRangePicker } from '@mui/x-date-pickers-pro/MobileDateRangePicker'; import { adapterToUse, @@ -12,7 +12,6 @@ import { getFieldSectionsContainer, } from 'test/utils/pickers'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -87,7 +86,7 @@ describe(' - Describes', () => { openPicker({ type: 'date-range', variant: 'mobile', initialFocus: 'start' }); } - fireUserEvent.mousePress( + fireEvent.click( screen.getAllByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), })[0], diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx index 1422ba7bb233..06f204cc0cf6 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/tests/describes.MobileDateTimeRangePicker.test.tsx @@ -10,7 +10,6 @@ import { getFieldSectionsContainer, openPicker, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; import { MobileDateTimeRangePicker } from '../MobileDateTimeRangePicker'; describe(' - Describes', () => { @@ -109,12 +108,12 @@ describe(' - Describes', () => { // if we want to set the end date, we firstly need to switch to end date "range position" if (setEndDate) { - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('button', { name: adapterToUse.format(value[1], 'shortDate') }), ); } - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue[setEndDate ? 1 : 0]).toString(), }), @@ -125,10 +124,8 @@ describe(' - Describes', () => { hasMeridiem ? 'hours12h' : 'hours24h', ); const hoursNumber = adapterToUse.getHours(newValue[setEndDate ? 1 : 0]); - fireUserEvent.mousePress( - screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), - ); - fireUserEvent.mousePress( + fireEvent.click(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); + fireEvent.click( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue[setEndDate ? 1 : 0])} minutes`, }), @@ -136,9 +133,7 @@ describe(' - Describes', () => { if (hasMeridiem) { // meridiem is an extra view on `MobileDateTimeRangePicker` // we need to click it to finish selection - fireUserEvent.mousePress( - screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), - ); + fireEvent.click(screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' })); } // Close the picker if (!isOpened) { @@ -147,7 +142,7 @@ describe(' - Describes', () => { clock.runToLast(); } else { // return to the start date view in case we'd like to repeat the selection process - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('button', { name: adapterToUse.format(newValue[0], 'shortDate') }), ); } diff --git a/packages/x-date-pickers-pro/src/tests/materialVersion.test.tsx b/packages/x-date-pickers-pro/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-date-pickers-pro/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 7a5ea6153cc8..cb4f946a2fbe 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -46,7 +46,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.4", - "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", @@ -56,7 +55,8 @@ "peerDependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", "date-fns": "^2.25.0 || ^3.2.0", "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", "dayjs": "^1.10.7", @@ -98,6 +98,8 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", + "@mui/material": "^5.16.5", + "@mui/system": "^5.16.7", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", "@types/moment-jalaali": "^0.7.9", diff --git a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx index 8cfd7af3ad1e..bf13515b44c8 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx @@ -1,40 +1,36 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { fireEvent, screen } from '@mui/internal-test-utils'; +import { fireEvent, screen, waitFor } from '@mui/internal-test-utils'; import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; import { PickersDay } from '@mui/x-date-pickers/PickersDay'; import { createPickerRenderer, adapterToUse } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); describe('', () => { - const { render, clock } = createPickerRenderer({ - clock: 'fake', - clockConfig: new Date('2019-01-02'), - }); + const { render } = createPickerRenderer(); - it('switches between views uncontrolled', () => { + it('switches between views uncontrolled', async () => { const handleViewChange = spy(); - render( + const { user } = render( , ); - fireEvent.click(screen.getByLabelText(/switch to year view/i)); + await user.click(screen.getByLabelText(/switch to year view/i)); expect(handleViewChange.callCount).to.equal(1); expect(screen.queryByLabelText(/switch to year view/i)).to.equal(null); expect(screen.getByLabelText('year view is open, switch to calendar view')).toBeVisible(); }); - it('should allow month and view changing, but not selection when readOnly prop is passed', () => { + it('should allow month and view changing, but not selection when readOnly prop is passed', async () => { const onChangeMock = spy(); const onMonthChangeMock = spy(); - render( + const { user } = render( ', () => { />, ); - fireEvent.click(screen.getByTitle('Previous month')); + await user.click(screen.getByTitle('Previous month')); expect(onMonthChangeMock.callCount).to.equal(1); - fireEvent.click(screen.getByTitle('Next month')); + await user.click(screen.getByTitle('Next month')); expect(onMonthChangeMock.callCount).to.equal(2); - clock.runToLast(); + await waitFor(() => expect(screen.getAllByRole('rowgroup').length).to.equal(1)); - fireEvent.click(screen.getByRole('gridcell', { name: '5' })); + await user.click(screen.getByRole('gridcell', { name: '5' })); expect(onChangeMock.callCount).to.equal(0); - fireEvent.click(screen.getByText('January 2019')); + await user.click(screen.getByText('January 2019')); expect(screen.queryByLabelText('year view is open, switch to calendar view')).toBeVisible(); }); - it('should not allow interaction when disabled prop is passed', () => { + it('should not allow interaction when disabled prop is passed', async () => { const onChangeMock = spy(); const onMonthChangeMock = spy(); - render( + const { user } = render( ', () => { />, ); - fireEvent.click(screen.getByText('January 2019')); + await user.click(screen.getByText('January 2019')); expect(screen.queryByText('January 2019')).toBeVisible(); expect(screen.queryByLabelText('year view is open, switch to calendar view')).to.equal(null); - fireEvent.click(screen.getByTitle('Previous month')); + await user.setup({ pointerEventsCheck: 0 }).click(screen.getByTitle('Previous month')); expect(onMonthChangeMock.callCount).to.equal(0); - fireEvent.click(screen.getByTitle('Next month')); + await user.setup({ pointerEventsCheck: 0 }).click(screen.getByTitle('Next month')); expect(onMonthChangeMock.callCount).to.equal(0); - fireEvent.click(screen.getByRole('gridcell', { name: '5' })); + await user.setup({ pointerEventsCheck: 0 }).click(screen.getByRole('gridcell', { name: '5' })); expect(onChangeMock.callCount).to.equal(0); }); @@ -131,28 +127,35 @@ describe('', () => { expect(screen.getAllByRole('rowheader').length).to.equal(5); }); - // test: https://github.com/mui/mui-x/issues/12373 - it('should not reset day to `startOfDay` if value already exists when finding the closest enabled date', () => { - const onChange = spy(); - const defaultDate = adapterToUse.date('2019-01-02T11:12:13.550Z'); - render(); - - fireUserEvent.mousePress( - screen.getByRole('button', { name: 'calendar view is open, switch to year view' }), - ); - fireUserEvent.mousePress(screen.getByRole('radio', { name: '2020' })); + describe('with fake timers', () => { + const { render: renderWithFakeTimers, clock } = createPickerRenderer({ + clock: 'fake', + clockConfig: new Date('2019-01-02'), + }); + // test: https://github.com/mui/mui-x/issues/12373 + it('should not reset day to `startOfDay` if value already exists when finding the closest enabled date', () => { + const onChange = spy(); + const defaultDate = adapterToUse.date('2019-01-02T11:12:13.550Z'); + renderWithFakeTimers( + , + ); - // Finish the transition to the day view - clock.runToLast(); + fireEvent.click( + screen.getByRole('button', { name: 'calendar view is open, switch to year view' }), + ); + fireEvent.click(screen.getByRole('radio', { name: '2020' })); + // Finish the transition to the day view + clock.runToLast(); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); - fireUserEvent.mousePress( - screen.getByRole('button', { name: 'calendar view is open, switch to year view' }), - ); - // select the current year with a date in the past to trigger "findClosestEnabledDate" - fireUserEvent.mousePress(screen.getByRole('radio', { name: '2019' })); + fireEvent.click(screen.getByRole('gridcell', { name: '1' })); + fireEvent.click( + screen.getByRole('button', { name: 'calendar view is open, switch to year view' }), + ); + // select the current year with a date in the past to trigger "findClosestEnabledDate" + fireEvent.click(screen.getByRole('radio', { name: '2019' })); - expect(onChange.lastCall.firstArg).toEqualDateTime(defaultDate); + expect(onChange.lastCall.firstArg).toEqualDateTime(defaultDate); + }); }); describe('Slot: calendarHeader', () => { @@ -182,10 +185,10 @@ describe('', () => { ).to.have.text('1'); }); - it('should use `referenceDate` when no value defined', () => { + it('should use `referenceDate` when no value defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { // should make the reference day firstly focusable expect(screen.getByRole('gridcell', { name: '17' })).to.have.attribute('tabindex', '0'); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + await user.click(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 3, 2, 12, 30)); }); - it('should not use `referenceDate` when a value is defined', () => { + it('should not use `referenceDate` when a value is defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + await user.click(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 0, 2, 12, 20)); }); - it('should not use `referenceDate` when a defaultValue is defined', () => { + it('should not use `referenceDate` when a defaultValue is defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + await user.click(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 0, 2, 12, 20)); }); - it('should keep the time of the currently provided date', () => { + it('should keep the time of the currently provided date', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + await user.click(screen.getByRole('gridcell', { name: '2' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime( adapterToUse.date('2018-01-02T11:11:11.111'), @@ -290,10 +293,10 @@ describe('', () => { }); describe('view: month', () => { - it('should select the closest enabled date in the month if the current date is disabled', () => { + it('should select the closest enabled date in the month if the current date is disabled', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); + await user.click(april); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 3, 6)); }); - it('should respect minDate when selecting closest enabled date', () => { + it('should respect minDate when selecting closest enabled date', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); + await user.click(april); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 3, 7)); }); - it('should respect maxDate when selecting closest enabled date', () => { + it('should respect maxDate when selecting closest enabled date', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); + await user.click(april); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 3, 22)); }); - it('should go to next view without changing the date when no date of the new month is enabled', () => { + it('should go to next view without changing the date when no date of the new month is enabled', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); - clock.runToLast(); + await user.click(april); expect(onChange.callCount).to.equal(0); expect(screen.getByMuiTest('calendar-month-and-year-text')).to.have.text('April 2019'); }); - it('should use `referenceDate` when no value defined', () => { + it('should use `referenceDate` when no value defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); + await user.click(april); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2018, 3, 1, 12, 30)); }); - it('should not use `referenceDate` when a value is defined', () => { + it('should not use `referenceDate` when a value is defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); + await user.click(april); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 3, 1, 12, 20)); }); - it('should not use `referenceDate` when a defaultValue is defined', () => { + it('should not use `referenceDate` when a defaultValue is defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const april = screen.getByText('Apr', { selector: 'button' }); - fireEvent.click(april); + await user.click(april); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2019, 3, 1, 12, 20)); @@ -440,10 +442,10 @@ describe('', () => { expect(screen.getAllByMuiTest('year')).to.have.length(200); }); - it('should select the closest enabled date in the month if the current date is disabled', () => { + it('should select the closest enabled date in the month if the current date is disabled', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2022 = screen.getByText('2022', { selector: 'button' }); - fireEvent.click(year2022); + await user.click(year2022); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 4, 1)); }); - it('should respect minDate when selecting closest enabled date', () => { + it('should respect minDate when selecting closest enabled date', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2017 = screen.getByText('2017', { selector: 'button' }); - fireEvent.click(year2017); + await user.click(year2017); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2017, 4, 12)); }); - it('should respect maxDate when selecting closest enabled date', () => { + it('should respect maxDate when selecting closest enabled date', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2022 = screen.getByText('2022', { selector: 'button' }); - fireEvent.click(year2022); + await user.click(year2022); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 2, 31)); }); - it('should go to next view without changing the date when no date of the new year is enabled', () => { + it('should go to next view without changing the date when no date of the new year is enabled', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2022 = screen.getByText('2022', { selector: 'button' }); - fireEvent.click(year2022); - clock.runToLast(); + await user.click(year2022); expect(onChange.callCount).to.equal(0); expect(screen.getByMuiTest('calendar-month-and-year-text')).to.have.text('January 2022'); @@ -548,10 +549,10 @@ describe('', () => { expect(parentBoundingBox.bottom).not.to.lessThan(buttonBoundingBox.bottom); }); - it('should use `referenceDate` when no value defined', () => { + it('should use `referenceDate` when no value defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2022 = screen.getByText('2022', { selector: 'button' }); - fireEvent.click(year2022); + await user.click(year2022); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 0, 1, 12, 30)); }); - it('should not use `referenceDate` when a value is defined', () => { + it('should not use `referenceDate` when a value is defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2022 = screen.getByText('2022', { selector: 'button' }); - fireEvent.click(year2022); + await user.click(year2022); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 0, 1, 12, 20)); }); - it('should not use `referenceDate` when a defaultValue is defined', () => { + it('should not use `referenceDate` when a defaultValue is defined', async () => { const onChange = spy(); - render( + const { user } = render( ', () => { ); const year2022 = screen.getByText('2022', { selector: 'button' }); - fireEvent.click(year2022); + await user.click(year2022); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.firstArg).toEqualDateTime(new Date(2022, 0, 1, 12, 20)); @@ -621,7 +622,7 @@ describe('', () => { ); const renderCountBeforeChange = RenderCount.callCount; - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireEvent.click(screen.getByRole('gridcell', { name: '2' })); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(2); // 2 render * 1 day }); @@ -638,7 +639,7 @@ describe('', () => { ); const renderCountBeforeChange = RenderCount.callCount; - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); + fireEvent.click(screen.getByRole('gridcell', { name: '2' })); expect(RenderCount.callCount - renderCountBeforeChange).to.equal(4); // 2 render * 2 days }); }); diff --git a/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx index d3ab8212f0d7..248fbb6e620e 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/describes.DateCalendar.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { DateCalendar, dateCalendarClasses as classes } from '@mui/x-date-pickers/DateCalendar'; import { pickersDayClasses } from '@mui/x-date-pickers/PickersDay'; import { @@ -10,7 +10,6 @@ import { describeValue, } from 'test/utils/pickers'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -48,7 +47,7 @@ describe(' - Describes', () => { }, setNewValue: (value) => { const newValue = adapterToUse.addDays(value, 1); - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); diff --git a/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx index 795a3bf042af..b6f1ef24905b 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/timezone.DateCalendar.test.tsx @@ -1,9 +1,8 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { describeAdapters } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; const TIMEZONE_TO_TEST = ['UTC', 'system', 'America/New_York']; @@ -18,7 +17,7 @@ describe(' - Timezone', () => { const onChange = spy(); render(); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); + fireEvent.click(screen.getByRole('gridcell', { name: '25' })); const expectedDate = adapter.setDate(adapter.date(undefined, 'default'), 25); // Check the `onChange` value (uses default timezone, e.g: UTC, see TZ env variable) @@ -35,7 +34,7 @@ describe(' - Timezone', () => { it('should use timezone prop for onChange when no value is provided', () => { const onChange = spy(); render(); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); + fireEvent.click(screen.getByRole('gridcell', { name: '25' })); const expectedDate = adapter.setDate( adapter.startOfDay(adapter.date(undefined, timezone)), 25, @@ -53,7 +52,7 @@ describe(' - Timezone', () => { render(); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '25' })); + fireEvent.click(screen.getByRole('gridcell', { name: '25' })); const expectedDate = adapter.setDate(value, 25); // Check the `onChange` value (uses timezone prop) diff --git a/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx b/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx index 4078e7548eb3..5d90362ce078 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/tests/DesktopDatePicker.test.tsx @@ -6,7 +6,6 @@ import { inputBaseClasses } from '@mui/material/InputBase'; import { fireEvent, screen } from '@mui/internal-test-utils'; import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; import { createPickerRenderer, adapterToUse, openPicker } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -47,7 +46,8 @@ describe('', () => { expect(handleViewChange.callCount).to.equal(1); // Dismiss the picker - fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); + // eslint-disable-next-line material-ui/disallow-active-element-as-key-event-target + fireEvent.keyDown(document.activeElement!, { key: 'Escape' }); openPicker({ type: 'date', variant: 'desktop' }); expect(handleViewChange.callCount).to.equal(2); @@ -72,7 +72,8 @@ describe('', () => { expect(handleViewChange.callCount).to.equal(1); // Dismiss the picker - fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); + // eslint-disable-next-line material-ui/disallow-active-element-as-key-event-target + fireEvent.keyDown(document.activeElement!, { key: 'Escape' }); openPicker({ type: 'date', variant: 'desktop' }); expect(handleViewChange.callCount).to.equal(2); @@ -89,7 +90,8 @@ describe('', () => { expect(screen.getByRole('radio', { checked: true, name: '2018' })).not.to.equal(null); // Dismiss the picker - fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); + // eslint-disable-next-line material-ui/disallow-active-element-as-key-event-target + fireEvent.keyDown(document.activeElement!, { key: 'Escape' }); setProps({ views: ['month', 'year'] }); openPicker({ type: 'date', variant: 'desktop' }); // wait for all pending changes to be flushed @@ -126,7 +128,8 @@ describe('', () => { expect(screen.getByRole('radio', { checked: true, name: 'January' })).not.to.equal(null); // Dismiss the picker - fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); + // eslint-disable-next-line material-ui/disallow-active-element-as-key-event-target + fireEvent.keyDown(document.activeElement!, { key: 'Escape' }); setProps({ view: 'year' }); openPicker({ type: 'date', variant: 'desktop' }); // wait for all pending changes to be flushed @@ -221,7 +224,7 @@ describe('', () => { render(); - fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); + fireEvent.click(screen.getByLabelText(/Choose date/)); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); @@ -245,14 +248,14 @@ describe('', () => { openPicker({ type: 'date', variant: 'desktop' }); // Select year - fireUserEvent.mousePress(screen.getByRole('radio', { name: '2025' })); + fireEvent.click(screen.getByRole('radio', { name: '2025' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2025, 0, 1)); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the date (same value) - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); + fireEvent.click(screen.getByRole('gridcell', { name: '1' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2025, 0, 1)); diff --git a/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx b/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx index 782794ba18eb..5c56072e2b19 100644 --- a/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDatePicker/tests/describes.DesktopDatePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -11,7 +11,6 @@ import { } from 'test/utils/pickers'; import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -63,7 +62,7 @@ describe(' - Describes', () => { const newValue = applySameValue ? value : adapterToUse.addDays(value, 1); if (isOpened) { - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); } else { diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx index fbaa72781475..c298769075bb 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/DesktopDateTimePicker.test.tsx @@ -4,32 +4,28 @@ import { spy } from 'sinon'; import { screen } from '@mui/internal-test-utils'; import { DesktopDateTimePicker } from '@mui/x-date-pickers/DesktopDateTimePicker'; import { adapterToUse, createPickerRenderer, openPicker } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { - const { render } = createPickerRenderer({ - clock: 'fake', - clockConfig: new Date('2018-01-01T10:05:05.000'), - }); + const { render } = createPickerRenderer(); describe('picker state', () => { - it('should open when clicking "Choose date"', () => { + it('should open when clicking "Choose date"', async () => { const onOpen = spy(); - render(); + const { user } = render(); - fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); + await user.click(screen.getByLabelText(/Choose date/)); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); }); - it('should call onAccept when selecting the same date and time after changing the year', () => { + it('should call onAccept when selecting the same date and time after changing the year', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render( + const { user } = render( ', () => { />, ); - openPicker({ type: 'date-time', variant: 'desktop' }); + await openPicker({ type: 'date-time', variant: 'desktop', click: user.click }); // Select year - fireUserEvent.mousePress(screen.getByRole('radio', { name: '2025' })); + await user.click(screen.getByRole('radio', { name: '2025' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2025, 0, 1, 11, 55)); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the date (same value) - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '1' })); + await user.click(screen.getByRole('gridcell', { name: '1' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change // Change the hours (same value) - fireUserEvent.mousePress(screen.getByRole('option', { name: '11 hours' })); + await user.click(screen.getByRole('option', { name: '11 hours' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change // Change the minutes (same value) - fireUserEvent.mousePress(screen.getByRole('option', { name: '55 minutes' })); + await user.click(screen.getByRole('option', { name: '55 minutes' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change // Change the meridiem (same value) - fireUserEvent.mousePress(screen.getByRole('option', { name: 'AM' })); + await user.click(screen.getByRole('option', { name: 'AM' })); expect(onChange.callCount).to.equal(1); // Don't call onChange again since the value did not change expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); }); }); - it('should allow selecting same view multiple times', () => { + it('should allow selecting same view multiple times', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render( + const { user } = render( ', () => { />, ); - openPicker({ type: 'date-time', variant: 'desktop' }); + await openPicker({ type: 'date-time', variant: 'desktop', click: user.click }); // Change the date multiple times to check that picker doesn't close after cycling through all views internally - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '3' })); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '4' })); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '5' })); + await user.click(screen.getByRole('gridcell', { name: '2' })); + await user.click(screen.getByRole('gridcell', { name: '3' })); + await user.click(screen.getByRole('gridcell', { name: '4' })); + await user.click(screen.getByRole('gridcell', { name: '5' })); expect(onChange.callCount).to.equal(4); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the hours - fireUserEvent.mousePress(screen.getByRole('option', { name: '10 hours' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: '9 hours' })); + await user.click(screen.getByRole('option', { name: '10 hours' })); + await user.click(screen.getByRole('option', { name: '9 hours' })); expect(onChange.callCount).to.equal(6); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); // Change the minutes - fireUserEvent.mousePress(screen.getByRole('option', { name: '50 minutes' })); + await user.click(screen.getByRole('option', { name: '50 minutes' })); expect(onChange.callCount).to.equal(7); // Change the meridiem - fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + await user.click(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(8); expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); }); describe('prop: timeSteps', () => { - it('should use "DigitalClock" view renderer, when "timeSteps.minutes" = 60', () => { + it('should use "DigitalClock" view renderer, when "timeSteps.minutes" = 60', async () => { const onChange = spy(); const onAccept = spy(); - render( + const { user } = render( , ); - fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); + await user.click(screen.getByLabelText(/Choose date/)); - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '2' })); - fireUserEvent.mousePress(screen.getByRole('option', { name: '03:00 AM' })); + await user.click(screen.getByRole('gridcell', { name: '2' })); + await user.click(screen.getByRole('option', { name: '03:00 AM' })); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 2, 3, 0, 0)); expect(onAccept.callCount).to.equal(1); }); - it('should accept value and close picker when selecting time on "DigitalClock" view renderer', () => { + it('should accept value and close picker when selecting time on "DigitalClock" view renderer', async () => { const onChange = spy(); const onAccept = spy(); - render( + const { user } = render( , ); - fireUserEvent.mousePress(screen.getByLabelText(/Choose date/)); + await user.click(screen.getByLabelText(/Choose date/)); - fireUserEvent.mousePress(screen.getByRole('option', { name: '03:00 AM' })); + await user.click(screen.getByRole('option', { name: '03:00 AM' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 3, 0, 0)); diff --git a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx index dc66bec63c58..c59e43a86486 100644 --- a/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopDateTimePicker/tests/describes.DesktopDateTimePicker.test.tsx @@ -1,4 +1,4 @@ -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -12,7 +12,6 @@ import { DesktopDateTimePicker } from '@mui/x-date-pickers/DesktopDateTimePicker import { expect } from 'chai'; import * as React from 'react'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -85,24 +84,20 @@ describe(' - Describes', () => { : adapterToUse.addMinutes(adapterToUse.addHours(adapterToUse.addDays(value, 1), 1), 5); if (isOpened) { - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); const hasMeridiem = adapterToUse.is12HourCycleInCurrentLocale(); const hours = adapterToUse.format(newValue, hasMeridiem ? 'hours12h' : 'hours24h'); const hoursNumber = adapterToUse.getHours(newValue); - fireUserEvent.mousePress( - screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), - ); - fireUserEvent.mousePress( + fireEvent.click(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); + fireEvent.click( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue)} minutes` }), ); if (hasMeridiem) { // meridiem is an extra view on `DesktopDateTimePicker` // we need to click it to finish selection - fireUserEvent.mousePress( - screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), - ); + fireEvent.click(screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' })); } } else { selectSection('day'); diff --git a/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx index b60fa37d20fb..28663c2a7557 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/tests/DesktopTimePicker.test.tsx @@ -3,16 +3,15 @@ import { expect } from 'chai'; import { spy } from 'sinon'; import { screen } from '@mui/internal-test-utils'; import { DesktopTimePicker } from '@mui/x-date-pickers/DesktopTimePicker'; -import { createPickerRenderer, openPicker } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; +import { adapterToUse, createPickerRenderer, openPicker } from 'test/utils/pickers'; describe('', () => { - const { render } = createPickerRenderer({ - clock: 'fake', - clockConfig: new Date('2018-01-01T10:05:05.000'), - }); - describe('rendering behavior', () => { + const { render } = createPickerRenderer({ + clock: 'fake', + clockConfig: new Date('2018-01-01T10:05:05.000'), + }); + it('should render "accept" action and 3 time sections by default', () => { render(); @@ -61,23 +60,26 @@ describe('', () => { }); describe('selecting behavior', () => { - it('should call "onAccept", "onChange", and "onClose" when selecting a single option', () => { + const { render } = createPickerRenderer(); + + it('should call "onAccept", "onChange", and "onClose" when selecting a single option', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render( + const { user } = render( , ); - openPicker({ type: 'time', variant: 'desktop' }); + await openPicker({ type: 'time', variant: 'desktop', click: user.click }); - fireUserEvent.mousePress(screen.getByRole('option', { name: '09:00 AM' })); + await user.click(screen.getByRole('option', { name: '09:00 AM' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 9, 0)); expect(onAccept.callCount).to.equal(1); @@ -85,73 +87,94 @@ describe('', () => { expect(onClose.callCount).to.equal(1); }); - it('should call "onAccept", "onChange", and "onClose" when selecting all section', () => { + it('should call "onAccept", "onChange", and "onClose" when selecting all section', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render(); + const { user } = render( + , + ); - openPicker({ type: 'time', variant: 'desktop' }); + await openPicker({ type: 'time', variant: 'desktop', click: user.click }); - fireUserEvent.mousePress(screen.getByRole('option', { name: '2 hours' })); + await user.click(screen.getByRole('option', { name: '2 hours' })); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - fireUserEvent.mousePress(screen.getByRole('option', { name: '15 minutes' })); + await user.click(screen.getByRole('option', { name: '15 minutes' })); expect(onChange.callCount).to.equal(2); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + await user.click(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(3); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 14, 15)); expect(onClose.callCount).to.equal(1); }); - it('should allow out of order section selection', () => { + it('should allow out of order section selection', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render(); + const { user } = render( + , + ); - openPicker({ type: 'time', variant: 'desktop' }); + await openPicker({ type: 'time', variant: 'desktop', click: user.click }); - fireUserEvent.mousePress(screen.getByRole('option', { name: '15 minutes' })); + await user.click(screen.getByRole('option', { name: '15 minutes' })); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - fireUserEvent.mousePress(screen.getByRole('option', { name: '2 hours' })); + await user.click(screen.getByRole('option', { name: '2 hours' })); expect(onChange.callCount).to.equal(2); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - fireUserEvent.mousePress(screen.getByRole('option', { name: '25 minutes' })); + await user.click(screen.getByRole('option', { name: '25 minutes' })); expect(onChange.callCount).to.equal(3); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); - fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + await user.click(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(4); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 14, 25)); expect(onClose.callCount).to.equal(1); }); - it('should finish selection when selecting only the last section', () => { + it('should finish selection when selecting only the last section', async () => { const onChange = spy(); const onAccept = spy(); const onClose = spy(); - render(); + const { user } = render( + , + ); - openPicker({ type: 'time', variant: 'desktop' }); + await openPicker({ type: 'time', variant: 'desktop', click: user.click }); - fireUserEvent.mousePress(screen.getByRole('option', { name: 'PM' })); + await user.click(screen.getByRole('option', { name: 'PM' })); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(1); expect(onAccept.lastCall.args[0]).toEqualDateTime(new Date(2018, 0, 1, 12, 0)); diff --git a/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx b/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx index 2fe4730f6fd1..7d4652b6c4df 100644 --- a/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx +++ b/packages/x-date-pickers/src/DesktopTimePicker/tests/describes.DesktopTimePicker.test.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -12,7 +12,6 @@ import { } from 'test/utils/pickers'; import { DesktopTimePicker } from '@mui/x-date-pickers/DesktopTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -77,18 +76,14 @@ describe(' - Describes', () => { const hasMeridiem = adapterToUse.is12HourCycleInCurrentLocale(); const hours = adapterToUse.format(newValue, hasMeridiem ? 'hours12h' : 'hours24h'); const hoursNumber = adapterToUse.getHours(newValue); - fireUserEvent.mousePress( - screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` }), - ); - fireUserEvent.mousePress( + fireEvent.click(screen.getByRole('option', { name: `${parseInt(hours, 10)} hours` })); + fireEvent.click( screen.getByRole('option', { name: `${adapterToUse.getMinutes(newValue)} minutes` }), ); if (hasMeridiem) { // meridiem is an extra view on `DesktopTimePicker` // we need to click it to finish selection - fireUserEvent.mousePress( - screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' }), - ); + fireEvent.click(screen.getByRole('option', { name: hoursNumber >= 12 ? 'PM' : 'AM' })); } } else { selectSection('hours'); diff --git a/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx b/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx index 070c9b9243f5..5d7a0aa650d8 100644 --- a/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx +++ b/packages/x-date-pickers/src/DigitalClock/tests/timezone.DigitalClock.test.tsx @@ -1,10 +1,9 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { DigitalClock } from '@mui/x-date-pickers/DigitalClock'; import { getDateOffset, describeAdapters } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; const TIMEZONE_TO_TEST = ['UTC', 'system', 'America/New_York']; @@ -26,7 +25,7 @@ describe(' - Timezone', () => { const onChange = spy(); render(); - fireUserEvent.mousePress(screen.getByRole('option', { name: '08:00 AM' })); + fireEvent.click(screen.getByRole('option', { name: '08:00 AM' })); const expectedDate = adapter.setHours(adapter.date(), 8); @@ -45,7 +44,7 @@ describe(' - Timezone', () => { const onChange = spy(); render(); - fireUserEvent.mousePress(screen.getByRole('option', { name: '08:00 AM' })); + fireEvent.click(screen.getByRole('option', { name: '08:00 AM' })); const expectedDate = adapter.setHours( adapter.startOfDay(adapter.date(undefined, timezone)), @@ -76,7 +75,7 @@ describe(' - Timezone', () => { (adapter.getHours(value) + offsetDiff / 60 + 24) % 24, ); - fireUserEvent.mousePress(screen.getByRole('option', { name: '08:30 PM' })); + fireEvent.click(screen.getByRole('option', { name: '08:30 PM' })); const actualDate = onChange.lastCall.firstArg; diff --git a/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx b/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx index 3dc67b806538..8491613b2622 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/tests/MobileDatePicker.test.tsx @@ -13,7 +13,6 @@ import { openPicker, getFieldSectionsContainer, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -156,7 +155,7 @@ describe('', () => { render(); - fireUserEvent.mousePress(getFieldSectionsContainer()); + fireEvent.click(getFieldSectionsContainer()); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); diff --git a/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx b/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx index b988c49e5827..431e6682e182 100644 --- a/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDatePicker/tests/describes.MobileDatePicker.test.tsx @@ -12,7 +12,6 @@ import { } from 'test/utils/pickers'; import { MobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -65,7 +64,7 @@ describe(' - Describes', () => { } const newValue = applySameValue ? value : adapterToUse.addDays(value, 1); - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx index 34849b1b5dc0..1e21c3dbc935 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/tests/MobileDateTimePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; +import { fireEvent, fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; import { MobileDateTimePicker } from '@mui/x-date-pickers/MobileDateTimePicker'; import { adapterToUse, @@ -10,7 +10,6 @@ import { getClockTouchEvent, getFieldSectionsContainer, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -99,7 +98,7 @@ describe('', () => { render(); - fireUserEvent.mousePress(getFieldSectionsContainer()); + fireEvent.click(getFieldSectionsContainer()); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); @@ -132,8 +131,8 @@ describe('', () => { expect(onClose.callCount).to.equal(0); // Change the year view - fireUserEvent.mousePress(screen.getByLabelText(/switch to year view/)); - fireUserEvent.mousePress(screen.getByText('2010', { selector: 'button' })); + fireEvent.click(screen.getByLabelText(/switch to year view/)); + fireEvent.click(screen.getByText('2010', { selector: 'button' })); expect(onChange.callCount).to.equal(1); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2010, 0, 1)); @@ -141,7 +140,7 @@ describe('', () => { clock.runToLast(); // Change the date - fireUserEvent.mousePress(screen.getByRole('gridcell', { name: '15' })); + fireEvent.click(screen.getByRole('gridcell', { name: '15' })); expect(onChange.callCount).to.equal(2); expect(onChange.lastCall.args[0]).toEqualDateTime(new Date(2010, 0, 15)); diff --git a/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx b/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx index 7db743bb1c2e..49ebb8d55837 100644 --- a/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileDateTimePicker/tests/describes.MobileDateTimePicker.test.tsx @@ -13,7 +13,6 @@ import { } from 'test/utils/pickers'; import { MobileDateTimePicker } from '@mui/x-date-pickers/MobileDateTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -79,7 +78,7 @@ describe(' - Describes', () => { const newValue = applySameValue ? value : adapterToUse.addMinutes(adapterToUse.addHours(adapterToUse.addDays(value, 1), 1), 5); - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('gridcell', { name: adapterToUse.getDate(newValue).toString() }), ); const hasMeridiem = adapterToUse.is12HourCycleInCurrentLocale(); @@ -98,9 +97,7 @@ describe(' - Describes', () => { if (hasMeridiem) { const newHours = adapterToUse.getHours(newValue); // select appropriate meridiem - fireUserEvent.mousePress( - screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' }), - ); + fireEvent.click(screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' })); } // Close the picker @@ -110,7 +107,7 @@ describe(' - Describes', () => { clock.runToLast(); } else { // return to the date view in case we'd like to repeat the selection process - fireUserEvent.mousePress(screen.getByRole('tab', { name: 'pick date' })); + fireEvent.click(screen.getByRole('tab', { name: 'pick date' })); } return newValue; diff --git a/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx b/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx index 16e28b5b3c29..62d073d3c10c 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/tests/MobileTimePicker.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { spy } from 'sinon'; import { expect } from 'chai'; -import { fireTouchChangedEvent, screen, act } from '@mui/internal-test-utils'; +import { fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; import { MobileTimePicker } from '@mui/x-date-pickers/MobileTimePicker'; import { createPickerRenderer, @@ -10,26 +10,27 @@ import { getClockTouchEvent, getFieldSectionsContainer, } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { - const { render } = createPickerRenderer({ clock: 'fake' }); + const { render } = createPickerRenderer(); describe('picker state', () => { - it('should open when clicking the input', () => { + it('should open when clicking the input', async () => { const onOpen = spy(); - render(); + const { user } = render( + , + ); - fireUserEvent.mousePress(getFieldSectionsContainer()); + await user.click(getFieldSectionsContainer()); expect(onOpen.callCount).to.equal(1); expect(screen.queryByRole('dialog')).toBeVisible(); }); - it('should fire a change event when meridiem changes', () => { + it('should fire a change event when meridiem changes', async () => { const handleChange = spy(); - render( + const { user } = render( ', () => { ); const buttonPM = screen.getByRole('button', { name: 'PM' }); - act(() => { - buttonPM.click(); - }); + await user.click(buttonPM); expect(handleChange.callCount).to.equal(1); expect(handleChange.firstCall.args[0]).toEqualDateTime(new Date(2019, 0, 1, 16, 20)); }); - it('should call onChange when selecting each view', function test() { + it('should call onChange when selecting each view', async function test() { if (typeof window.Touch === 'undefined' || typeof window.TouchEvent === 'undefined') { this.skip(); } @@ -59,7 +58,7 @@ describe('', () => { const onClose = spy(); const defaultValue = adapterToUse.date('2018-01-01'); - render( + const { user } = render( ', () => { />, ); - openPicker({ type: 'time', variant: 'mobile' }); + await openPicker({ type: 'time', variant: 'mobile', click: user.click }); // Change the hours const hourClockEvent = getClockTouchEvent(11, '12hours'); diff --git a/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx b/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx index 8a694129a784..b3fa12461d7b 100644 --- a/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx +++ b/packages/x-date-pickers/src/MobileTimePicker/tests/describes.MobileTimePicker.test.tsx @@ -14,7 +14,6 @@ import { } from 'test/utils/pickers'; import { MobileTimePicker } from '@mui/x-date-pickers/MobileTimePicker'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -93,9 +92,7 @@ describe(' - Describes', () => { if (hasMeridiem) { const newHours = adapterToUse.getHours(newValue); // select appropriate meridiem - fireUserEvent.mousePress( - screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' }), - ); + fireEvent.click(screen.getByRole('button', { name: newHours >= 12 ? 'PM' : 'AM' })); } // Close the picker @@ -105,7 +102,7 @@ describe(' - Describes', () => { clock.runToLast(); } else { // return to the hours view in case we'd like to repeat the selection process - fireUserEvent.mousePress(screen.getByRole('button', { name: 'Open previous view' })); + fireEvent.click(screen.getByRole('button', { name: 'Open previous view' })); } return newValue; diff --git a/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx b/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx index ef370265decd..2f289f70a552 100644 --- a/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx +++ b/packages/x-date-pickers/src/MonthCalendar/tests/describes.MonthCalendar.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { createPickerRenderer, adapterToUse, @@ -9,7 +9,6 @@ import { } from 'test/utils/pickers'; import { MonthCalendar, monthCalendarClasses as classes } from '@mui/x-date-pickers/MonthCalendar'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ clock: 'fake' }); @@ -55,9 +54,7 @@ describe(' - Describes', () => { setNewValue: (value) => { const newValue = adapterToUse.addMonths(value, 1); - fireUserEvent.mousePress( - screen.getByRole('radio', { name: adapterToUse.format(newValue, 'month') }), - ); + fireEvent.click(screen.getByRole('radio', { name: adapterToUse.format(newValue, 'month') })); return newValue; }, diff --git a/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx b/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx index 465baad26cee..58d3b35893ac 100644 --- a/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx +++ b/packages/x-date-pickers/src/PickersActionBar/PickersActionBar.test.tsx @@ -4,12 +4,9 @@ import { spy } from 'sinon'; import { screen } from '@mui/internal-test-utils'; import { PickersActionBar } from '@mui/x-date-pickers/PickersActionBar'; import { createPickerRenderer } from 'test/utils/pickers'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe('', () => { - const { render } = createPickerRenderer({ - clock: 'fake', - }); + const { render } = createPickerRenderer(); it('should not render buttons if actions array is empty', () => { const onAccept = () => {}; @@ -29,13 +26,13 @@ describe('', () => { expect(screen.queryByRole('button')).to.equal(null); }); - it('should render button for "clear" action calling the associated callback', () => { + it('should render button for "clear" action calling the associated callback', async () => { const onAccept = spy(); const onClear = spy(); const onCancel = spy(); const onSetToday = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByText(/clear/i)); + await user.click(screen.getByText(/clear/i)); expect(onClear.callCount).to.equal(1); }); - it('should render button for "cancel" action calling the associated callback', () => { + it('should render button for "cancel" action calling the associated callback', async () => { const onAccept = spy(); const onClear = spy(); const onCancel = spy(); const onSetToday = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByText(/cancel/i)); + await user.click(screen.getByText(/cancel/i)); expect(onCancel.callCount).to.equal(1); }); - it('should render button for "accept" action calling the associated callback', () => { + it('should render button for "accept" action calling the associated callback', async () => { const onAccept = spy(); const onClear = spy(); const onCancel = spy(); const onSetToday = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByText(/ok/i)); + await user.click(screen.getByText(/ok/i)); expect(onAccept.callCount).to.equal(1); }); - it('should render button for "today" action calling the associated callback', () => { + it('should render button for "today" action calling the associated callback', async () => { const onAccept = spy(); const onClear = spy(); const onCancel = spy(); const onSetToday = spy(); - render( + const { user } = render( ', () => { />, ); - fireUserEvent.mousePress(screen.getByText(/today/i)); + await user.click(screen.getByText(/today/i)); expect(onSetToday.callCount).to.equal(1); }); diff --git a/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx b/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx index 87eeb7fee9f4..06c4de6035f4 100644 --- a/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx +++ b/packages/x-date-pickers/src/YearCalendar/tests/describes.YearCalendar.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { YearCalendar, yearCalendarClasses as classes } from '@mui/x-date-pickers/YearCalendar'; import { createPickerRenderer, @@ -9,7 +9,6 @@ import { describeValue, } from 'test/utils/pickers'; import { describeConformance } from 'test/utils/describeConformance'; -import { fireUserEvent } from 'test/utils/fireUserEvent'; describe(' - Describes', () => { const { render, clock } = createPickerRenderer({ @@ -52,7 +51,7 @@ describe(' - Describes', () => { }, setNewValue: (value) => { const newValue = adapterToUse.addYears(value, 1); - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('radio', { name: adapterToUse.getYear(newValue).toString() }), ); diff --git a/packages/x-date-pickers/src/tests/materialVersion.test.tsx b/packages/x-date-pickers/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-date-pickers/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 5db48bc3e193..02c6ae99d1a9 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -44,7 +44,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.4", - "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "@mui/x-license": "workspace:*", @@ -57,7 +56,8 @@ "peerDependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, @@ -71,6 +71,8 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", + "@mui/material": "^5.16.5", + "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-tree-view-pro/src/tests/materialVersion.test.tsx b/packages/x-tree-view-pro/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-tree-view-pro/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 520e0c882539..a3b4f8ebc43e 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -44,7 +44,6 @@ }, "dependencies": { "@babel/runtime": "^7.25.4", - "@mui/system": "^5.16.7", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "@types/react-transition-group": "^4.4.11", @@ -55,7 +54,8 @@ "peerDependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@mui/material": "^5.15.14", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" }, @@ -69,6 +69,8 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", + "@mui/material": "^5.16.5", + "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" }, diff --git a/packages/x-tree-view/src/tests/materialVersion.test.tsx b/packages/x-tree-view/src/tests/materialVersion.test.tsx new file mode 100644 index 000000000000..dc0c0a7e6ee0 --- /dev/null +++ b/packages/x-tree-view/src/tests/materialVersion.test.tsx @@ -0,0 +1,5 @@ +import materialPackageJson from '@mui/material/package.json'; +import { checkMaterialVersion } from 'test/utils/checkMaterialVersion'; +import packageJson from '../../package.json'; + +checkMaterialVersion({ packageJson, materialPackageJson }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3150f4133589..a377b74e87df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -717,12 +717,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -751,6 +745,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -779,12 +779,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -816,6 +810,12 @@ importers: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1(react@18.3.1) devDependencies: + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@react-spring/core': specifier: ^9.7.4 version: 9.7.4(react@18.3.1) @@ -961,12 +961,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -995,6 +989,12 @@ importers: '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/types': specifier: ^7.2.15 version: 7.2.15(@types/react@18.3.4) @@ -1017,12 +1017,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/icons-material': - specifier: ^5.4.1 - version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-data-grid-premium': specifier: workspace:* version: link:../x-data-grid-premium/build @@ -1039,6 +1033,12 @@ importers: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1 devDependencies: + '@mui/icons-material': + specifier: ^5.16.5 + version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/chance': specifier: ^1.1.6 version: 1.1.6 @@ -1058,12 +1058,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1104,6 +1098,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1126,12 +1126,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1166,6 +1160,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1185,12 +1185,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1216,6 +1210,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1268,12 +1268,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1308,6 +1302,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/luxon': specifier: ^3.4.2 version: 3.4.2 @@ -1385,12 +1385,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1419,6 +1413,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1438,12 +1438,6 @@ importers: '@emotion/styled': specifier: ^11.8.1 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) - '@mui/material': - specifier: ^5.15.14 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': - specifier: ^5.16.7 - version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1478,6 +1472,12 @@ importers: '@mui/internal-test-utils': specifier: ^1.0.10 version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': + specifier: ^5.16.5 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': + specifier: ^5.16.7 + version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/prop-types': specifier: ^15.7.12 version: 15.7.12 @@ -1545,6 +1545,9 @@ importers: '@types/react': specifier: ^18.3.4 version: 18.3.4 + '@types/semver': + specifier: ^7.5.8 + version: 7.5.8 chai: specifier: ^4.5.0 version: 4.5.0 @@ -1569,6 +1572,9 @@ importers: react-router-dom: specifier: ^6.26.1 version: 6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + semver: + specifier: ^7.6.3 + version: 7.6.3 stylis: specifier: ^4.3.2 version: 4.3.2 @@ -3031,8 +3037,8 @@ packages: '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -3045,7 +3051,7 @@ packages: resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 + '@types/react': 18.3.3 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -5038,8 +5044,8 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chownr@2.0.0: @@ -7546,8 +7552,8 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} make-array@1.0.5: resolution: {integrity: sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA==} @@ -8341,8 +8347,8 @@ packages: path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} @@ -10312,7 +10318,7 @@ snapshots: slash: 2.0.0 optionalDependencies: '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 + chokidar: 3.6.0 '@babel/code-frame@7.24.7': dependencies: @@ -11714,7 +11720,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.1': {} @@ -11726,12 +11732,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@lerna/create@8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': dependencies: @@ -12771,7 +12777,7 @@ snapshots: '@types/tsscmp': 1.0.2 axios: 1.7.4(debug@4.3.6) express: 4.18.2 - path-to-regexp: 6.2.1 + path-to-regexp: 6.2.2 please-upgrade-node: 3.2.0 promise.allsettled: 1.0.7 raw-body: 2.5.2 @@ -13364,7 +13370,7 @@ snapshots: '@vitest/snapshot@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 - magic-string: 0.30.10 + magic-string: 0.30.11 pathe: 1.1.2 '@vitest/spy@2.0.5': @@ -14214,7 +14220,7 @@ snapshots: check-error@2.1.1: {} - chokidar@3.5.3: + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -16936,7 +16942,7 @@ snapshots: '@colors/colors': 1.5.0 body-parser: 1.20.2 braces: 3.0.3 - chokidar: 3.5.3 + chokidar: 3.6.0 connect: 3.7.0 di: 0.0.1 dom-serialize: 2.2.1 @@ -17283,9 +17289,9 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.10: + magic-string@0.30.11: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 make-array@1.0.5: {} @@ -17534,7 +17540,7 @@ snapshots: dependencies: ansi-colors: 4.1.3 browser-stdout: 1.3.1 - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.6(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 @@ -17648,7 +17654,7 @@ snapshots: '@sinonjs/fake-timers': 11.2.2 '@sinonjs/text-encoding': 0.7.2 just-extend: 6.2.0 - path-to-regexp: 6.2.1 + path-to-regexp: 6.2.2 no-case@3.0.4: dependencies: @@ -18237,7 +18243,7 @@ snapshots: path-to-regexp@2.2.1: {} - path-to-regexp@6.2.1: {} + path-to-regexp@6.2.2: {} path-type@3.0.0: dependencies: @@ -19856,7 +19862,7 @@ snapshots: chai: 5.1.1 debug: 4.3.6(supports-color@8.1.1) execa: 8.0.1 - magic-string: 0.30.10 + magic-string: 0.30.11 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.8.0 diff --git a/scripts/useMaterialUIv6.mjs b/scripts/useMaterialUIv6.mjs new file mode 100644 index 000000000000..d6d0c4b4966a --- /dev/null +++ b/scripts/useMaterialUIv6.mjs @@ -0,0 +1,12 @@ +import childProcess from 'child_process'; + +const pnpmUpdate = childProcess.spawnSync( + 'pnpm', + ['update', '-r', '@mui/material@6.x', '@mui/system@6.x', '@mui/icons-material@6.x'], + { + shell: true, + stdio: ['inherit', 'inherit', 'inherit'], + }, +); + +process.exit(pnpmUpdate.status); diff --git a/test/README.md b/test/README.md index f2cf5858e304..1b571acc841d 100644 --- a/test/README.md +++ b/test/README.md @@ -2,17 +2,15 @@ ## Testing multiple versions of React -You can check integration of different versions of React (for example different [release channels](https://react.dev/community/versioning-policy) or PRs to React) by running the following commands: +You can check integration of different versions of React (for example different [release channels](https://react.dev/community/versioning-policy) or PRs to React) by running the following command: -1. `pnpm use-react-version `. +`pnpm use-react-version ` - Possible values for `version`: +Possible values for `version`: - - default: `stable` (minimum supported React version) - - a tag on npm, for example `next`, `experimental` or `latest` - - an older version, for example `^17.0.0` - -2. `pnpm install` +- default: `stable` (minimum supported React version) +- a tag on npm, for example `next`, `experimental` or `latest` +- an older version, for example `^17.0.0` ### CI @@ -44,3 +42,27 @@ curl --request POST \ --header 'Circle-Token: $CIRCLE_TOKEN' \ --data-raw '{"branch":"pull/24289/head","parameters":{"react-version":"next"}}' ``` + +## Testing multiple versions of Material UI + +Currently, we use `@mui/material` v5 in the MUI X repo and all tests are run against it. +But MUI X packages are compatible with v5 and v6. +You can run the tests against `@mui/material` v6 by running the following command: + +`pnpm use-material-ui-v6` + +### CI + +There's a `material-ui-v6` workflow in our CircleCI pipeline that you can trigger in CircleCI on the PR you want to test: + +1. Go to https://app.circleci.com/pipelines/github/mui/mui-x?branch=pull/PR_NUMBER and replace `PR_NUMBER` with the PR number you want to test. +2. Click `Trigger Pipeline` button. +3. Expand `Add parameters (optional)` and add the following parameter: + + | Parameter type | Name | Value | + | :------------- | :--------- | :--------------- | + | `string` | `workflow` | `material-ui-v6` | + +4. Click `Trigger Pipeline` button. + +![CircleCI workflow](./circleci-workflow.png) diff --git a/test/circleci-workflow.png b/test/circleci-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..de549e5eef462be7883674ae50802b25d19febc9 GIT binary patch literal 40490 zcmd42XH-*B7d9A*kWiB#NEHGJz4u-&0YVQ|KtKef2+~E0R73Awkrt#0h=_C*Y0?D* zL^?{ZQltvX#P|KaS!>psS@Zq))|&Z|tb0${d!K#wK6l?IPvWo!TGSNG6d(|YS{s8l z27$F_44w%efxHGb@kc#+0@k3{rmSH zKYonI;~gCx*Vfj!xVV~{nm&E{w6n8gYiny^Ve$F%=i1uZ(a}+7XXllb6?1d*rKP3! z@893Odp9N~MoUYJl9Fg1+S=MkF_roGc|SkDhK7d0 z!NJAF#oxbwcXoEh#l_Lm(&pyo78DeWjg2KGCGG9)Wo2bmR#rwtM7)0e+Q7h|s;Vj> zA%S03#MjrirKRPjI5!*)KRrEt^ytx#A3uD2d>BO#QBhG&PEM_}2a<|1o4+o4dwVOs z?DqHfQ-yx+`SFYX$w+W;@Yl_g&#TAjJ(~(oCx7gn2e+inqD6$Q*jjN5j7k61J zSraZ3)GyQ--Z9XQ(niN8`&{}62MC8i?FBDK-ig4_L{FMTaK}T-h+I-xh}tg<--^)dUDZB(nGOn|=EMncl72TugKwk3?Jr}Y zjj_;h6BxoBh5(gw0%x}#DzvmlM07$Cj`TlQw#djR)N!e1%^6iJjJ#AZ!2E|njfY*4 z=pq|lvmq-eX5VHC=cZ+HoE-#``Z zK;gHKPqi6iv+mI3@(#dX1TBTviCxz7z5!j;@WLI zIB?zC`E}(&KM`liEg839voM*N9xE;_tFM{{esqYvu~l+20Ykz9{goIH+E!ofR+KqQ zJ_yQxt$M5vfu(nonsJRF0MLojO?ou4))f9;NZLo7K3m?^! z9}SN$xKVD2Q~4+U1}}+`ie*pkm%q}HhPfJ zSdEed6vszz#77SrU+$HtSNcWO&1_7jxy3UG%9bTvqRKRlS+2O({08g=AbN2zNdcLSh2LdExd1)sC6C%*r%(~`Vf zg?n(cD@@gbV_na(P9I&cAFnXS%;+b~-~hhOz{dJ8hmi8dr`IHQ_mclOG9}O~vL4s4 z&~-jN{c4m{@qk$ZclzD}Tk)nbDlqyQ<-8gY|9iY{GmN~J7W(QKlazS&zQ}LnfsZhv zHxQMBlFWeB6D6tsSnlW%Mj%iQV^{mP=k%S(n>;Q<;gO2%npA&G-5yFnlkAJ#Op%b4~U(d#_T(z0Y-?!rvk7ilq1R zbX_{fTJJYB7rN&_x8H3RByF>HL=VOF9X9zQ=|>8_fdt*SNc5J~FCzq-LasK(E$Ln^h zA?~8z6p;RWq3y!ib@**4lQd%#M72ya?lmrfce*vWhHbP3thU(xBf$E~!R%eONAai& z(bgie-cGu-KHyFNZ#Q7?xA)vLoKtm)i=n~ESJ~)C>DV6o>79EDX{n*}-VnKD-{Irg zlPR8iGvTtDv%JSzkOSq`se7f;`t|+t5ZCb+dtCU#qkhu;f?FU?CWhp3p+*-ZWUn zDj6(N5t#!XN;|v5E03b`bShX0VRoAb!Elk!NXVn*yhBeo1-?vHg?*Jnl}d3K`w`8- zy(C%qn3cR+2LUuaB9B0F3%8FNI>GIUG}k0Q?6T2i9-iMUii*paVxwz3W_%Wq`A5?C zB^uxIk~)6q=-v^Wf_6(QkfG7NwT=xnu_7mCGywJgkJY6yGeQx}kO7M8GmS0@d7gR} zpf}H7poox7U*;XT5p3i{lY5-_MgvQb+?;}kyBo>w%&QRfI*L1Hg1{Y39)!h#(DNGi zd|b18%bF@7cD)VGogw|kde>ZuIMO715|$5}gk}V8oL^c`iZ(PVTzZRVK)=$5Q~h{{ ziFN4<5N(LU5)w}^O{H8(%AqR$jxeHsyf0h-R-*wx+e5XX-|!!g6vJB$FcHdKdYZX~I+m&}}-x)7_w*tM7y zkGi?`a0zrp)N+oY`rbi8>VkeY3!_&wxC6Z4*b+hH91BhS{{N3ATZ#Q`NqwSrvRJ4O zx?+Q~k*??_Cyo`yf4*23LfG5n4DOLlvhR4f&vBC}JfR+b{F) zvN{nf)1&u@qJMME)8R(#dvS?^NVf!;Kt`H%Uv~c(Fp%o(b+o$C8J~UU`r1@jC~1^&~ujk-Qt}4H0EP;tq2JRKTkAG(U66A!M$T!eze9ZJ+ zBzJt%v<*dDik~~mMBGi1uocOhA%F&=- zeJ~BlKc5FWcyxIGjFo6fWMo)M2VS!3xC%gyEzOC?rS|3=F=;TAb;q3PK{7tvb7GBg z@BzciAjTrNaps>hbBI**wGKh;3b}D|^%Ye+S7wYFGV|?zftKgZx1+mKt<$Fu$3*ml zBz@)NSU@tq=ouQp2N=LR9FR1q1+IK)h>Kyy3Ly43Om-6HXznbV3svPmH$20)!++zkyoZbe4U6J z>WE{3k-P!SqYYqf{q4a@P+?NHZB?OMni{_be0&=SK%(_2n~xO3J%?>*(kIv+JRh?W z*so*Tx<{+zh(CrenF!DPVk$74{)VEzVDw}m_Ti&N#00pKy0_%Yj(Sg`-)3e=00YEB z_EnXYuMjs(y;pO~bI)WhZOya@;W$`FE4%^@pF?w`nUc4#-FgHP&4$uuv+Bl@>t21* z)%wKo`JbVDuQ?IM8ok{1aAdcF5{TKPM>tUQ21ZQpF6WK@THMOU#M^#qlb)m9CwGGs z7Nq3_Gd%Djn7*+%HY$^4=YX5BZ!;aPCmZI7Bz;eUm{SN8YiD5vXa??*F%0!8$W*bm z_mLsvWC->!&56IuN-eF?ABM-zVZesYDIv+Y_~KY@&x)FC|9=~vc_R(VJU%wUp-X3s zMDJ45pwJV6KXiWYR7A3^ydNPcAHNNO{g_*oShTutbwjz_;pp3L&w25h-bZw6R2vde z?5E+K+*s~)W^IXogd!zx16kBOykCjqFbupK`I)hxgO9@uaC}CA@DV_$-|x_X9N4{d zfFzx(KeUxLBe+87H3FaKTbzL|YhQ0dWpi~DSf-c89h1A8?<{r-#; zAL8bjSEmzkgJnAQGdx}L=C`ef(XD=|J@OE_CIIjmz}?AC6=JIV5hv4lsx*ml(W4xU zwJVl@qb3qH#Imt!EHv3D$HjofBwXio9+>1`EYoema|1bfZGbwC4ov|hhPS?f+};?- z%lg0s=THMWz}6=FOHrIsZoW3LB>^e;jw(?A5lQJRGxwhhA-WT5smWP6aHfGXtV%cmm`N~xSRHswyH68xKa*b`$syP zm&PWW1K$LJ959)_iTd~a$e*?ah8bgS1=!5yAd#P-NetSl&@k}Eha{Bp6f3Qqiy`D| z{kqqc;WKyIS6f}FU)rf!Z%=0qU-WI zuE-CPoE${54%Ot&t9yNo)SZ^7nX>Ir{d~Wij#xD8x&-A?=DH5UlHv zx<#a|U6Sph1qwQsLzvSN8#zkA#TDPf&_L%>C#f0(_gVY^9Z}W)h{Hci5W4; z`tOHuioeE2EGE5^Vgj?-{wNH%Kb9t<{Yn3(^Y`q>ER<^jqiVOc`#u@^Y$oCax63Ww zBTm1*_QCWzb-#Jhxf#Ur6B7j|vXSCKtlT;Q8>V4TH9s+{Liy%&jjw__rBsv0oykHS|4~2wnpEsPp&J)Q7zA|uYi5eVp!|5a62gL!f#GifVi|f zyx8)p)W6^2=YeKu3;$9ojQ*A$24g$TrKk>st(oWiTMn142B3HZlXuXu7QpwQU_ zc@!Y^Vz2KU({^i_;N8*Q{pGq)OGw`~_Io-(|-by)Y|toi;` z>J#Y<=t>7P%4tP?j+?|G48D0gS%rn30bQ<5k5G);*N>EP)E_Yj%n={3=alPP_07@f%~|^eQNm@T4+KkoU(7QgXhC6q+%RvAIy@x zm;JZl8AwRP^D+Ia4CC!b%NN(k0|V|l`S^qmJZ1PR_Am8#T;asu7M+atG#|cxoZw2X z$^2XU#(im?^>UNRzrGa4gd7-7#a&+=5E<(KC~T(@_;1!erSIWuN(&=fs;pGb%g(&Z zZDRAx8w78FKZ^2PwT9ELe!@cduHN2?>4A}|Qjrd}pO?Egle2#?lbL6Vburk_@O^SO z5$qjVn8!lpfR3fRT$!_Dp|E-8|&oSD46?7~QjJQn)7XU|mulm2qwmko}Cwj*K8bcpa-I08moGkbP4-r;e?%90fgCSsm|u^QldwlquO2-PP+ zKv&$T#XBRpSZI-&O~em0Z?VTjB0msLcAOMLhY$CEAzuk5;+)_D++v{|03F(e8b*wE zi3Gnw0O4SLC|(K;w%wT()9q4a48N;P(}GuT{7%mwpe-c3e&bBQChwgkl$hd=_YAX3 zgDYpw>zts#LcY{pmP1<~IVc{4#*o8^RdK{n1REL*f>EgA{0J^W^MYVw1ho49egLmV zUp@--SLTT{8WW?5v%aTbYS1J8{9P7^1GqsDz>BV^SJGjMvYZkzbOismjVcA}8Z5`u z)%jB>i7;#?HZ}PNtnLp#Q^cF3U?M0Fu;8q6JxcqjIWF(?nPHHz4VhM-6pPC4fKUA` ze9HqtQq@Fo%Z};5h=@y0LVgKKTE)iNW; z!5;!`Vl*oF9{tcuJ1S{KvLYr_j?`PHj7ONGxIFAjXh17@SODqMtT&g!pr zr;HLte+=C>v(>_ZtTk}(SE&;+y;~1eaWv|_)0V>}`a-}-IGAWtG;E9kzdh$OVxufU zp**edWI_6_D3w56v5rNj%wQ2VB94vEIh5#QT~2=R?RuRIbJs0TmNja^Il_T(e;}+7`>eP(^8q+x8qk8TK$ z@}aDBq1-c?H`E1poC@N5Js$9-Z0Nvz4eBzD>V$1CWE^O}!?YFTG@i$ir=E|ue&vUP z1(A4HN+z|ZcpN9fN{U{?o1dlN*qMF@-uy1ZyaARzkGW9Y*sfguo-T4r2Ye4X>{e+O z2`|S`45Yo!vWBKPnx5uhz#UiNxJ>spDE;kE9q-oxUlq z=Xe~PvX}8A$&0+u`=!*vD*BvWkOCinE|G<^*_4M}v&Zn(|rqsox5D>^3e;DJcRG9RYb_Sc zy3P%Ks)fFeN z#_x0CUTx=ydziwnRShe2sp$1fR?mZ6A{YkHXio>?W62QG?Pw)X{_i4i$ z`E31_gSLs;mbz5MN^!qjMmZ)^<75!%)KB(D^sU&HcE#qSoTFk=dMJ)!M$UtN_^^5^Kwq z>I%H3`p)+FoEt(dBT@Pga7H%?k(zGVQH z_jfoMZ5eE=YhjO83xWKonLBQ!5IMVvJi;(7e8nh8AiFb6rtET0NT7Fv{5kf&p(b9` zJ|)jssx*R_J&}H;Iy;ks`jmg0)4C%A`l?3TGkbKLnKsTzoA--VxWqdiEcwa zs!>z4R1B_BR5#czrR1pGr97E2AC-=M-g$$1I%_`UOaWdg*TwF$N4}Vaqp~EeAjb}+ zLjMG1Qr>sOHARpU7penwGLdb@0PMG>tZz!#8B;?C3FM`)?E*iZ$Ni>^E)d5+>Z5s* z{0r5s4RjHk0V|^t{Oz5nsaennZdlkn3WEWHTd~f;0h(>6dKDMJyeemgx)neW6U3}d zIP>+`7d=6b_PLwJl67K(tbwu>cMik^t7jPbe5696b|2;6F8GXe;p``5{W%M~ z^N@qn<{EJXZT?eiQC5B`H0ce@JodfkOPO(aB{ZxGM8wL2e>)4(u#>eyOKd)hkh^&!tME_FxcA>x_z~+I7A_BO!Ix4p*Pi}a6&H;Db%K2OP~$2x{w%mR3vwjh`fRfvcS(HE=BA;9c$Mt9 zr`v}e$bo*Hvjtblr+Y)rJCt?XCTg10eD1)l==(akeIf`*B?LAOZ@qkmP2|olAd~BL z46!1(rk@3MbQv;#_}jm0`$I+=-^?xTK9N-VVh)IrA!H~GS}A$bsKT5DjT||Qv)%in z1_u^}s$ql>PrwDJ+&4+liIs8H5J>Q8j()prx@xZjxQv|Z!+%GoHQ(@ivi5NyxcS+p zAmseoScM!0Y(6R*@hcGCxm2Aw)X#(TW4=_;jqNuH71*lzATd=<@PU>NxUv?mzZ8cP zv;s!i)@%B|0*sJTN7f6nr}OnV#~ZKLwKvXX;aZ+21y@dHVY3BH@Iy+pZ*%EG`f$JL zNsH36EO_0ag?C_ZNQtHExHlxQKX*TwLc_C?R2)wBssg z&pUVxfu#F~#$!x@?(${#o~J?!8yu^ZCfTH@bz=|9t`M(HQ*jIPk{eAX*jU_UMh{Wh zT-`}1ba6jk9`HAGWp~laTj53cevUajk7YWNc@SNbw zbRiLKz#Z*}0*O2PQB7{y(Dj1dmkyrIMN_k@!ew_M2Sok|c#v;`+Uv+bckUI3US%FX zr6Tul4Ucx$1(esOo6GbdE+|jw=x4?b58qAyxePlbC3ti_S)#;nnr@!U{8sb0%3xqm7 z4dLEo?w50(6PvvVIq_2w??>K>S{xZ1=}~*lX$o{@pg%n&CquqPk9Dv;S!9e8&~r&1 z@_KvY=lkZZ=1yAH&&0@XTF8UR08?=ICd$$D$(x_#N=$DQuReY(^S<<8JrY)oETm(O zmG~M#k}d{oX~5@o+Ch{$Id$tBn#L>t-sHsBCv0m&b3yHT5{UU-%)YhzgjfcW^42e@ z=p6Rrs9*X4iUm*iwL>Eztk}vioJ-;4E)_i23domi%*9Q_>=}jQ(i4WhUO(^#=?Npm z%iUfEDw8*44b4{CXrwP!!9yuhV%{!44siZjON3HrlCjg*P92?q7w;LxEaf;LyTiKb zAFV-4sN1QcAOrO(h5H_Pf>~VpF05fe+`tdMnM8JHX4#@{Kkt&%(G@scqnlKRH(6L= z`WI1cDHL?|X;-$`JtOz1=!tNiN)32!Vb)5*OJO*g2D4S{aRZ{H*<$tS2!@GGsOmzY z`F&Q(xutJi<4^@czV>KJS^Ub2g5cjje%Jr{CL{^BtXDX`V91S7;=ubbK+Xfbdhb`` zXci`TG;yq;4tU)_ueI=dku9s=%1yXS*>TjbBHRE`f2M>E#&I^*^2_}^oUCMxU8#IB zF-X)HaP+8gwRrKWYRoqI$;K`_rcW5VV4@rA%ysXj=W@+f5H|!eFmlt<87SdG)yK2m z-l~oU%Yhj$>oyeN>J@J8tSYbV2s zPHKZ{Lv!%^BjuK@kvDTvlgaq5fxZs{-x(Z`q(R^;s7a?9NRWxRDI8aZum%!qif{4@ zfk1Z{|J#BElz&Uuae&(7Nj-=l`syhJ>QLBp)e{yn!b@)C%w@*OAR|`?+lxT+sL{e6 z+|Q@j7zh#fbx}MG9kCv-9l*v-`V`xalh*@_;=>^ipF-^bBDyV6L_3a{d*Ut-4!NdR z(S-xiQT#to^ul**%FAulHmzFG#iH`_0k5M;lu%x zOBew35n0cL2q$8I6E}0=*&swzwFGk3GJ&U+i34pAm|eyM0vCbOg&}acZo-K<2qdnc z|E-;|DIes^h(I7a#+Aim!5xowQV@YN_MMm01weiTbvXoE2xf^uh(-w}*%C}5 zkj>r`IAsLO0tl87$Y%Qlmf3$N+U?AC#FvO(*Ss5A*KDWOLdkD}PjtZ9p3+TRs7xU5 zk+Ct~ZLOM@T)$n>BI3oc08$~mgM%(bI7vZga>{IY{G)XFw|9s^-$$F!71Yl)bBCA- zbg*`EXLO%`@%7JE4`5rpZ*G7gnOBx99|#0Z6wsi2 zy!wh6N!?N4B(iy*!CqN!%;hT*1ZookbQ3$OlfLLGXZ}9IdchLJu?k_TG*8AuFC1#T3Fqs!nmC+oC|J{FAzV!B@RT8r26( z4(}nLa5~P3r=R)B-qvdNy==~5eZxu)I=hcEZfe~U1@@c}N?DgXoPN)Qg2No-Xh8c* z_MLZePO}H^z?<-0zBGbQkp%@+|N#Spg;x#uX{|gg%^YLT;tcgzqG%uCTDSO@3fBMhw zoO@0&De%2ZA1wS* z$K-)UI*_{<@b>HWvgK7P{l(zUte3%Dxjt@zEct|HO+680mjK&(*I}y@IQgNa|DzT! zyPv1QA0g6qbFR$f(0qzVXF(+=DS6T`D?_T0cjs|rL|6vAPm4;PhsUowTA=SEU?No} z7_r?y^vak3fdyRN#@)ck z2-sXH8iND%ILyHYoc{>Gh%1cHf7x9V8rku4r<|nNH?ebGQ44XSmMZ!RZiM?6|Gmd9 zma`GY-a>mc1ACe-1W1LSA&sRb6-*?lj|1_d2!uw_o1CO7)9)N62ykC`G4VBV4Li4{ zg`QOIBJr%B-?`3cT0%K_8r#*9%+%sGoBnSz-{v+19mnhXi9{6fU3~K2CXGOpsfQ&T~$q63eFzaqmlja7cy2XyxJbt4< z6Yj2#8)#>E0IJitwC*9mn$w(ZEGuCEs3hU3RgukLQa+ey9}6=Hna*M{BOEOivHkBS zo|CmClYD=}IUM-xHTGB^9Da>+qVX4fB^e#af&*yCe~p!5BX5Vp?$1tBm~qX3B%i^U z1x!ECad!Rqux)$zaQ*^Ml%533t->B#WUYoM9=|F0yZM4>?6X$ID+Lxhi<#LsDGkTH zO=K8RHiTQSMb{6;tFA8%tV1vaY$n&^kIAUUqEvh4_^+4etH%W} zXGuXLyzv^Zr`%pM4AY{poV?~%FU?I&i+xqWUywG06CHYL+ylL)?-7eS8n(_;$s zxo|h3lMac#@IeE&GU>R64>Y~GJi(D1(hTW)q38XT{|1^;%h!hP<>6e47QOBmU^bex z1cjmN8%A^5w1n060OEf&AP6b8OeZL`su1& zf51X)YVgXTK96Vw=ZSOJXf+qqmk&W-{x>?Yik&0Q}b5sswwyD#e+=|D_ z(lgwZ`_$K;W~$xYFfypvx2Y_6V3GLk?d8Rsm_@Ud?jJ! zlC-rk(1^rOoA7JTA|>ido?=PE)%g%f4r|%;;Xmt|bt;^hK{X|~qA6ayJCS6389ebL52n@#A`f$wPP6jGp(IqlXt~cAOy5?gdYf9&eu9-O9EZ#>Zc^H!RIX@Ye7m z=m#sg{jU9rpijfWSvn4(c`52pYr0lXxcyTd-V>~>CaE!?U3m~&iGiF;k|(Wxnxf@H zXjZ|0>o6@oMN{TB%t{T7slMD{X1q>#opS`DUFPmN?a+f&7!v7jSJ?+e+wzgA0kmKxS_rsY6cwE)ewGi<$YDD$pCazTZj>z_^b2a zKTn=O&ix|~PxX=Y>XOR8wu4%#Dl^mEFB1e#;1poUX+M+dw&O_%gdIedND!&*?=%x^pttA8-|Moo(%F!s zHH`ZnE3RoVH9pw+wI^upP3EZPiaaDl$cIdr!XcARkKm8QUZ3Bd*-^I@_2SY(LPa!! zArHQOgk>(h(Q^{PYnZ29LQ9h}yLB62c;@iOyZ6Yx8w=&h+dVNHrr(Z-c##s;|2tpk*y z<6hx3SFbbIZp7(r!5${P!jZlY9MP@Oc0!AFq9l5q=ZQm%fm}thhQMZ6O{Gl~j9eC* zIUy=IDDO;Ucm9?eFM*ffLv+~r{?*)%+Xs(r{lZ~^wYe-D@WE$1(FnN4poG+f^e5Nd z*BjMhnm$1u1w~KkZcyK&dSf4@wQ0c?I@n*B2Ho@Bhi*F(xM)xAtN9RP-79g)^)!*M zbpjX<<&0!)UIs_;`_u^$iSi2IHD2K05_x(iq18BOcQQ!=PgOBauSEbNbg*Cg5*My< z(**LsSb||DZFC%OV9$jxn9rt=>RQakRcB1=y0CsnGAGf1t}~-DCnw!ILuJ>w;ZYep zR?BcZj84T2_1`9y7VgX*DS{8X)H(sC%v7dFC_EJ{`Df(yGyxucxK)`G)!%AdWJ=FR z5!hHdj=0$KK}xRJWb!}xk9w2B9Zf~z>TdbH4k7Auk559AV0%rn7gc0~Pq=?x95 z^#28`0*%^EKbV|J$S)i&-n(}?7lG3ZV3f%iy`Cbik6I~ps&3%Lzpxp`1QcR+kSpud z9u42Qq)-#l|Foz~U!XA2N9nx8)%P!B|Z%Kg9U~Rk4{uQK9>7lF@uN83}o@>)}7*-SzAq zyAP!}_aZO}&3ZtALex~^BgJwR@&0x_UhyXy4xx$~ENWKWHt@qa zq3&_cCIWRQD#nDcVIfma@c3W*XACGwb*3+^K*3K14#c2iV@&TowY(?o@4ge8>BARR zyv@_{NQPob7RTay1lyZ4Q!8`oayQvUKxZ;xyad|V`9UB6_PNCyzkYMs0HXg(_I_rn zo)jTdcXs}6=MS}9&FW)Z(!uhMyIJ3VfYPd)1PI%qsm#{|)W}uLkX7=X%+uyST~m8 zO>O*lZu}>em36)`45pGTduQYJJyb7!}kLpI@9Qn|_ z@GoJs!K7R_3X8pMTE1*~( zV#y;h_PRNXP}#-G@gh!jV~56_%D~Ry%&GAB^OtEA<5{U`>gQU_fsG4ggdAXcW;{o6 z;>;CG&x;S{KrD)WJ$Ppeq?vW4W;2TU;wku(P8+5A(7I>F zRj<~-se|QH()TzeusyZThB77=NAuO*MX;r$AZnC_Gct|ZOl=`dJ55W)vA}D|uu@!^ z?j1e^V0vANzZ7=mfX|O!9_@?IE+`|a9J6tAQ;2m+LIoqJ3TY6)-!Aw3;f23md2OWr zY9zgM`h^RDQ=F6eMcohg+uu3fnTg$-wZ-z`M`o27p$w-WO`Ze^_A1yI*)A%fc?4(! ztNnG@Td;zYb%ByqZgdKmYm%4n>QQ#>bGpvQ(nIWd6I!u}#T8T}n_jm^L+-pwdJ_m* z_Za)Od-ZN+iu~+X;wk8i1Na3)-12Vuc;#$*+frPd-WGS1{_R2B9KSF0djj~g8m>m~ z;63%Ch#!`IB*ef{*zx_o76!@i4bpoIqJtv-aMjm+{88#8g?DH3W_;=QjfGfwew(=` z9>8^rF1LzKmr&@TaegUSk(Z`H^Ve@Hy>LgR{Y{=2&vWcQbc3y)@<*C}1s1GOHbxd6^jYdhtLxBc;?1fonyFwWoS zK6?I-Blp)>kptK>uw}M=*4d7!y)N;;?hsr_uGy0l6M!yoJeYuKfocC2FaNx`)hkK(=P=ci%XbA)^VCmOf&T%vL5Ti~ z&ml?wi_E1%|BJ~Hkj4L^asTfFl0LlM)^>m_pZQL#EOJDh89$c$Y5r)SVaX$KPp4c4{eaXXZIbd`yV0{gXWFG42BM9G$8`%E1OMqdT<1U`(mNPvQ4D7q zywX4ke*ag3BH=;kTBxGa2<6(jkzVDrn)vg{RLdW@*{##7G~B}3A8&rKty2+`g7v>X zJumxILc<22A-%>cOIR)ibg;M9Pa|#K!bFCpov>Zb2n*$Fmi%ec&x3C_e9oay32v5Z zQ~hTo{Z`tjVXWR$3}&0;FZbC7mR-z0O(Br46SvPiR;vrFFEG(;R)r!PGS zdHuO_MLTz}p9?1<{)K|>f0tBpquf-*e%%at{aO$v{NWt_L)hsvo1fD4=PVL8TD^fmJhF*k&@b3E=qkF6^RCH!4YM- zZka}6tU>PZt?sIKV$S4g&J~E*bYvO^V)+FFiBpVE zIP^z3etwaIC5{ELIDKg|w|joy>ss}=Lk3oaGqaoxTV_Bb0Dl`dO(guZseRB{qDpnN z?laXsCt7|l!XO<}f~yX2fjm4TcI><-SW5T-)I;G}MqE^%s+ORMI$*yyEbaUP>Bp3i zo|bLn9l!TfrIKc&vRFU+^K1>Sem>JRcPnR<%xg79#*yJe6>yw}aXKw>|4AOcXv(}R zs1Cr-OWXv@CciMihi}B&m@mqo+&UvWdnsc7SWeXxffxIJCK67luRSx+-AKnTPE5@x zO&Sa2zx|3Q&%*ZFt9(DXz&M*2)m0-|-+`LH(e}5O)v3$;wY1|{l0?hWmnM`wpTpiZ zl;YoCn;~j`Zb%Xh)K&9-6RgXT=Oz!>tDfDo1=V0Cv3B&OqwTK~Glt`eAFt=%&a9x( zFak+kd4{`~8F{2{d!PeOA1VHsBst1o9KCZ{f6JFbv|ik|l=lTaiT&HW@z&o&Pt@TD zH$hzNKx@SHPt<`TOL8CI-N?6^>|mTKhxfLN1!oag>|Xl# zq(1U6Dt2mzY|!u9Lsd(vjVdAXKVRG}d8W@gYE(cp>qO#1ys6#3ucNhX+OhFbVde?3 zMu-;HE-OiLLpZNaT>qgiFIX?bmrD6p8mHuO&)r*Cu z_lT|{ph3K`Nr|f3yyT?^WVbyZ6;Gl(zF~rG$pIsrbKRS!0@X0I7sfPbahSh!yST08@jB3;Pz{lI(@DB zFK_*iY#4PL7+0q39>`o;mN8Yj^PZ^4Bf(Cx`@ zIMGU4L7HxA?d#kRTA$+oc7`{cwl@KOIiYrJvfKurCf^9**%C8Kag&<+;ts-yZRxy{ zc;A2Lj$j}Lq9m|DbJSX08Afcb?aVeMrQ=fQ#~p6_`8yHn_Tvk_&iGF5%`?-y=h~PZ zCCQ5>A`yv3q7E(@EXhcE^uU_1BAhAg&+UZ*JnA;TB$cJxU!`Y5%v0;ko|@ zabF!3RrmfogfK(S3|+#|El5bmp}VD}I|QUlVnCW91Sw%C2}x;0kq|^;5CmzYLqHKw zkhtUfet*BU?jLupyY9N{-hcMqXXmre+2=WX@AG*+n+31a|02O(HQJ2l!YNemBDoeC-5s4X+5!<0_2|{q<8OqXHUu!w;mO? zt#2e!@@d-fO+A#rt4uIz3izfuO!&=QiyJqf*j-)Svmeq5$o~70Ay_QEf_>qYZU&8J zjZd|!jp<&(|2nbT>&v;AO^Ne5#&p{mKq?#`*J>4=qH; zenRGRD=Aky@MP*0@B7={1tbXpj)Rsn^M?ZS>%AH(`6O`oS2(Y)fmt#_;%@df^>Chs zYpmsyJNgZ(Do)|mfkBLqX*blgxda3`3zqfl!%gBXM#{2A^%(8;zdY5a$xf+2l9@|; zK+M|_UMde@nd%Ue7dY^I0@aUcu1meY?JD<7p9|u?)#gxU^YKu=T{UMobuS0L*7I{4 z^DP1G?tF1#O3X*gMJ|5wX}WI72!PmTlE5!O_@r<+p`!qzjxA5!>hd`yF=KKR^1$r@cRkTJb3Wk}9wr�wj=4Iw$jk=8`dK>%du4UK2k>a{ zo`$SXdx7$cQ-Z>&=5+h#pdb10E*$aSuw;$oG{@&=vNt){X1 z?G1bnzYY7FfKV6v3<(_t(Ls2i*Y%a0rm}GOlyN$8e(AfehEHu?D~_MR+0s)Agbt7bD(V51;-$L zZ+`X@I$DujefnTvUWi~wv)ohN6|%#x!k#*-R?kyv%1PtBOE>*3g5w0zA*9KT%l?l* zyoeWszw6V*tgsdj_W9Te8TCkrIo%R22?5DLdX)nF%S#?K{`XjB;k=ez`!l(F1@yg7ieuV{V|O zaB+6gTl`tzqkDA$`+CRStEC|?ry@A~@sv~GQnxt&6$kBhmS6V(lIT{W2Hdf;MYD!J z9ees}lwgEV*4zl7=oOP^)t)y5bQIn{|5uWt@9{6$DPt7?6jp*Z^Wevs%B&p5Ment^ z^E}y@#>fkwX{!GO@fbnIs(hMQ3x3N&bns{#$Hk@@eR?BldFGx>hG}u%x^&9MaM_Nq zAjC`P;qxHfyl~t)dR;Eb7xF7)4#s+0Ch?w4b58(Y*?vafUp1D8|2}-)#)b&Bxm@ln zxe(KI!e<2C4;fRDpUZ@f`Q;J8*M3O_=|69K_vs#|wlmQkWTUktive&s3aj^cy?w8C zled1}KTi`YKNGx*5h<-j5;%V+en(jzvxJ!ONU#5}LnK`ghx8eEdu$uWHR<`OGC6NI zt{_ivxUW`SeNif#fb+LnppSiXAHz-sVXi)R#65?X9(@_7%}g~pbsG<<|t;mFMMUI)0tqN-5kJJ-qtPIx;H zn$uR;msaelehCe&#Qfuk+Nc#oCGPgSjW6ZcPZJ}m8W~xmFtu|WK+(&!e5<_wt)Ve1 zVG1MHf;KyQ<%cw6zFbalXprq-@VlXjQo^5)mv1wJR;8+6zp%{n?v~QR)6}AZRP#-J z(9@DRl}TJHAEWsxR#Ly*a!1*iIirr_0@&=@nf?mok-w8id+X0_ou>z7VNyO z@bA**y;efFtWczuACEm_O0@VpJT@KM->=Fk4ppPapmQ0})~h(&dRn??+&LR5c)?yq zfa2n$9WO%adsLGl3M%kR5o?b7rJfdgq`pd-@>rMz{@Cwzv8Yk9aVi-a9+SsIOkHjHBUp;17`AY z)C0230}vC#+fX_;gCD813_edhHMtw>EVL44)?z_cVHGx1sde2r0bJDh^?U>a((n(b zxIPbWJI0^iyInX&1TW2c@Cd6pE+Qa3cm!oJGWV0IKJS~;7a=H?#XE7hnVXGO08_$i zI|Z)`jTkJCmL-4XL$@<;i*`hF4r*{FF|hN9vi;eWGwCa?O6Yub19p*_iy42WQv9+ z*HQIkZS6--ES380$2LXZpCaA_$0e$VRN?ki~!5$7K3^`+v?-+6NiEY zYg_dX!4^CIztmcp(0@s_uv;tt(rH0(zWqa__5U=((3>7H4yrgi#>Z4Hf#lL|7*++A z-l8b$f%tq%a`U{WZaHS|I_`wi?k)L@b@-zxk0c@09)Zy2?BQf z^OOFahy4M{Rmw)Ht}m7f8$O zi5?iB6zeSV@L}H_mczSVS4pUd+Q-&-i=GBed(38(C!UNIw zl0@8TYx$_%jdg4_(os!aY?S#+>mP82yLNAm@rH<&2z-jKKSQAcqs8KBbO`a}k8W_F z<&COJf{G*;p>o0|+w@0~3R~2#9vO;b)$`$f0oCDm3knqD$Oq9*Q>Ut~sO;w~7-?mb zd~P7U`B|kDtMcwc|4Z-^NH7yxdMYLa6lSbO!;<2yuf+*nxJuK;K8Yci&_Xs_Zhd0t zyx@)kT%b%!robiaDy4w=fK?*5A79mcd8c-l5fu)y)?y5NElz27 z_*&QBn1}%Fi%PBUgXQN`o_65c@lJ|`wDHOuo~*EnX0O^P$GtinKV}Z?sg(j+@XOV~ zlgIf!oC5_iPvk!_pWJ3d40*{dAz}GASVMeueZ}op+^ExUH5d8Z+~UW);h{PH<`Px5r+ok}y5%U@#iJQDw=F< z8Z)+E@5>RY-0**ZanG5^B>@G9KzaPZ!W!Dx`+oZ0OnAj`zh#PhE6m*=EWmRnM2BxE z=-Sydm$NCQqpf$pJoca?&;BVDu%Q1>Y-oqt z!<7V_%HQ2Uh@)nuk`N}EGmk}bfAt!z_o{2fYqRJI0n?fe9r4d8kWZ-H&Esx-_QC%s zPLNpJC31xX&v}q`sj&HMqWj(!PFSI42P!q|t{a|Lt-KKh$dDHpm2B*kO1QM#8+9~P z;LiFmpe5x;KAa|K6S_c%Z?kXbWk&q5R*q#B{g`d;yr4hmIj(Au3NpCm9`?2eq$Z;( z-g1>&7*ip{W~)0nDK}lj*a81%DyuOT4Q7Jz9QiD51-C|PL|WNIab-5fWWFQM!a>gu z3GHpwR#1EUoH>Vh_x+K8%Q5*JNc`;P^POFWxMlC2bsigvq@j~hhbpEoylLo_$%HP` z%Gs(GCI&^rOxPPKUC%L9?mD&&J&JBOyu`J9eK$36$!A#uU6;MxSM6tUW{Y^?Ul!>9 zY!(p8nJT;DT=FB7YdwsS+R5#95vKLUmXt3OP+DR&j+~SM*~$rbeo5(W1Tv1CVC<|K zyMtemjqWF+USY~~dS6Nz@c}T~Sj-63NVgn(Gm@n~~AkZQZXQnh;JgxuQa8w^sHE#BoU#YOo9 zhX1Kj*v_Xis;?WT-lz@GdIYFJ5t~-MvZzn2?B1!K=dXiX>qS;Py1CgLiMPo;hLC2jNK2V) z)xC5cnRMT;-PmDU21~y5ip_qf{g^+H>Dez;?xH_b$vr=ncielJ2z(R+M|S%3zT)nJU=b$0S_fCXI@j?0+DA5|0 zf2;H#nJCf5L98{Zz<43=I87eOg_1%nO)I9$tP`PO#Szca^MKR>(8@ z#nccbV&ONSUIrd4yGO+C^u`OYSfN5Ud457-xB(BJuu7HTm<95PG!M?G-v{5iws&Vu z^Aum@)9uQlCfTO(HZECDjEm4-^d0SL$fOB=a5tOitrM8T%gy`C8!F#0Z4Ai>-91|jl{yV^(0m<5*Zx0etzbjl) zhUEdiUMl;PR;e^hbO^+=fzR)Q8DwWNlT9^04FmuF{44>3XWO+4c53N70WaZP{7TTT zvJy1V3AYjQw`liMg$ufr3r103G%QuXwiSBR;}9u zHJx8k&Igtv-Ygv-pAQ;@9}ufXY_z55H&CNb6t0k!{3WY2=%8M;8oFcE9ntUkv<`J? zZ2tP3(Lz|ut6rKP#pjMl&swUIEEzUZR#9@Z*5;?WpkYZ<_aC2;^U|Oo2IYkKDC5MM zk$0|&^^OeGPe?#|Q>_i0qbgox>qseX7lgW?*SJTp!RMsXTd%YVTQ66Sj;Kns+wW5r5qD=89u2t-?G3 zlEp--b}Ob%TzncAEhU%eRjj6&S?@h(XqRit1I2W+Qet_huw!@~%!E=Tc1AMR_MVEu zo?fto!~cq>#tnZWG>hknqD}~czGPyV6atKXv6!zBTHUo{U|n#98ZMN`5qg=Swnz-8 zXOs>3$#$JBRJorcp{_6TXRAg!rS3}L@Dw9fzy_npMhBb&Ucmhtf*oZtX&9UjxD&$y zJjEfSvuz&_pP`d9(?mW=0RG4Ikkx_DC(^dzrY!MBpwYHZ&5%M*C}IKQL=h$Crx9Ue z04p6y0KyErF!idPU4i7tn* z1XmWFB|z)i-ihm%JMZx5 zXW}1vQ?4;W#dVbRHfzwYdnN7b>~O}TG=ti8qCt44_Nm_UlR}LDk4(kK@Qc>F>JLF#9^w$yoYn3qa z*RfB)S^{MMH3t}gVheFoV4Z}2N^)Y0LzS>SDAC3`*K^W;Dml}Hq8=VTo0EfBt!bsB z`si>&(3g|=J{STj0ajKpl^5lE3mXNGI-;lQx1RW3mf4hvL{7@J|FL>7j;eG}*9eXj z>0IhrJg^?``SWA(ppIlpxDjavkn{_Y_QUNV!rCs!xFGyTi?$FkH9(`<=fb&oky@K{ zhr0(pAjw1ej*%^}Jev#OSDN1`nq#05na_!4%;vu4B#XYsz>u!OCbRHGf-jBx(4b5C z+$pNVHVx(ivNeG^n0>K@2=k+zHC<)%wBz4xdQ65Ng7}kFzu@oCs8N~%$GloQ!I>Jk zBt-UPt8=5oQ~QTR zEwQvnbk0He88n||N<|BPJT?eRy~Kf!I7Zao<3!v9{w!_X=-p%}M!FxU&)oFC-h6hp zNe8;DdF3J;wlo{MuLUlUnaUGY0?_F4%}R|IqfwL4*h9Q4pOy`D$-1y(I9>EronH4J zskd(#62Bd`s{?(Yj?GHhu%JE`r4{1bp_~A&uzKb!=DY)Y^T}I&KQ;?+>Du`{zAm%yht@aufh0eM zO2yk$2{?LvlsfQ!EZ*(Dne_hIcas$LliD^k#!xNl^2%Th}BmhXhs#9R;Ek4q~X z??I{kkX=L1TktX${Hgi@9M2-lfvuPM@A`wbq{>ydc{xtHoqCKmgK|Fe)#S@eMTa*b zac8Jb5;9S2AC*%Hgp4}M*CRdiV?`2h%7o9_+kd4_XdJ1cB6`%>k9UpOKk-5Y@bHE6 z=n2MZNpd)GW{AzcQ0AFnURHhFWl=y^jSNy0l%QT9KN7gA7AM14oEIZijD3G_PJ4hYo-t8SZZ}`=S>iHPm|vdU*R1LW0B%J$(dSEx>;Bx4am>BfEK%w5jIo@#lYK@4>Lvwg`BQI^8n8Q(H zS9zTs4ad9dBpQ`UcI>`8b^P7ky%2mH5{z`#%uS(8#P{i1V1>vML?!R#=Y?@Ai-VvQ z$sUJmpAtVFQp~v#>5scZHkZM^VU*C(4KGmQPrcQ|&Mbp%C-3s(Jj~sBVi%cqUjmJt z%U@iTa$%e&V)b8A-Ej9O7xdB{!gFxJ&X=Ft@uf7+xiz_rGBFGw+Wr=rDWg#NhnsN{ zWuq62P8zT!4sGU=SCN3z&#CA@tlg=;vGmtU@wWH;ZPx)&420^#EC2RpI%trHwoQ+z z(#VADx5({S!^%@4!}kHU98RO(Vc^Rk$bo9xM~}P=YbtW4He_Vz*|)jN*dnT^fR>4m zJw3vTG!woNz9yTs*uw*At|2W^IT-0^ejF#=eX4Ogv2|Q?ybenQI_vqN+?wCRr^rf= zvoz_rmDdXUws&8&uW$^h!iwI8)lNRTu4b z|MNYbu6pPBtQR0j&-iqGDH;=pm4yQI+m{z)nW(oPM2b{Jq&R88C2Ke7>zE^{@_~W3o&3ZHcw4Ml3fK_<<0i7Er`T!%AXF3 z@r}GbFjuN|gr#6#2UEu^*@aIoZ)Q`ApSK*ICFmwqow@ zrEB;3oeUoO~wK};TM0F?IM{))+t7EBD~*Q)w6>pvnJ{uyp@iGS0z z@Sh~n;__bTPxJpos+q9mb@1>=HBdgTWxX->?Ck5Wv{#icUOar6HU=5H4V8lkut!yK zp+D*?b^yQ;Iwmy~zNb3XvpZtvWdf%kq*$L(s z#COtRR{=8FO-u8B$IvE6AG})l_Tv6mCJwyxcVay*Y&$HEjwA2!zDh$*lNR=|`dSEi zjj)|e%yEcL@|e7iQXJpA{BZbL>R%aM>ycHCVQ@c9>m~s`tx9XQtMs2^Xqe2H>-+Q*0 z)r|CSIda@#%&Xv>xH&7*n&O}=jnM<5>EW!SifWZLc;yOa1)jsCS@8$+@K4l!6bCGs zDBf>j#0NR|rYsDoxwQ%rp;l?^}`6~gwmJ5 z+haNUy^6)6f(X`4W_!eg&|peG8=*|oQ9SNXA{9eMPK`vA>e<=Sb{WI0XA43Hg@Rw6ALz5S_JMx z*^P^ToS%ChtV=vH6dhRTtWNnpEdR&H1WGKjw5D+Pm&=<^wK`Mk^UH&>^7qziuend8 zMsy=+X-I!u_Q%*tCD)Vx@@P%WAb&&sMyS6BE|txxRi!s#rUWm|G?C4$W-Aj_a*Daj z$kNJ@azQ%)uKaTvX$V_ER-8NfD3z)}#y zF(5Q*utm&1%?LELOfU;~Yf1+4J5JjrGoH}x`kROi=>l0-gP8K~zr+0fv;XGKSbv<0 zvGaS04U@enbwmUr4+EKM72DS_%K;6#7rXQ19O*7fHV;iPjGD*&(z# z8oTt}$%UotAWUpnFy@NdqsC6mu(_MtQKUj8^jk&U$jG(f>jE%#GjMWAZ=Fz}mTcbs zW``Oaz~*1{!+OZua<|dzEZsX+{|+!A$^39qb}KxsXr|`C^0O~Wk=>A z+v^3H^diAcfjPUd>g21~Ka0#j9e7M~ZQ-rrXN+BK^J6~~Xbk2k7RAC2j$lAu>p(}y zfH_4laG=O74R#_#fLjUC-&nGlkSx=;kXshE^HgfTxsz^ED2+MjwLw4 z?5itycb{)qP_$xg(B5dD{HK|YN5~4%R z{KPHZ6;Zm00>@gRco2*u)ou1v&=y)cl1f*4-smb}x38ZbdoRohS7=LX#QN`j+je)h zX*LVV3T&5TLg=UsoBn2XL~8{I0mUCw7DYQeU-doz5?CSz%K@8z7gv09X)`;y(lfdu z%(&R>ARz_dq+y&672(!A`Y_G3OifA)3Pd7mzB-V#g_2pIFZU^(WboTW9}%4i0=oC( z2LyDg57f9DVaNvAj%Z>Ml9pIp0R7k(cTY>>#2gkk&y35g6_B^Z8*~ zjsAM#wS-_Vtk0r7GWT{lnB#-n4pxO~Ag6U(DG=YDm$f2dThbd~q3&IBRE9?v_CN{S zbZZPHn&NIH+Xf#$4EK_C`c2634}MWG>tdqndlAz0Sujm1!UAv1_m^=5HlyG@(!6&) ztv=*1&GF?63er5MbnsYa&utieqzJg~fj*mm7x5;BzwCMI*^GM|;3N`Ppc^>JVrbRz z5&U$WzoMji_rh3RcAsy)C>bT0%SQKBim;K_ko6Jk3eHJ_S%KaM6B0Nth%U%ZY50du3Ymf6IvxB$VWCK@>H)4KR2`|>Lcu& zU=@)URav=jgg7mK%r)H!mNeEhXHn$X66}}ZgFpVYCMMaeJIm-k!spL)lIgTq(3DYd z?S$k0j%Kz)`Gbq-x`*@!x^F@(@x{N>b4&n#cMzt|l7gOe@VK zr_#J3wb^SExlza%kNIX_TeJ;;wae@-$6THnB`0HaUh+}vnyjPU7jJ*8-Y2Leh!6vk z$i6y1!IY>k?&pjb*K&*h8pt3UuZ#xwLi~g?Dl$;hBcz`DEvLtzj|1R@viM z?mwXJO^q(%rlAWZkF1U;5-0RC)R9YeQKRFFp>hEA7;}5rx`Jk>YIJADJtd~^vM{2b zCZyYOs3sS~xl+1O|AyY|<|Vwa-{v2G>bhEpED$ydrV28#h~~vhX;cqTxoWb*kH}&9 zEvvbydObnW4`!ch51bP~P3vWMvTT}QF?*BC2X+h=BBKuvAKs68>i?iP-X`?H%g2o@ z6=iJYJm8a*r4V<;FDl@jgrOnwI=Z+mv^N#@zi?1mtk`geouZEaRy!(?E`KqsmK|juf$FZ%!WLbKV8E;1a6_J4H1$?pvlFV_c^M=uzU$31hHSk&1m$ zqn|jEUPzjk;Sk!;zfLS+(xY$gGE<)mRPx+3$qp*-NWIJpK}3?E<;xqOdoK;@Eiul4 z>(rYq?#1%JGEv+F721@V`0%?;D_x+g&o9{pp{WM*WdGDx;GYIetSuI#$;S#+%=xU& zw^v{Nc`Eyh@HR5L+%-S+oQfG8AUVePvYEmlLI)F zS;_Usj)XsuyC`L+ztYh7L~%PB6*-uuc~SJ0F7lDvv)pWCO#&I^?%0AHEz zt>P0QqWO01MTQr*Ex(Z~||L6E~lzsK&?hth`7%Ee>U*}f@n#_1DIkN8hr{TOo~*9>qh zRr1%IkJUJTN&?6dO5ZZr$<}Ui)RMUDHXlhr*$oOnl$OCN-Vu-|?P)A6W}DMnar)Qr zP|}FZ&@tUHHT57KQz!b7i>Shz0t|VSzCUPnZ|zm^$;bhdXHCk_3CI-)tPyb!FTvA4T84>r%E)F zk)?F>lsZ2RA~{kqLJB23v{>ZM4%7K9Vz!ofoG(RQ@AlQ8dklf|#{lt%I$*iR)r-gL!mR@5%~qH`Z3og70hRmzmhCzPZ$-LzC_>c7`_^UxQ_%Ix}J~ zh*?h>A*x*20={RD0L|X|z^`e3vT~Q#FYe0oY^-pd#Ij_2d9i~U-qN8HRKj2|!)L^H z5#-3j{vtldQp1YDVXh}^yL2SO*-_m?Q1`m<1tO&f;9Fn)mIJ-#mU_){nVVRuneP{G zOC0k#A#uxHDq_G(PhLp9WC66kD_%5!Nh|XvWpNEQ=aIR73s2-t-k5oewOi)Q z#gyC5IxBs$EO^c}`mrG!W)a5}!jg?7=0b=PQrx6r#QC2iQL0URUZZ~d7=iZLM)ckB z$AMP6Z2le0;@|`4m@VCO45cXT_$PT0pr&Mr^=n#d#D~$~4bJinQSW|#1ag{ix4sYD z6CK*wgBL_Z;8mZWyyg7+bER5jMG8iWf0!pP{)w6@_dE$tr%nTv>JE)r#uSPW$Rd2K zl)IUTks5tRBU!f;UtSm^REcdnDR7sKGN!l2@3cRqbA&HA6nS6Zlfy`0CslB5=Kc*( zML3$#WC>z;5;QQuyRhJ$P|E_)$E?~aB8|zzMxHh|0e^32dhehoh?j@L;c>b4w+Y9+I_4;i-0y{?TRZJ?@`jMOVKl zcq5RaL}RAFRH6#Q;YTK3dbv6*9sF3d*z1)~n1P8@eYhDa1Fv#(hBUh3!{!?gDD5u= z*G5umVm48nfnuG8duHFCEavnM`_IJ$o<9`@@}KyJhdtsXg-S^QHBl$aD^rO$3?A4A z@1U??6Lgyp=Qb6f{s=QEeePVs^bmPM_a&1Dj%4Vu{;FaNY+8M7?cR9%%AE&6c}~Ll zit077et-qieyPKHEZ%_P3jLRfcqP*r$IcLWa+P+`~20ubGEpidh`x+^oI7~w??b*;+g z0_NjR+_8^?;vvDam087mu9*v*-##|9zzoN-ZyEnmZnNcnj4Zr}d2TR0r^b%`1KFCp~&P z?@vg_Dl03hOfrw`j%An416V&(eV*%nYVo5utH@>-;Sa>3jqBLcVf2NIkAEEfG+wyd zRQXt-4PHNa?>?Qbs_|h6Q(6Jp1QYwTXIhs1-d+?u~{Uze8h>*~d}4 z>8Y4QZEfA9#)?lL)v8|qgz+9-+ij=mu!8%!lLTq6NE0$_+v3^c8NNhEmwbs*c{bnC zr4!!2_^3c)G7Ksu2jqImUS8gSU%xzkJ>(^ioL8)3LZ+o-&K>Gb1H;-c(*Aes z?q$f^`XwvfFcRQ^Wtt4YL0*T3hu&Pz@81Len~5HLAO&uX)t3e?2z`e9ZP&^Rnlug;`2=#H=_P&?@>{#NnW?moFyl!j~3UxG^*pp6p#==0`VFOb|EN{9-)mOTYO$-=0rbcVDx5bLl=^pn$Gb#CUx5Z-3Rfs0!mGSg5>%!@(BQ+PG<7V{T^o zg1)o$CldCY(1saU@PM35Xy1@2y1sm~>jhSOd(_R8S#HY-K3A+F$W9Rw(p${K_uooN z#$3AX%zTqW9&eYf`WhYH((Olj$Akp0K9`$hXJxP|6YL6b4huc>e4MT(mIF8gSDqEtl}@#Mq<@>FyWMSM**}W_r+&tH+}$3I zMxDH62cIjr4&ev75kK<{sKzz>_yxo!>VZ?`?4ZC5a9nxw5cfWCK}IRVbh9@6H69t8 zC;eDz|8Sp5$g<9VrI&_jt#tgO#k;F84j)-?fT@wV%+#@)b;>bO0<{)>8VMWzvpK(Q z5T9j&)X-c%d2f=KY`sQp-F-^^y7|=rFyPSs*pZ>nt zp6_v0?*cCojE1nT2QUL4sfD%~C-7YF0uu`g$m8U>!DHucL^hXU|TR2vT zQp%_hwfTkKw#h4P*WXh3=%%jA`zz^xHabNw=rhZsuun%pJz(@h0}i>m>GavogP_Ra zJcY!Co9IfWzR-JTx<{N_QZeXw(Y?j4YN7*sRp<$Cm;s3}Rm5m13L$Mzc{AFhmwK08Az3~dK@Jo=q4BhvXz6*;87@eJXPAOg)OCsG-Q`tC#h!cJ z#j&bMgO1)u3Cu^%?{lB@Ty6C|VI~Yap1#eq3IW#HjQxI8<5fuyIe{iZq4|VRIwWdx zlwBKi1^zsj;~w;ly-^g5xa|u1BDgaWB}Ild0d+3B^?-}!xpM@tnTn*9t8PvIJ}czi z>3a>R4!dLivVLmtN@IA4i5-8MeG z6GoE6MOAUY(t}&eHBxcB>V6Yzy%goGAma^$61J1YjW0=kt}eZK;IPcN?3>G%Kw2lW zavCxAvumTDDfbUCk@c<-WFAi!)+GY$2PajGKE>qRXmao4!!*aoZtsD&ke7@F6Iy~G_Sf4OLJCnGBP2nTzVeypgV$c;oa|<99ww!lUWK9J5^RpV>5PbD30Cw>ttlaJGT&)8u zNP!k?D{qUs#q_(lv3KUd9bp&>g>+X3W8IPeb}>81Gsz$^Y7k^h2aAoup5{@^j*mUI z7DI`H%_pY;R%d5N^We&y?XRlZu_VQ;GK6_^vNeBI$1Q(rw!AM$;8y;%mN)S}mTJjA z6O5AxPSmHu!J-SLG_cX=n` zKGE&Lqb^`lubI(mE>&uv=P-90Pg|tl5s5!}6!_|3hHi%%1iKh&6&V!+v7YoVGnKKB z;M>uXy0!yjAA)_EBPlB}jRv;57Jq&`=llFfGtq zEGsbXFpL?!5DY^^rG0v0G6Y3Lwe_)y(mYFoDyYp7Yp=Xu#DXVZ?10D00$K4fe-WJ_ z4`H}FJTkzx8WwsPN`zfrX=8otiEK50v6z0?dQJYqGbOR?%DjJxnHm4rXwrW$pZ~%< zLB@aan;TdX=l_jrf}4YGWOVy|Xon`mcQWWR9Gf$%Qs*(EaEkt(m@thDsem16TLpV( zi2>Yu(YCg$bzdJGYkijAuEY?4d$m|H3rePZZ!(dnPvXz$j5`Z$>s+@AV+CHdQYYRfIoIQZx!&LgO#mcU9v*BFWt^{9$Z}loK?+hEXv%d7i z-QZsOAI)8PI8|NSKgw_r&PHT*22)a~3`ZGu$2^@7QRWgdBvYIWY2%m=NrX5k9v+fJ z#;2$#Lxju}%1}rs5#Dv4=Y79FzweLly1wf>f2_UNUh7`>I(w~kueI*I?)&#rKHqAS z#^UgV)9a`*iwULQ*>mxPzQeW-QmW>l5JF6*x_`J1dEzWOTbMK3+a7sNKukLR*xLXs zE?^I#wCT2|9bVn&hR3--=9hI#oK^Mb4*lIKz}Q7dylE_hbeOl!fX62)Co5w%`~SNwCth}V&P#Z)iiJA(|kxRk&HT2TKty; z|KKQkV5#lYQYcPgYt@_Yw^25aUBk9Qc4WiFMevL)8-RY;4Wbs zca2&%kdw7**Q_M{VS%*vhXfk6(p?~NL_xaUv_aDARiPU^kDGZ&E^mTLr*1QfW$lun zV`TS~4~QOECyJ?#9?tCWZ>+kyx~ii2M>g%Cy=mkhKdejM@1V!qF7I4CgDY@e)onLK zk)$HuZQu!dRZf2rjC~~8zMF)Hr8Fd?_>Hy>0^l(u=lE`;D%ATd1V2+Gm2QRg-ay`8(Q8V_@`>%^m>)hEa zBZV2PV$Z?&4G9ZfYOE7N3(}cf0Yy;QwKjB!5=qDo!qID#FEzfbpH5&i=%$SuT742cGoT5O96Z z>LR(X(DTP(&4-dtvT4$W`-7hcuX5HmQzW>yde$){0{G&8TJOb2R{&oBz>#^ySmUrtq@I@%{|4v9 zu$u#80C$r6c}8+9^?$loJO=#b|LvzAIQZB88$y$Tb8v_;8-#%Q!Im*UtO8MA#h5WZ z1JHpB4B_7irh|6IssBu1Za`z08z`oTPy)S*v@y&~Uvs*&K1Fck-FuW@TSOpWQ4c^6 zNdbT!a_ola4**ZZ$p{9(BLKxCGmVCzmH@a1Bg+RHQ8&gVgm4UxWoKgH=1s#W0>^fM zNcIX?2}Js;AK}R}n9D;VRoSILA{mB3SSd*-f#Qt7x`B6(03jV*wb|LhX^Cf12rq*c ziv{6X8W{%)l>!XdnK*fkz%?I1K2r*l$@R9MRaFycnF(CORo0U>OAzOgQG5_bu-(N@WO0J65h+%m&31?-PL< zNIRT=iHZy6xTP?Z6qa4F%>@)okvV61FJ?&FR^G2MwQV3FR1A$%f|Sd%!qVVjS!>9M zv*nR;%~#OJy%+8R-4T=eH&gyifpe8-5)OhgpRF|zIPBwr6z&B|F?42lfyE(se*(wf zNqo0mpsLCYP$j3$I3qv|VI|oMctIKoZ4gz$;0EnUlROAv88snL{~u*(MjjG^C?wwco83aoPW1W{&udFoh>l3Ee3st$@)R7PRI$VC&HF_a* z_f&((!%;t^<(nLMAIvi;FUI}5yY}0}`)|+M2o)TMKW)-GGr!Kg9OX+2{dwnP!@%?L ztobj)%@VdvZg?1ZwNL+Vx@3|9arU03V5&??Zo@ad7}=yAKUtMU#}NgJ^~a@w!qJ*H zZr?7K57eB-!p<9Oj3)T5=i=s|R(k>;d#_VH*pb!k;)}1DmTINc9`}eAzu&{jxjYcD zs@c^<-J;%_A`2Jl#l`_L3#`&$uKzOOY>V$pps%k{ z<;KGOhRR0S=bhvFt4keCBD+UnttPFKwfgAt)>==hew$!@SyKE@x^&mLnC0?uk%?fK zv!-LX#q0>db#QBY#Gyt-l>Q-B$yN(5wOqSZ8@haMi!%P_^`0u7$9Af=b&q#0AuW}Q zA&zBMssij1@dc6t z1smFePx>)^1cK=WUg-<%H=Xv{7Ui|1e9od2J4}C*NsB&iNW3Oyy+yN_>$dDS)r}rkE=|6dv?vaLL1js!&i?3) zDe62?GJ=ZFfGxa}m~-DPMIQWKXe1(RCKNEhLuWO;c)yeBIv$CX)_Ib8J1B#xH0Kj+ zz|$d(qPq&p{p30dCt}*TPT@+}sDshPLoB>f;miCuhxh2y#Zv}J-c9XSw&vH%7kR~A zOx+$6IaTxymnVNV}-DK)ae*Ws9)nnY)jwBmqAV?JN^Af zIOrl#c11T!FskcZX=>Gu&HCrwAiYSh_7yFi*84sUcm|K3mfvr9)XPi1K=7t==CW}M`MbZunB;C`_ z=|Oj)7v#kfIh0~I^i0Rj+HDf_#0vP$Y=YObXaRUqK)^t_CHBIP2|Ht^qP6D7>)31# zy4~cZ2D>}r$eRitPo|mv8tuvHSd7BRGrdVgu-)(*!w{nClhoukg>4fjwPMnNUYCP@ zZf(|Yxg$`pVt7&ix{@OL3=T=;r0+o$*$1V2n|ip!hCTX|V+V~FL=SNBS0J?bd) z{iaJT<%73d6EXM~eiSXJ{~}Df)<8j>X-0RI>gzNeE-3qSL&w1R16;D#$v_YmyK?)x ze#uaQXA-Pyq=l$>w79*xEfh%$&V*bLHJ@dfDB)8%U*`R1+KsUesX8n3y{V~{5-{F# z^b4Q2jV7^4^Z;@Ys%oLg@c*$k&i=&GEPDqnRdh=W)kZL^dS>}a;C!F=D(A3kW zJoG~2m%j#^OMDpRrJ2A841v zR_jooVoDQz{d%m?hK0pup_kBS(iWnl4{M*4Uo4$RA&vjMqE;H(iwUxEjjF~vv=ntJ zyT}@`+UqzX6Mg+QBi(b0oG)DSn2(DQRkhK9+LIhvy0AfB#kn89(AuNF>afvE`{K}~PH!A@ z-MSBZ&XLKYn=amub%*Zn0bdIKGZvp}Sk47}t;~0EBnRSSx|koi2CQfITVdG(&c1((lo*w} z=NZ_JMo3#7MI~BTFK`G^vVU2pGND6aeq}K_W-D#uv1UYG$da2!(C3T|dviBU%Fbq| z;o#D)B>(xB%4Jm#$QJiGXY^PQuUa z_?Ki`nx_(qsGP5j?CAc}^A(k7+iZwkkMjM_2PmA1*8JEtRr&k3*$m#*w;sTn15xRh zNQ)RIU{qhC)xgPx=>RK}mPw%&bO`A7OEQ$e$FMevg*-H+;@gV1@mxg{vgHN9O%!}6i;7l6(a}3D{e5{mamioWGo*1fi?Po5KM76$s>f?GfMS6aOeWU02AP3Xe-F>&5KG#xLoCpnnma*H504VSD!*x^ZbSCP)Y0*moIw#go8koz zS2d-;Ug1OF_oz>1fagXYS{IZSX#`YmahRSP|N9sVBs~6#gl;Fv;$ZWno(&agSX&x~ zpimd&)lW;n$^^mT)^gAn`_6;?h%yvUCD)=~?iWs(_&3owjz7x{$9z7HJhKknwLX*t zyFz<*sALjyPn2$gM9M?)jhb*_Jg9EmzpHD4j_WxB?WrKmDS8Ajdtz`EOsf$^rz08Eo*Y|e<{ymWjGtG4nv(J+@*sNU5VMR?pcE(6wE^6$ap z%jX%77cL#*inPj5+vUy7JgqaHMX>eN{mT!{z9Dws$UPY&3%iP0aXtPvuF`H6=%jcXcW ztw#)F7c$B#+R0hK!uFPL@#?k2f@T%fM=kK!l)(P@Rz7R7&c36GK3(U1=RW9=s zs4U!JRfs63!MfdOkE=0zkJ!;f3nh<7?~f3;^&&ciWXH*Z^^}1;@7ZZpkJ&kRFH9-i zQ8{5OlFxaCjcQ#Q*Fi&owkNb>Hnd|6_sLR^$ z_=Z#ycjU$v%4kR7Qw<*NjyV49^SwnZvtu&DHj#F;bXA#xa9;X@Cu`?>>cmKao{qVP z9ydMG5|kSwJ%7EQt|a9ARx$jzW)jWUoddEn!KYp6E-qR@jY@H07o;K2jNOeMDCPSL zn>z}3VwuNrr|SID)&@?{v-Vw4G*82@Ij41gjPIe=i2HM0D~1+s^-UWQ*KaTxs?B1v zP?bE8HnkqON4u|aMRv&@?@K9rhO%wyuy2gnl^Z>dQ*X zg!{eJYghmI zo}ftw>b0M&{XBz#`^|9ul7Crpjo296+cK)+HEt7r!%Pqq&yT&3C=XSA(R)rzARBal zh^J9}e#PX#)Dcj<{;X9U{S-`u*`@bgQtxCT+FG*6^L2E{1?qVv*j3rO0)4xa&a0f7 zFwJP@yYI5TOw9<_g_cxpJe4~yK&xKG3fZTSNuDztkj08~-+p?U`espT>*FbL;Ut>s zMqWZq*j&DKxMO<%T09>OzSAXUhRR(nuMG&LZTHLT))w=YqJ+pt}LDQ+3Cd zg7@vbzO2@0MdyBF^HP8PZX!+jLj2@(3fp6$_<~-8X@hwuVb7TpCo^NjukJ{i^m3QF z${>H5a;7{hQaNJd-eA-0Kb^xhva7n{vMc{4=gMhu?77@B$mq4u)o8TGJNL<-$6r7D z>GTP@`t}k5Pqmyc`*=V`?-jFl2abP@@2l>EXKmgAnajd2i){CiQ@5*j+{(izM!o*p YTlwqNav@vcA`1Krbuv65(0J}>0IRF3v literal 0 HcmV?d00001 diff --git a/test/karma.conf.js b/test/karma.conf.js index 3da8db12d540..87070fd88d44 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -80,6 +80,7 @@ module.exports = function setKarmaConfig(config) { fs: false, // Some tests import fs, stream: require.resolve('stream-browserify'), // util > inherits breaks with `false` path: false, + child_process: false, }, }, }, diff --git a/test/package.json b/test/package.json index 411ccad2a47b..aaa299ac3ed0 100644 --- a/test/package.json +++ b/test/package.json @@ -10,13 +10,13 @@ "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@mui/material": "^5.16.7", + "@mui/x-charts": "workspace:*", + "@mui/x-charts-pro": "workspace:*", + "@mui/x-charts-vendor": "workspace:*", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-pro": "workspace:*", "@mui/x-date-pickers": "workspace:*", "@mui/x-date-pickers-pro": "workspace:*", - "@mui/x-charts": "workspace:*", - "@mui/x-charts-pro": "workspace:*", - "@mui/x-charts-vendor": "workspace:*", "@mui/x-license": "workspace:*", "@playwright/test": "^1.44.1", "@react-spring/web": "^9.7.4", @@ -25,6 +25,7 @@ "@types/moment-jalaali": "^0.7.9", "@types/prop-types": "^15.7.12", "@types/react": "^18.3.4", + "@types/semver": "^7.5.8", "chai": "^4.5.0", "dayjs": "^1.11.11", "moment": "^2.30.1", @@ -33,6 +34,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.26.1", + "semver": "^7.6.3", "stylis": "^4.3.2", "stylis-plugin-rtl": "^2.1.1" } diff --git a/test/regressions/index.test.js b/test/regressions/index.test.js index cb4971f83010..cc3f44deeb07 100644 --- a/test/regressions/index.test.js +++ b/test/regressions/index.test.js @@ -3,6 +3,7 @@ import { expect } from 'chai'; import * as path from 'path'; import * as childProcess from 'child_process'; import { chromium } from '@playwright/test'; +import materialPackageJson from '@mui/material/package.json'; function sleep(timeoutMS) { return new Promise((resolve) => { @@ -10,6 +11,21 @@ function sleep(timeoutMS) { }); } +const isMaterialUIv6 = materialPackageJson.version.startsWith('6.'); + +const isConsoleWarningIgnored = (msg) => { + if ( + msg && + isMaterialUIv6 && + msg.startsWith( + 'MUI: The Experimental_CssVarsProvider component has been ported into ThemeProvider.', + ) + ) { + return true; + } + return false; +}; + async function main() { const baseUrl = 'http://localhost:5001'; const screenshotDir = path.resolve(__dirname, './screenshots/chrome'); @@ -85,6 +101,9 @@ async function main() { it('should have no errors after the initial render', () => { const msg = errorConsole; errorConsole = undefined; + if (isConsoleWarningIgnored(msg)) { + return; + } expect(msg).to.equal(undefined); }); @@ -147,6 +166,9 @@ async function main() { it(`should have no errors rendering ${pathURL}`, () => { const msg = errorConsole; errorConsole = undefined; + if (isConsoleWarningIgnored(msg)) { + return; + } expect(msg).to.equal(undefined); }); }); diff --git a/test/utils/checkMaterialVersion.ts b/test/utils/checkMaterialVersion.ts new file mode 100644 index 000000000000..9ebaa81b7d6c --- /dev/null +++ b/test/utils/checkMaterialVersion.ts @@ -0,0 +1,43 @@ +import { expect } from 'chai'; +import semver from 'semver'; +import childProcess from 'child_process'; + +type PackageJson = { + name: string; + version: string; +}; + +const isJSDOM = /jsdom/.test(window.navigator.userAgent); + +export function checkMaterialVersion({ + packageJson, + materialPackageJson, +}: { + packageJson: PackageJson & { devDependencies: { '@mui/material': string } }; + materialPackageJson: PackageJson; +}) { + if (!isJSDOM) { + return undefined; + } + + const expectedVersion = packageJson.devDependencies['@mui/material']; + + const versions = childProcess.execSync(`npm dist-tag ls ${'@mui/material'} ${expectedVersion}`, { + encoding: 'utf8', + }); + const tagMapping = versions + .split('\n') + .find((mapping) => { + return mapping.startsWith(`${expectedVersion}: `); + }) + ?.split(': ')[1]; + + const version = tagMapping ?? expectedVersion; + + return it(`${packageJson.name} should resolve proper @mui/material version`, () => { + expect(semver.satisfies(materialPackageJson.version, version)).to.equal( + true, + `Expected @mui/material ${version}, but found ${materialPackageJson.version}`, + ); + }); +} diff --git a/test/utils/pickers/describeValue/testPickerActionBar.tsx b/test/utils/pickers/describeValue/testPickerActionBar.tsx index 850189c47294..1491dc6b8856 100644 --- a/test/utils/pickers/describeValue/testPickerActionBar.tsx +++ b/test/utils/pickers/describeValue/testPickerActionBar.tsx @@ -1,14 +1,13 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { adapterToUse, getExpectedOnChangeCount, expectPickerChangeHandlerValue, } from 'test/utils/pickers'; import { DescribeValueTestSuite } from './describeValue.types'; -import { fireUserEvent } from '../../fireUserEvent'; export const testPickerActionBar: DescribeValueTestSuite = ( ElementToTest, @@ -50,7 +49,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Clear the date - fireUserEvent.mousePress(screen.getByText(/clear/i)); + fireEvent.click(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, emptyValue); expect(onAccept.callCount).to.equal(1); @@ -76,7 +75,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Clear the date - fireUserEvent.mousePress(screen.getByText(/clear/i)); + fireEvent.click(screen.getByText(/clear/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -104,7 +103,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Cancel the modifications - fireUserEvent.mousePress(screen.getByText(/cancel/i)); + fireEvent.click(screen.getByText(/cancel/i)); expect(onChange.callCount).to.equal( getExpectedOnChangeCount(componentFamily, pickerParams) + 1, ); @@ -138,7 +137,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Cancel the modifications - fireUserEvent.mousePress(screen.getByText(/cancel/i)); + fireEvent.click(screen.getByText(/cancel/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -166,7 +165,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Accept the modifications - fireUserEvent.mousePress(screen.getByText(/ok/i)); + fireEvent.click(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal( getExpectedOnChangeCount(componentFamily, pickerParams), ); // The accepted value as already been committed, don't call onChange again @@ -193,7 +192,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Accept the modifications - fireUserEvent.mousePress(screen.getByText(/ok/i)); + fireEvent.click(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal(1); expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); @@ -218,7 +217,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( ); // Accept the modifications - fireUserEvent.mousePress(screen.getByText(/ok/i)); + fireEvent.click(screen.getByText(/ok/i)); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(1); @@ -243,7 +242,7 @@ export const testPickerActionBar: DescribeValueTestSuite = ( />, ); - fireUserEvent.mousePress(screen.getByText(/today/i)); + fireEvent.click(screen.getByText(/today/i)); let startOfToday: any; if (pickerParams.type === 'date') { diff --git a/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx b/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx index d2e1d1494439..57aa07b9e9c6 100644 --- a/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx +++ b/test/utils/pickers/describeValue/testPickerOpenCloseLifeCycle.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { getExpectedOnChangeCount, getFieldInputRoot, openPicker } from 'test/utils/pickers'; import { DescribeValueTestSuite } from './describeValue.types'; import { fireUserEvent } from '../../fireUserEvent'; @@ -10,7 +10,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite ElementToTest, options, ) => { - const { componentFamily, render, renderWithProps, values, setNewValue, ...pickerParams } = + const { componentFamily, render, renderWithProps, values, setNewValue, clock, ...pickerParams } = options; if (componentFamily !== 'picker') { @@ -82,7 +82,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite expect(onChange.lastCall.args[0][index]).toEqualDateTime(value); }); } else { - expect(onChange.lastCall.args[0]).toEqualDateTime(newValue as any); + expect(onChange.lastCall.args[0]).toEqualDateTime(newValue); } expect(onAccept.callCount).to.equal(pickerParams.variant === 'mobile' ? 0 : 1); expect(onClose.callCount).to.equal(pickerParams.variant === 'mobile' ? 0 : 1); @@ -140,7 +140,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite expect(onChange.lastCall.args[0][index]).toEqualDateTime(value); }); } else { - expect(onChange.lastCall.args[0]).toEqualDateTime(newValue as any); + expect(onChange.lastCall.args[0]).toEqualDateTime(newValue); } expect(onAccept.callCount).to.equal(1); expect(onClose.callCount).to.equal(1); @@ -216,7 +216,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite expect(onChange.lastCall.args[0][index]).toEqualDateTime(value); }); } else { - expect(onChange.lastCall.args[0]).toEqualDateTime(newValue as any); + expect(onChange.lastCall.args[0]).toEqualDateTime(newValue); } expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -245,7 +245,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite // meridiem does not change this time in case of multi section digital clock (pickerParams.type === 'time' || pickerParams.type === 'date-time' ? 1 : 0), ); - expect(onChange.lastCall.args[0]).toEqualDateTime(newValueBis as any); + expect(onChange.lastCall.args[0]).toEqualDateTime(newValueBis); } expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -273,7 +273,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite const newValue = setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Dismiss the picker - fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); + fireEvent.keyDown(document.activeElement!, { key: 'Escape' }); expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams)); expect(onAccept.callCount).to.equal(1); if (isRangeType) { @@ -281,7 +281,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite expect(onChange.lastCall.args[0][index]).toEqualDateTime(value); }); } else { - expect(onChange.lastCall.args[0]).toEqualDateTime(newValue as any); + expect(onChange.lastCall.args[0]).toEqualDateTime(newValue); } expect(onClose.callCount).to.equal(1); }); @@ -342,10 +342,10 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite const newValue = setNewValue(values[0], { isOpened: true, selectSection, pressKey }); // Dismiss the picker - fireUserEvent.mousePress(document.body); + fireUserEvent.keyPress(document.activeElement!, { key: 'Escape' }); expect(onChange.callCount).to.equal(getExpectedOnChangeCount(componentFamily, pickerParams)); expect(onAccept.callCount).to.equal(1); - expect(onAccept.lastCall.args[0]).toEqualDateTime(newValue as any); + expect(onAccept.lastCall.args[0]).toEqualDateTime(newValue); expect(onClose.callCount).to.equal(1); }); @@ -365,7 +365,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite ); // Dismiss the picker - fireUserEvent.mousePress(document.body); + fireEvent.click(document.body); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); @@ -386,7 +386,7 @@ export const testPickerOpenCloseLifeCycle: DescribeValueTestSuite ); // Dismiss the picker - fireUserEvent.keyPress(document.body, { key: 'Escape' }); + fireEvent.keyDown(document.body, { key: 'Escape' }); expect(onChange.callCount).to.equal(0); expect(onAccept.callCount).to.equal(0); expect(onClose.callCount).to.equal(0); diff --git a/test/utils/pickers/describeValue/testShortcuts.tsx b/test/utils/pickers/describeValue/testShortcuts.tsx index 4e4493b442c2..ae14f1ddc801 100644 --- a/test/utils/pickers/describeValue/testShortcuts.tsx +++ b/test/utils/pickers/describeValue/testShortcuts.tsx @@ -2,9 +2,8 @@ import * as React from 'react'; import { expect } from 'chai'; import { spy } from 'sinon'; import { expectPickerChangeHandlerValue } from 'test/utils/pickers'; -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { DescribeValueTestSuite } from './describeValue.types'; -import { fireUserEvent } from '../../fireUserEvent'; export const testShortcuts: DescribeValueTestSuite = (ElementToTest, options) => { const { @@ -50,7 +49,7 @@ export const testShortcuts: DescribeValueTestSuite = (ElementToTe ); const shortcut = screen.getByRole('button', { name: 'Test shortcut' }); - fireUserEvent.mousePress(shortcut); + fireEvent.click(shortcut); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, values[1]); @@ -88,7 +87,7 @@ export const testShortcuts: DescribeValueTestSuite = (ElementToTe ); const shortcut = screen.getByRole('button', { name: 'Test shortcut' }); - fireUserEvent.mousePress(shortcut); + fireEvent.click(shortcut); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, values[1]); @@ -126,7 +125,7 @@ export const testShortcuts: DescribeValueTestSuite = (ElementToTe ); const shortcut = screen.getByRole('button', { name: 'Test shortcut' }); - fireUserEvent.mousePress(shortcut); + fireEvent.click(shortcut); expect(onChange.callCount).to.equal(1); expectPickerChangeHandlerValue(pickerParams.type, onChange, values[1]); diff --git a/test/utils/pickers/misc.ts b/test/utils/pickers/misc.ts index 9e189dc2c8dc..f5fcf9c40ee7 100644 --- a/test/utils/pickers/misc.ts +++ b/test/utils/pickers/misc.ts @@ -7,7 +7,9 @@ export const stubMatchMedia = (matches = true) => sinon.stub().returns({ matches, addListener: () => {}, + addEventListener: () => {}, removeListener: () => {}, + removeEventListener: () => {}, }); const getChangeCountForComponentFamily = (componentFamily: PickerComponentFamily) => { diff --git a/test/utils/pickers/openPicker.ts b/test/utils/pickers/openPicker.ts index 67293e7a3cce..229510842e61 100644 --- a/test/utils/pickers/openPicker.ts +++ b/test/utils/pickers/openPicker.ts @@ -1,12 +1,12 @@ -import { screen } from '@mui/internal-test-utils'; +import { fireEvent, screen } from '@mui/internal-test-utils'; import { getFieldSectionsContainer } from 'test/utils/pickers/fields'; import { pickersInputBaseClasses } from '@mui/x-date-pickers/PickersTextField'; -import { fireUserEvent } from '../fireUserEvent'; export type OpenPickerParams = | { type: 'date' | 'date-time' | 'time'; variant: 'mobile' | 'desktop'; + click?: (element: Element) => Promise; } | { type: 'date-range' | 'date-time-range'; @@ -16,30 +16,34 @@ export type OpenPickerParams = * @default false */ isSingleInput?: boolean; + click?: (element: Element) => Promise; }; -export const openPicker = (params: OpenPickerParams) => { +export const openPicker = async (params: OpenPickerParams) => { const isRangeType = params.type === 'date-range' || params.type === 'date-time-range'; const fieldSectionsContainer = getFieldSectionsContainer( isRangeType && !params.isSingleInput && params.initialFocus === 'end' ? 1 : 0, ); + const { click = fireEvent.click } = params; if (isRangeType) { - fireUserEvent.mousePress(fieldSectionsContainer); + await click(fieldSectionsContainer); if (params.isSingleInput && params.initialFocus === 'end') { const sections = fieldSectionsContainer.querySelectorAll( `.${pickersInputBaseClasses.sectionsContainer}`, ); - fireUserEvent.mousePress(sections[sections.length - 1]); + await click(sections[sections.length - 1]); } - return undefined; + return true; } if (params.variant === 'mobile') { - return fireUserEvent.mousePress(fieldSectionsContainer); + await click(fieldSectionsContainer); + + return true; } const target = @@ -47,5 +51,6 @@ export const openPicker = (params: OpenPickerParams) => { ? screen.getByLabelText(/choose time/i) : screen.getByLabelText(/choose date/i); - return fireUserEvent.mousePress(target); + await click(target); + return true; }; diff --git a/test/utils/pickers/viewHandlers.ts b/test/utils/pickers/viewHandlers.ts index 2b3ab36c387f..845261f64156 100644 --- a/test/utils/pickers/viewHandlers.ts +++ b/test/utils/pickers/viewHandlers.ts @@ -1,8 +1,7 @@ -import { fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; +import { fireEvent, fireTouchChangedEvent, screen } from '@mui/internal-test-utils'; import { getClockTouchEvent, formatFullTimeValue } from 'test/utils/pickers'; import { MuiPickersAdapter, TimeView } from '@mui/x-date-pickers/models'; import { formatMeridiem } from '@mui/x-date-pickers/internals'; -import { fireUserEvent } from '../fireUserEvent'; type TDate = any; @@ -36,9 +35,7 @@ export const timeClockHandler: ViewHandler = { export const digitalClockHandler: ViewHandler = { setViewValue: (adapter, value) => { - fireUserEvent.mousePress( - screen.getByRole('option', { name: formatFullTimeValue(adapter, value) }), - ); + fireEvent.click(screen.getByRole('option', { name: formatFullTimeValue(adapter, value) })); }, }; @@ -47,10 +44,10 @@ export const multiSectionDigitalClockHandler: ViewHandler = { const hasMeridiem = adapter.is12HourCycleInCurrentLocale(); const hoursLabel = parseInt(adapter.format(value, hasMeridiem ? 'hours12h' : 'hours24h'), 10); const minutesLabel = adapter.getMinutes(value).toString(); - fireUserEvent.mousePress(screen.getByRole('option', { name: `${hoursLabel} hours` })); - fireUserEvent.mousePress(screen.getByRole('option', { name: `${minutesLabel} minutes` })); + fireEvent.click(screen.getByRole('option', { name: `${hoursLabel} hours` })); + fireEvent.click(screen.getByRole('option', { name: `${minutesLabel} minutes` })); if (hasMeridiem) { - fireUserEvent.mousePress( + fireEvent.click( screen.getByRole('option', { name: formatMeridiem(adapter, adapter.getHours(value) >= 12 ? 'pm' : 'am'), }), From f1ab73460febce70393b1397fe35b42be5787cfd Mon Sep 17 00:00:00 2001 From: Arthur Suh Balduini <34691066+arthurbalduini@users.noreply.github.com> Date: Thu, 29 Aug 2024 13:25:06 +0200 Subject: [PATCH 861/912] [DateTimeRangePicker] Fix date format resolving from views on 24hr locales (#14341) Co-authored-by: Arthur Balduini Co-authored-by: Lukas --- .../DesktopDateTimeRangePicker.tsx | 2 +- .../MobileDateTimeRangePicker.tsx | 2 +- .../src/internals/utils/date-time-utils.ts | 15 +++++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx index f3d52bc90d1f..069e4d66cc75 100644 --- a/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.tsx @@ -173,7 +173,7 @@ const DesktopDateTimeRangePicker = React.forwardRef(function DesktopDateTimeRang ...defaultizedProps, views, viewRenderers, - format: resolveDateTimeFormat(utils, defaultizedProps), + format: resolveDateTimeFormat(utils, defaultizedProps, true), // force true to correctly handle `renderTimeViewClock` as a renderer ampmInClock: true, calendars: defaultizedProps.calendars ?? 1, diff --git a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx index 504484d7f344..27036c430d8e 100644 --- a/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx +++ b/packages/x-date-pickers-pro/src/MobileDateTimeRangePicker/MobileDateTimeRangePicker.tsx @@ -172,7 +172,7 @@ const MobileDateTimeRangePicker = React.forwardRef(function MobileDateTimeRangeP const props = { ...defaultizedProps, viewRenderers, - format: resolveDateTimeFormat(utils, defaultizedProps), + format: resolveDateTimeFormat(utils, defaultizedProps, true), // Force one calendar on mobile to avoid layout issues calendars: 1, // force true to correctly handle `renderTimeViewClock` as a renderer diff --git a/packages/x-date-pickers/src/internals/utils/date-time-utils.ts b/packages/x-date-pickers/src/internals/utils/date-time-utils.ts index 47688559cf1b..eb7c100e9468 100644 --- a/packages/x-date-pickers/src/internals/utils/date-time-utils.ts +++ b/packages/x-date-pickers/src/internals/utils/date-time-utils.ts @@ -7,7 +7,7 @@ import { TimeView, } from '../../models'; import { resolveTimeFormat, isTimeView, isInternalTimeView } from './time-utils'; -import { resolveDateFormat } from './date-utils'; +import { isDatePickerView, resolveDateFormat } from './date-utils'; import { DateOrTimeViewWithMeridiem } from '../models'; import { DesktopOnlyTimePickerProps } from '../models/props/clock'; import { DefaultizedProps } from '../models/helpers'; @@ -18,7 +18,12 @@ export const resolveDateTimeFormat = ( views, format, ...other - }: { format?: string; views: readonly DateOrTimeViewWithMeridiem[]; ampm: boolean }, + }: { + format?: string; + views: readonly DateOrTimeViewWithMeridiem[]; + ampm: boolean; + }, + ignoreDateResolving?: boolean, ) => { if (format) { return format; @@ -30,7 +35,7 @@ export const resolveDateTimeFormat = ( views.forEach((view) => { if (isTimeView(view)) { timeViews.push(view as TimeView); - } else { + } else if (isDatePickerView(view)) { dateViews.push(view as DateView); } }); @@ -44,7 +49,9 @@ export const resolveDateTimeFormat = ( } const timeFormat = resolveTimeFormat(utils, { views: timeViews, ...other }); - const dateFormat = resolveDateFormat(utils, { views: dateViews, ...other }, false); + const dateFormat = ignoreDateResolving + ? utils.formats.keyboardDate + : resolveDateFormat(utils, { views: dateViews, ...other }, false); return `${dateFormat} ${timeFormat}`; }; From 1be2f4caab254861ce227b6ab398af07e6a45a6b Mon Sep 17 00:00:00 2001 From: Arthur Suh Balduini <34691066+arthurbalduini@users.noreply.github.com> Date: Thu, 29 Aug 2024 13:25:21 +0200 Subject: [PATCH 862/912] [pickers] Add `onTouchStart` handler for `TimeClock` (#14305) Co-authored-by: Arthur Balduini --- .../x-date-pickers/src/TimeClock/Clock.tsx | 5 +- .../src/TimeClock/tests/TimeClock.test.tsx | 68 +++++++++++++++---- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/packages/x-date-pickers/src/TimeClock/Clock.tsx b/packages/x-date-pickers/src/TimeClock/Clock.tsx index d04f7c4f7ebe..fc69d7d028fe 100644 --- a/packages/x-date-pickers/src/TimeClock/Clock.tsx +++ b/packages/x-date-pickers/src/TimeClock/Clock.tsx @@ -261,7 +261,7 @@ export function Clock(inProps: ClockProps) handleValueChange(newSelectedValue, isFinish); }; - const handleTouchMove = (event: React.TouchEvent) => { + const handleTouchSelection = (event: React.TouchEvent) => { isMoving.current = true; setTime(event, 'shallow'); }; @@ -347,7 +347,8 @@ export function Clock(inProps: ClockProps) ', () => { const onChangeMock = spy(); render(); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', selectEvent); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', selectEvent); expect(onChangeMock.callCount).to.equal(0); // hours are not disabled @@ -224,7 +224,7 @@ describe('', () => { const onChangeMock = spy(); render(); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', selectEvent); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', selectEvent); expect(onChangeMock.callCount).to.equal(0); // hours are disabled @@ -252,7 +252,7 @@ describe('', () => { }, ], }, - '20:--': { + '19:--': { changedTouches: [ { clientX: 66, @@ -292,7 +292,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['13:--']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['13:--']); expect(handleChange.callCount).to.equal(1); const [date, selectionState] = handleChange.firstCall.args; @@ -316,7 +316,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['--:20']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['--:20']); expect(handleChange.callCount).to.equal(1); const [date, selectionState] = handleChange.firstCall.args; @@ -338,7 +338,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['--:20']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['--:20']); expect(handleChange.callCount).to.equal(0); }); @@ -356,7 +356,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['--:20']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['--:20']); expect(handleChange.callCount).to.equal(0); }); @@ -374,7 +374,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['20:--']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['19:--']); expect(handleChange.callCount).to.equal(0); }); @@ -392,7 +392,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['20:--']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['19:--']); expect(handleChange.callCount).to.equal(0); }); @@ -427,7 +427,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['--:10']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['--:10']); expect(handleChange.callCount).to.equal(1); const [date, selectionState] = handleChange.firstCall.args; @@ -449,7 +449,7 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['--:20']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['--:20']); expect(handleChange.callCount).to.equal(0); }); @@ -467,10 +467,54 @@ describe('', () => { />, ); - fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['--:20']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['--:20']); expect(handleChange.callCount).to.equal(0); }); + + it('should select enabled hour on touch and drag', () => { + const handleChange = spy(); + const handleViewChange = spy(); + render( + , + ); + + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['13:--']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchmove', clockTouchEvent['19:--']); + + expect(handleChange.callCount).to.equal(2); + const [date, selectionState] = handleChange.lastCall.args; + expect(date).toEqualDateTime(new Date(2018, 0, 1, 19)); + expect(selectionState).to.equal('shallow'); + expect(handleViewChange.callCount).to.equal(0); + }); + + it('should select enabled hour and move to next view on touch end', () => { + const handleChange = spy(); + const handleViewChange = spy(); + render( + , + ); + + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchstart', clockTouchEvent['13:--']); + fireTouchChangedEvent(screen.getByMuiTest('clock'), 'touchend', clockTouchEvent['13:--']); + + expect(handleChange.callCount).to.equal(2); + const [date, selectionState] = handleChange.lastCall.args; + expect(date).toEqualDateTime(new Date(2018, 0, 1, 13)); + expect(selectionState).to.equal('partial'); + expect(handleViewChange.callCount).to.equal(1); + }); }); describe('default value', () => { From cf441ece0f6c2e07acf49438ee14473bc4278b39 Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 29 Aug 2024 14:59:41 +0200 Subject: [PATCH 863/912] v7.15.0 (#14384) Signed-off-by: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Co-authored-by: Lukas Tyla Co-authored-by: Arthur Suh Balduini <34691066+arthurbalduini@users.noreply.github.com> Co-authored-by: Andrew Cherniavskii Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- CHANGELOG.md | 69 +++++++++++++++++++++ package.json | 2 +- packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 2 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- 16 files changed, 84 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e31b5b55466d..8373a3661fcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,75 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 7.15.0 + +_Aug 29, 2024_ + +We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights ✨: + +- 💫 Support Material UI v6 (`@mui/material@6`) peer dependency (#14142) @cherniavskii + +You can now use MUI X components with either v5 or v6 of `@mui/material` package 🎉 + +- 🐞 Bugfixes + +### Data Grid + +#### `@mui/x-data-grid-pro@7.15.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +- [DataGridPro] Export `GridRowReorderCell` component (#14079) @genepaul + +#### `@mui/x-data-grid-premium@7.15.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.15.0`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.15.0` + +- [pickers] Add `onTouchStart` handler for `TimeClock` (#14305) @arthurbalduini + +#### `@mui/x-date-pickers-pro@7.15.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.15.0`, plus: + +- [DateTimeRangePicker] Fix date format resolving from views on 24hr locales (#14341) @arthurbalduini + +### Charts + +#### `@mui/x-charts@7.15.0` + +- [charts] Add missing `themeAugmentation` in pro plan (#14313) @lhilgert9 +- [charts] Fix `LineChart` transition stopping before completion (#14366) @JCQuintas +- [charts] Fix tooltip with horizontal layout (#14337) @alexfauquette +- [charts] Keep axis root classe usage explicit (#14378) @alexfauquette + +#### `@mui/x-charts-pro@7.0.0-alpha.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@7.15.0`, plus: + +- [charts pro] Avoid relative reference to `@mui/x-charts` package (#14335) @LukasTy + +### Docs + +- [docs] Fix sentence case `h2` @oliviertassinari +- [docs] Clarify contribution guide references @oliviertassinari +- [docs] Fix Stack Overflow issue canned response @oliviertassinari +- [docs] Fix outdated link to support page @oliviertassinari +- [docs] Fix use of Material UI @oliviertassinari +- [docs] Update deprecated props in docs (#14295) @JCQuintas + +### Core + +- [core] Allow only v5.x for `MUI Core` renovate group (#14382) @LukasTy +- [core] Avoid visual regression when using `@mui/material@6` (#14357) @cherniavskii +- [core] Remove renovate rule targeting only `next` releases of `@mui/docs` (#14364) @LukasTy +- [core] Support `@mui/material@6` peer dependency (#14142) @cherniavskii +- [core] Use `useRtl` instead of `useTheme` to access direction (#14359) @LukasTy +- [code-infra] Typecheck nested folders in playground (#14352) @JCQuintas +- [infra] Fix Issue cleanup action @oliviertassinari +- [license] Prepare renaming of argument names @oliviertassinari + ## 7.14.0 _Aug 23, 2024_ diff --git a/package.json b/package.json index bd1b593aaa50..f96fd51d9dee 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "7.14.0", + "version": "7.15.0", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index d5288bfca544..0c34de9d04b4 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-pro", - "version": "7.0.0-alpha.2", + "version": "7.0.0-alpha.3", "description": "The Pro plan edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 4acecee461a4..6df175e78974 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-vendor", - "version": "7.14.0", + "version": "7.15.0", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", "main": "./index.js", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 92cc22761f95..89759c8f1518 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "7.14.0", + "version": "7.15.0", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.js", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index f37f5c4f5027..aeec4871a480 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-codemod", - "version": "7.14.0", + "version": "7.15.0", "bin": "./codemod.js", "private": false, "author": "MUI Team", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index 856bbbed53cf..d4e1aa9687bc 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "7.14.0", + "version": "7.15.0", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 21e79d9a9704..d3207ad28ee9 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "7.14.0", + "version": "7.15.0", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 1bffa00b34bd..fbf78ec33b7b 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "7.14.0", + "version": "7.15.0", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index dd1ea5206375..d5a1f2af8749 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "7.14.0", + "version": "7.15.0", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 727da9ac2882..db67ef12f606 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "7.14.0", + "version": "7.15.0", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index cb4f946a2fbe..3db487bfd2d9 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "7.14.0", + "version": "7.15.0", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 94f4803fdbd6..1b2695fa2e38 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-internals", - "version": "7.14.0", + "version": "7.15.0", "description": "Utility functions for the MUI X packages (internal use only).", "author": "MUI Team", "license": "MIT", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 8bb6e2528f4a..dbaf9004390a 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "7.14.0", + "version": "7.15.0", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 02c6ae99d1a9..46f651a038df 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "7.14.0", + "version": "7.15.0", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index a3b4f8ebc43e..067903ffcd30 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "7.14.0", + "version": "7.15.0", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", From 9e72473f3f266170b1a525acad92e0e83749c69e Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:18:01 +0200 Subject: [PATCH 864/912] [charts] Fix themeAugmentation (#14372) Signed-off-by: Jose C Quintas Jr Co-authored-by: Jose C Quintas Jr --- docs/pages/x/api/charts/charts-tooltip.json | 8 +- .../default-charts-axis-tooltip-content.json | 6 ++ .../default-charts-item-tooltip-content.json | 6 ++ .../x/api/charts/default-heatmap-tooltip.json | 6 ++ .../charts/charts-tooltip/charts-tooltip.json | 1 + .../default-charts-axis-tooltip-content.json | 1 + .../default-charts-item-tooltip-content.json | 1 + .../default-heatmap-tooltip.json | 1 + .../src/BarChartPro/BarChartPro.tsx | 2 +- .../src/LineChartPro/LineChartPro.tsx | 2 +- .../src/ScatterChartPro/ScatterChartPro.tsx | 2 +- packages/x-charts/src/BarChart/BarChart.tsx | 2 +- .../x-charts/src/ChartsGrid/ChartsGrid.tsx | 81 ++++--------------- .../src/ChartsGrid/ChartsHorizontalGrid.tsx | 38 +++++++++ .../src/ChartsGrid/ChartsVerticalGrid.tsx | 38 +++++++++ .../src/ChartsGrid/styledCommonents.tsx | 22 +++++ .../src/ChartsLegend/ChartsLegend.tsx | 19 ++--- .../src/ChartsTooltip/ChartsTooltip.tsx | 17 ++-- .../src/ChartsTooltip/ChartsTooltipTable.ts | 5 ++ .../DefaultChartsAxisTooltipContent.tsx | 2 +- .../DefaultChartsItemTooltipContent.tsx | 2 +- .../src/ChartsTooltip/chartsTooltipClasses.ts | 4 +- .../x-charts/src/ChartsXAxis/ChartsXAxis.tsx | 12 ++- .../x-charts/src/ChartsYAxis/ChartsYAxis.tsx | 12 ++- packages/x-charts/src/LineChart/LineChart.tsx | 2 +- .../src/ScatterChart/ScatterChart.tsx | 2 +- .../src/themeAugmentation/components.d.ts | 2 + .../src/themeAugmentation/overrides.d.ts | 10 ++- .../themeAugmentation.spec.ts | 12 ++- 29 files changed, 213 insertions(+), 105 deletions(-) create mode 100644 packages/x-charts/src/ChartsGrid/ChartsHorizontalGrid.tsx create mode 100644 packages/x-charts/src/ChartsGrid/ChartsVerticalGrid.tsx create mode 100644 packages/x-charts/src/ChartsGrid/styledCommonents.tsx diff --git a/docs/pages/x/api/charts/charts-tooltip.json b/docs/pages/x/api/charts/charts-tooltip.json index 4d4e12f08b2d..cc191b7a0bf8 100644 --- a/docs/pages/x/api/charts/charts-tooltip.json +++ b/docs/pages/x/api/charts/charts-tooltip.json @@ -22,7 +22,7 @@ "name": "enum", "description": "'axis'
    | 'item'
    | 'none'" }, - "default": "'item'" + "default": "'axis'" } }, "name": "ChartsTooltip", @@ -76,6 +76,12 @@ "description": "Styles applied to the markCell element.", "isGlobal": false }, + { + "key": "paper", + "className": "MuiChartsTooltip-paper", + "description": "Styles applied to the paper element.", + "isGlobal": false + }, { "key": "root", "className": "MuiChartsTooltip-root", diff --git a/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json b/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json index 274550fe1444..2594869a42ab 100644 --- a/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json +++ b/docs/pages/x/api/charts/default-charts-axis-tooltip-content.json @@ -53,6 +53,12 @@ "description": "Styles applied to the markCell element.", "isGlobal": false }, + { + "key": "paper", + "className": "MuiDefaultChartsAxisTooltipContent-paper", + "description": "Styles applied to the paper element.", + "isGlobal": false + }, { "key": "root", "className": "MuiDefaultChartsAxisTooltipContent-root", diff --git a/docs/pages/x/api/charts/default-charts-item-tooltip-content.json b/docs/pages/x/api/charts/default-charts-item-tooltip-content.json index c3582356897c..7d76f641a34f 100644 --- a/docs/pages/x/api/charts/default-charts-item-tooltip-content.json +++ b/docs/pages/x/api/charts/default-charts-item-tooltip-content.json @@ -54,6 +54,12 @@ "description": "Styles applied to the markCell element.", "isGlobal": false }, + { + "key": "paper", + "className": "MuiDefaultChartsItemTooltipContent-paper", + "description": "Styles applied to the paper element.", + "isGlobal": false + }, { "key": "root", "className": "MuiDefaultChartsItemTooltipContent-root", diff --git a/docs/pages/x/api/charts/default-heatmap-tooltip.json b/docs/pages/x/api/charts/default-heatmap-tooltip.json index caa6575ad64c..66e8ffa29495 100644 --- a/docs/pages/x/api/charts/default-heatmap-tooltip.json +++ b/docs/pages/x/api/charts/default-heatmap-tooltip.json @@ -53,6 +53,12 @@ "description": "Styles applied to the markCell element.", "isGlobal": false }, + { + "key": "paper", + "className": "MuiDefaultHeatmapTooltip-paper", + "description": "Styles applied to the paper element.", + "isGlobal": false + }, { "key": "root", "className": "MuiDefaultHeatmapTooltip-root", diff --git a/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json b/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json index 152217da8fe5..a268da37e6cf 100644 --- a/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json +++ b/docs/translations/api-docs/charts/charts-tooltip/charts-tooltip.json @@ -25,6 +25,7 @@ "description": "Styles applied to {{nodeName}}.", "nodeName": "the markCell element" }, + "paper": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the paper element" }, "root": { "description": "Styles applied to the root element." }, "row": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the row element" }, "table": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the table element" }, diff --git a/docs/translations/api-docs/charts/default-charts-axis-tooltip-content/default-charts-axis-tooltip-content.json b/docs/translations/api-docs/charts/default-charts-axis-tooltip-content/default-charts-axis-tooltip-content.json index ef97ccfe86a3..3e7c7c6cc6e9 100644 --- a/docs/translations/api-docs/charts/default-charts-axis-tooltip-content/default-charts-axis-tooltip-content.json +++ b/docs/translations/api-docs/charts/default-charts-axis-tooltip-content/default-charts-axis-tooltip-content.json @@ -19,6 +19,7 @@ "description": "Styles applied to {{nodeName}}.", "nodeName": "the markCell element" }, + "paper": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the paper element" }, "root": { "description": "Styles applied to the root element." }, "row": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the row element" }, "table": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the table element" }, diff --git a/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json b/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json index 36fe7b5f92e5..c7ea4d31307f 100644 --- a/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json +++ b/docs/translations/api-docs/charts/default-charts-item-tooltip-content/default-charts-item-tooltip-content.json @@ -23,6 +23,7 @@ "description": "Styles applied to {{nodeName}}.", "nodeName": "the markCell element" }, + "paper": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the paper element" }, "root": { "description": "Styles applied to the root element." }, "row": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the row element" }, "table": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the table element" }, diff --git a/docs/translations/api-docs/charts/default-heatmap-tooltip/default-heatmap-tooltip.json b/docs/translations/api-docs/charts/default-heatmap-tooltip/default-heatmap-tooltip.json index 36fe7b5f92e5..c7ea4d31307f 100644 --- a/docs/translations/api-docs/charts/default-heatmap-tooltip/default-heatmap-tooltip.json +++ b/docs/translations/api-docs/charts/default-heatmap-tooltip/default-heatmap-tooltip.json @@ -23,6 +23,7 @@ "description": "Styles applied to {{nodeName}}.", "nodeName": "the markCell element" }, + "paper": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the paper element" }, "root": { "description": "Styles applied to the root element." }, "row": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the row element" }, "table": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the table element" }, diff --git a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx index f07082ebd628..ef8624363755 100644 --- a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx +++ b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx @@ -56,7 +56,7 @@ const BarChartPro = React.forwardRef(function BarChartPro(inProps: BarChartProPr onZoomChange={onZoomChange} > {props.onAxisClick && } - {props.grid && } + diff --git a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx index 90782a38be2d..8075680e6bc4 100644 --- a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx +++ b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx @@ -66,7 +66,7 @@ const LineChartPro = React.forwardRef(function LineChartPro(inProps: LineChartPr onZoomChange={onZoomChange} > {props.onAxisClick && } - {props.grid && } + diff --git a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx index 06679a1e0b2d..cf9a928faa73 100644 --- a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx +++ b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx @@ -57,7 +57,7 @@ const ScatterChartPro = React.forwardRef(function ScatterChartPro( {!props.disableVoronoi && } - {props.grid && } + {/* The `data-drawing-container` indicates that children are part of the drawing area. Ref: https://github.com/mui/mui-x/issues/13659 */} diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index 7aca01261877..ffb89e8494d4 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -130,7 +130,7 @@ const BarChart = React.forwardRef(function BarChart(inProps: BarChartProps, ref) return ( {props.onAxisClick && } - {props.grid && } + diff --git a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx index 497d23977067..0480ea912c02 100644 --- a/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx +++ b/packages/x-charts/src/ChartsGrid/ChartsGrid.tsx @@ -1,36 +1,13 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import composeClasses from '@mui/utils/composeClasses'; -import { styled, useThemeProps } from '@mui/material/styles'; - +import { useThemeProps } from '@mui/material/styles'; import { useCartesianContext } from '../context/CartesianProvider'; -import { useTicks } from '../hooks/useTicks'; -import { - ChartsGridClasses, - getChartsGridUtilityClass, - chartsGridClasses, -} from './chartsGridClasses'; +import { ChartsGridClasses, getChartsGridUtilityClass } from './chartsGridClasses'; import { useDrawingArea } from '../hooks/useDrawingArea'; - -const GridRoot = styled('g', { - name: 'MuiChartsGrid', - slot: 'Root', - overridesResolver: (props, styles) => [ - { [`&.${chartsGridClasses.verticalLine}`]: styles.verticalLine }, - { [`&.${chartsGridClasses.horizontalLine}`]: styles.horizontalLine }, - styles.root, - ], -})({}); - -const GridLine = styled('line', { - name: 'MuiChartsGrid', - slot: 'Line', - overridesResolver: (props, styles) => styles.line, -})(({ theme }) => ({ - stroke: (theme.vars || theme).palette.divider, - shapeRendering: 'crispEdges', - strokeWidth: 1, -})); +import { GridRoot } from './styledCommonents'; +import { ChartsGridVertical } from './ChartsVerticalGrid'; +import { ChartsGridHorizontal } from './ChartsHorizontalGrid'; const useUtilityClasses = ({ classes }: ChartsGridProps) => { const slots = { @@ -75,48 +52,18 @@ function ChartsGrid(inProps: ChartsGridProps) { const classes = useUtilityClasses(props); - const horizontalAxisId = yAxisIds[0]; - const verticalAxisId = xAxisIds[0]; - - const { - scale: xScale, - tickNumber: xTickNumber, - tickInterval: xTickInterval, - } = xAxis[verticalAxisId]; - - const { - scale: yScale, - tickNumber: yTickNumber, - tickInterval: yTickInterval, - } = yAxis[horizontalAxisId]; - - const xTicks = useTicks({ scale: xScale, tickNumber: xTickNumber, tickInterval: xTickInterval }); - const yTicks = useTicks({ scale: yScale, tickNumber: yTickNumber, tickInterval: yTickInterval }); + const horizontalAxis = yAxis[yAxisIds[0]]; + const verticalAxis = xAxis[xAxisIds[0]]; return ( - {vertical && - xTicks.map(({ formattedValue, offset }) => ( - - ))} - {horizontal && - yTicks.map(({ formattedValue, offset }) => ( - - ))} + {vertical && ( + + )} + + {horizontal && ( + + )} ); } diff --git a/packages/x-charts/src/ChartsGrid/ChartsHorizontalGrid.tsx b/packages/x-charts/src/ChartsGrid/ChartsHorizontalGrid.tsx new file mode 100644 index 000000000000..2827e782e4cd --- /dev/null +++ b/packages/x-charts/src/ChartsGrid/ChartsHorizontalGrid.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; +import { DrawingArea } from '../context/DrawingProvider'; +import { useTicks } from '../hooks/useTicks'; +import { AxisDefaultized, ChartsYAxisProps, ScaleName } from '../models/axis'; +import { GridLine } from './styledCommonents'; +import { ChartsGridClasses } from './chartsGridClasses'; + +interface ChartsGridHorizontalProps { + axis: AxisDefaultized; + drawingArea: DrawingArea; + classes: Partial; +} + +/** + * @ignore - internal component. + */ +export function ChartsGridHorizontal(props: ChartsGridHorizontalProps) { + const { axis, drawingArea, classes } = props; + + const { scale, tickNumber, tickInterval } = axis; + + const yTicks = useTicks({ scale, tickNumber, tickInterval }); + + return ( + + {yTicks.map(({ formattedValue, offset }) => ( + + ))} + + ); +} diff --git a/packages/x-charts/src/ChartsGrid/ChartsVerticalGrid.tsx b/packages/x-charts/src/ChartsGrid/ChartsVerticalGrid.tsx new file mode 100644 index 000000000000..b033d5c1b8ea --- /dev/null +++ b/packages/x-charts/src/ChartsGrid/ChartsVerticalGrid.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; +import { DrawingArea } from '../context/DrawingProvider'; +import { useTicks } from '../hooks/useTicks'; +import { AxisDefaultized, ChartsXAxisProps, ScaleName } from '../models/axis'; +import { GridLine } from './styledCommonents'; +import { ChartsGridClasses } from './chartsGridClasses'; + +interface ChartsGridVerticalProps { + axis: AxisDefaultized; + drawingArea: DrawingArea; + classes: Partial; +} + +/** + * @ignore - internal component. + */ +export function ChartsGridVertical(props: ChartsGridVerticalProps) { + const { axis, drawingArea, classes } = props; + + const { scale, tickNumber, tickInterval } = axis; + + const xTicks = useTicks({ scale, tickNumber, tickInterval }); + + return ( + + {xTicks.map(({ formattedValue, offset }) => ( + + ))} + + ); +} diff --git a/packages/x-charts/src/ChartsGrid/styledCommonents.tsx b/packages/x-charts/src/ChartsGrid/styledCommonents.tsx new file mode 100644 index 000000000000..02f2ea7a84d2 --- /dev/null +++ b/packages/x-charts/src/ChartsGrid/styledCommonents.tsx @@ -0,0 +1,22 @@ +import { styled } from '@mui/material/styles'; +import { chartsGridClasses } from './chartsGridClasses'; + +export const GridRoot = styled('g', { + name: 'MuiChartsGrid', + slot: 'Root', + overridesResolver: (props, styles) => [ + { [`&.${chartsGridClasses.verticalLine}`]: styles.verticalLine }, + { [`&.${chartsGridClasses.horizontalLine}`]: styles.horizontalLine }, + styles.root, + ], +})({}); + +export const GridLine = styled('line', { + name: 'MuiChartsGrid', + slot: 'Line', + overridesResolver: (props, styles) => styles.line, +})(({ theme }) => ({ + stroke: (theme.vars || theme).palette.divider, + shapeRendering: 'crispEdges', + strokeWidth: 1, +})); diff --git a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx index 1fab773c243f..f2b8d964d7da 100644 --- a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx @@ -59,20 +59,21 @@ const useUtilityClasses = (ownerState: DefaultizedChartsLegendProps & { theme: T return composeClasses(slots, getLegendUtilityClass, classes); }; -const defaultProps = { - position: { horizontal: 'middle', vertical: 'top' }, - direction: 'row', -} as const; - function ChartsLegend(inProps: ChartsLegendProps) { - const props: DefaultizedChartsLegendProps = useThemeProps({ - props: { ...defaultProps, ...inProps }, + const props = useThemeProps({ + props: inProps, name: 'MuiChartsLegend', }); - const { position, direction, hidden, slots, slotProps } = props; + const defaultizedProps: DefaultizedChartsLegendProps = { + direction: 'row', + ...props, + position: { horizontal: 'middle', vertical: 'top', ...props.position }, + }; + const { position, direction, hidden, slots, slotProps } = defaultizedProps; + const theme = useTheme(); - const classes = useUtilityClasses({ ...props, theme }); + const classes = useUtilityClasses({ ...defaultizedProps, theme }); const drawingArea = useDrawingArea(); const series = useSeries(); diff --git a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx index 1391416cf3d0..16265d1e52f4 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx +++ b/packages/x-charts/src/ChartsTooltip/ChartsTooltip.tsx @@ -58,7 +58,7 @@ export interface ChartsTooltipProps { * - 'item': Shows data about the item below the mouse. * - 'axis': Shows values associated with the hovered x value * - 'none': Does not display tooltip - * @default 'item' + * @default 'axis' */ trigger?: TriggerOptions; /** @@ -94,6 +94,7 @@ const useUtilityClasses = (ownerState: { const slots = { root: ['root'], + paper: ['paper'], table: ['table'], row: ['row'], cell: ['cell'], @@ -124,12 +125,12 @@ const ChartsTooltipRoot = styled(Popper, { * * - [ChartsTooltip API](https://mui.com/x/api/charts/charts-tool-tip/) */ -function ChartsTooltip(props: ChartsTooltipProps) { - const themeProps = useThemeProps({ - props, +function ChartsTooltip(inProps: ChartsTooltipProps) { + const props = useThemeProps({ + props: inProps, name: 'MuiChartsTooltip', }); - const { trigger = 'axis', itemContent, axisContent, slots, slotProps } = themeProps; + const { trigger = 'axis', itemContent, axisContent, slots, slotProps } = props; const mousePosition = useMouseTracker(); @@ -140,7 +141,7 @@ function ChartsTooltip(props: ChartsTooltipProps) const tooltipHasData = getTooltipHasData(trigger, displayedData); const popperOpen = mousePosition !== null && tooltipHasData; - const classes = useUtilityClasses({ classes: themeProps.classes }); + const classes = useUtilityClasses({ classes: props.classes }); const PopperComponent = slots?.popper ?? ChartsTooltipRoot; const popperProps = useSlotProps({ @@ -170,7 +171,7 @@ function ChartsTooltip(props: ChartsTooltipProps) return ( {popperOpen && ( - + {trigger === 'item' ? ( } @@ -228,7 +229,7 @@ ChartsTooltip.propTypes = { * - 'item': Shows data about the item below the mouse. * - 'axis': Shows values associated with the hovered x value * - 'none': Does not display tooltip - * @default 'item' + * @default 'axis' */ trigger: PropTypes.oneOf(['axis', 'item', 'none']), } as any; diff --git a/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts b/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts index a83a70ae9e5b..a50e1c462c51 100644 --- a/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts +++ b/packages/x-charts/src/ChartsTooltip/ChartsTooltipTable.ts @@ -8,6 +8,7 @@ import { chartsTooltipClasses } from './chartsTooltipClasses'; export const ChartsTooltipPaper = styled('div', { name: 'MuiChartsTooltip', slot: 'Container', + overridesResolver: (props, styles) => styles.paper, })(({ theme }) => ({ boxShadow: theme.shadows[1], backgroundColor: (theme.vars || theme).palette.background.paper, @@ -22,6 +23,7 @@ export const ChartsTooltipPaper = styled('div', { export const ChartsTooltipTable = styled('table', { name: 'MuiChartsTooltip', slot: 'Table', + overridesResolver: (props, styles) => styles.table, })(({ theme }) => ({ borderSpacing: 0, '& thead td': { @@ -35,6 +37,7 @@ export const ChartsTooltipTable = styled('table', { export const ChartsTooltipRow = styled('tr', { name: 'MuiChartsTooltip', slot: 'Row', + overridesResolver: (props, styles) => styles.row, })(({ theme }) => ({ 'tr:first-of-type& td': { paddingTop: theme.spacing(1), @@ -50,6 +53,7 @@ export const ChartsTooltipRow = styled('tr', { export const ChartsTooltipCell = styled('td', { name: 'MuiChartsTooltip', slot: 'Cell', + overridesResolver: (props, styles) => styles.cell, })(({ theme }) => ({ verticalAlign: 'middle', color: (theme.vars || theme).palette.text.secondary, @@ -74,6 +78,7 @@ export const ChartsTooltipCell = styled('td', { export const ChartsTooltipMark = styled('div', { name: 'MuiChartsTooltip', slot: 'Mark', + overridesResolver: (props, styles) => styles.mark, shouldForwardProp: (prop) => shouldForwardProp(prop) && prop !== 'color', })<{ color: string }>(({ theme, color }) => ({ width: theme.spacing(1), diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx index 5f76ce4edd6c..c0382f27f2a4 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsAxisTooltipContent.tsx @@ -27,7 +27,7 @@ function DefaultChartsAxisTooltipContent(props: ChartsAxisContentProps) { axis.scaleType === 'utc' ? utcFormatter(v) : v.toLocaleString()); return ( - + {axisValue != null && !axis.hideTooltip && ( diff --git a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx index 29fb6f74338b..e4dec21ff9af 100644 --- a/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx +++ b/packages/x-charts/src/ChartsTooltip/DefaultChartsItemTooltipContent.tsx @@ -43,7 +43,7 @@ function DefaultChartsItemTooltipContent['valueFormatter'] )?.(value, { dataIndex: itemData.dataIndex }); return ( - + diff --git a/packages/x-charts/src/ChartsTooltip/chartsTooltipClasses.ts b/packages/x-charts/src/ChartsTooltip/chartsTooltipClasses.ts index 0771fbc2dd2c..b4ada8e0254b 100644 --- a/packages/x-charts/src/ChartsTooltip/chartsTooltipClasses.ts +++ b/packages/x-charts/src/ChartsTooltip/chartsTooltipClasses.ts @@ -6,6 +6,8 @@ import { export interface ChartsTooltipClasses { /** Styles applied to the root element. */ root: string; + /** Styles applied to the paper element. */ + paper: string; /** Styles applied to the table element. */ table: string; /** Styles applied to the row element. */ @@ -33,5 +35,5 @@ export function getChartsTooltipUtilityClass(slot: string) { } export const chartsTooltipClasses: ChartsTooltipClasses = generateUtilityClasses( 'MuiChartsTooltip', - ['root', 'table', 'row', 'cell', 'mark', 'markCell', 'labelCell', 'valueCell'], + ['root', 'paper', 'table', 'row', 'cell', 'mark', 'markCell', 'labelCell', 'valueCell'], ); diff --git a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx index c4929c9d9459..995ef6f370db 100644 --- a/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx +++ b/packages/x-charts/src/ChartsXAxis/ChartsXAxis.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; -import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; +import { useThemeProps, useTheme, Theme, styled } from '@mui/material/styles'; import { useCartesianContext } from '../context/CartesianProvider'; import { useTicks, TickItemType } from '../hooks/useTicks'; import { AxisDefaultized, ChartsXAxisProps } from '../models/axis'; @@ -83,6 +83,12 @@ function addLabelDimension( }); } +const XAxisRoot = styled(AxisRoot, { + name: 'MuiChartsXAxis', + slot: 'Root', + overridesResolver: (props, styles) => styles.root, +})({}); + const defaultProps = { position: 'bottom', disableLine: false, @@ -204,7 +210,7 @@ function ChartsXAxis(inProps: ChartsXAxisProps) { return null; } return ( - )} - + ); } diff --git a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx index a26a6b4f67d8..923a20dc06aa 100644 --- a/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx +++ b/packages/x-charts/src/ChartsYAxis/ChartsYAxis.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; -import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; +import { useThemeProps, useTheme, Theme, styled } from '@mui/material/styles'; import { useRtl } from '@mui/system/RtlProvider'; import { useCartesianContext } from '../context/CartesianProvider'; import { useTicks } from '../hooks/useTicks'; @@ -28,6 +28,12 @@ const useUtilityClasses = (ownerState: ChartsYAxisProps & { theme: Theme }) => { return composeClasses(slots, getAxisUtilityClass, classes); }; +const YAxisRoot = styled(AxisRoot, { + name: 'MuiChartsYAxis', + slot: 'Root', + overridesResolver: (props, styles) => styles.root, +})({}); + const defaultProps = { position: 'left', disableLine: false, @@ -157,7 +163,7 @@ function ChartsYAxis(inProps: ChartsYAxisProps) { } return ( - )} - + ); } diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index 0bd258bfd715..94235ce0c79d 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -159,7 +159,7 @@ const LineChart = React.forwardRef(function LineChart(inProps: LineChartProps, r return ( {props.onAxisClick && } - {props.grid && } + diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index ecd3bbe6c2c3..d8ae6735b52b 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -139,7 +139,7 @@ const ScatterChart = React.forwardRef(function ScatterChart(inProps: ScatterChar {!props.disableVoronoi && } - {props.grid && } + {/* The `data-drawing-container` indicates that children are part of the drawing area. Ref: https://github.com/mui/mui-x/issues/13659 */} diff --git a/packages/x-charts/src/themeAugmentation/components.d.ts b/packages/x-charts/src/themeAugmentation/components.d.ts index fbb03f04b14a..3302ca499b7b 100644 --- a/packages/x-charts/src/themeAugmentation/components.d.ts +++ b/packages/x-charts/src/themeAugmentation/components.d.ts @@ -6,9 +6,11 @@ export interface ChartsComponents { }; MuiChartsXAxis?: { defaultProps?: ComponentsProps['MuiChartsXAxis']; + styleOverrides?: ComponentsOverrides['MuiChartsXAxis']; }; MuiChartsYAxis?: { defaultProps?: ComponentsProps['MuiChartsYAxis']; + styleOverrides?: ComponentsOverrides['MuiChartsYAxis']; }; MuiChartsAxisHighlight?: { styleOverrides?: ComponentsOverrides['MuiChartsAxisHighlight']; diff --git a/packages/x-charts/src/themeAugmentation/overrides.d.ts b/packages/x-charts/src/themeAugmentation/overrides.d.ts index 24f6ce49c23f..8049913a70be 100644 --- a/packages/x-charts/src/themeAugmentation/overrides.d.ts +++ b/packages/x-charts/src/themeAugmentation/overrides.d.ts @@ -2,19 +2,21 @@ import { BarLabelClassKey } from '../BarChart'; import { BarElementClassKey } from '../BarChart/BarElement'; import { ChartsAxisHighlightClassKey } from '../ChartsAxisHighlight'; import { ChartsGridClassKey } from '../ChartsGrid'; -import { ChartsLegendClassKey } from '../ChartsLegend'; - import { ChartsTooltipClassKey } from '../ChartsTooltip'; import { AreaElementClassKey, LineElementClassKey, MarkElementClassKey } from '../LineChart'; export interface ChartsComponentNameToClassKey { - MuiChartsAxis: 'root'; // Only the root component of axes is styled + MuiChartsAxis: 'root'; // Only the root component of axes is styled. We should probably remove this one in v8 + MuiChartsXAxis: 'root'; // Only the root component of axes is styled + MuiChartsYAxis: 'root'; // Only the root component of axes is styled + MuiChartsAxisHighlight: ChartsAxisHighlightClassKey; + MuiChartsLegend: 'root'; MuiChartsGrid: ChartsGridClassKey; - MuiChartsLegend: ChartsLegendClassKey; MuiChartsTooltip: ChartsTooltipClassKey; MuiChartsSurface: 'root'; + // BarChart components MuiBarElement: BarElementClassKey; MuiBarLabel: BarLabelClassKey; diff --git a/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts b/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts index 1c71789139c7..8412c5c669cf 100644 --- a/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts +++ b/packages/x-charts/src/themeAugmentation/themeAugmentation.spec.ts @@ -15,6 +15,11 @@ createTheme({ // @ts-expect-error invalid MuiChartsXAxis prop someRandomProp: true, }, + styleOverrides: { + root: { backgroundColor: 'red' }, + // @ts-expect-error invalid MuiChartsXAxis class key + line: { color: 'red' }, + }, }, MuiChartsYAxis: { defaultProps: { @@ -22,6 +27,11 @@ createTheme({ // @ts-expect-error invalid MuiChartsYAxis prop someRandomProp: true, }, + styleOverrides: { + root: { backgroundColor: 'red' }, + // @ts-expect-error invalid MuiChartsYAxis class key + line: { color: 'red' }, + }, }, MuiChartsAxisHighlight: { styleOverrides: { @@ -39,7 +49,7 @@ createTheme({ styleOverrides: { root: { backgroundColor: 'red' }, // @ts-expect-error invalid MuiChartsLegend class key - constent: { color: 'red' }, + mark: { color: 'red' }, }, }, MuiChartsTooltip: { From 4d28c058a195411154e9e22aaf2044181605e932 Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Thu, 29 Aug 2024 16:37:35 +0200 Subject: [PATCH 865/912] [charts] Fix `LineChart` not properly animating when hydrating (#14355) --- .../x-charts/src/LineChart/AnimatedArea.tsx | 26 ++- .../x-charts/src/LineChart/AnimatedLine.tsx | 26 ++- packages/x-charts/src/LineChart/AreaPlot.tsx | 185 +++++++++--------- packages/x-charts/src/LineChart/LinePlot.tsx | 143 +++++++------- .../x-charts/src/hooks/useReducedMotion.ts | 29 +-- ...imatedPath.ts => useStringInterpolator.ts} | 15 +- 6 files changed, 227 insertions(+), 197 deletions(-) rename packages/x-charts/src/internals/{useAnimatedPath.ts => useStringInterpolator.ts} (68%) diff --git a/packages/x-charts/src/LineChart/AnimatedArea.tsx b/packages/x-charts/src/LineChart/AnimatedArea.tsx index adebfc0ac866..0a1c8ec420b3 100644 --- a/packages/x-charts/src/LineChart/AnimatedArea.tsx +++ b/packages/x-charts/src/LineChart/AnimatedArea.tsx @@ -1,12 +1,12 @@ import * as React from 'react'; import PropTypes from 'prop-types'; import { styled } from '@mui/material/styles'; -import { animated, useSpring } from '@react-spring/web'; +import { animated, useTransition } from '@react-spring/web'; import { color as d3Color } from '@mui/x-charts-vendor/d3-color'; -import { useAnimatedPath } from '../internals/useAnimatedPath'; import { cleanId } from '../internals/cleanId'; import type { AreaElementOwnerState } from './AreaElement'; import { useChartId, useDrawingArea } from '../hooks'; +import { useStringInterpolator } from '../internals/useStringInterpolator'; export const AreaElementPath = styled(animated.path, { name: 'MuiAreaElement', @@ -47,11 +47,21 @@ function AnimatedArea(props: AnimatedAreaProps) { const { left, top, right, bottom, width, height } = useDrawingArea(); const chartId = useChartId(); - const path = useAnimatedPath(d, skipAnimation); + const stringInterpolator = useStringInterpolator(d); - const { animatedWidth } = useSpring({ + const transitionAppear = useTransition([1], { from: { animatedWidth: left }, to: { animatedWidth: width + left + right }, + enter: { animatedWidth: width + left + right }, + leave: { animatedWidth: left }, + reset: false, + immediate: skipAnimation, + }); + + const transitionChange = useTransition([stringInterpolator], { + from: { value: 0 }, + to: { value: 1 }, + enter: { value: 1 }, reset: false, immediate: skipAnimation, }); @@ -60,10 +70,14 @@ function AnimatedArea(props: AnimatedAreaProps) { return ( - + {transitionAppear((style) => ( + + ))} - + {transitionChange((style, interpolator) => ( + + ))} ); diff --git a/packages/x-charts/src/LineChart/AnimatedLine.tsx b/packages/x-charts/src/LineChart/AnimatedLine.tsx index 968f44652d01..50c09474ba44 100644 --- a/packages/x-charts/src/LineChart/AnimatedLine.tsx +++ b/packages/x-charts/src/LineChart/AnimatedLine.tsx @@ -1,13 +1,13 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { animated, useSpring } from '@react-spring/web'; +import { animated, useTransition } from '@react-spring/web'; import { color as d3Color } from '@mui/x-charts-vendor/d3-color'; import { styled } from '@mui/material/styles'; -import { useAnimatedPath } from '../internals/useAnimatedPath'; import { cleanId } from '../internals/cleanId'; import type { LineElementOwnerState } from './LineElement'; import { useChartId } from '../hooks/useChartId'; import { useDrawingArea } from '../hooks/useDrawingArea'; +import { useStringInterpolator } from '../internals/useStringInterpolator'; export const LineElementPath = styled(animated.path, { name: 'MuiLineElement', @@ -50,11 +50,21 @@ function AnimatedLine(props: AnimatedLineProps) { const { left, top, bottom, width, height, right } = useDrawingArea(); const chartId = useChartId(); - const path = useAnimatedPath(d, skipAnimation); + const stringInterpolator = useStringInterpolator(d); - const { animatedWidth } = useSpring({ + const transitionAppear = useTransition([1], { from: { animatedWidth: left }, to: { animatedWidth: width + left + right }, + enter: { animatedWidth: width + left + right }, + leave: { animatedWidth: left }, + reset: false, + immediate: skipAnimation, + }); + + const transitionChange = useTransition([stringInterpolator], { + from: { value: 0 }, + to: { value: 1 }, + enter: { value: 1 }, reset: false, immediate: skipAnimation, }); @@ -63,10 +73,14 @@ function AnimatedLine(props: AnimatedLineProps) { return ( - + {transitionAppear((style) => ( + + ))} - + {transitionChange((style, interpolator) => ( + + ))} ); diff --git a/packages/x-charts/src/LineChart/AreaPlot.tsx b/packages/x-charts/src/LineChart/AreaPlot.tsx index 01956e3b847b..e87e4581e119 100644 --- a/packages/x-charts/src/LineChart/AreaPlot.tsx +++ b/packages/x-charts/src/LineChart/AreaPlot.tsx @@ -38,99 +38,104 @@ const useAggregatedData = () => { const seriesData = useLineSeries(); const axisData = useCartesianContext(); - if (seriesData === undefined) { - return []; - } - - const { series, stackingGroups } = seriesData; - const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; - const defaultXAxisId = xAxisIds[0]; - const defaultYAxisId = yAxisIds[0]; - - return stackingGroups.flatMap(({ ids: groupIds }) => { - return [...groupIds] - .reverse() // Revert stacked area for a more pleasant animation - .map((seriesId) => { - const { - xAxisId: xAxisIdProp, - yAxisId: yAxisIdProp, - xAxisKey = defaultXAxisId, - yAxisKey = defaultYAxisId, - stackedData, - data, - connectNulls, - baseline, - } = series[seriesId]; - - const xAxisId = xAxisIdProp ?? xAxisKey; - const yAxisId = yAxisIdProp ?? yAxisKey; - - const xScale = getValueToPositionMapper(xAxis[xAxisId].scale); - const yScale = yAxis[yAxisId].scale; - const xData = xAxis[xAxisId].data; - - const gradientUsed: [AxisId, 'x' | 'y'] | undefined = - (yAxis[yAxisId].colorScale && [yAxisId, 'y']) || - (xAxis[xAxisId].colorScale && [xAxisId, 'x']) || - undefined; - - if (process.env.NODE_ENV !== 'production') { - if (xData === undefined) { - throw new Error( - `MUI X: ${ - xAxisId === DEFAULT_X_AXIS_KEY - ? 'The first `xAxis`' - : `The x-axis with id "${xAxisId}"` - } should have data property to be able to display a line plot.`, - ); - } - if (xData.length < stackedData.length) { - throw new Error( - `MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, - ); - } - } - - const areaPath = d3Area<{ - x: any; - y: [number, number]; - }>() - .x((d) => xScale(d.x)) - .defined((_, i) => connectNulls || data[i] != null) - .y0((d) => { - if (typeof baseline === 'number') { - return yScale(baseline)!; - } - if (baseline === 'max') { - return yScale.range()[1]; + // This memo prevents odd line chart behavior when hydrating. + const allData = React.useMemo(() => { + if (seriesData === undefined) { + return []; + } + + const { series, stackingGroups } = seriesData; + const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; + const defaultXAxisId = xAxisIds[0]; + const defaultYAxisId = yAxisIds[0]; + + return stackingGroups.flatMap(({ ids: groupIds }) => { + return [...groupIds] + .reverse() // Revert stacked area for a more pleasant animation + .map((seriesId) => { + const { + xAxisId: xAxisIdProp, + yAxisId: yAxisIdProp, + xAxisKey = defaultXAxisId, + yAxisKey = defaultYAxisId, + stackedData, + data, + connectNulls, + baseline, + } = series[seriesId]; + + const xAxisId = xAxisIdProp ?? xAxisKey; + const yAxisId = yAxisIdProp ?? yAxisKey; + + const xScale = getValueToPositionMapper(xAxis[xAxisId].scale); + const yScale = yAxis[yAxisId].scale; + const xData = xAxis[xAxisId].data; + + const gradientUsed: [AxisId, 'x' | 'y'] | undefined = + (yAxis[yAxisId].colorScale && [yAxisId, 'y']) || + (xAxis[xAxisId].colorScale && [xAxisId, 'x']) || + undefined; + + if (process.env.NODE_ENV !== 'production') { + if (xData === undefined) { + throw new Error( + `MUI X: ${ + xAxisId === DEFAULT_X_AXIS_KEY + ? 'The first `xAxis`' + : `The x-axis with id "${xAxisId}"` + } should have data property to be able to display a line plot.`, + ); } - if (baseline === 'min') { - return yScale.range()[0]; + if (xData.length < stackedData.length) { + throw new Error( + `MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, + ); } + } - const value = d.y && yScale(d.y[0])!; - if (Number.isNaN(value)) { - return yScale.range()[0]; - } - return value; - }) - .y1((d) => d.y && yScale(d.y[1])!); - - const curve = getCurveFactory(series[seriesId].curve); - const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; - const d3Data = connectNulls - ? formattedData.filter((_, i) => data[i] != null) - : formattedData; - - const d = areaPath.curve(curve)(d3Data) || ''; - return { - ...series[seriesId], - gradientUsed, - d, - seriesId, - }; - }); - }); + const areaPath = d3Area<{ + x: any; + y: [number, number]; + }>() + .x((d) => xScale(d.x)) + .defined((_, i) => connectNulls || data[i] != null) + .y0((d) => { + if (typeof baseline === 'number') { + return yScale(baseline)!; + } + if (baseline === 'max') { + return yScale.range()[1]; + } + if (baseline === 'min') { + return yScale.range()[0]; + } + + const value = d.y && yScale(d.y[0])!; + if (Number.isNaN(value)) { + return yScale.range()[0]; + } + return value; + }) + .y1((d) => d.y && yScale(d.y[1])!); + + const curve = getCurveFactory(series[seriesId].curve); + const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; + const d3Data = connectNulls + ? formattedData.filter((_, i) => data[i] != null) + : formattedData; + + const d = areaPath.curve(curve)(d3Data) || ''; + return { + ...series[seriesId], + gradientUsed, + d, + seriesId, + }; + }); + }); + }, [seriesData, axisData]); + + return allData; }; /** diff --git a/packages/x-charts/src/LineChart/LinePlot.tsx b/packages/x-charts/src/LineChart/LinePlot.tsx index 96603b232d98..d4e1e579ff2e 100644 --- a/packages/x-charts/src/LineChart/LinePlot.tsx +++ b/packages/x-charts/src/LineChart/LinePlot.tsx @@ -38,76 +38,83 @@ const useAggregatedData = () => { const seriesData = useLineSeries(); const axisData = useCartesianContext(); - if (seriesData === undefined) { - return []; - } - - const { series, stackingGroups } = seriesData; - const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; - const defaultXAxisId = xAxisIds[0]; - const defaultYAxisId = yAxisIds[0]; - - return stackingGroups.flatMap(({ ids: groupIds }) => { - return groupIds.flatMap((seriesId) => { - const { - xAxisId: xAxisIdProp, - yAxisId: yAxisIdProp, - xAxisKey = defaultXAxisId, - yAxisKey = defaultYAxisId, - stackedData, - data, - connectNulls, - } = series[seriesId]; - - const xAxisId = xAxisIdProp ?? xAxisKey; - const yAxisId = yAxisIdProp ?? yAxisKey; - - const xScale = getValueToPositionMapper(xAxis[xAxisId].scale); - const yScale = yAxis[yAxisId].scale; - const xData = xAxis[xAxisId].data; - - const gradientUsed: [AxisId, 'x' | 'y'] | undefined = - (yAxis[yAxisId].colorScale && [yAxisId, 'y']) || - (xAxis[xAxisId].colorScale && [xAxisId, 'x']) || - undefined; - - if (process.env.NODE_ENV !== 'production') { - if (xData === undefined) { - throw new Error( - `MUI X: ${ - xAxisId === DEFAULT_X_AXIS_KEY - ? 'The first `xAxis`' - : `The x-axis with id "${xAxisId}"` - } should have data property to be able to display a line plot.`, - ); + // This memo prevents odd line chart behavior when hydrating. + const allData = React.useMemo(() => { + if (seriesData === undefined) { + return []; + } + + const { series, stackingGroups } = seriesData; + const { xAxis, yAxis, xAxisIds, yAxisIds } = axisData; + const defaultXAxisId = xAxisIds[0]; + const defaultYAxisId = yAxisIds[0]; + + return stackingGroups.flatMap(({ ids: groupIds }) => { + return groupIds.flatMap((seriesId) => { + const { + xAxisId: xAxisIdProp, + yAxisId: yAxisIdProp, + xAxisKey = defaultXAxisId, + yAxisKey = defaultYAxisId, + stackedData, + data, + connectNulls, + } = series[seriesId]; + + const xAxisId = xAxisIdProp ?? xAxisKey; + const yAxisId = yAxisIdProp ?? yAxisKey; + + const xScale = getValueToPositionMapper(xAxis[xAxisId].scale); + const yScale = yAxis[yAxisId].scale; + const xData = xAxis[xAxisId].data; + + const gradientUsed: [AxisId, 'x' | 'y'] | undefined = + (yAxis[yAxisId].colorScale && [yAxisId, 'y']) || + (xAxis[xAxisId].colorScale && [xAxisId, 'x']) || + undefined; + + if (process.env.NODE_ENV !== 'production') { + if (xData === undefined) { + throw new Error( + `MUI X: ${ + xAxisId === DEFAULT_X_AXIS_KEY + ? 'The first `xAxis`' + : `The x-axis with id "${xAxisId}"` + } should have data property to be able to display a line plot.`, + ); + } + if (xData.length < stackedData.length) { + throw new Error( + `MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, + ); + } } - if (xData.length < stackedData.length) { - throw new Error( - `MUI X: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`, - ); - } - } - - const linePath = d3Line<{ - x: any; - y: [number, number]; - }>() - .x((d) => xScale(d.x)) - .defined((_, i) => connectNulls || data[i] != null) - .y((d) => yScale(d.y[1])!); - - const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; - const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData; - - const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || ''; - return { - ...series[seriesId], - gradientUsed, - d, - seriesId, - }; + + const linePath = d3Line<{ + x: any; + y: [number, number]; + }>() + .x((d) => xScale(d.x)) + .defined((_, i) => connectNulls || data[i] != null) + .y((d) => yScale(d.y[1])!); + + const formattedData = xData?.map((x, index) => ({ x, y: stackedData[index] })) ?? []; + const d3Data = connectNulls + ? formattedData.filter((_, i) => data[i] != null) + : formattedData; + + const d = linePath.curve(getCurveFactory(series[seriesId].curve))(d3Data) || ''; + return { + ...series[seriesId], + gradientUsed, + d, + seriesId, + }; + }); }); - }); + }, [seriesData, axisData]); + + return allData; }; /** diff --git a/packages/x-charts/src/hooks/useReducedMotion.ts b/packages/x-charts/src/hooks/useReducedMotion.ts index b95f28d4a9da..724e2da21fbe 100644 --- a/packages/x-charts/src/hooks/useReducedMotion.ts +++ b/packages/x-charts/src/hooks/useReducedMotion.ts @@ -1,5 +1,12 @@ import { useIsomorphicLayoutEffect, Globals } from '@react-spring/web'; +const handleMediaChange = (e: { matches: boolean | undefined }) => { + Globals.assign({ + // Modification such the react-spring implementation such that this hook can remove animation but never activate animation. + skipAnimation: e.matches || undefined, + }); +}; + /** * Returns `boolean` or `null`, used to automatically * set skipAnimations to the value of the user's @@ -8,24 +15,18 @@ import { useIsomorphicLayoutEffect, Globals } from '@react-spring/web'; * The return value, post-effect, is the value of their preferred setting */ export const useReducedMotion = () => { - // Taken from: https://github.com/pmndrs/react-spring/blob/02ec877bbfab0df46da0e4a47d5f68d3e731206a/packages/shared/src/hooks/useReducedMotion.ts#L13 + // Taken from: https://github.com/pmndrs/react-spring/blob/fd65b605b85c3a24143c4ce9dd322fdfca9c66be/packages/shared/src/hooks/useReducedMotion.ts useIsomorphicLayoutEffect(() => { - if (!window.matchMedia) { - // skip animation in environments where `window.matchMedia` would not be available (i.e. test/jsdom) - Globals.assign({ - skipAnimation: true, - }); - return () => {}; + // Skip animation test/jsdom + const shouldSkipAnimation = !window?.matchMedia; + + if (shouldSkipAnimation) { + handleMediaChange({ matches: true }); + return undefined; } - const mql = window.matchMedia('(prefers-reduced-motion)'); - const handleMediaChange = (event: MediaQueryListEvent | MediaQueryList) => { - Globals.assign({ - // Modification such the react-spring implementation such that this hook can remove animation but never activate animation. - skipAnimation: event.matches || undefined, - }); - }; + const mql = window.matchMedia('(prefers-reduced-motion)'); handleMediaChange(mql); diff --git a/packages/x-charts/src/internals/useAnimatedPath.ts b/packages/x-charts/src/internals/useStringInterpolator.ts similarity index 68% rename from packages/x-charts/src/internals/useAnimatedPath.ts rename to packages/x-charts/src/internals/useStringInterpolator.ts index 03b0470b0db0..2b0faa3cd851 100644 --- a/packages/x-charts/src/internals/useAnimatedPath.ts +++ b/packages/x-charts/src/internals/useStringInterpolator.ts @@ -1,6 +1,5 @@ import * as React from 'react'; import { interpolateString } from '@mui/x-charts-vendor/d3-interpolate'; -import { useSpring } from '@react-spring/web'; function usePrevious(value: T) { const ref = React.useRef<{ currentPath: T; previousPath?: T }>({ @@ -17,7 +16,7 @@ function usePrevious(value: T) { return ref.current; } -export const useAnimatedPath = (path: string, skipAnimation?: boolean) => { +export const useStringInterpolator = (path: string) => { const memoryRef = usePrevious(path); const interpolator = React.useMemo( @@ -28,15 +27,5 @@ export const useAnimatedPath = (path: string, skipAnimation?: boolean) => { [memoryRef.currentPath, memoryRef.previousPath], ); - const [{ value }] = useSpring( - { - from: { value: 0 }, - to: { value: 1 }, - reset: true, - immediate: skipAnimation, - }, - [memoryRef.currentPath], - ); - - return value.to(interpolator); + return interpolator; }; From d8f1654e26fec78ea86ee335e59b68b7d214f2e9 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 29 Aug 2024 19:43:21 +0500 Subject: [PATCH 866/912] [DataGridPro] Fix double top border in header filters (#14375) --- .../src/components/GridScrollbarFillerCell.tsx | 4 ++++ .../components/containers/GridRootStyles.ts | 16 ++++++++++++---- .../x-data-grid/src/constants/gridClasses.ts | 12 +++++++++--- .../columnHeaders/useGridColumnHeaders.tsx | 18 ++++++++++++------ 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/packages/x-data-grid/src/components/GridScrollbarFillerCell.tsx b/packages/x-data-grid/src/components/GridScrollbarFillerCell.tsx index fc2fd61381ad..c1caf5aabada 100644 --- a/packages/x-data-grid/src/components/GridScrollbarFillerCell.tsx +++ b/packages/x-data-grid/src/components/GridScrollbarFillerCell.tsx @@ -6,16 +6,19 @@ const classes = { root: gridClasses.scrollbarFiller, header: gridClasses['scrollbarFiller--header'], borderTop: gridClasses['scrollbarFiller--borderTop'], + borderBottom: gridClasses['scrollbarFiller--borderBottom'], pinnedRight: gridClasses['scrollbarFiller--pinnedRight'], }; function GridScrollbarFillerCell({ header, borderTop = true, + borderBottom, pinnedRight, }: { header?: boolean; borderTop?: boolean; + borderBottom?: boolean; pinnedRight?: boolean; }) { return ( @@ -25,6 +28,7 @@ function GridScrollbarFillerCell({ classes.root, header && classes.header, borderTop && classes.borderTop, + borderBottom && classes.borderBottom, pinnedRight && classes.pinnedRight, )} /> diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index e35707002cc2..1c8ecf5b5049 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -429,7 +429,7 @@ export const GridRootStyles = styled('div', { [`& .${c.headerFilterRow}`]: { [`& .${c.columnHeader}`]: { boxSizing: 'border-box', - borderTop: '1px solid var(--DataGrid-rowBorderColor)', + borderBottom: '1px solid var(--DataGrid-rowBorderColor)', }, }, @@ -491,6 +491,11 @@ export const GridRootStyles = styled('div', { [`& .${c['virtualScrollerContent--overflowed']} .${c['row--lastVisible']} .${c.cell}`]: { borderTopColor: 'transparent', }, + [`& .${c['pinnedRows--top']} :first-of-type`]: { + [`& .${c.cell}, .${c.scrollbarFiller}`]: { + borderTop: 'none', + }, + }, [`&.${c['root--disableUserSelection']} .${c.cell}`]: { userSelect: 'none', }, @@ -674,7 +679,10 @@ export const GridRootStyles = styled('div', { minWidth: 'calc(var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))', alignSelf: 'stretch', [`&.${c['scrollbarFiller--borderTop']}`]: { - borderTop: '1px solid var(--rowBorderColor)', + borderTop: '1px solid var(--DataGrid-rowBorderColor)', + }, + [`&.${c['scrollbarFiller--borderBottom']}`]: { + borderBottom: '1px solid var(--DataGrid-rowBorderColor)', }, [`&.${c['scrollbarFiller--pinnedRight']}`]: { backgroundColor: 'var(--DataGrid-pinnedBackground)', @@ -686,8 +694,8 @@ export const GridRootStyles = styled('div', { [`& .${c.filler}`]: { flex: 1, }, - [`& .${c['filler--borderTop']}`]: { - borderTop: '1px solid var(--DataGrid-rowBorderColor)', + [`& .${c['filler--borderBottom']}`]: { + borderBottom: '1px solid var(--DataGrid-rowBorderColor)', }, /* Hide grid rows, row filler, and vertical scrollbar when skeleton overlay is visible */ diff --git a/packages/x-data-grid/src/constants/gridClasses.ts b/packages/x-data-grid/src/constants/gridClasses.ts index 3251ec30d194..5d74433329a8 100644 --- a/packages/x-data-grid/src/constants/gridClasses.ts +++ b/packages/x-data-grid/src/constants/gridClasses.ts @@ -297,10 +297,10 @@ export interface GridClasses { */ filler: string; /** - * Styles applied to the filler row with top border. + * Styles applied to the filler row with bottom border. * @ignore - do not document. */ - 'filler--borderTop': string; + 'filler--borderBottom': string; /** * Styles applied to the filler row pinned left section. * @ignore - do not document. @@ -546,6 +546,11 @@ export interface GridClasses { * Styles applied to the scrollbar filler cell, with a border top. */ 'scrollbarFiller--borderTop': string; + /** + * @ignore - do not document. + * Styles applied to the scrollbar filler cell, with a border bottom. + */ + 'scrollbarFiller--borderBottom': string; /** * @ignore - do not document. * Styles applied to the scrollbar filler cell. @@ -709,7 +714,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'editBooleanCell', 'editInputCell', 'filler', - 'filler--borderTop', + 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', @@ -764,6 +769,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', + 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index 6653bc4367ff..10866db97f84 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -29,7 +29,6 @@ import { gridColumnPositionsSelector, gridVisiblePinnedColumnDefinitionsSelector, } from '../columns'; -import { gridPinnedRowsSelector } from '../rows/gridRowsSelector'; import { GridGroupingStructure } from '../columnGrouping/gridColumnGroupsInterfaces'; import { gridColumnGroupsUnwrappedModelSelector } from '../columnGrouping/gridColumnGroupsSelector'; import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell'; @@ -107,7 +106,6 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector); const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector); const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector); - const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector); const offsetLeft = computeOffsetLeft( columnPositions, renderContext, @@ -184,7 +182,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { params: GetHeadersParams | undefined, children: React.ReactNode, leftOverflow: number, - borderTop: boolean = false, + borderBottom: boolean = false, ) => { const isPinnedRight = params?.position === GridPinnedColumnPosition.RIGHT; const isNotPinned = params?.position === undefined; @@ -202,11 +200,19 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { {isNotPinned && (
    )} {hasScrollbarFiller && ( - + )} ); @@ -301,7 +307,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { role="row" aria-rowindex={headerGroupingMaxDepth + 1} ownerState={rootProps} - className={pinnedRows.top.length === 0 ? gridClasses['row--borderBottom'] : undefined} + className={gridClasses['row--borderBottom']} > {leftRenderContext && getColumnHeaders( From 8e898bbb528d6b4718395aae6afd91c59816ac83 Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Thu, 29 Aug 2024 19:44:15 +0500 Subject: [PATCH 867/912] [DataGrid] Allow to control the indeterminate checkbox behavior (#14247) --- .../CheckboxSelectionIndeterminateGrid.js | 17 ++++++++++++++++ .../CheckboxSelectionIndeterminateGrid.tsx | 17 ++++++++++++++++ ...kboxSelectionIndeterminateGrid.tsx.preview | 1 + .../data-grid/row-selection/row-selection.md | 7 +++++++ .../x/api/data-grid/data-grid-premium.json | 4 ++++ docs/pages/x/api/data-grid/data-grid-pro.json | 4 ++++ docs/pages/x/api/data-grid/data-grid.json | 4 ++++ .../data-grid-premium/data-grid-premium.json | 3 +++ .../data-grid-pro/data-grid-pro.json | 3 +++ .../data-grid/data-grid/data-grid.json | 3 +++ .../src/DataGridPremium/DataGridPremium.tsx | 8 ++++++++ .../src/DataGridPro/DataGridPro.tsx | 8 ++++++++ .../x-data-grid/src/DataGrid/DataGrid.tsx | 8 ++++++++ .../src/DataGrid/useDataGridProps.ts | 2 ++ .../columnSelection/GridHeaderCheckbox.tsx | 7 ++++++- .../src/models/props/DataGridProps.ts | 8 ++++++++ .../src/tests/rowSelection.DataGrid.test.tsx | 20 +++++++++++++++++++ 17 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.js create mode 100644 docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx create mode 100644 docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx.preview diff --git a/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.js b/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.js new file mode 100644 index 000000000000..88493e2bf3a7 --- /dev/null +++ b/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.js @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { DataGrid } from '@mui/x-data-grid'; +import { useDemoData } from '@mui/x-data-grid-generator'; + +export default function CheckboxSelectionIndeterminateGrid() { + const { data } = useDemoData({ + dataSet: 'Commodity', + rowLength: 10, + maxColumns: 5, + }); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx b/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx new file mode 100644 index 000000000000..88493e2bf3a7 --- /dev/null +++ b/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { DataGrid } from '@mui/x-data-grid'; +import { useDemoData } from '@mui/x-data-grid-generator'; + +export default function CheckboxSelectionIndeterminateGrid() { + const { data } = useDemoData({ + dataSet: 'Commodity', + rowLength: 10, + maxColumns: 5, + }); + + return ( +
    + +
    + ); +} diff --git a/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx.preview b/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx.preview new file mode 100644 index 000000000000..9091ca3b75cc --- /dev/null +++ b/docs/data/data-grid/row-selection/CheckboxSelectionIndeterminateGrid.tsx.preview @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/data/data-grid/row-selection/row-selection.md b/docs/data/data-grid/row-selection/row-selection.md index 6b4e2f63da46..70f9f43b3f90 100644 --- a/docs/data/data-grid/row-selection/row-selection.md +++ b/docs/data/data-grid/row-selection/row-selection.md @@ -64,6 +64,13 @@ Always set the `checkboxSelection` prop to `true` even when providing a custom c Otherwise, the data grid might remove your column. ::: +### Customize indeterminate checkbox behavior + +The parent checkboxes (like "Select All" checkbox) when clicked in an indeterminate state will deselect the selected rows. +You can customize this behavior by using the [`indeterminateCheckboxAction` prop](/x/api/data-grid/data-grid/#data-grid-prop-indeterminateCheckboxAction). + +{{"demo": "CheckboxSelectionIndeterminateGrid.js", "bg": "inline"}} + ### Visible rows selection [](/x/introduction/licensing/#pro-plan 'Pro plan') By default, when you click the "Select All" checkbox, all rows in the data grid are selected. diff --git a/docs/pages/x/api/data-grid/data-grid-premium.json b/docs/pages/x/api/data-grid/data-grid-premium.json index 45c00921edc9..6f4425ee64e0 100644 --- a/docs/pages/x/api/data-grid/data-grid-premium.json +++ b/docs/pages/x/api/data-grid/data-grid-premium.json @@ -181,6 +181,10 @@ }, "default": "false" }, + "indeterminateCheckboxAction": { + "type": { "name": "enum", "description": "'deselect'
    | 'select'" }, + "default": "\"deselect\"" + }, "initialState": { "type": { "name": "object" } }, "isCellEditable": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/data-grid/data-grid-pro.json b/docs/pages/x/api/data-grid/data-grid-pro.json index c3eb24a2ffb8..c5dc3bdb0689 100644 --- a/docs/pages/x/api/data-grid/data-grid-pro.json +++ b/docs/pages/x/api/data-grid/data-grid-pro.json @@ -155,6 +155,10 @@ }, "default": "false" }, + "indeterminateCheckboxAction": { + "type": { "name": "enum", "description": "'deselect'
    | 'select'" }, + "default": "\"deselect\"" + }, "initialState": { "type": { "name": "object" } }, "isCellEditable": { "type": { "name": "func" }, diff --git a/docs/pages/x/api/data-grid/data-grid.json b/docs/pages/x/api/data-grid/data-grid.json index 7543c9d9f0ab..c2ecd48ba512 100644 --- a/docs/pages/x/api/data-grid/data-grid.json +++ b/docs/pages/x/api/data-grid/data-grid.json @@ -123,6 +123,10 @@ }, "default": "false" }, + "indeterminateCheckboxAction": { + "type": { "name": "enum", "description": "'deselect'
    | 'select'" }, + "default": "\"deselect\"" + }, "initialState": { "type": { "name": "object" } }, "isCellEditable": { "type": { "name": "func" }, diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index 68ba1ef303b5..baba2f9ae004 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -202,6 +202,9 @@ "ignoreValueFormatterDuringExport": { "description": "If true, the Data Grid will not use valueFormatter when exporting to CSV or copying to clipboard. If an object is provided, you can choose to ignore the valueFormatter for CSV export or clipboard export." }, + "indeterminateCheckboxAction": { + "description": "If select, a group header checkbox in indeterminate state (like "Select All" checkbox) will select all the rows under it. If deselect, it will deselect all the rows under it. Works only if checkboxSelection is enabled." + }, "initialState": { "description": "The initial state of the DataGridPremium. The data in it is set in the state on initialization but isn't controlled. If one of the data in initialState is also being controlled, then the control state wins." }, diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index b52063f75d28..91cce7101fd8 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -183,6 +183,9 @@ "ignoreValueFormatterDuringExport": { "description": "If true, the Data Grid will not use valueFormatter when exporting to CSV or copying to clipboard. If an object is provided, you can choose to ignore the valueFormatter for CSV export or clipboard export." }, + "indeterminateCheckboxAction": { + "description": "If select, a group header checkbox in indeterminate state (like "Select All" checkbox) will select all the rows under it. If deselect, it will deselect all the rows under it. Works only if checkboxSelection is enabled." + }, "initialState": { "description": "The initial state of the DataGridPro. The data in it will be set in the state on initialization but will not be controlled. If one of the data in initialState is also being controlled, then the control state wins." }, diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index 545e3c09ac3a..b799ebbc7206 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -136,6 +136,9 @@ "ignoreValueFormatterDuringExport": { "description": "If true, the Data Grid will not use valueFormatter when exporting to CSV or copying to clipboard. If an object is provided, you can choose to ignore the valueFormatter for CSV export or clipboard export." }, + "indeterminateCheckboxAction": { + "description": "If select, a group header checkbox in indeterminate state (like "Select All" checkbox) will select all the rows under it. If deselect, it will deselect all the rows under it. Works only if checkboxSelection is enabled." + }, "initialState": { "description": "The initial state of the DataGrid. The data in it will be set in the state on initialization but will not be controlled. If one of the data in initialState is also being controlled, then the control state wins." }, diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index fb0abd4f63b0..459496e6f745 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -472,6 +472,14 @@ DataGridPremiumRaw.propTypes = { }), PropTypes.bool, ]), + /** + * If `select`, a group header checkbox in indeterminate state (like "Select All" checkbox) + * will select all the rows under it. + * If `deselect`, it will deselect all the rows under it. + * Works only if `checkboxSelection` is enabled. + * @default "deselect" + */ + indeterminateCheckboxAction: PropTypes.oneOf(['deselect', 'select']), /** * The initial state of the DataGridPremium. * The data in it is set in the state on initialization but isn't controlled. diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index b168aad4b0b4..ec3feaa5f00f 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -427,6 +427,14 @@ DataGridProRaw.propTypes = { }), PropTypes.bool, ]), + /** + * If `select`, a group header checkbox in indeterminate state (like "Select All" checkbox) + * will select all the rows under it. + * If `deselect`, it will deselect all the rows under it. + * Works only if `checkboxSelection` is enabled. + * @default "deselect" + */ + indeterminateCheckboxAction: PropTypes.oneOf(['deselect', 'select']), /** * The initial state of the DataGridPro. * The data in it will be set in the state on initialization but will not be controlled. diff --git a/packages/x-data-grid/src/DataGrid/DataGrid.tsx b/packages/x-data-grid/src/DataGrid/DataGrid.tsx index 72fcb9453320..d428bf358b41 100644 --- a/packages/x-data-grid/src/DataGrid/DataGrid.tsx +++ b/packages/x-data-grid/src/DataGrid/DataGrid.tsx @@ -354,6 +354,14 @@ DataGridRaw.propTypes = { }), PropTypes.bool, ]), + /** + * If `select`, a group header checkbox in indeterminate state (like "Select All" checkbox) + * will select all the rows under it. + * If `deselect`, it will deselect all the rows under it. + * Works only if `checkboxSelection` is enabled. + * @default "deselect" + */ + indeterminateCheckboxAction: PropTypes.oneOf(['deselect', 'select']), /** * The initial state of the DataGrid. * The data in it will be set in the state on initialization but will not be controlled. diff --git a/packages/x-data-grid/src/DataGrid/useDataGridProps.ts b/packages/x-data-grid/src/DataGrid/useDataGridProps.ts index 4e29d17e4f7b..fb7e047f3823 100644 --- a/packages/x-data-grid/src/DataGrid/useDataGridProps.ts +++ b/packages/x-data-grid/src/DataGrid/useDataGridProps.ts @@ -58,6 +58,8 @@ export const DATA_GRID_PROPS_DEFAULT_VALUES: DataGridPropsWithDefaultValues = { hideFooterSelectedRowCount: false, ignoreDiacritics: false, ignoreValueFormatterDuringExport: false, + // TODO v8: Update to 'select' + indeterminateCheckboxAction: 'deselect', keepColumnPositionIfDraggedOutside: false, keepNonExistentRowsSelected: false, loading: false, diff --git a/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx b/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx index 71e12c5db38b..f968f9108669 100644 --- a/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx +++ b/packages/x-data-grid/src/components/columnSelection/GridHeaderCheckbox.tsx @@ -129,11 +129,16 @@ const GridHeaderCheckbox = React.forwardRef - Row selection', () => { }); expect(grid('selectedRowCount')?.textContent).to.equal('1 row selected'); }); + + describe('prop: indeterminateCheckboxAction = "select"', () => { + it('should select all the rows when clicking on "Select All" checkbox in indeterminate state', () => { + render(); + const selectAllCheckbox = screen.getByRole('checkbox', { name: 'Select all rows' }); + fireEvent.click(screen.getAllByRole('checkbox', { name: /select row/i })[0]); + fireEvent.click(selectAllCheckbox); + expect(getSelectedRowIds()).to.deep.equal([0, 1, 2, 3]); + }); + }); + + describe('prop: indeterminateCheckboxAction = "deselect"', () => { + it('should deselect all the rows when clicking on "Select All" checkbox in indeterminate state', () => { + render(); + const selectAllCheckbox = screen.getByRole('checkbox', { name: 'Select all rows' }); + fireEvent.click(screen.getAllByRole('checkbox', { name: /select row/i })[0]); + fireEvent.click(selectAllCheckbox); + expect(getSelectedRowIds()).to.deep.equal([]); + }); + }); }); describe('prop: checkboxSelection = true (multi selection), with keyboard events', () => { From 6d78f4f039f3c65469ed3089e44f9dbdc491806d Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:44:20 +0200 Subject: [PATCH 868/912] [infra] Switch issue triage workflow to reusable workflows (#14390) --- .github/workflows/issue-cleanup.yml | 35 --------- .github/workflows/new-issue-triage.yml | 25 +++++++ scripts/githubActions/issueBodyCleanup.js | 86 ---------------------- scripts/githubActions/orderIdValidation.js | 70 ------------------ 4 files changed, 25 insertions(+), 191 deletions(-) delete mode 100644 .github/workflows/issue-cleanup.yml create mode 100644 .github/workflows/new-issue-triage.yml delete mode 100644 scripts/githubActions/issueBodyCleanup.js delete mode 100644 scripts/githubActions/orderIdValidation.js diff --git a/.github/workflows/issue-cleanup.yml b/.github/workflows/issue-cleanup.yml deleted file mode 100644 index a4d8839b60aa..000000000000 --- a/.github/workflows/issue-cleanup.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Issue cleanup - -on: - issues: - types: - - opened - -permissions: {} - -jobs: - issue_cleanup: - runs-on: ubuntu-latest - name: Clean issue body and add support label - permissions: - issues: write - steps: - - name: Checkout repository - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Clean issue body - id: cleanup - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 - with: - script: | - const script = require('./scripts/githubActions/issueBodyCleanup.js') - await script({core, github, context}) - - name: Add support label - if: steps.cleanup.outputs.ORDER_ID != '' - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 - with: - script: | - const script = require('./scripts/githubActions/orderIdValidation.js') - await script({core, github, context}) - env: - ORDER_API_TOKEN: ${{ secrets.SHOP_AUTH_TOKEN }} - ORDER_ID: ${{ steps.cleanup.outputs.ORDER_ID }} diff --git a/.github/workflows/new-issue-triage.yml b/.github/workflows/new-issue-triage.yml new file mode 100644 index 000000000000..8dc6fbf16324 --- /dev/null +++ b/.github/workflows/new-issue-triage.yml @@ -0,0 +1,25 @@ +name: New issue triage +on: + issues: + types: + - opened + +permissions: {} + +jobs: + issue_cleanup: + name: Clean issue body + uses: mui/mui-public/.github/workflows/issues_body-cleanup.yml@master + permissions: + contents: read + issues: write + order_id_validation: + name: Validate order ID + needs: issue_cleanup + if: needs.issue_cleanup.outputs.orderId != '' + uses: mui/mui-public/.github/workflows/issues_order-id-validation.yml@master + with: + orderId: ${{ needs.issue_cleanup.outputs.orderId }} + permissions: + contents: read + issues: write diff --git a/scripts/githubActions/issueBodyCleanup.js b/scripts/githubActions/issueBodyCleanup.js deleted file mode 100644 index 98156d6305ea..000000000000 --- a/scripts/githubActions/issueBodyCleanup.js +++ /dev/null @@ -1,86 +0,0 @@ -function extractInputSection(lines, title) { - const index = lines.findIndex((line) => line.startsWith('###') && line.includes(title)); - if (index === -1) { - return ''; - } - return lines.splice(index, 4)[2].trim(); -} - -/** - * @param {Object} params - * @param {import("@actions/core")} params.core - * @param {ReturnType} params.github - * @param {import("@actions/github").context} params.context - */ -module.exports = async ({ core, context, github }) => { - try { - const owner = context.repo.owner; - const repo = context.repo.repo; - const issueNumber = context.issue.number; - - const issue = await github.rest.issues.get({ - owner, - repo, - issue_number: issueNumber, - }); - - const lines = issue.data.body.split('\n'); - - // this is here to remove this section from the issue body - extractInputSection(lines, 'Latest version'); - - const searchKeywords = extractInputSection(lines, 'Search keywords'); - const products = extractInputSection(lines, 'Affected products'); - - // get the order id and set it as an output for the support label step - let orderID = extractInputSection(lines, 'Order ID or Support key'); - if (orderID === '_No response_') { - orderID = ''; - } - - core.setOutput('ORDER_ID', orderID); - - // debug log all values - core.debug(`>>> Search Keywords: ${searchKeywords}`); - core.debug(`>>> Order ID: ${orderID}`); - core.debug(`>>> Affected Products: ${products}`); - - lines.push(''); - lines.push(`**Search keywords**: ${searchKeywords}`); - if (orderID !== '') { - lines.push(`**Order ID**: ${orderID}`); - } - - const body = lines.join('\n'); - core.debug(`>>> Cleaned issue body: ${body}`); - - const labels = issue.data.labels.map((label) => label.name); - - const productMap = { - 'Data Grid': 'data grid', - 'Date and Time Pickers': 'pickers', - Charts: 'charts', - 'Tree View': 'tree view', - }; - - if (products !== '') { - products.split(',').forEach((product) => { - if (productMap[product.trim()]) { - labels.push(`component: ${productMap[product.trim()]}`); - } - }); - } - - core.debug(`>>> Labels: ${labels.join(',')}`); - - await github.rest.issues.update({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body, - labels, - }); - } catch (error) { - core.setFailed(error.message); - } -}; diff --git a/scripts/githubActions/orderIdValidation.js b/scripts/githubActions/orderIdValidation.js deleted file mode 100644 index c98fea6e9722..000000000000 --- a/scripts/githubActions/orderIdValidation.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @param {Object} params - * @param {import("@actions/core")} params.core - * @param {ReturnType} params.github - * @param {import("@actions/github").context} params.context - */ -module.exports = async ({ core, context, github }) => { - try { - const owner = context.repo.owner; - const repo = context.repo.repo; - const issueNumber = context.issue.number; - - const orderId = process.env.ORDER_ID; - const orderApiToken = process.env.ORDER_API_TOKEN; - - const orderApi = 'https://store-wp.mui.com/wp-json/wc/v3/orders/'; - - core.debug(`>>> Order ID: ${orderId}`); - - if (!orderId) { - core.info('No Order ID'); - } else { - const order = await fetch(`${orderApi}${orderId}`, { - headers: { - Authorization: `Basic ${orderApiToken}`, - 'User-Agent': 'MUI-Tools-Private/X-Orders-Inspector v1', - }, - }); - - if (!order.ok) { - core.info(`Request to ${orderApi} failed. Response status code: ${order.status}.`); - } - - const orderDetails = await order.json(); - - core.debug(`>>> Order Items: ${orderDetails.line_items?.join(',')}`); - - const plan = - orderDetails.line_items?.filter((item) => /\b(pro|premium)\b/i.test(item.name))[0].name || - ''; - - if (!plan) { - core.info('No Pro or Premium plan found in order'); - return; - } - - const planName = plan.match(/\b(pro|premium)\b/i)[0].toLowerCase(); - - if (planName !== 'pro' && planName !== 'premium') { - core.debug(`>>> planName: ${planName}`); - core.info('planName could not be extracted'); - return; - } - - const labelName = `support: ${planName} standard`; - - core.debug(`>>> planName: ${planName}`); - core.debug(`>>> labelName: ${labelName}`); - - await github.rest.issues.addLabels({ - owner, - repo, - issue_number: issueNumber, - labels: [labelName], - }); - } - } catch (error) { - core.setFailed(error.message); - } -}; From 3ff993c58ad0c60f3c069cf57278d10051cfbb3b Mon Sep 17 00:00:00 2001 From: Jan Potoms <2109932+Janpot@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:53:14 +0200 Subject: [PATCH 869/912] [code-infra] Fully resolve imports in ESM target (#14234) --- babel.config.js | 32 +++++++++++++++++++ package.json | 1 + .../src/themeAugmentation/index.ts | 8 ++--- .../x-charts/src/themeAugmentation/index.ts | 6 ++-- .../src/themeAugmentation/index.ts | 6 ++-- .../src/themeAugmentation/index.ts | 6 ++-- .../src/themeAugmentation/index.ts | 6 ++-- .../src/themeAugmentation/index.ts | 6 ++-- pnpm-lock.yaml | 13 ++++++++ 9 files changed, 65 insertions(+), 19 deletions(-) diff --git a/babel.config.js b/babel.config.js index 4d49a519eca6..6d812eba0163 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,6 +1,16 @@ +// @ts-check const path = require('path'); const generateReleaseInfo = require('./packages/x-license/generateReleaseInfo'); +/** + * @typedef {import('@babel/core')} babel + */ + +/** + * + * @param {string} relativeToBabelConf + * @returns {string} + */ function resolveAliasPath(relativeToBabelConf) { const resolvedPath = path.relative(process.cwd(), path.resolve(__dirname, relativeToBabelConf)); return `./${resolvedPath.replace('\\', '/')}`; @@ -33,6 +43,7 @@ const productionPlugins = [ ['babel-plugin-react-remove-properties', { properties: ['data-mui-test'] }], ]; +/** @type {babel.ConfigFunction} */ module.exports = function getBabelConfig(api) { const useESModules = api.env(['modern', 'stable', 'rollup']); @@ -56,6 +67,16 @@ module.exports = function getBabelConfig(api) { '@babel/preset-typescript', ]; + const usesAliases = + // in this config: + api.env(['coverage', 'development', 'test', 'benchmark']) || + process.env.NODE_ENV === 'test' || + // in webpack config: + api.env(['regressions']); + + const outFileExtension = '.js'; + + /** @type {babel.PluginItem[]} */ const plugins = [ 'babel-plugin-optimize-clsx', // Need the following 3 transforms for all targets in .browserslistrc. @@ -125,6 +146,17 @@ module.exports = function getBabelConfig(api) { } } + if (useESModules) { + plugins.push([ + '@mui/internal-babel-plugin-resolve-imports', + { + // Don't replace the extension when we're using aliases. + // Essentially only replace in production builds. + outExtension: usesAliases ? null : outFileExtension, + }, + ]); + } + return { assumptions: { noDocumentAll: true, diff --git a/package.json b/package.json index f96fd51d9dee..12574377b452 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@mui/internal-babel-plugin-resolve-imports": "1.0.16-dev.20240822-123416-f4a704707a", "@mui/icons-material": "^5.16.7", "@mui/internal-markdown": "^1.0.11", "@mui/internal-test-utils": "^1.0.10", diff --git a/packages/x-charts-pro/src/themeAugmentation/index.ts b/packages/x-charts-pro/src/themeAugmentation/index.ts index 1a4a7fc3c80d..52475626c4f0 100644 --- a/packages/x-charts-pro/src/themeAugmentation/index.ts +++ b/packages/x-charts-pro/src/themeAugmentation/index.ts @@ -1,4 +1,4 @@ -export * from '@mui/x-charts/themeAugmentation'; -export * from './overrides'; -export * from './props'; -export * from './components'; +export type * from '@mui/x-charts/themeAugmentation'; +export type * from './overrides'; +export type * from './props'; +export type * from './components'; diff --git a/packages/x-charts/src/themeAugmentation/index.ts b/packages/x-charts/src/themeAugmentation/index.ts index 492f27d8f917..d387cd19110f 100644 --- a/packages/x-charts/src/themeAugmentation/index.ts +++ b/packages/x-charts/src/themeAugmentation/index.ts @@ -1,3 +1,3 @@ -export * from './overrides'; -export * from './props'; -export * from './components'; +export type * from './overrides'; +export type * from './props'; +export type * from './components'; diff --git a/packages/x-date-pickers-pro/src/themeAugmentation/index.ts b/packages/x-date-pickers-pro/src/themeAugmentation/index.ts index 7141a607d90b..5c6664875f63 100644 --- a/packages/x-date-pickers-pro/src/themeAugmentation/index.ts +++ b/packages/x-date-pickers-pro/src/themeAugmentation/index.ts @@ -1,4 +1,4 @@ export * from '@mui/x-date-pickers/themeAugmentation'; -export * from './overrides'; -export * from './props'; -export * from './components'; +export type * from './overrides'; +export type * from './props'; +export type * from './components'; diff --git a/packages/x-date-pickers/src/themeAugmentation/index.ts b/packages/x-date-pickers/src/themeAugmentation/index.ts index 492f27d8f917..d387cd19110f 100644 --- a/packages/x-date-pickers/src/themeAugmentation/index.ts +++ b/packages/x-date-pickers/src/themeAugmentation/index.ts @@ -1,3 +1,3 @@ -export * from './overrides'; -export * from './props'; -export * from './components'; +export type * from './overrides'; +export type * from './props'; +export type * from './components'; diff --git a/packages/x-tree-view-pro/src/themeAugmentation/index.ts b/packages/x-tree-view-pro/src/themeAugmentation/index.ts index 492f27d8f917..d387cd19110f 100644 --- a/packages/x-tree-view-pro/src/themeAugmentation/index.ts +++ b/packages/x-tree-view-pro/src/themeAugmentation/index.ts @@ -1,3 +1,3 @@ -export * from './overrides'; -export * from './props'; -export * from './components'; +export type * from './overrides'; +export type * from './props'; +export type * from './components'; diff --git a/packages/x-tree-view/src/themeAugmentation/index.ts b/packages/x-tree-view/src/themeAugmentation/index.ts index 492f27d8f917..d387cd19110f 100644 --- a/packages/x-tree-view/src/themeAugmentation/index.ts +++ b/packages/x-tree-view/src/themeAugmentation/index.ts @@ -1,3 +1,3 @@ -export * from './overrides'; -export * from './props'; -export * from './components'; +export type * from './overrides'; +export type * from './props'; +export type * from './components'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a377b74e87df..28c1ed05238a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,6 +86,9 @@ importers: '@mui/icons-material': specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) + '@mui/internal-babel-plugin-resolve-imports': + specifier: 1.0.16-dev.20240822-123416-f4a704707a + version: 1.0.16-dev.20240822-123416-f4a704707a(@babel/core@7.25.2) '@mui/internal-markdown': specifier: ^1.0.11 version: 1.0.11 @@ -3089,6 +3092,11 @@ packages: '@types/react': optional: true + '@mui/internal-babel-plugin-resolve-imports@1.0.16-dev.20240822-123416-f4a704707a': + resolution: {integrity: sha512-zfxISMMAgZucsirZgqWqJXXCosnpKS+ZflBDKXyfbkNwWk5YUVwHNBfhQJ6yBLL+ZQIpXj22nCPC+38rkG76Pg==} + peerDependencies: + '@babel/core': '7' + '@mui/internal-docs-utils@1.0.11': resolution: {integrity: sha512-vnI+2mLMZSl4V3EDbXLj/pYpEH4xDBjLxhgBnEp2R6Agf89w6l6LRshrZADqHVVy9WEJ3ywoIZ1bYQCQd1bzzw==} @@ -11865,6 +11873,11 @@ snapshots: optionalDependencies: '@types/react': 18.3.4 + '@mui/internal-babel-plugin-resolve-imports@1.0.16-dev.20240822-123416-f4a704707a(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + resolve: 1.22.8 + '@mui/internal-docs-utils@1.0.11': dependencies: rimraf: 5.0.10 From 60b494d46316ede12e0a970369d29db0cc391958 Mon Sep 17 00:00:00 2001 From: sai chand <60743144+sai6855@users.noreply.github.com> Date: Thu, 29 Aug 2024 20:48:12 +0530 Subject: [PATCH 870/912] [DataGrid] Add key prop to `GridFilterInputMultipleValue` (#14302) --- .../GridFilterInputMultipleValue.tsx | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputMultipleValue.tsx b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputMultipleValue.tsx index e62a475011b7..9fc87274ac2b 100644 --- a/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputMultipleValue.tsx +++ b/packages/x-data-grid/src/components/panel/filterPanel/GridFilterInputMultipleValue.tsx @@ -65,14 +65,18 @@ function GridFilterInputMultipleValue(props: GridFilterInputMultipleValueProps) value={filterValueState} onChange={handleChange} renderTags={(value, getTagProps) => - value.map((option, index) => ( - - )) + value.map((option, index) => { + const { key, ...tagProps } = getTagProps({ index }); + return ( + + ); + }) } renderInput={(params) => ( Date: Thu, 29 Aug 2024 18:18:41 +0200 Subject: [PATCH 871/912] [charts] Replace ESM extensions by .mjs (#14387) --- packages/x-charts-vendor/es/{d3-array.js => d3-array.mjs} | 0 packages/x-charts-vendor/es/{d3-color.js => d3-color.mjs} | 0 packages/x-charts-vendor/es/{d3-delaunay.js => d3-delaunay.mjs} | 0 packages/x-charts-vendor/es/{d3-format.js => d3-format.mjs} | 0 .../es/{d3-interpolate.js => d3-interpolate.mjs} | 0 packages/x-charts-vendor/es/{d3-path.js => d3-path.mjs} | 0 packages/x-charts-vendor/es/{d3-scale.js => d3-scale.mjs} | 0 packages/x-charts-vendor/es/{d3-shape.js => d3-shape.mjs} | 0 .../es/{d3-time-format.js => d3-time-format.mjs} | 0 packages/x-charts-vendor/es/{d3-time.js => d3-time.mjs} | 0 packages/x-charts-vendor/es/{delaunator.js => delaunator.mjs} | 0 packages/x-charts-vendor/es/{internmap.js => internmap.mjs} | 0 .../es/{robust-predicates.js => robust-predicates.mjs} | 0 packages/x-charts-vendor/package.json | 2 +- packages/x-charts-vendor/scripts/build.js | 2 +- 15 files changed, 2 insertions(+), 2 deletions(-) rename packages/x-charts-vendor/es/{d3-array.js => d3-array.mjs} (100%) rename packages/x-charts-vendor/es/{d3-color.js => d3-color.mjs} (100%) rename packages/x-charts-vendor/es/{d3-delaunay.js => d3-delaunay.mjs} (100%) rename packages/x-charts-vendor/es/{d3-format.js => d3-format.mjs} (100%) rename packages/x-charts-vendor/es/{d3-interpolate.js => d3-interpolate.mjs} (100%) rename packages/x-charts-vendor/es/{d3-path.js => d3-path.mjs} (100%) rename packages/x-charts-vendor/es/{d3-scale.js => d3-scale.mjs} (100%) rename packages/x-charts-vendor/es/{d3-shape.js => d3-shape.mjs} (100%) rename packages/x-charts-vendor/es/{d3-time-format.js => d3-time-format.mjs} (100%) rename packages/x-charts-vendor/es/{d3-time.js => d3-time.mjs} (100%) rename packages/x-charts-vendor/es/{delaunator.js => delaunator.mjs} (100%) rename packages/x-charts-vendor/es/{internmap.js => internmap.mjs} (100%) rename packages/x-charts-vendor/es/{robust-predicates.js => robust-predicates.mjs} (100%) diff --git a/packages/x-charts-vendor/es/d3-array.js b/packages/x-charts-vendor/es/d3-array.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-array.js rename to packages/x-charts-vendor/es/d3-array.mjs diff --git a/packages/x-charts-vendor/es/d3-color.js b/packages/x-charts-vendor/es/d3-color.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-color.js rename to packages/x-charts-vendor/es/d3-color.mjs diff --git a/packages/x-charts-vendor/es/d3-delaunay.js b/packages/x-charts-vendor/es/d3-delaunay.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-delaunay.js rename to packages/x-charts-vendor/es/d3-delaunay.mjs diff --git a/packages/x-charts-vendor/es/d3-format.js b/packages/x-charts-vendor/es/d3-format.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-format.js rename to packages/x-charts-vendor/es/d3-format.mjs diff --git a/packages/x-charts-vendor/es/d3-interpolate.js b/packages/x-charts-vendor/es/d3-interpolate.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-interpolate.js rename to packages/x-charts-vendor/es/d3-interpolate.mjs diff --git a/packages/x-charts-vendor/es/d3-path.js b/packages/x-charts-vendor/es/d3-path.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-path.js rename to packages/x-charts-vendor/es/d3-path.mjs diff --git a/packages/x-charts-vendor/es/d3-scale.js b/packages/x-charts-vendor/es/d3-scale.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-scale.js rename to packages/x-charts-vendor/es/d3-scale.mjs diff --git a/packages/x-charts-vendor/es/d3-shape.js b/packages/x-charts-vendor/es/d3-shape.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-shape.js rename to packages/x-charts-vendor/es/d3-shape.mjs diff --git a/packages/x-charts-vendor/es/d3-time-format.js b/packages/x-charts-vendor/es/d3-time-format.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-time-format.js rename to packages/x-charts-vendor/es/d3-time-format.mjs diff --git a/packages/x-charts-vendor/es/d3-time.js b/packages/x-charts-vendor/es/d3-time.mjs similarity index 100% rename from packages/x-charts-vendor/es/d3-time.js rename to packages/x-charts-vendor/es/d3-time.mjs diff --git a/packages/x-charts-vendor/es/delaunator.js b/packages/x-charts-vendor/es/delaunator.mjs similarity index 100% rename from packages/x-charts-vendor/es/delaunator.js rename to packages/x-charts-vendor/es/delaunator.mjs diff --git a/packages/x-charts-vendor/es/internmap.js b/packages/x-charts-vendor/es/internmap.mjs similarity index 100% rename from packages/x-charts-vendor/es/internmap.js rename to packages/x-charts-vendor/es/internmap.mjs diff --git a/packages/x-charts-vendor/es/robust-predicates.js b/packages/x-charts-vendor/es/robust-predicates.mjs similarity index 100% rename from packages/x-charts-vendor/es/robust-predicates.js rename to packages/x-charts-vendor/es/robust-predicates.mjs diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 6df175e78974..59fef856b36d 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -19,7 +19,7 @@ "./package.json": "./package.json", "./*": { "types": "./*.d.ts", - "import": "./es/*.js", + "import": "./es/*.mjs", "default": "./lib/*.js" } }, diff --git a/packages/x-charts-vendor/scripts/build.js b/packages/x-charts-vendor/scripts/build.js index 169e75aee51c..ff634f2fbac3 100644 --- a/packages/x-charts-vendor/scripts/build.js +++ b/packages/x-charts-vendor/scripts/build.js @@ -118,7 +118,7 @@ const main = async () => { // Create library indexes and copy licenses to `lib-vendor. await Promise.all([ - fs.writeFile(path.join(EsmBasePath, `${pkgName}.js`), getEsmIndex(pkg)), + fs.writeFile(path.join(EsmBasePath, `${pkgName}.mjs`), getEsmIndex(pkg)), fs.writeFile(path.join(CjsBasePath, `${pkgName}.js`), getCjsIndex(pkg)), fs .copyFile(path.join(pkgBase, 'LICENSE'), path.join(libVendorPath, 'LICENSE')) From 5249349191f628f166df27c74caca5a2334bad3c Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Fri, 30 Aug 2024 11:02:19 +0200 Subject: [PATCH 872/912] [charts-pro] Fix props and automatic documentation on `BarChartPro` and `LineChartPro` (#14391) --- docs/pages/x/api/charts/bar-chart-pro.json | 17 ++- docs/pages/x/api/charts/line-chart-pro.json | 17 ++- .../charts/bar-chart-pro/bar-chart-pro.json | 7 +- .../charts/line-chart-pro/line-chart-pro.json | 7 +- .../src/BarChartPro/BarChartPro.tsx | 78 ++++------ .../src/LineChartPro/LineChartPro.tsx | 140 +++++------------- 6 files changed, 115 insertions(+), 151 deletions(-) diff --git a/docs/pages/x/api/charts/bar-chart-pro.json b/docs/pages/x/api/charts/bar-chart-pro.json index 141bd308bd16..8cc679f15c36 100644 --- a/docs/pages/x/api/charts/bar-chart-pro.json +++ b/docs/pages/x/api/charts/bar-chart-pro.json @@ -73,6 +73,13 @@ "describedArgs": ["event", "barItemIdentifier"] } }, + "onZoomChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(zoomData: Array) => void", + "describedArgs": ["zoomData"] + } + }, "rightAxis": { "type": { "name": "union", "description": "object
    | string" }, "default": "null" @@ -99,13 +106,19 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, sx?: Array<func
    | object
    | bool>
    | func
    | object, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { filterMode?: 'discard'
    | 'keep', maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, sx?: Array<func
    | object
    | bool>
    | func
    | object, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { filterMode?: 'discard'
    | 'keep', maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + } + }, + "zoom": { + "type": { + "name": "arrayOf", + "description": "Array<{ axisId: number
    | string, end: number, start: number }>" } } }, diff --git a/docs/pages/x/api/charts/line-chart-pro.json b/docs/pages/x/api/charts/line-chart-pro.json index 6b2c4e32e046..9737b36e65cc 100644 --- a/docs/pages/x/api/charts/line-chart-pro.json +++ b/docs/pages/x/api/charts/line-chart-pro.json @@ -65,6 +65,13 @@ }, "onLineClick": { "type": { "name": "func" } }, "onMarkClick": { "type": { "name": "func" } }, + "onZoomChange": { + "type": { "name": "func" }, + "signature": { + "type": "function(zoomData: Array) => void", + "describedArgs": ["zoomData"] + } + }, "rightAxis": { "type": { "name": "union", "description": "object
    | string" }, "default": "null" @@ -92,13 +99,19 @@ "xAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'bottom'
    | 'top', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, sx?: Array<func
    | object
    | bool>
    | func
    | object, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { filterMode?: 'discard'
    | 'keep', maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" } }, "yAxis": { "type": { "name": "arrayOf", - "description": "Array<{ axisId?: number
    | string, classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + "description": "Array<{ classes?: object, colorMap?: { colors: Array<string>, type: 'ordinal', unknownColor?: string, values?: Array<Date
    | number
    | string> }
    | { color: Array<string>
    | func, max?: Date
    | number, min?: Date
    | number, type: 'continuous' }
    | { colors: Array<string>, thresholds: Array<Date
    | number>, type: 'piecewise' }, data?: array, dataKey?: string, disableLine?: bool, disableTicks?: bool, fill?: string, hideTooltip?: bool, id?: number
    | string, label?: string, labelFontSize?: number, labelStyle?: object, max?: Date
    | number, min?: Date
    | number, position?: 'left'
    | 'right', reverse?: bool, scaleType?: 'band'
    | 'linear'
    | 'log'
    | 'point'
    | 'pow'
    | 'sqrt'
    | 'time'
    | 'utc', slotProps?: object, slots?: object, stroke?: string, sx?: Array<func
    | object
    | bool>
    | func
    | object, tickFontSize?: number, tickInterval?: 'auto'
    | array
    | func, tickLabelInterval?: 'auto'
    | func, tickLabelPlacement?: 'middle'
    | 'tick', tickLabelStyle?: object, tickMaxStep?: number, tickMinStep?: number, tickNumber?: number, tickPlacement?: 'end'
    | 'extremities'
    | 'middle'
    | 'start', tickSize?: number, valueFormatter?: func, zoom?: { filterMode?: 'discard'
    | 'keep', maxEnd?: number, maxSpan?: number, minSpan?: number, minStart?: number, panning?: bool, step?: number }
    | bool }>" + } + }, + "zoom": { + "type": { + "name": "arrayOf", + "description": "Array<{ axisId: number
    | string, end: number, start: number }>" } } }, diff --git a/docs/translations/api-docs/charts/bar-chart-pro/bar-chart-pro.json b/docs/translations/api-docs/charts/bar-chart-pro/bar-chart-pro.json index 48e64539542e..58fc1a173e71 100644 --- a/docs/translations/api-docs/charts/bar-chart-pro/bar-chart-pro.json +++ b/docs/translations/api-docs/charts/bar-chart-pro/bar-chart-pro.json @@ -52,6 +52,10 @@ "barItemIdentifier": "The bar item identifier." } }, + "onZoomChange": { + "description": "Callback fired when the zoom has changed.", + "typeDescriptions": { "zoomData": "Updated zoom data." } + }, "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, @@ -76,7 +80,8 @@ }, "yAxis": { "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of
    AxisConfig objects." - } + }, + "zoom": { "description": "The list of zoom data related to each axis." } }, "classDescriptions": {} } diff --git a/docs/translations/api-docs/charts/line-chart-pro/line-chart-pro.json b/docs/translations/api-docs/charts/line-chart-pro/line-chart-pro.json index a262e0ac15bf..bc67c9eba65b 100644 --- a/docs/translations/api-docs/charts/line-chart-pro/line-chart-pro.json +++ b/docs/translations/api-docs/charts/line-chart-pro/line-chart-pro.json @@ -46,6 +46,10 @@ }, "onLineClick": { "description": "Callback fired when a line element is clicked." }, "onMarkClick": { "description": "Callback fired when a mark element is clicked." }, + "onZoomChange": { + "description": "Callback fired when the zoom has changed.", + "typeDescriptions": { "zoomData": "Updated zoom data." } + }, "rightAxis": { "description": "Indicate which axis to display the right of the charts. Can be a string (the id of the axis) or an object ChartsYAxisProps." }, @@ -70,7 +74,8 @@ }, "yAxis": { "description": "The configuration of the y-axes. If not provided, a default axis config is used. An array of AxisConfig objects." - } + }, + "zoom": { "description": "The list of zoom data related to each axis." } }, "classDescriptions": {} } diff --git a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx index ef8624363755..e7c1e3c3cac0 100644 --- a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx +++ b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx @@ -17,6 +17,12 @@ import { ZoomSetup } from '../context/ZoomProvider/ZoomSetup'; import { useZoom } from '../context/ZoomProvider/useZoom'; import { ZoomProps } from '../context/ZoomProvider'; +function BarChartPlotZoom(props: BarPlotProps) { + const { isInteracting } = useZoom(); + + return ; +} + export interface BarChartProProps extends BarChartProps, ZoomProps {} /** @@ -202,6 +208,12 @@ BarChartPro.propTypes = { * @param {BarItemIdentifier} barItemIdentifier The bar item identifier. */ onItemClick: PropTypes.func, + /** + * Callback fired when the zoom has changed. + * + * @param {ZoomData[]} zoomData Updated zoom data. + */ + onZoomChange: PropTypes.func, /** * Indicate which axis to display the right of the charts. * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. @@ -269,7 +281,6 @@ BarChartPro.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -316,6 +327,11 @@ BarChartPro.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, stroke: PropTypes.string, + sx: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), + PropTypes.func, + PropTypes.object, + ]), tickFontSize: PropTypes.number, tickInterval: PropTypes.oneOfType([ PropTypes.oneOf(['auto']), @@ -333,6 +349,7 @@ BarChartPro.propTypes = { valueFormatter: PropTypes.func, zoom: PropTypes.oneOfType([ PropTypes.shape({ + filterMode: PropTypes.oneOf(['discard', 'keep']), maxEnd: PropTypes.number, maxSpan: PropTypes.number, minSpan: PropTypes.number, @@ -351,7 +368,6 @@ BarChartPro.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -398,6 +414,11 @@ BarChartPro.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, stroke: PropTypes.string, + sx: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), + PropTypes.func, + PropTypes.object, + ]), tickFontSize: PropTypes.number, tickInterval: PropTypes.oneOfType([ PropTypes.oneOf(['auto']), @@ -415,6 +436,7 @@ BarChartPro.propTypes = { valueFormatter: PropTypes.func, zoom: PropTypes.oneOfType([ PropTypes.shape({ + filterMode: PropTypes.oneOf(['discard', 'keep']), maxEnd: PropTypes.number, maxSpan: PropTypes.number, minSpan: PropTypes.number, @@ -426,52 +448,16 @@ BarChartPro.propTypes = { ]), }), ), -} as any; - -function BarChartPlotZoom(props: BarPlotProps) { - const { isInteracting } = useZoom(); - - return ; -} - -BarChartPlotZoom.propTypes = { - // ----------------------------- Warning -------------------------------- - // | These PropTypes are generated from the TypeScript type definitions | - // | To update them edit the TypeScript types and run "pnpm proptypes" | - // ---------------------------------------------------------------------- /** - * If provided, the function will be used to format the label of the bar. - * It can be set to 'value' to display the current value. - * @param {BarItem} item The item to format. - * @param {BarLabelContext} context data about the bar. - * @returns {string} The formatted label. + * The list of zoom data related to each axis. */ - barLabel: PropTypes.oneOfType([PropTypes.oneOf(['value']), PropTypes.func]), - /** - * Defines the border radius of the bar element. - */ - borderRadius: PropTypes.number, - /** - * Callback fired when a bar item is clicked. - * @param {React.MouseEvent} event The event source of the callback. - * @param {BarItemIdentifier} barItemIdentifier The bar item identifier. - */ - onItemClick: PropTypes.func, - /** - * If `true`, animations are skipped. - * @default false - */ - skipAnimation: PropTypes.bool, - /** - * The props used for each component slot. - * @default {} - */ - slotProps: PropTypes.object, - /** - * Overridable component slots. - * @default {} - */ - slots: PropTypes.object, + zoom: PropTypes.arrayOf( + PropTypes.shape({ + axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + end: PropTypes.number.isRequired, + start: PropTypes.number.isRequired, + }), + ), } as any; export { BarChartPro }; diff --git a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx index 8075680e6bc4..a85dbc3121e5 100644 --- a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx +++ b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx @@ -25,6 +25,21 @@ import { ZoomSetup } from '../context/ZoomProvider/ZoomSetup'; import { useZoom } from '../context/ZoomProvider/useZoom'; import { ZoomProps } from '../context/ZoomProvider'; +function AreaPlotZoom(props: AreaPlotProps) { + const { isInteracting } = useZoom(); + return ; +} + +function LinePlotZoom(props: LinePlotProps) { + const { isInteracting } = useZoom(); + return ; +} + +function MarkPlotZoom(props: MarkPlotProps) { + const { isInteracting } = useZoom(); + return ; +} + export interface LineChartProProps extends LineChartProps, ZoomProps {} /** @@ -210,6 +225,12 @@ LineChartPro.propTypes = { * Callback fired when a mark element is clicked. */ onMarkClick: PropTypes.func, + /** + * Callback fired when the zoom has changed. + * + * @param {ZoomData[]} zoomData Updated zoom data. + */ + onZoomChange: PropTypes.func, /** * Indicate which axis to display the right of the charts. * Can be a string (the id of the axis) or an object `ChartsYAxisProps`. @@ -278,7 +299,6 @@ LineChartPro.propTypes = { */ xAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -325,6 +345,11 @@ LineChartPro.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, stroke: PropTypes.string, + sx: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), + PropTypes.func, + PropTypes.object, + ]), tickFontSize: PropTypes.number, tickInterval: PropTypes.oneOfType([ PropTypes.oneOf(['auto']), @@ -342,6 +367,7 @@ LineChartPro.propTypes = { valueFormatter: PropTypes.func, zoom: PropTypes.oneOfType([ PropTypes.shape({ + filterMode: PropTypes.oneOf(['discard', 'keep']), maxEnd: PropTypes.number, maxSpan: PropTypes.number, minSpan: PropTypes.number, @@ -360,7 +386,6 @@ LineChartPro.propTypes = { */ yAxis: PropTypes.arrayOf( PropTypes.shape({ - axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), classes: PropTypes.object, colorMap: PropTypes.oneOfType([ PropTypes.shape({ @@ -407,6 +432,11 @@ LineChartPro.propTypes = { slotProps: PropTypes.object, slots: PropTypes.object, stroke: PropTypes.string, + sx: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), + PropTypes.func, + PropTypes.object, + ]), tickFontSize: PropTypes.number, tickInterval: PropTypes.oneOfType([ PropTypes.oneOf(['auto']), @@ -424,6 +454,7 @@ LineChartPro.propTypes = { valueFormatter: PropTypes.func, zoom: PropTypes.oneOfType([ PropTypes.shape({ + filterMode: PropTypes.oneOf(['discard', 'keep']), maxEnd: PropTypes.number, maxSpan: PropTypes.number, minSpan: PropTypes.number, @@ -435,105 +466,16 @@ LineChartPro.propTypes = { ]), }), ), -} as any; - -function MarkPlotZoom(props: MarkPlotProps) { - const { isInteracting } = useZoom(); - return ; -} - -MarkPlotZoom.propTypes = { - // ----------------------------- Warning -------------------------------- - // | These PropTypes are generated from the TypeScript type definitions | - // | To update them edit the TypeScript types and run "pnpm proptypes" | - // ---------------------------------------------------------------------- - /** - * Callback fired when a line mark item is clicked. - * @param {React.MouseEvent} event The event source of the callback. - * @param {LineItemIdentifier} lineItemIdentifier The line mark item identifier. - */ - onItemClick: PropTypes.func, /** - * If `true`, animations are skipped. - * @default false + * The list of zoom data related to each axis. */ - skipAnimation: PropTypes.bool, - /** - * The props used for each component slot. - * @default {} - */ - slotProps: PropTypes.object, - /** - * Overridable component slots. - * @default {} - */ - slots: PropTypes.object, -} as any; - -function LinePlotZoom(props: LinePlotProps) { - const { isInteracting } = useZoom(); - return ; -} - -LinePlotZoom.propTypes = { - // ----------------------------- Warning -------------------------------- - // | These PropTypes are generated from the TypeScript type definitions | - // | To update them edit the TypeScript types and run "pnpm proptypes" | - // ---------------------------------------------------------------------- - /** - * Callback fired when a line item is clicked. - * @param {React.MouseEvent} event The event source of the callback. - * @param {LineItemIdentifier} lineItemIdentifier The line item identifier. - */ - onItemClick: PropTypes.func, - /** - * If `true`, animations are skipped. - * @default false - */ - skipAnimation: PropTypes.bool, - /** - * The props used for each component slot. - * @default {} - */ - slotProps: PropTypes.object, - /** - * Overridable component slots. - * @default {} - */ - slots: PropTypes.object, -} as any; - -function AreaPlotZoom(props: AreaPlotProps) { - const { isInteracting } = useZoom(); - return ; -} - -AreaPlotZoom.propTypes = { - // ----------------------------- Warning -------------------------------- - // | These PropTypes are generated from the TypeScript type definitions | - // | To update them edit the TypeScript types and run "pnpm proptypes" | - // ---------------------------------------------------------------------- - /** - * Callback fired when a line area item is clicked. - * @param {React.MouseEvent} event The event source of the callback. - * @param {LineItemIdentifier} lineItemIdentifier The line item identifier. - */ - onItemClick: PropTypes.func, - /** - * If `true`, animations are skipped. - * @default false - */ - skipAnimation: PropTypes.bool, - /** - * The props used for each component slot. - * @default {} - */ - slotProps: PropTypes.object, - /** - * Overridable component slots. - * @default {} - */ - slots: PropTypes.object, + zoom: PropTypes.arrayOf( + PropTypes.shape({ + axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, + end: PropTypes.number.isRequired, + start: PropTypes.number.isRequired, + }), + ), } as any; export { LineChartPro }; From 2378e90cbee68c0f131a0fdebd804633454e377c Mon Sep 17 00:00:00 2001 From: Kenan Yusuf Date: Fri, 30 Aug 2024 11:06:01 +0100 Subject: [PATCH 873/912] [DataGrid] Fix first row flickering with autoHeight enabled (#14235) Signed-off-by: Kenan Yusuf Co-authored-by: Bilal Shafi --- .../virtualization/virtualization.md | 4 + docs/pages/x/api/data-grid/selectors.json | 10 +- .../columnHeaders/useGridColumnHeaders.tsx | 2 +- .../gridVirtualizationSelectors.ts | 12 +- .../virtualization/useGridVirtualScroller.tsx | 108 +++++++++--------- .../virtualization/useGridVirtualization.tsx | 14 ++- scripts/x-data-grid-premium.exports.json | 1 + scripts/x-data-grid-pro.exports.json | 1 + scripts/x-data-grid.exports.json | 1 + 9 files changed, 90 insertions(+), 63 deletions(-) diff --git a/docs/data/data-grid/virtualization/virtualization.md b/docs/data/data-grid/virtualization/virtualization.md index bc14f817113f..7d1f048db383 100644 --- a/docs/data/data-grid/virtualization/virtualization.md +++ b/docs/data/data-grid/virtualization/virtualization.md @@ -14,6 +14,10 @@ Row virtualization is the insertion and removal of rows as the data grid scrolls The grid renders some additional rows above and below the visible rows. You can use `rowBufferPx` prop to hint to the Data Grid the area to render, but this value may not be respected in certain situations, for example during high-speed scrolling. Row virtualization is limited to 100 rows in the `DataGrid` component. +:::warning +Row virtualization does not work with the `autoHeight` prop enabled. +::: + ## Column virtualization Column virtualization is the insertion and removal of columns as the data grid scrolls horizontally. diff --git a/docs/pages/x/api/data-grid/selectors.json b/docs/pages/x/api/data-grid/selectors.json index 092a70faf262..06218ff0ab86 100644 --- a/docs/pages/x/api/data-grid/selectors.json +++ b/docs/pages/x/api/data-grid/selectors.json @@ -518,16 +518,24 @@ "name": "gridVirtualizationColumnEnabledSelector", "returnType": "boolean", "category": "Virtualization", - "description": "Get the enabled state for virtualization", + "description": "Get the enabled state for column virtualization", "supportsApiRef": true }, { "name": "gridVirtualizationEnabledSelector", "returnType": "boolean", "category": "Virtualization", + "deprecated": "Use `gridVirtualizationColumnEnabledSelector` and `gridVirtualizationRowEnabledSelector`", "description": "Get the enabled state for virtualization", "supportsApiRef": true }, + { + "name": "gridVirtualizationRowEnabledSelector", + "returnType": "boolean", + "category": "Virtualization", + "description": "Get the enabled state for row virtualization", + "supportsApiRef": true + }, { "name": "gridVirtualizationSelector", "returnType": "GridVirtualizationState", diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index 10866db97f84..ff711ab42c48 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -167,7 +167,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { maxLastColumn = visibleColumns.length, } = params || {}; - const firstColumnToRender = !hasVirtualization ? 0 : currentContext.firstColumnIndex; + const firstColumnToRender = currentContext.firstColumnIndex; const lastColumnToRender = !hasVirtualization ? maxLastColumn : currentContext.lastColumnIndex; const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender); diff --git a/packages/x-data-grid/src/hooks/features/virtualization/gridVirtualizationSelectors.ts b/packages/x-data-grid/src/hooks/features/virtualization/gridVirtualizationSelectors.ts index 17dc3004bcf3..91ee34c84ee4 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/gridVirtualizationSelectors.ts +++ b/packages/x-data-grid/src/hooks/features/virtualization/gridVirtualizationSelectors.ts @@ -11,6 +11,7 @@ export const gridVirtualizationSelector = (state: GridStateCommunity) => state.v /** * Get the enabled state for virtualization * @category Virtualization + * @deprecated Use `gridVirtualizationColumnEnabledSelector` and `gridVirtualizationRowEnabledSelector` */ export const gridVirtualizationEnabledSelector = createSelector( gridVirtualizationSelector, @@ -18,7 +19,7 @@ export const gridVirtualizationEnabledSelector = createSelector( ); /** - * Get the enabled state for virtualization + * Get the enabled state for column virtualization * @category Virtualization */ export const gridVirtualizationColumnEnabledSelector = createSelector( @@ -26,6 +27,15 @@ export const gridVirtualizationColumnEnabledSelector = createSelector( (state) => state.enabledForColumns, ); +/** + * Get the enabled state for row virtualization + * @category Virtualization + */ +export const gridVirtualizationRowEnabledSelector = createSelector( + gridVirtualizationSelector, + (state) => state.enabledForRows, +); + /** * Get the render context * @category Virtualization diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx index 614af3bf0847..d986452fabbc 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx @@ -41,7 +41,7 @@ import { GridRowProps } from '../../../components/GridRow'; import { GridInfiniteLoaderPrivateApi } from '../../../models/api/gridInfiniteLoaderApi'; import { gridRenderContextSelector, - gridVirtualizationEnabledSelector, + gridVirtualizationRowEnabledSelector, gridVirtualizationColumnEnabledSelector, } from './gridVirtualizationSelectors'; import { EMPTY_RENDER_CONTEXT } from './useGridVirtualization'; @@ -99,7 +99,7 @@ export const useGridVirtualScroller = () => { const apiRef = useGridPrivateApiContext() as React.MutableRefObject; const rootProps = useGridRootProps(); const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector); - const enabled = useGridSelector(apiRef, gridVirtualizationEnabledSelector) && !isJSDOM; + const enabledForRows = useGridSelector(apiRef, gridVirtualizationRowEnabledSelector) && !isJSDOM; const enabledForColumns = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector) && !isJSDOM; const dimensions = useGridSelector(apiRef, gridDimensionsSelector); @@ -262,7 +262,7 @@ export const useGridVirtualScroller = () => { MINIMUM_COLUMN_WIDTH * 6, ); - const inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns); + const inputs = inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns); const nextRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache); // Prevents batching render context changes @@ -276,7 +276,7 @@ export const useGridVirtualScroller = () => { }; const forceUpdateRenderContext = () => { - const inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns); + const inputs = inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns); const nextRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache); // Reset the frozen context when the render context changes, see the illustration in https://github.com/mui/mui-x/pull/12353 frozenContext.current = undefined; @@ -551,15 +551,17 @@ export const useGridVirtualScroller = () => { }, [apiRef, rowsMeta.currentPageTotalHeight]); useEnhancedEffect(() => { - if (enabled) { - // TODO a scroll reset should not be necessary + // TODO a scroll reset should not be necessary + if (enabledForColumns) { scrollerRef.current!.scrollLeft = 0; + } + if (enabledForRows) { scrollerRef.current!.scrollTop = 0; } - }, [enabled, gridRootRef, scrollerRef]); + }, [enabledForColumns, enabledForRows, gridRootRef, scrollerRef]); useRunOnce(outerSize.width !== 0, () => { - const inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns); + const inputs = inputsSelector(apiRef, rootProps, enabledForRows, enabledForColumns); const initialRenderContext = computeRenderContext(inputs, scrollPosition.current, scrollCache); updateRenderContext(initialRenderContext); @@ -608,7 +610,7 @@ export const useGridVirtualScroller = () => { }; type RenderContextInputs = { - enabled: boolean; + enabledForRows: boolean; enabledForColumns: boolean; apiRef: React.MutableRefObject; autoHeight: boolean; @@ -631,7 +633,7 @@ type RenderContextInputs = { function inputsSelector( apiRef: React.MutableRefObject, rootProps: ReturnType, - enabled: boolean, + enabledForRows: boolean, enabledForColumns: boolean, ): RenderContextInputs { const dimensions = gridDimensionsSelector(apiRef.current.state); @@ -640,7 +642,7 @@ function inputsSelector( const lastRowId = apiRef.current.state.rows.dataRowIds.at(-1); const lastColumn = visibleColumns.at(-1); return { - enabled, + enabledForRows, enabledForColumns, apiRef, autoHeight: rootProps.autoHeight, @@ -666,19 +668,17 @@ function computeRenderContext( scrollPosition: ScrollPosition, scrollCache: ScrollCache, ) { - let renderContext: GridRenderContext; - - if (!inputs.enabled) { - renderContext = { - firstRowIndex: 0, - lastRowIndex: inputs.rows.length, - firstColumnIndex: 0, - lastColumnIndex: inputs.visibleColumns.length, - }; - } else { - const { top, left } = scrollPosition; - const realLeft = Math.abs(left) + inputs.leftPinnedWidth; + const renderContext: GridRenderContext = { + firstRowIndex: 0, + lastRowIndex: inputs.rows.length, + firstColumnIndex: 0, + lastColumnIndex: inputs.visibleColumns.length, + }; + const { top, left } = scrollPosition; + const realLeft = Math.abs(left) + inputs.leftPinnedWidth; + + if (inputs.enabledForRows) { // Clamp the value because the search may return an index out of bounds. // In the last index, this is not needed because Array.slice doesn't include it. const firstRowIndex = Math.min( @@ -694,46 +694,42 @@ function computeRenderContext( ? firstRowIndex + inputs.rows.length : getNearestIndexToRender(inputs, top + inputs.viewportInnerHeight); + renderContext.firstRowIndex = firstRowIndex; + renderContext.lastRowIndex = lastRowIndex; + } + + if (inputs.enabledForColumns) { let firstColumnIndex = 0; let lastColumnIndex = inputs.columnPositions.length; - if (inputs.enabledForColumns) { - let hasRowWithAutoHeight = false; - - const [firstRowToRender, lastRowToRender] = getIndexesToRender({ - firstIndex: firstRowIndex, - lastIndex: lastRowIndex, - minFirstIndex: 0, - maxLastIndex: inputs.rows.length, - bufferBefore: scrollCache.buffer.rowBefore, - bufferAfter: scrollCache.buffer.rowAfter, - positions: inputs.rowsMeta.positions, - lastSize: inputs.lastRowHeight, - }); + let hasRowWithAutoHeight = false; + + const [firstRowToRender, lastRowToRender] = getIndexesToRender({ + firstIndex: renderContext.firstRowIndex, + lastIndex: renderContext.lastRowIndex, + minFirstIndex: 0, + maxLastIndex: inputs.rows.length, + bufferBefore: scrollCache.buffer.rowBefore, + bufferAfter: scrollCache.buffer.rowAfter, + positions: inputs.rowsMeta.positions, + lastSize: inputs.lastRowHeight, + }); - for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) { - const row = inputs.rows[i]; - hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id); - } + for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) { + const row = inputs.rows[i]; + hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id); + } - if (!hasRowWithAutoHeight) { - firstColumnIndex = binarySearch(realLeft, inputs.columnPositions, { - atStart: true, - lastPosition: inputs.columnsTotalWidth, - }); - lastColumnIndex = binarySearch( - realLeft + inputs.viewportInnerWidth, - inputs.columnPositions, - ); - } + if (!hasRowWithAutoHeight) { + firstColumnIndex = binarySearch(realLeft, inputs.columnPositions, { + atStart: true, + lastPosition: inputs.columnsTotalWidth, + }); + lastColumnIndex = binarySearch(realLeft + inputs.viewportInnerWidth, inputs.columnPositions); } - renderContext = { - firstRowIndex, - lastRowIndex, - firstColumnIndex, - lastColumnIndex, - }; + renderContext.firstColumnIndex = firstColumnIndex; + renderContext.lastColumnIndex = lastColumnIndex; } const actualRenderContext = deriveRenderContext(inputs, renderContext, scrollCache); diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualization.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualization.tsx index febc90553c82..48d1c2636595 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualization.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualization.tsx @@ -5,11 +5,12 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; import { useGridApiMethod } from '../../utils/useGridApiMethod'; import { GridStateInitializer } from '../../utils/useGridInitializeState'; -type RootProps = Pick; +type RootProps = Pick; export type GridVirtualizationState = { enabled: boolean; enabledForColumns: boolean; + enabledForRows: boolean; renderContext: GridRenderContext; }; @@ -21,9 +22,12 @@ export const EMPTY_RENDER_CONTEXT = { }; export const virtualizationStateInitializer: GridStateInitializer = (state, props) => { + const { disableVirtualization, autoHeight } = props; + const virtualization = { - enabled: !props.disableVirtualization, - enabledForColumns: true, + enabled: !disableVirtualization, + enabledForColumns: !disableVirtualization, + enabledForRows: !disableVirtualization && !autoHeight, renderContext: EMPTY_RENDER_CONTEXT, }; @@ -47,6 +51,8 @@ export function useGridVirtualization( virtualization: { ...state.virtualization, enabled, + enabledForColumns: enabled, + enabledForRows: enabled && !props.autoHeight, }, })); }; @@ -75,6 +81,6 @@ export function useGridVirtualization( /* eslint-disable react-hooks/exhaustive-deps */ React.useEffect(() => { setVirtualization(!props.disableVirtualization); - }, [props.disableVirtualization]); + }, [props.disableVirtualization, props.autoHeight]); /* eslint-enable react-hooks/exhaustive-deps */ } diff --git a/scripts/x-data-grid-premium.exports.json b/scripts/x-data-grid-premium.exports.json index 7b0db79eb357..9cdbd7893a21 100644 --- a/scripts/x-data-grid-premium.exports.json +++ b/scripts/x-data-grid-premium.exports.json @@ -622,6 +622,7 @@ { "name": "GridVirtualizationApi", "kind": "Interface" }, { "name": "gridVirtualizationColumnEnabledSelector", "kind": "Variable" }, { "name": "gridVirtualizationEnabledSelector", "kind": "Variable" }, + { "name": "gridVirtualizationRowEnabledSelector", "kind": "Variable" }, { "name": "gridVirtualizationSelector", "kind": "Variable" }, { "name": "GridVirtualizationState", "kind": "TypeAlias" }, { "name": "GridVisibilityOffIcon", "kind": "Variable" }, diff --git a/scripts/x-data-grid-pro.exports.json b/scripts/x-data-grid-pro.exports.json index 4673f4bd5afb..243ae7852d41 100644 --- a/scripts/x-data-grid-pro.exports.json +++ b/scripts/x-data-grid-pro.exports.json @@ -575,6 +575,7 @@ { "name": "GridVirtualizationApi", "kind": "Interface" }, { "name": "gridVirtualizationColumnEnabledSelector", "kind": "Variable" }, { "name": "gridVirtualizationEnabledSelector", "kind": "Variable" }, + { "name": "gridVirtualizationRowEnabledSelector", "kind": "Variable" }, { "name": "gridVirtualizationSelector", "kind": "Variable" }, { "name": "GridVirtualizationState", "kind": "TypeAlias" }, { "name": "GridVisibilityOffIcon", "kind": "Variable" }, diff --git a/scripts/x-data-grid.exports.json b/scripts/x-data-grid.exports.json index ac66be0724d0..56013ba8ab98 100644 --- a/scripts/x-data-grid.exports.json +++ b/scripts/x-data-grid.exports.json @@ -524,6 +524,7 @@ { "name": "GridVirtualizationApi", "kind": "Interface" }, { "name": "gridVirtualizationColumnEnabledSelector", "kind": "Variable" }, { "name": "gridVirtualizationEnabledSelector", "kind": "Variable" }, + { "name": "gridVirtualizationRowEnabledSelector", "kind": "Variable" }, { "name": "gridVirtualizationSelector", "kind": "Variable" }, { "name": "GridVirtualizationState", "kind": "TypeAlias" }, { "name": "GridVisibilityOffIcon", "kind": "Variable" }, From 27404d61c719d67aed3d9be9447bec03091cbc24 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 12:23:10 +0200 Subject: [PATCH 874/912] Bump reselect to ^5.1.0 (#11367) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Andrew Cherniavskyi Co-authored-by: Rom Grk --- docs/data/charts/tooltip/ElementHighlights.js | 3 - .../ColumnPinningDynamicRowHeight.js | 1 - .../ArrowSwitcherComponent.js | 2 - .../ArrowSwitcherComponentProps.js | 2 - .../rich-tree-view/editing/EditingCallback.js | 1 - .../expansion/TrackItemExpansionToggle.js | 1 - .../expansion/TrackItemExpansionToggle.js | 1 - packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- .../hooks/features/filter/useGridFilter.tsx | 4 +- pnpm-lock.yaml | 591 +++++++++--------- 12 files changed, 303 insertions(+), 309 deletions(-) diff --git a/docs/data/charts/tooltip/ElementHighlights.js b/docs/data/charts/tooltip/ElementHighlights.js index cb1494936f79..4ff360e2a58c 100644 --- a/docs/data/charts/tooltip/ElementHighlights.js +++ b/docs/data/charts/tooltip/ElementHighlights.js @@ -130,7 +130,6 @@ export default function ElementHighlights() { }))} /> )} - {chartType === 'line' && ( )} - {chartType === 'scatter' && ( )} - {chartType === 'pie' && ( )} - diff --git a/docs/data/date-pickers/custom-components/ArrowSwitcherComponent.js b/docs/data/date-pickers/custom-components/ArrowSwitcherComponent.js index 6a2824cb8a43..039cfac29bda 100644 --- a/docs/data/date-pickers/custom-components/ArrowSwitcherComponent.js +++ b/docs/data/date-pickers/custom-components/ArrowSwitcherComponent.js @@ -43,7 +43,6 @@ export default function ArrowSwitcherComponent() { {currentComponent === 'date' && ( )} - {currentComponent === 'time' && ( )} - {currentComponent === 'dateRange' && ( )} - {currentComponent === 'time' && ( )} - {currentComponent === 'dateRange' && ( No item has been edited yet )} - )} - )} - diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index d3207ad28ee9..980bd187be36 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -53,7 +53,7 @@ "clsx": "^2.1.1", "exceljs": "^4.4.0", "prop-types": "^15.8.1", - "reselect": "^4.1.8" + "reselect": "^5.1.0" }, "peerDependencies": { "@emotion/react": "^11.9.0", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index fbf78ec33b7b..565884391158 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -51,7 +51,7 @@ "@types/format-util": "^1.0.4", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "reselect": "^4.1.8" + "reselect": "^5.1.0" }, "peerDependencies": { "@emotion/react": "^11.9.0", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index d5a1f2af8749..a650790474fd 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -52,7 +52,7 @@ "@mui/x-internals": "workspace:*", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "reselect": "^4.1.8" + "reselect": "^5.1.0" }, "peerDependencies": { "@emotion/react": "^11.9.0", diff --git a/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx b/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx index 1ad1ae3d7d94..b97aaf7fe71d 100644 --- a/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx +++ b/packages/x-data-grid/src/hooks/features/filter/useGridFilter.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { defaultMemoize } from 'reselect'; +import { lruMemoize } from 'reselect'; import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils'; import { GridEventListener } from '../../../models/events'; import { DataGridProcessedProps } from '../../../models/props/DataGridProps'; @@ -69,7 +69,7 @@ function getVisibleRowsLookupState( } function createMemoizedValues() { - return defaultMemoize(Object.values); + return lruMemoize(Object.values); } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28c1ed05238a..d7069c814fc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,7 +28,7 @@ importers: version: 6.0.0 '@argos-ci/core': specifier: ^2.5.0 - version: 2.5.0 + version: 2.5.1 '@babel/cli': specifier: ^7.24.8 version: 7.24.8(@babel/core@7.25.2) @@ -70,10 +70,10 @@ importers: version: 7.24.6(@babel/core@7.25.2) '@babel/traverse': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@babel/types': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 @@ -94,7 +94,7 @@ importers: version: 1.0.11 '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -142,7 +142,7 @@ importers: version: 10.0.7 '@types/node': specifier: ^18.19.46 - version: 18.19.46 + version: 18.19.47 '@types/react': specifier: ^18.3.4 version: 18.3.4 @@ -379,7 +379,7 @@ importers: version: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)) tsx: specifier: ^4.18.0 - version: 4.18.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 @@ -409,10 +409,10 @@ importers: version: 7.25.2 '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@babel/runtime-corejs2': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@docsearch/react': specifier: ^3.6.1 version: 3.6.1(@algolia/client-search@4.22.1)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) @@ -430,7 +430,7 @@ importers: version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/docs': specifier: 6.0.0 - version: 6.0.0(qeh4qocfzy3vvrano7hggrp5gy) + version: 6.0.0(bm6kywyrtzseqscuvn3yfzmlbi) '@mui/icons-material': specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -445,7 +445,7 @@ importers: version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material-nextjs': specifier: ^5.16.6 - version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ^5.16.7 version: 5.16.7(@types/react@18.3.4)(react@18.3.1) @@ -577,7 +577,7 @@ importers: version: 0.5.45 next: specifier: ^14.2.6 - version: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: specifier: ^0.2.0 version: 0.2.0 @@ -647,7 +647,7 @@ importers: version: 7.24.7(@babel/core@7.25.2) '@mui/internal-docs-utils': specifier: ^1.0.11 - version: 1.0.11 + version: 1.0.12 '@mui/internal-scripts': specifier: ^1.0.18 version: 1.0.18 @@ -713,7 +713,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -747,7 +747,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -775,7 +775,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -840,7 +840,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@types/d3-color': specifier: ^3.1.3 version: 3.1.3 @@ -928,10 +928,10 @@ importers: version: 7.25.2 '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@babel/traverse': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 jscodeshift: specifier: 0.16.1 version: 0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)) @@ -957,7 +957,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -983,12 +983,12 @@ importers: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1(react@18.3.1) reselect: - specifier: ^4.1.8 - version: 4.1.8 + specifier: ^5.1.0 + version: 5.1.1 devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1013,7 +1013,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1054,7 +1054,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1095,12 +1095,12 @@ importers: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1(react@18.3.1) reselect: - specifier: ^4.1.8 - version: 4.1.8 + specifier: ^5.1.0 + version: 5.1.1 devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1122,7 +1122,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1157,12 +1157,12 @@ importers: specifier: ^17.0.0 || ^18.0.0 version: 18.3.1(react@18.3.1) reselect: - specifier: ^4.1.8 - version: 4.1.8 + specifier: ^5.1.0 + version: 5.1.1 devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1181,7 +1181,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1212,7 +1212,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1264,7 +1264,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1304,7 +1304,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1341,7 +1341,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1351,7 +1351,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1361,7 +1361,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -1371,7 +1371,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -1381,7 +1381,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1415,7 +1415,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1434,7 +1434,7 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/react': specifier: ^11.9.0 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1474,7 +1474,7 @@ importers: devDependencies: '@mui/internal-test-utils': specifier: ^1.0.10 - version: 1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.5 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1493,7 +1493,7 @@ importers: devDependencies: '@babel/runtime': specifier: ^7.25.4 - version: 7.25.4 + version: 7.25.6 '@emotion/cache': specifier: ^11.13.1 version: 11.13.1 @@ -1589,7 +1589,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0)) + version: 3.1.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0)) '@emotion/react': specifier: ^11.13.3 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1610,10 +1610,10 @@ importers: version: 14.5.2(@testing-library/dom@10.4.0) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0)) + version: 4.3.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0)) '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0)) + version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0)) '@vitest/ui': specifier: 2.0.5 version: 2.0.5(vitest@2.0.5) @@ -1628,7 +1628,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) + version: 2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) packages: @@ -1718,8 +1718,8 @@ packages: resolution: {integrity: sha512-stqugeAtbHjD2MwezvgJ4hU0HvlEGwGDVsJvUUD4YoRS0putS8yFjXuempkc90XGeHDEfYZgvG372rcK7/FClA==} engines: {node: '>=18.0.0'} - '@argos-ci/core@2.5.0': - resolution: {integrity: sha512-xNHKWzuSLHXm/5fhdEQv8zUwExeEkYzw6CV/Ha9rUBBTPomZL5CNxpXQ/ww1AA4mRC5dq3CfgreRq8qj7HQMVQ==} + '@argos-ci/core@2.5.1': + resolution: {integrity: sha512-tgao3GqREG6A6E6LwEVbSTyVrChtb21nbcNGg69BS7DmqPY8pff/UV61QDoX+3Z9Kw8Cn4cI6YpLvhL77xRmCg==} engines: {node: '>=18.0.0'} '@argos-ci/util@2.1.1': @@ -1745,8 +1745,8 @@ packages: resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.5': - resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': @@ -1851,8 +1851,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/parser@7.25.4': - resolution: {integrity: sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==} + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -2405,24 +2405,24 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime-corejs2@7.25.4': - resolution: {integrity: sha512-6IxkDkxN13FQAB8FGF+vrvZVA77EqG4UzCwVGc9x9Ylerj70W3nMUwoXDbj2LtJxXlFKM256APcDQIItT2OFYA==} + '@babel/runtime-corejs2@7.25.6': + resolution: {integrity: sha512-24uCmOJPrsnS7HtRamCibYabHRV0bscPJNFFcyKgj7FqUA0V5XcbZUmz9PVNDW4L+euMsZtCIetU1LxTmUaIlA==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.25.4': - resolution: {integrity: sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==} + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.4': - resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.4': - resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -3040,8 +3040,8 @@ packages: '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -3054,7 +3054,7 @@ packages: resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': 18.3.3 + '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -3097,8 +3097,8 @@ packages: peerDependencies: '@babel/core': '7' - '@mui/internal-docs-utils@1.0.11': - resolution: {integrity: sha512-vnI+2mLMZSl4V3EDbXLj/pYpEH4xDBjLxhgBnEp2R6Agf89w6l6LRshrZADqHVVy9WEJ3ywoIZ1bYQCQd1bzzw==} + '@mui/internal-docs-utils@1.0.12': + resolution: {integrity: sha512-U5nkY88gi+a2MR6S2wXULPr7wscXFlLAatX2kn4S2bGGi/tLndSgmmzsvUKWMG/2bSnJ50F1frHnhgPkFM4znA==} '@mui/internal-markdown@1.0.11': resolution: {integrity: sha512-eKinbHo+/qlNkpuvnG0w7eBZApWM10DcNSK909aPv2AaWgAJ6ObCjcbpNCf8OfLb92xQrNcHFBVhEWcsddwflg==} @@ -3106,8 +3106,8 @@ packages: '@mui/internal-scripts@1.0.18': resolution: {integrity: sha512-4qgDg1u0beQnR1KySBcexfh/JDOobpdsHYLkKicb4tZxVzvDlW/cZ2zYS2gQVYqkpJfhiKhRbeafns5LYSQgXg==} - '@mui/internal-test-utils@1.0.10': - resolution: {integrity: sha512-2duysXjYP4hvMw7LCbEyR20Jbt5hOoBEnfkC+7k7UWCMrLvhboVf+X2XkQ8V2ZEf4Q3VJ2vTVUMOYp1S26miig==} + '@mui/internal-test-utils@1.0.11': + resolution: {integrity: sha512-zTb0PFLOk2McR6ONojtI77ReJyz8vm+mzpYcgUpCAICyZsfTcsv+OTOrduyhP4OIvoBRUOAH0FSBD6VXz5d4Ew==} peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 @@ -3266,62 +3266,62 @@ packages: resolution: {integrity: sha512-2KYkyluThg1AKfd0JWI7FzpS4A/fzVVGYIf6AM4ydWyNj8eI/86GQVLeRgDoH7CNOxt243R5tutWlmHpVq0/Ew==} engines: {node: '>=18.0.0'} - '@next/env@14.2.6': - resolution: {integrity: sha512-bs5DFKV+08EjWrl8EB+KKqev1ZTNONH1vFCaHh911aaB362NnP32UDTbE9VQhyiAgbFqJsfDkSxFERNDDb3j0g==} + '@next/env@14.2.7': + resolution: {integrity: sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==} '@next/eslint-plugin-next@14.2.6': resolution: {integrity: sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==} - '@next/swc-darwin-arm64@14.2.6': - resolution: {integrity: sha512-BtJZb+hYXGaVJJivpnDoi3JFVn80SHKCiiRUW3kk1SY6UCUy5dWFFSbh+tGi5lHAughzeduMyxbLt3pspvXNSg==} + '@next/swc-darwin-arm64@14.2.7': + resolution: {integrity: sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.6': - resolution: {integrity: sha512-ZHRbGpH6KHarzm6qEeXKSElSXh8dS2DtDPjQt3IMwY8QVk7GbdDYjvV4NgSnDA9huGpGgnyy3tH8i5yHCqVkiQ==} + '@next/swc-darwin-x64@14.2.7': + resolution: {integrity: sha512-ys2cUgZYRc+CbyDeLAaAdZgS7N1Kpyy+wo0b/gAj+SeOeaj0Lw/q+G1hp+DuDiDAVyxLBCJXEY/AkhDmtihUTA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.6': - resolution: {integrity: sha512-O4HqUEe3ZvKshXHcDUXn1OybN4cSZg7ZdwHJMGCXSUEVUqGTJVsOh17smqilIjooP/sIJksgl+1kcf2IWMZWHg==} + '@next/swc-linux-arm64-gnu@14.2.7': + resolution: {integrity: sha512-2xoWtE13sUJ3qrC1lwE/HjbDPm+kBQYFkkiVECJWctRASAHQ+NwjMzgrfqqMYHfMxFb5Wws3w9PqzZJqKFdWcQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.6': - resolution: {integrity: sha512-xUcdhr2hfalG8RDDGSFxQ75yOG894UlmFS4K2M0jLrUhauRBGOtUOxoDVwiIIuZQwZ3Y5hDsazNjdYGB0cQ9yQ==} + '@next/swc-linux-arm64-musl@14.2.7': + resolution: {integrity: sha512-+zJ1gJdl35BSAGpkCbfyiY6iRTaPrt3KTl4SF/B1NyELkqqnrNX6cp4IjjjxKpd64/7enI0kf6b9O1Uf3cL0pw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.6': - resolution: {integrity: sha512-InosKxw8UMcA/wEib5n2QttwHSKHZHNSbGcMepBM0CTcNwpxWzX32KETmwbhKod3zrS8n1vJ+DuJKbL9ZAB0Ag==} + '@next/swc-linux-x64-gnu@14.2.7': + resolution: {integrity: sha512-m6EBqrskeMUzykBrv0fDX/28lWIBGhMzOYaStp0ihkjzIYJiKUOzVYD1gULHc8XDf5EMSqoH/0/TRAgXqpQwmw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.6': - resolution: {integrity: sha512-d4QXfJmt5pGJ7cG8qwxKSBnO5AXuKAFYxV7qyDRHnUNvY/dgDh+oX292gATpB2AAHgjdHd5ks1wXxIEj6muLUQ==} + '@next/swc-linux-x64-musl@14.2.7': + resolution: {integrity: sha512-gUu0viOMvMlzFRz1r1eQ7Ql4OE+hPOmA7smfZAhn8vC4+0swMZaZxa9CSIozTYavi+bJNDZ3tgiSdMjmMzRJlQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.6': - resolution: {integrity: sha512-AlgIhk4/G+PzOG1qdF1b05uKTMsuRatFlFzAi5G8RZ9h67CVSSuZSbqGHbJDlcV1tZPxq/d4G0q6qcHDKWf4aQ==} + '@next/swc-win32-arm64-msvc@14.2.7': + resolution: {integrity: sha512-PGbONHIVIuzWlYmLvuFKcj+8jXnLbx4WrlESYlVnEzDsa3+Q2hI1YHoXaSmbq0k4ZwZ7J6sWNV4UZfx1OeOlbQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.6': - resolution: {integrity: sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==} + '@next/swc-win32-ia32-msvc@14.2.7': + resolution: {integrity: sha512-BiSY5umlx9ed5RQDoHcdbuKTUkuFORDqzYKPHlLeS+STUWQKWziVOn3Ic41LuTBvqE0TRJPKpio9GSIblNR+0w==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@next/swc-win32-x64-msvc@14.2.6': - resolution: {integrity: sha512-NANtw+ead1rSDK1jxmzq3TYkl03UNK2KHqUYf1nIhNci6NkeqBD4s1njSzYGIlSHxCK+wSaL8RXZm4v+NF/pMw==} + '@next/swc-win32-x64-msvc@14.2.7': + resolution: {integrity: sha512-pxsI23gKWRt/SPHFkDEsP+w+Nd7gK37Hpv0ngc5HpWy2e7cKx9zR/+Q2ptAUqICNTecAaGWvmhway7pj/JLEWA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4167,8 +4167,8 @@ packages: '@types/moment-jalaali@0.7.9': resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} - '@types/node@18.19.46': - resolution: {integrity: sha512-vnRgMS7W6cKa1/0G3/DTtQYpVrZ8c0Xm6UkLaVFrb9jtcVC3okokW09Ki1Qdrj9ISokszD69nY4WDLRlvHlhAA==} + '@types/node@18.19.47': + resolution: {integrity: sha512-1f7dB3BL/bpd9tnDJrrHb66Y+cVrhxSOTGorRNdHwYTUlTay3HuTDPKo9a/4vX9pMQkhYBcAbL4jQdNlhCFP9A==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4756,8 +4756,8 @@ packages: resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} - axios@1.7.4: - resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} + axios@1.7.5: + resolution: {integrity: sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==} axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} @@ -5052,8 +5052,8 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} chownr@2.0.0: @@ -7560,8 +7560,8 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} make-array@1.0.5: resolution: {integrity: sha512-sgK2SAzxT19rWU+qxKUcn6PAh/swiIiz2F8C2cZjLc1z4iwYIfdoihqFIDQ8BDzAGtWPYJ6Sr13K1j/DXynDLA==} @@ -7868,8 +7868,8 @@ packages: nested-error-stacks@2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - next@14.2.6: - resolution: {integrity: sha512-57Su7RqXs5CBKKKOagt8gPhMM3CpjgbeQhrtei2KLAA1vTNm7jfKS+uDARkSW8ZETUflDCBIsUKGSyQdRs4U4g==} + next@14.2.7: + resolution: {integrity: sha512-4Qy2aK0LwH4eQiSvQWyKuC7JXE13bIopEQesWE0c/P3uuNRnZCQanI0vsrMLmUQJLAto+A+/8+sve2hd+BQuOQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -8101,8 +8101,8 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - openapi-fetch@0.11.1: - resolution: {integrity: sha512-WtDQsrvxjXuCmo6u6WMQPfUaya8cLfL+ZCaXorPo9MMumqlU/Km/SrCXsEcJH234D4iykOkvJ6Q/iWBzK7+3rA==} + openapi-fetch@0.11.2: + resolution: {integrity: sha512-zc37VvX9vHJjJxNY3JLhg5Ks3J3KSL56NJrIAp2QRt/fdkOhGQHBTVY+Zz7tEOdqocS/1xfRTzWC6NguCGjUnA==} openapi-typescript-helpers@0.0.12: resolution: {integrity: sha512-FO+5kTWO6KDutigamr2MRwciYkAUYhqdctlyVRrQOe2uxif2/O2+GcS07jNnP36AUK6ubSsGu3GeBiYIc6eQzA==} @@ -8355,8 +8355,8 @@ packages: path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} @@ -8857,6 +8857,9 @@ packages: reselect@4.1.8: resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + reselect@5.1.1: + resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -9561,8 +9564,8 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.18.0: - resolution: {integrity: sha512-a1jaKBSVQkd6yEc1/NI7G6yHFfefIcuf3QJST7ZEyn4oQnxLYrZR5uZAM8UrwUa3Ge8suiZHcNS1gNrEvmobqg==} + tsx@4.19.0: + resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} engines: {node: '>=18.0.0'} hasBin: true @@ -10297,13 +10300,13 @@ snapshots: '@argos-ci/api-client@0.2.0': dependencies: - openapi-fetch: 0.11.1 + openapi-fetch: 0.11.2 - '@argos-ci/core@2.5.0': + '@argos-ci/core@2.5.1': dependencies: '@argos-ci/api-client': 0.2.0 '@argos-ci/util': 2.1.1 - axios: 1.7.4(debug@4.3.6) + axios: 1.7.5(debug@4.3.6) convict: 6.2.4 debug: 4.3.6(supports-color@8.1.1) fast-glob: 3.3.2 @@ -10326,7 +10329,7 @@ snapshots: slash: 2.0.0 optionalDependencies: '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.6.0 + chokidar: 3.5.3 '@babel/code-frame@7.24.7': dependencies: @@ -10339,14 +10342,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.5 + '@babel/generator': 7.25.6 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.4 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -10355,21 +10358,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.5': + '@babel/generator@7.25.6': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -10389,7 +10392,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.24.7 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10414,15 +10417,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -10432,13 +10435,13 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/helper-plugin-utils@7.24.8': {} @@ -10447,7 +10450,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -10456,21 +10459,21 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -10483,15 +10486,15 @@ snapshots: '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/highlight@7.24.7': dependencies: @@ -10510,15 +10513,15 @@ snapshots: regenerator-runtime: 0.14.1 v8flags: 3.2.0 - '@babel/parser@7.25.4': + '@babel/parser@7.25.6': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -10545,7 +10548,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -10678,7 +10681,7 @@ snapshots: '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -10725,7 +10728,7 @@ snapshots: '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10797,7 +10800,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -10846,7 +10849,7 @@ snapshots: '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -10974,7 +10977,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -11168,7 +11171,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 esutils: 2.0.3 '@babel/preset-react@7.24.7(@babel/core@7.25.2)': @@ -11205,34 +11208,34 @@ snapshots: '@babel/regjsgen@0.8.0': {} - '@babel/runtime-corejs2@7.25.4': + '@babel/runtime-corejs2@7.25.6': dependencies: core-js: 2.6.12 regenerator-runtime: 0.14.1 - '@babel/runtime@7.25.4': + '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.4 - '@babel/types': 7.25.4 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - '@babel/traverse@7.25.4': + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.5 - '@babel/parser': 7.25.4 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.4': + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -11242,18 +11245,18 @@ snapshots: '@codspeed/core@3.1.1': dependencies: - axios: 1.7.4(debug@4.3.6) + axios: 1.7.5(debug@4.3.6) find-up: 6.3.0 form-data: 4.0.0 node-gyp-build: 4.8.1 transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0))': dependencies: '@codspeed/core': 3.1.1 - vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) - vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) transitivePeerDependencies: - debug @@ -11285,7 +11288,7 @@ snapshots: '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.1 @@ -11322,7 +11325,7 @@ snapshots: '@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.1 @@ -11355,7 +11358,7 @@ snapshots: '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -11552,7 +11555,7 @@ snapshots: '@fast-csv/format@4.3.5': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 lodash.escaperegexp: 4.1.2 lodash.isboolean: 3.0.3 lodash.isequal: 4.5.0 @@ -11561,7 +11564,7 @@ snapshots: '@fast-csv/parse@4.3.6': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 lodash.escaperegexp: 4.1.2 lodash.groupby: 4.6.0 lodash.isfunction: 3.0.9 @@ -11728,7 +11731,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.1': {} @@ -11740,12 +11743,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@lerna/create@8.1.8(@swc/core@1.6.13(@swc/helpers@0.5.5))(babel-plugin-macros@3.1.0)(encoding@0.1.13)(typescript@5.5.4)': dependencies: @@ -11832,7 +11835,7 @@ snapshots: '@mui/base@5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -11846,9 +11849,9 @@ snapshots: '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0(qeh4qocfzy3vvrano7hggrp5gy)': + '@mui/docs@6.0.0(bm6kywyrtzseqscuvn3yfzmlbi)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/icons-material': 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/internal-markdown': 1.0.11 @@ -11858,7 +11861,7 @@ snapshots: clipboard-copy: 4.0.1 clsx: 2.1.1 csstype: 3.1.3 - next: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: 0.2.0 prop-types: 15.8.1 react: 18.3.1 @@ -11867,7 +11870,7 @@ snapshots: '@mui/icons-material@5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: @@ -11878,14 +11881,14 @@ snapshots: '@babel/core': 7.25.2 resolve: 1.22.8 - '@mui/internal-docs-utils@1.0.11': + '@mui/internal-docs-utils@1.0.12': dependencies: rimraf: 5.0.10 typescript: 5.5.4 '@mui/internal-markdown@1.0.11': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 lodash: 4.17.21 marked: 13.0.3 prismjs: 1.29.0 @@ -11896,8 +11899,8 @@ snapshots: '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.4 - '@mui/internal-docs-utils': 1.0.11 + '@babel/types': 7.25.6 + '@mui/internal-docs-utils': 1.0.12 doctrine: 3.0.0 lodash: 4.17.21 typescript: 5.5.4 @@ -11905,12 +11908,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@mui/internal-test-utils@1.0.10(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/internal-test-utils@1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) '@babel/register': 7.24.6(@babel/core@7.25.2) - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) '@testing-library/dom': 10.4.0 @@ -11940,7 +11943,7 @@ snapshots: '@mui/joy@5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -11957,7 +11960,7 @@ snapshots: '@mui/lab@5.0.0-alpha.173(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -11972,11 +11975,11 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/react': 18.3.4 - '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@mui/material-nextjs@5.16.6(@emotion/cache@11.13.1)(@emotion/server@11.11.0)(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(next@14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next: 14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: '@emotion/cache': 11.13.1 @@ -11985,7 +11988,7 @@ snapshots: '@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/core-downloads-tracker': 5.16.7 '@mui/system': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) @@ -12020,7 +12023,7 @@ snapshots: '@mui/private-theming@5.16.6(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/utils': 5.16.6(@types/react@18.3.4)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 @@ -12029,7 +12032,7 @@ snapshots: '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -12040,7 +12043,7 @@ snapshots: '@mui/styles@5.16.7(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@emotion/hash': 0.9.2 '@mui/private-theming': 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) @@ -12063,7 +12066,7 @@ snapshots: '@mui/system@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/private-theming': 5.16.6(@types/react@18.3.4)(react@18.3.1) '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(react@18.3.1) '@mui/types': 7.2.15(@types/react@18.3.4) @@ -12083,7 +12086,7 @@ snapshots: '@mui/utils@5.16.6(@types/react@18.3.4)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@mui/types': 7.2.15(@types/react@18.3.4) '@types/prop-types': 15.7.12 clsx: 2.1.1 @@ -12104,37 +12107,37 @@ snapshots: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 - '@next/env@14.2.6': {} + '@next/env@14.2.7': {} '@next/eslint-plugin-next@14.2.6': dependencies: glob: 10.3.10 - '@next/swc-darwin-arm64@14.2.6': + '@next/swc-darwin-arm64@14.2.7': optional: true - '@next/swc-darwin-x64@14.2.6': + '@next/swc-darwin-x64@14.2.7': optional: true - '@next/swc-linux-arm64-gnu@14.2.6': + '@next/swc-linux-arm64-gnu@14.2.7': optional: true - '@next/swc-linux-arm64-musl@14.2.6': + '@next/swc-linux-arm64-musl@14.2.7': optional: true - '@next/swc-linux-x64-gnu@14.2.6': + '@next/swc-linux-x64-gnu@14.2.7': optional: true - '@next/swc-linux-x64-musl@14.2.6': + '@next/swc-linux-x64-musl@14.2.7': optional: true - '@next/swc-win32-arm64-msvc@14.2.6': + '@next/swc-win32-arm64-msvc@14.2.7': optional: true - '@next/swc-win32-ia32-msvc@14.2.6': + '@next/swc-win32-ia32-msvc@14.2.7': optional: true - '@next/swc-win32-x64-msvc@14.2.6': + '@next/swc-win32-x64-msvc@14.2.7': optional: true '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': @@ -12788,9 +12791,9 @@ snapshots: '@types/express': 4.17.21 '@types/promise.allsettled': 1.0.6 '@types/tsscmp': 1.0.2 - axios: 1.7.4(debug@4.3.6) + axios: 1.7.5(debug@4.3.6) express: 4.18.2 - path-to-regexp: 6.2.2 + path-to-regexp: 6.2.1 please-upgrade-node: 3.2.0 promise.allsettled: 1.0.7 raw-body: 2.5.2 @@ -12803,18 +12806,18 @@ snapshots: '@slack/logger@3.0.0': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@slack/logger@4.0.0': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@slack/oauth@2.6.3': dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.1 '@types/jsonwebtoken': 8.5.9 - '@types/node': 18.19.46 + '@types/node': 18.19.47 jsonwebtoken: 9.0.2 lodash.isstring: 4.0.1 transitivePeerDependencies: @@ -12824,7 +12827,7 @@ snapshots: dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.1 - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/ws': 7.4.7 eventemitter3: 5.0.1 finity: 0.5.4 @@ -12841,8 +12844,8 @@ snapshots: '@slack/logger': 3.0.0 '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 - '@types/node': 18.19.46 - axios: 1.7.4(debug@4.3.6) + '@types/node': 18.19.47 + axios: 1.7.5(debug@4.3.6) eventemitter3: 3.1.2 form-data: 2.5.1 is-electron: 2.2.2 @@ -12917,7 +12920,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -12937,7 +12940,7 @@ snapshots: '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@testing-library/dom': 10.4.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -12962,29 +12965,29 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.4 - '@babel/types': 7.25.4 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.4 - '@babel/types': 7.25.4 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/chai-dom@1.11.3': dependencies: @@ -12996,13 +12999,13 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/cookie@0.4.1': {} '@types/cors@2.8.17': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/d3-array@3.2.1': {} @@ -13043,7 +13046,7 @@ snapshots: '@types/express-serve-static-core@4.17.42': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13060,7 +13063,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/gtag.js@0.0.20': {} @@ -13072,7 +13075,7 @@ snapshots: '@types/is-stream@1.1.0': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/istanbul-lib-coverage@2.0.6': {} @@ -13087,15 +13090,15 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/jsonwebtoken@8.5.9': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/karma@6.3.8': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -13126,7 +13129,7 @@ snapshots: dependencies: moment: 2.30.1 - '@types/node@18.19.46': + '@types/node@18.19.47': dependencies: undici-types: 5.26.5 @@ -13179,13 +13182,13 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/sinon@17.0.3': dependencies: @@ -13203,7 +13206,7 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 tapable: 2.2.1 webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) transitivePeerDependencies: @@ -13214,7 +13217,7 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@types/yargs-parser@21.0.3': {} @@ -13346,21 +13349,21 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))': dependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) - vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@18.19.46)(terser@5.27.0))': + '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -13383,7 +13386,7 @@ snapshots: '@vitest/snapshot@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 - magic-string: 0.30.11 + magic-string: 0.30.10 pathe: 1.1.2 '@vitest/spy@2.0.5': @@ -13399,7 +13402,7 @@ snapshots: pathe: 1.1.2 sirv: 2.0.4 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) + vitest: 2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) '@vitest/utils@2.0.5': dependencies: @@ -13857,7 +13860,7 @@ snapshots: axe-core@4.10.0: {} - axios@1.7.4(debug@4.3.6): + axios@1.7.5(debug@4.3.6): dependencies: follow-redirects: 1.15.6(debug@4.3.6) form-data: 4.0.0 @@ -13888,7 +13891,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 cosmiconfig: 7.1.0 resolve: 1.22.8 @@ -13902,9 +13905,9 @@ snapshots: babel-plugin-optimize-clsx@2.6.2: dependencies: - '@babel/generator': 7.25.5 + '@babel/generator': 7.25.6 '@babel/template': 7.25.0 - '@babel/types': 7.25.4 + '@babel/types': 7.25.6 find-cache-dir: 3.3.2 lodash: 4.17.21 object-hash: 2.2.0 @@ -13935,7 +13938,7 @@ snapshots: babel-plugin-preval@5.1.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 '@types/babel__core': 7.20.5 babel-plugin-macros: 3.1.0 require-from-string: 2.0.2 @@ -14233,7 +14236,7 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -14609,7 +14612,7 @@ snapshots: css-vendor@2.0.8: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 is-in-browser: 1.1.3 css-what@6.1.0: {} @@ -14743,13 +14746,13 @@ snapshots: date-fns-jalali@2.30.0-0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 date-fns-jalali@3.6.0-1: {} date-fns@2.30.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 date-fns@3.6.0: {} @@ -14891,7 +14894,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 csstype: 3.1.3 dom-serialize@2.2.1: @@ -14975,7 +14978,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 18.19.46 + '@types/node': 18.19.47 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -15363,7 +15366,7 @@ snapshots: eslint-plugin-react-compiler@0.0.0-experimental-9ed098e-20240725(eslint@8.57.0): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.4 + '@babel/parser': 7.25.6 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.25.2) eslint: 8.57.0 hermes-parser: 0.20.1 @@ -15502,8 +15505,8 @@ snapshots: estree-to-babel@3.2.1: dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.4 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 c8: 7.14.0 transitivePeerDependencies: - supports-color @@ -16597,7 +16600,7 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.4 + '@babel/parser': 7.25.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -16690,7 +16693,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16708,7 +16711,7 @@ snapshots: jscodeshift@0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.4 + '@babel/parser': 7.25.6 '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) @@ -16826,46 +16829,46 @@ snapshots: jss-plugin-camel-case@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 hyphenate-style-name: 1.0.4 jss: 10.10.0 jss-plugin-default-unit@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-global@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-nested@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-props-sort@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 jss: 10.10.0 jss-plugin-rule-value-function@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-template@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 jss: 10.10.0 tiny-warning: 1.0.3 jss-plugin-vendor-prefixer@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 css-vendor: 2.0.8 jss: 10.10.0 @@ -16876,7 +16879,7 @@ snapshots: jss@10.10.0: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 csstype: 3.1.3 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -16955,7 +16958,7 @@ snapshots: '@colors/colors': 1.5.0 body-parser: 1.20.2 braces: 3.0.3 - chokidar: 3.6.0 + chokidar: 3.5.3 connect: 3.7.0 di: 0.0.1 dom-serialize: 2.2.1 @@ -17302,9 +17305,9 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.11: + magic-string@0.30.10: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 make-array@1.0.5: {} @@ -17553,7 +17556,7 @@ snapshots: dependencies: ansi-colors: 4.1.3 browser-stdout: 1.3.1 - chokidar: 3.6.0 + chokidar: 3.5.3 debug: 4.3.6(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 @@ -17634,9 +17637,9 @@ snapshots: nested-error-stacks@2.1.1: {} - next@14.2.6(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.6 + '@next/env': 14.2.7 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001647 @@ -17646,15 +17649,15 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(@babel/core@7.25.2)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.6 - '@next/swc-darwin-x64': 14.2.6 - '@next/swc-linux-arm64-gnu': 14.2.6 - '@next/swc-linux-arm64-musl': 14.2.6 - '@next/swc-linux-x64-gnu': 14.2.6 - '@next/swc-linux-x64-musl': 14.2.6 - '@next/swc-win32-arm64-msvc': 14.2.6 - '@next/swc-win32-ia32-msvc': 14.2.6 - '@next/swc-win32-x64-msvc': 14.2.6 + '@next/swc-darwin-arm64': 14.2.7 + '@next/swc-darwin-x64': 14.2.7 + '@next/swc-linux-arm64-gnu': 14.2.7 + '@next/swc-linux-arm64-musl': 14.2.7 + '@next/swc-linux-x64-gnu': 14.2.7 + '@next/swc-linux-x64-musl': 14.2.7 + '@next/swc-win32-arm64-msvc': 14.2.7 + '@next/swc-win32-ia32-msvc': 14.2.7 + '@next/swc-win32-x64-msvc': 14.2.7 '@opentelemetry/api': 1.8.0 '@playwright/test': 1.44.1 transitivePeerDependencies: @@ -17667,7 +17670,7 @@ snapshots: '@sinonjs/fake-timers': 11.2.2 '@sinonjs/text-encoding': 0.7.2 just-extend: 6.2.0 - path-to-regexp: 6.2.2 + path-to-regexp: 6.2.1 no-case@3.0.4: dependencies: @@ -17817,7 +17820,7 @@ snapshots: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.7.4(debug@4.3.6) + axios: 1.7.5(debug@4.3.6) chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 @@ -17978,7 +17981,7 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openapi-fetch@0.11.1: + openapi-fetch@0.11.2: dependencies: openapi-typescript-helpers: 0.0.12 @@ -18256,7 +18259,7 @@ snapshots: path-to-regexp@2.2.1: {} - path-to-regexp@6.2.2: {} + path-to-regexp@6.2.1: {} path-type@3.0.0: dependencies: @@ -18515,8 +18518,8 @@ snapshots: react-docgen@5.4.3: dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.5 - '@babel/runtime': 7.25.4 + '@babel/generator': 7.25.6 + '@babel/runtime': 7.25.6 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -18566,7 +18569,7 @@ snapshots: react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -18694,7 +18697,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 regexp.prototype.flags@1.5.2: dependencies: @@ -18769,6 +18772,8 @@ snapshots: reselect@4.1.8: {} + reselect@5.1.1: {} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -18856,7 +18861,7 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.25.4 + '@babel/runtime': 7.25.6 run-async@2.4.1: {} @@ -19576,7 +19581,7 @@ snapshots: tslib: 1.14.1 typescript: 5.5.4 - tsx@4.18.0: + tsx@4.19.0: dependencies: esbuild: 0.23.1 get-tsconfig: 4.7.5 @@ -19836,13 +19841,13 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite-node@2.0.5(@types/node@18.19.46)(terser@5.27.0): + vite-node@2.0.5(@types/node@18.19.47)(terser@5.27.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@8.1.1) pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -19853,17 +19858,17 @@ snapshots: - supports-color - terser - vite@5.3.4(@types/node@18.19.46)(terser@5.27.0): + vite@5.3.4(@types/node@18.19.47)(terser@5.27.0): dependencies: esbuild: 0.21.5 postcss: 8.4.41 rollup: 4.18.1 optionalDependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 fsevents: 2.3.3 terser: 5.27.0 - vitest@2.0.5(@types/node@18.19.46)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0): + vitest@2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -19875,17 +19880,17 @@ snapshots: chai: 5.1.1 debug: 4.3.6(supports-color@8.1.1) execa: 8.0.1 - magic-string: 0.30.11 + magic-string: 0.30.10 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.8.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.3.4(@types/node@18.19.46)(terser@5.27.0) - vite-node: 2.0.5(@types/node@18.19.46)(terser@5.27.0) + vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) + vite-node: 2.0.5(@types/node@18.19.47)(terser@5.27.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 18.19.46 + '@types/node': 18.19.47 '@vitest/ui': 2.0.5(vitest@2.0.5) jsdom: 24.1.3 transitivePeerDependencies: From fc194b6c6d43edf56d7efa4de4e2846fcb7a8846 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 14:13:15 +0200 Subject: [PATCH 875/912] Bump @testing-library/react to ^16.0.1 (#14402) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 12 ++++++------ test/performance-charts/package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7069c814fc5..a160f6413ddd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1603,8 +1603,8 @@ importers: specifier: ^6.5.0 version: 6.5.0 '@testing-library/react': - specifier: ^16.0.0 - version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^16.0.1 + version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': specifier: ^14.5.2 version: 14.5.2(@testing-library/dom@10.4.0) @@ -3978,8 +3978,8 @@ packages: resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/react@16.0.0': - resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} + '@testing-library/react@16.0.1': + resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -11917,7 +11917,7 @@ snapshots: '@emotion/cache': 11.13.1 '@emotion/react': 11.13.3(@types/react@18.3.4)(react@18.3.1) '@testing-library/dom': 10.4.0 - '@testing-library/react': 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/react': 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) chai: 4.5.0 chai-dom: 1.12.0(chai@4.5.0) @@ -12938,7 +12938,7 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.25.6 '@testing-library/dom': 10.4.0 diff --git a/test/performance-charts/package.json b/test/performance-charts/package.json index 3262a67bfce3..d8a2c84264fb 100644 --- a/test/performance-charts/package.json +++ b/test/performance-charts/package.json @@ -12,7 +12,7 @@ "@mui/x-charts": "workspace:*", "@mui/x-charts-pro": "workspace:*", "@testing-library/jest-dom": "^6.5.0", - "@testing-library/react": "^16.0.0", + "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "@vitejs/plugin-react": "^4.3.1", "@vitejs/plugin-react-swc": "^3.7.0", From 302e720ce2c2570cba19f294ddf0dff1db12f379 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:13:22 +0300 Subject: [PATCH 876/912] Bump @next/eslint-plugin-next to 14.2.7 (#14401) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 12574377b452..013ed43d55a7 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@mui/material": "^5.16.7", "@mui/monorepo": "github:mui/material-ui#029eb3b1f4837591e729779da9a82f0a66187770", "@mui/utils": "^5.16.6", - "@next/eslint-plugin-next": "14.2.6", + "@next/eslint-plugin-next": "14.2.7", "@octokit/plugin-retry": "^7.1.1", "@octokit/rest": "^21.0.2", "@playwright/test": "^1.44.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a160f6413ddd..f06ac38a9e28 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,8 +105,8 @@ importers: specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) '@next/eslint-plugin-next': - specifier: 14.2.6 - version: 14.2.6 + specifier: 14.2.7 + version: 14.2.7 '@octokit/plugin-retry': specifier: ^7.1.1 version: 7.1.1(@octokit/core@4.2.4(encoding@0.1.13)) @@ -3269,8 +3269,8 @@ packages: '@next/env@14.2.7': resolution: {integrity: sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==} - '@next/eslint-plugin-next@14.2.6': - resolution: {integrity: sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==} + '@next/eslint-plugin-next@14.2.7': + resolution: {integrity: sha512-+7xh142AdhZGjY9/L0iFo7mqRBMJHe+q+uOL+hto1Lfo9DeWCGcR6no4StlFbVSVcA6fQLKEX6y6qhMsSKbgNQ==} '@next/swc-darwin-arm64@14.2.7': resolution: {integrity: sha512-UhZGcOyI9LE/tZL3h9rs/2wMZaaJKwnpAyegUVDGZqwsla6hMfeSj9ssBWQS9yA4UXun3pPhrFLVnw5KXZs3vw==} @@ -12109,7 +12109,7 @@ snapshots: '@next/env@14.2.7': {} - '@next/eslint-plugin-next@14.2.6': + '@next/eslint-plugin-next@14.2.7': dependencies: glob: 10.3.10 From 78d1313507849a0e63a956625a8fec5c88e1f2b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:13:54 +0300 Subject: [PATCH 877/912] Bump @argos-ci/core to ^2.5.1 (#14400) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 013ed43d55a7..cd41191173c3 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "devDependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "@argos-ci/core": "^2.5.0", + "@argos-ci/core": "^2.5.1", "@babel/cli": "^7.24.8", "@babel/core": "^7.25.2", "@babel/node": "^7.25.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f06ac38a9e28..acee3ad41a41 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: specifier: ^6.0.0 version: 6.0.0 '@argos-ci/core': - specifier: ^2.5.0 + specifier: ^2.5.1 version: 2.5.1 '@babel/cli': specifier: ^7.24.8 From 7f70db6cd88aa2782d6af90969d7d52224cfc275 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:17:17 +0300 Subject: [PATCH 878/912] Bump @types/chai to ^4.3.19 (#14403) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- test/package.json | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index cd41191173c3..27028c97d1c0 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "@playwright/test": "^1.44.1", "@types/babel__core": "^7.20.5", "@types/babel__traverse": "^7.20.6", - "@types/chai": "^4.3.17", + "@types/chai": "^4.3.19", "@types/chai-dom": "^1.11.3", "@types/fs-extra": "^11.0.4", "@types/karma": "^6.3.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index acee3ad41a41..248fd0ba152b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,8 +123,8 @@ importers: specifier: ^7.20.6 version: 7.20.6 '@types/chai': - specifier: ^4.3.17 - version: 4.3.17 + specifier: ^4.3.19 + version: 4.3.19 '@types/chai-dom': specifier: ^1.11.3 version: 1.11.3 @@ -1534,8 +1534,8 @@ importers: specifier: ^9.7.4 version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/chai': - specifier: ^4.3.17 - version: 4.3.17 + specifier: ^4.3.19 + version: 4.3.19 '@types/karma': specifier: ^6.3.8 version: 6.3.8 @@ -4032,8 +4032,8 @@ packages: '@types/chai-dom@1.11.3': resolution: {integrity: sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==} - '@types/chai@4.3.17': - resolution: {integrity: sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==} + '@types/chai@4.3.19': + resolution: {integrity: sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==} '@types/chance@1.1.6': resolution: {integrity: sha512-V+pm3stv1Mvz8fSKJJod6CglNGVqEQ6OyuqitoDkWywEODM/eJd1eSuIp9xt6DrX8BWZ2eDSIzbw1tPCUTvGbQ==} @@ -12991,9 +12991,9 @@ snapshots: '@types/chai-dom@1.11.3': dependencies: - '@types/chai': 4.3.17 + '@types/chai': 4.3.19 - '@types/chai@4.3.17': {} + '@types/chai@4.3.19': {} '@types/chance@1.1.6': {} diff --git a/test/package.json b/test/package.json index aaa299ac3ed0..bdd99925b20a 100644 --- a/test/package.json +++ b/test/package.json @@ -20,7 +20,7 @@ "@mui/x-license": "workspace:*", "@playwright/test": "^1.44.1", "@react-spring/web": "^9.7.4", - "@types/chai": "^4.3.17", + "@types/chai": "^4.3.19", "@types/karma": "^6.3.8", "@types/moment-jalaali": "^0.7.9", "@types/prop-types": "^15.7.12", From 1a9426021bd72b5a1cc18e2c78a5a063d27be541 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 19:19:14 +0700 Subject: [PATCH 879/912] Bump MUI Core to ^5.16.7 (#14405) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/x-charts-pro/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-data-grid-generator/package.json | 4 ++-- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 22 ++++++++++----------- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 0c34de9d04b4..00d4063a8ae8 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -66,7 +66,7 @@ } }, "devDependencies": { - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@react-spring/core": "^9.7.4", "@react-spring/shared": "^9.7.4", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 89759c8f1518..67dc55380246 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -65,7 +65,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@react-spring/core": "^9.7.4", "@react-spring/shared": "^9.7.4", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index d4e1aa9687bc..e826b812f28b 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -40,8 +40,8 @@ "lru-cache": "^10.4.3" }, "devDependencies": { - "@mui/icons-material": "^5.16.5", - "@mui/material": "^5.16.5", + "@mui/icons-material": "^5.16.7", + "@mui/material": "^5.16.7", "@types/chance": "^1.1.6", "rimraf": "^5.0.10" }, diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 980bd187be36..90cef47eedb5 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -73,7 +73,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "date-fns": "^2.30.0", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 565884391158..f56025606cb2 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -71,7 +71,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index a650790474fd..515e4e458f33 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@mui/internal-test-utils": "^1.0.10", "@mui/joy": "^5.0.0-beta.48", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index db67ef12f606..8b909176de59 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -96,7 +96,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/luxon": "^3.4.2", "@types/prop-types": "^15.7.12", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 3db487bfd2d9..8ba00b70694b 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -98,7 +98,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/luxon": "^3.4.2", "@types/moment-hijri": "^2.1.4", diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 46f651a038df..9eb164af7c2a 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -71,7 +71,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 067903ffcd30..555070e32f13 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -69,7 +69,7 @@ }, "devDependencies": { "@mui/internal-test-utils": "^1.0.10", - "@mui/material": "^5.16.5", + "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", "rimraf": "^5.0.10" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 248fd0ba152b..de3eb2be6f8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -749,7 +749,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -814,7 +814,7 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -993,7 +993,7 @@ importers: specifier: ^5.0.0-beta.48 version: 5.0.0-beta.48(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -1037,10 +1037,10 @@ importers: version: 18.3.1 devDependencies: '@mui/icons-material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/chance': specifier: ^1.1.6 @@ -1102,7 +1102,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -1164,7 +1164,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -1214,7 +1214,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -1306,7 +1306,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -1417,7 +1417,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 @@ -1476,7 +1476,7 @@ importers: specifier: ^1.0.10 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': - specifier: ^5.16.5 + specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/system': specifier: ^5.16.7 From a543df2fcfd7436915b16652c3d8502a07eb1382 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 19:19:44 +0700 Subject: [PATCH 880/912] Bump @types/node to ^18.19.47 (#14404) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- pnpm-lock.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 27028c97d1c0..c1b939d281d1 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@types/karma": "^6.3.8", "@types/lodash": "^4.17.7", "@types/mocha": "^10.0.7", - "@types/node": "^18.19.46", + "@types/node": "^18.19.47", "@types/react": "^18.3.4", "@types/react-dom": "^18.3.0", "@types/react-test-renderer": "^18.3.0", @@ -198,7 +198,7 @@ }, "resolutions": { "react-is": "^18.3.1", - "@types/node": "^18.19.46" + "@types/node": "^18.19.47" }, "packageManager": "pnpm@9.8.0", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de3eb2be6f8d..2e7b0adfa310 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: react-is: ^18.3.1 - '@types/node': ^18.19.46 + '@types/node': ^18.19.47 patchedDependencies: babel-plugin-replace-imports@1.0.2: @@ -141,7 +141,7 @@ importers: specifier: ^10.0.7 version: 10.0.7 '@types/node': - specifier: ^18.19.46 + specifier: ^18.19.47 version: 18.19.47 '@types/react': specifier: ^18.3.4 @@ -9830,7 +9830,7 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': ^18.19.46 + '@types/node': ^18.19.47 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -9859,7 +9859,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.19.46 + '@types/node': ^18.19.47 '@vitest/browser': 2.0.5 '@vitest/ui': 2.0.5 happy-dom: '*' From 810dacff81b834da769365e07a55ff355f7d6463 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 19:27:14 +0700 Subject: [PATCH 881/912] Bump github/codeql-action action to v3.26.6 (#14407) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/scorecards.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index abc9c765dd17..e112f7be51a7 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/init@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: languages: typescript # If you wish to specify custom queries, you can do so here or in a config file. @@ -29,4 +29,4 @@ jobs: # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/analyze@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 12a50e8c2866..4dd91ef555e5 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -44,6 +44,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: sarif_file: results.sarif From d47925a7d117262f6f95b48183f79daa68ee7a26 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:28:10 +0300 Subject: [PATCH 882/912] Bump @tanstack/query-core to ^5.53.1 (#14409) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/package.json b/docs/package.json index 6b205ba9872a..28550e860c59 100644 --- a/docs/package.json +++ b/docs/package.json @@ -46,7 +46,7 @@ "@mui/x-date-pickers-pro": "workspace:*", "@mui/x-tree-view": "workspace:*", "@react-spring/web": "^9.7.4", - "@tanstack/query-core": "^5.52.0", + "@tanstack/query-core": "^5.53.1", "ast-types": "^0.14.2", "autoprefixer": "^10.4.20", "babel-plugin-module-resolver": "^5.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e7b0adfa310..d360e0e498a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -486,8 +486,8 @@ importers: specifier: ^9.7.4 version: 9.7.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/query-core': - specifier: ^5.52.0 - version: 5.52.0 + specifier: ^5.53.1 + version: 5.53.1 ast-types: specifier: ^0.14.2 version: 0.14.2 @@ -3967,8 +3967,8 @@ packages: '@swc/types@0.1.9': resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} - '@tanstack/query-core@5.52.0': - resolution: {integrity: sha512-U1DOEgltjUwalN6uWYTewSnA14b+tE7lSylOiASKCAO61ENJeCq9VVD/TXHA6O5u9+6v5+UgGYBSccTKDoyMqw==} + '@tanstack/query-core@5.53.1': + resolution: {integrity: sha512-mvLG7s4Zy3Yvc2LsKm8BVafbmPrsReKgqwhmp4XKVmRW9us3KbWRqu3qBBfhVavcUUEHfNK7PvpTchvQpVdFpw==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -12915,7 +12915,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tanstack/query-core@5.52.0': {} + '@tanstack/query-core@5.53.1': {} '@testing-library/dom@10.4.0': dependencies: From 9e66489e2dc082577479aacfc5505fe34e1cc329 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:29:10 +0300 Subject: [PATCH 883/912] Bump next to ^14.2.7 (#14408) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index 28550e860c59..e3e89c401c5e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -76,7 +76,7 @@ "moment-hijri": "^2.30.0", "moment-jalaali": "^0.10.1", "moment-timezone": "^0.5.45", - "next": "^14.2.6", + "next": "^14.2.7", "nprogress": "^0.2.0", "postcss": "^8.4.41", "prismjs": "^1.29.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d360e0e498a5..24529644d27c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -576,7 +576,7 @@ importers: specifier: ^0.5.45 version: 0.5.45 next: - specifier: ^14.2.6 + specifier: ^14.2.7 version: 14.2.7(@babel/core@7.25.2)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nprogress: specifier: ^0.2.0 From 3a4925a1457b6fd5eaf6ff602f8f41d0087ac98b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:13:53 +0300 Subject: [PATCH 884/912] Bump MUI Internal (#14406) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 4 +-- package.json | 4 +-- packages/x-charts/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 44 +++++++++++------------ 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/package.json b/docs/package.json index e3e89c401c5e..9ff42848c707 100644 --- a/docs/package.json +++ b/docs/package.json @@ -27,7 +27,7 @@ "@emotion/react": "^11.13.3", "@emotion/server": "^11.11.0", "@emotion/styled": "^11.13.0", - "@mui/docs": "6.0.0", + "@mui/docs": "6.0.1", "@mui/icons-material": "^5.16.7", "@mui/joy": "^5.0.0-beta.48", "@mui/lab": "^5.0.0-alpha.173", @@ -101,7 +101,7 @@ "devDependencies": { "@babel/plugin-transform-react-constant-elements": "^7.25.1", "@babel/preset-typescript": "^7.24.7", - "@mui/internal-docs-utils": "^1.0.11", + "@mui/internal-docs-utils": "^1.0.12", "@mui/internal-scripts": "^1.0.18", "@types/chance": "^1.1.6", "@types/d3-scale": "^4.0.8", diff --git a/package.json b/package.json index c1b939d281d1..1838e229bed4 100644 --- a/package.json +++ b/package.json @@ -89,10 +89,10 @@ "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", - "@mui/internal-babel-plugin-resolve-imports": "1.0.16-dev.20240822-123416-f4a704707a", + "@mui/internal-babel-plugin-resolve-imports": "1.0.17", "@mui/icons-material": "^5.16.7", "@mui/internal-markdown": "^1.0.11", - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/monorepo": "github:mui/material-ui#029eb3b1f4837591e729779da9a82f0a66187770", "@mui/utils": "^5.16.6", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 67dc55380246..751bb5f1ec07 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -64,7 +64,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@react-spring/core": "^9.7.4", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 90cef47eedb5..a372866fc33b 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -72,7 +72,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index f56025606cb2..87b0fe6ca6a3 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 515e4e458f33..317df3d87c56 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -71,7 +71,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/joy": "^5.0.0-beta.48", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 8b909176de59..3ee69b37aed9 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -95,7 +95,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/luxon": "^3.4.2", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 8ba00b70694b..ff4acff4b728 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -97,7 +97,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/luxon": "^3.4.2", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 1b2695fa2e38..8bb3b2a1c80e 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -48,7 +48,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "rimraf": "^5.0.10" }, "engines": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index dbaf9004390a..04f463940f08 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -41,7 +41,7 @@ "react": "^17.0.0 || ^18.0.0" }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "rimraf": "^5.0.10" }, "engines": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 9eb164af7c2a..5a418238512a 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -70,7 +70,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 555070e32f13..9d7d74a98d46 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -68,7 +68,7 @@ } }, "devDependencies": { - "@mui/internal-test-utils": "^1.0.10", + "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", "@mui/system": "^5.16.7", "@types/prop-types": "^15.7.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24529644d27c..11f504ce6522 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,13 +87,13 @@ importers: specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/internal-babel-plugin-resolve-imports': - specifier: 1.0.16-dev.20240822-123416-f4a704707a - version: 1.0.16-dev.20240822-123416-f4a704707a(@babel/core@7.25.2) + specifier: 1.0.17 + version: 1.0.17(@babel/core@7.25.2) '@mui/internal-markdown': specifier: ^1.0.11 version: 1.0.11 '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -429,8 +429,8 @@ importers: specifier: ^11.13.0 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@mui/docs': - specifier: 6.0.0 - version: 6.0.0(bm6kywyrtzseqscuvn3yfzmlbi) + specifier: 6.0.1 + version: 6.0.1(bm6kywyrtzseqscuvn3yfzmlbi) '@mui/icons-material': specifier: ^5.16.7 version: 5.16.7(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) @@ -646,7 +646,7 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.25.2) '@mui/internal-docs-utils': - specifier: ^1.0.11 + specifier: ^1.0.12 version: 1.0.12 '@mui/internal-scripts': specifier: ^1.0.18 @@ -746,7 +746,7 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -987,7 +987,7 @@ importers: version: 5.1.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/joy': specifier: ^5.0.0-beta.48 @@ -1099,7 +1099,7 @@ importers: version: 5.1.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -1161,7 +1161,7 @@ importers: version: 5.1.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -1211,7 +1211,7 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -1303,7 +1303,7 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -1350,7 +1350,7 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 @@ -1370,7 +1370,7 @@ importers: version: 18.3.1 devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rimraf: specifier: ^5.0.10 @@ -1414,7 +1414,7 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -1473,7 +1473,7 @@ importers: version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@mui/internal-test-utils': - specifier: ^1.0.10 + specifier: ^1.0.11 version: 1.0.11(@babel/core@7.25.2)(@types/react-dom@18.3.0)(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/material': specifier: ^5.16.7 @@ -3064,8 +3064,8 @@ packages: '@mui/core-downloads-tracker@5.16.7': resolution: {integrity: sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==} - '@mui/docs@6.0.0': - resolution: {integrity: sha512-rB1EBgVafBSffCCr1N3NsiJYR3MHKyfc2vVL4iOtwyL1+6GGOlppqZycInaoyQaMKR8Jw/uSyakof7anufcJcg==} + '@mui/docs@6.0.1': + resolution: {integrity: sha512-L/qfb+BGauBpEZBHyZPy961vLRUjVgcVqoOvzbtq56nsI05FEFkNgJuQvG1W3PRoR7pZNVgSW6NMFzTj1C4y+w==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/base': '*' @@ -3092,8 +3092,8 @@ packages: '@types/react': optional: true - '@mui/internal-babel-plugin-resolve-imports@1.0.16-dev.20240822-123416-f4a704707a': - resolution: {integrity: sha512-zfxISMMAgZucsirZgqWqJXXCosnpKS+ZflBDKXyfbkNwWk5YUVwHNBfhQJ6yBLL+ZQIpXj22nCPC+38rkG76Pg==} + '@mui/internal-babel-plugin-resolve-imports@1.0.17': + resolution: {integrity: sha512-HwPNM9sVKwos4njiVIG40kOUtA47xAuVGyn2wdjCW2Tkj/YJPo5Nck3kh69uqwvN4nu1ntSW15iMVIpQG5vp3A==} peerDependencies: '@babel/core': '7' @@ -11849,7 +11849,7 @@ snapshots: '@mui/core-downloads-tracker@5.16.7': {} - '@mui/docs@6.0.0(bm6kywyrtzseqscuvn3yfzmlbi)': + '@mui/docs@6.0.1(bm6kywyrtzseqscuvn3yfzmlbi)': dependencies: '@babel/runtime': 7.25.6 '@mui/base': 5.0.0-beta.40(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -11876,7 +11876,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.4 - '@mui/internal-babel-plugin-resolve-imports@1.0.16-dev.20240822-123416-f4a704707a(@babel/core@7.25.2)': + '@mui/internal-babel-plugin-resolve-imports@1.0.17(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 resolve: 1.22.8 From b8b5e699a567fef4fecf966bb8f163bdc8364ff1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 18:08:27 +0300 Subject: [PATCH 885/912] Bump unist-util-visit to ^5.0.0 (#11846) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lukas --- package.json | 8 ++++---- pnpm-lock.yaml | 51 ++++++++++++++++++++++++++++---------------------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 1838e229bed4..ea094081d8f0 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "docs:serve": "pnpm --filter docs serve", "docs:create-playground": "pnpm --filter docs create-playground", "docs:api": "NODE_OPTIONS=--max-old-space-size=4096 pnpm docs:api:build && pnpm docs:api:buildX", - "docs:api:build": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./scripts/buildApiDocs/index.ts", + "docs:api:build": "tsx ./scripts/buildApiDocs/index.ts", "docs:api:buildX": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" -x .ts,.tsx,.js ./docs/scripts/api/buildApi.ts", "docs:link-check": "cross-env BABEL_ENV=development babel-node -i \"/node_modules/(?!@mui)/\" --extensions \".tsx,.ts,.js\" ./docs/scripts/reportBrokenLinks.js", "docs:build": "pnpm --filter docs build", @@ -89,12 +89,12 @@ "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", - "@mui/internal-babel-plugin-resolve-imports": "1.0.17", "@mui/icons-material": "^5.16.7", + "@mui/internal-babel-plugin-resolve-imports": "1.0.17", "@mui/internal-markdown": "^1.0.11", "@mui/internal-test-utils": "^1.0.11", "@mui/material": "^5.16.7", - "@mui/monorepo": "github:mui/material-ui#029eb3b1f4837591e729779da9a82f0a66187770", + "@mui/monorepo": "github:mui/material-ui#8b8732eabd272226fdc858cdfc1dce8b0ce4b294", "@mui/utils": "^5.16.6", "@next/eslint-plugin-next": "14.2.7", "@octokit/plugin-retry": "^7.1.1", @@ -189,7 +189,7 @@ "terser-webpack-plugin": "^5.3.10", "tsx": "^4.18.0", "typescript": "^5.5.4", - "unist-util-visit": "^2.0.3", + "unist-util-visit": "^5.0.0", "util": "^0.12.5", "webpack": "^5.94.0", "webpack-bundle-analyzer": "^4.10.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11f504ce6522..e4a8b3282f86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,8 +99,8 @@ importers: specifier: ^5.16.7 version: 5.16.7(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/monorepo': - specifier: github:mui/material-ui#029eb3b1f4837591e729779da9a82f0a66187770 - version: https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770(encoding@0.1.13) + specifier: github:mui/material-ui#8b8732eabd272226fdc858cdfc1dce8b0ce4b294 + version: https://codeload.github.com/mui/material-ui/tar.gz/8b8732eabd272226fdc858cdfc1dce8b0ce4b294(encoding@0.1.13) '@mui/utils': specifier: ^5.16.6 version: 5.16.6(@types/react@18.3.4)(react@18.3.1) @@ -384,8 +384,8 @@ importers: specifier: ^5.5.4 version: 5.5.4 unist-util-visit: - specifier: ^2.0.3 - version: 2.0.3 + specifier: ^5.0.0 + version: 5.0.0 util: specifier: ^0.12.5 version: 0.12.5 @@ -3182,9 +3182,9 @@ packages: '@types/react': optional: true - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770': - resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770} - version: 6.0.0 + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/8b8732eabd272226fdc858cdfc1dce8b0ce4b294': + resolution: {tarball: https://codeload.github.com/mui/material-ui/tar.gz/8b8732eabd272226fdc858cdfc1dce8b0ce4b294} + version: 6.0.1 engines: {pnpm: 9.7.1} '@mui/private-theming@5.16.6': @@ -4239,6 +4239,9 @@ packages: '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/webpack-bundle-analyzer@4.7.0': resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} @@ -9704,17 +9707,17 @@ packages: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} @@ -12007,7 +12010,7 @@ snapshots: '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.4)(react@18.3.1))(@types/react@18.3.4)(react@18.3.1) '@types/react': 18.3.4 - '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/029eb3b1f4837591e729779da9a82f0a66187770(encoding@0.1.13)': + '@mui/monorepo@https://codeload.github.com/mui/material-ui/tar.gz/8b8732eabd272226fdc858cdfc1dce8b0ce4b294(encoding@0.1.13)': dependencies: '@googleapis/sheets': 9.3.0(encoding@0.1.13) '@netlify/functions': 2.8.1 @@ -13204,6 +13207,8 @@ snapshots: '@types/unist@2.0.10': {} + '@types/unist@3.0.3': {} + '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))': dependencies: '@types/node': 18.19.47 @@ -19720,22 +19725,24 @@ snapshots: dependencies: imurmurhash: 0.1.4 - unist-util-is@4.1.0: {} + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 unist-util-stringify-position@2.0.3: dependencies: '@types/unist': 2.0.10 - unist-util-visit-parents@3.1.1: + unist-util-visit-parents@6.0.1: dependencies: - '@types/unist': 2.0.10 - unist-util-is: 4.1.0 + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 - unist-util-visit@2.0.3: + unist-util-visit@5.0.0: dependencies: - '@types/unist': 2.0.10 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 universal-user-agent@6.0.1: {} From 449743ee8b8fea421172f3c5f96daa65cf5e5370 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Fri, 30 Aug 2024 12:11:42 -0400 Subject: [PATCH 886/912] [DataGrid] Restore reselect behavior (#14410) --- packages/x-data-grid/src/utils/createSelector.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/x-data-grid/src/utils/createSelector.ts b/packages/x-data-grid/src/utils/createSelector.ts index a9a9bc69010f..194090510c94 100644 --- a/packages/x-data-grid/src/utils/createSelector.ts +++ b/packages/x-data-grid/src/utils/createSelector.ts @@ -1,10 +1,18 @@ import * as React from 'react'; -import { createSelector as reselectCreateSelector, Selector, SelectorResultArray } from 'reselect'; +import { lruMemoize, createSelectorCreator, Selector, SelectorResultArray } from 'reselect'; import type { GridCoreApi } from '../models/api/gridCoreApi'; import { warnOnce } from '../internals/utils/warning'; type CacheKey = { id: number }; +const reselectCreateSelector = createSelectorCreator({ + memoize: lruMemoize, + memoizeOptions: { + maxSize: 1, + equalityCheck: Object.is, + }, +}); + // TODO v8: Remove this type export interface OutputSelector { (apiRef: React.MutableRefObject<{ state: State; instanceId: GridCoreApi['instanceId'] }>): Result; From c8505c423305d804b2c2c2a5dbc63c5696490b16 Mon Sep 17 00:00:00 2001 From: Whitewater Date: Sun, 1 Sep 2024 04:29:14 +0800 Subject: [PATCH 887/912] [l10n] Improve Chinese (zh-CN) locale (#14394) --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/zhCN.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 683b63a22b7f..9fe8427e6167 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -35,7 +35,7 @@ "languageTag": "zh-CN", "importName": "zhCN", "localeName": "Chinese (Simplified)", - "missingKeysCount": 4, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/zhCN.ts" }, diff --git a/packages/x-data-grid/src/locales/zhCN.ts b/packages/x-data-grid/src/locales/zhCN.ts index 40cc526e3689..7e4aa7aa81f8 100644 --- a/packages/x-data-grid/src/locales/zhCN.ts +++ b/packages/x-data-grid/src/locales/zhCN.ts @@ -38,10 +38,10 @@ const zhCNGrid: Partial = { toolbarExportExcel: '导出至Excel', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', - // columnsManagementReset: 'Reset', + columnsManagementSearchTitle: '搜索', + columnsManagementNoColumns: '没有列', + columnsManagementShowHideAllText: '显示/隐藏所有', + columnsManagementReset: '重置', // Filter panel text filterPanelAddFilter: '添加筛选器', @@ -94,7 +94,7 @@ const zhCNGrid: Partial = { 'headerFilterOperator!=': '不等于', 'headerFilterOperator>': '大于', 'headerFilterOperator>=': '大于或等于', - 'headerFilterOperator<': '小雨', + 'headerFilterOperator<': '小于', 'headerFilterOperator<=': '小于或等于', // Filter values text From dd1acbf818289cfda2f5e09bf561face660e3e98 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 1 Sep 2024 02:10:15 +0200 Subject: [PATCH 888/912] [l10n] Add missing translation (fr-FR) (#14421) --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/frFR.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index 9fe8427e6167..f8ddeba53851 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -91,7 +91,7 @@ "languageTag": "fr-FR", "importName": "frFR", "localeName": "French", - "missingKeysCount": 1, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/frFR.ts" }, diff --git a/packages/x-data-grid/src/locales/frFR.ts b/packages/x-data-grid/src/locales/frFR.ts index 52110cc3cbe8..7f6d91858cf9 100644 --- a/packages/x-data-grid/src/locales/frFR.ts +++ b/packages/x-data-grid/src/locales/frFR.ts @@ -42,7 +42,7 @@ const frFRGrid: Partial = { columnsManagementSearchTitle: 'Rechercher', columnsManagementNoColumns: 'Pas de colonnes', columnsManagementShowHideAllText: 'Afficher/masquer toutes', - // columnsManagementReset: 'Reset', + columnsManagementReset: 'Réinitialiser', // Filter panel text filterPanelAddFilter: 'Ajouter un filtre', From 649697e160bfa62a3c0908539396195c2dba36fd Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 1 Sep 2024 19:37:09 +0200 Subject: [PATCH 889/912] [docs] Remove notion of seats (#14351) --- docs/data/introduction/licensing/licensing.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/introduction/licensing/licensing.md b/docs/data/introduction/licensing/licensing.md index 14142fdb118c..d5aa641adefa 100644 --- a/docs/data/introduction/licensing/licensing.md +++ b/docs/data/introduction/licensing/licensing.md @@ -106,21 +106,21 @@ You can also use it for the development of code not intended for production (for You don't need to contact us to use these components for the above cases. You will need to purchase a commercial license in order to remove the watermarks and console warnings. -## How many developer seats do I need? +## How many developer licenses do I need? -The number of seats purchased on your license must correspond to the number of concurrent developers contributing changes to the front-end code of the project that uses MUI X Pro or Premium. +The number of licenses purchased must correspond to the number of concurrent developers contributing changes to the front-end code of the project that uses MUI X Pro or Premium. - **Example 1.** Company 'A' is developing an application named 'AppA'. The app needs to render 10K rows of data in a table and allow users to group, filter, and sort. The dev team adds MUI X Pro to the project to satisfy this requirement. Five front-end and ten back-end developers are working on 'AppA'. Only one developer is tasked with maintaining the Data Grid, but there are five total developers who work on the front-end. - Company 'A' must purchase five seats. + Company 'A' must purchase five licenses. - **Example 2.** A UI development team at Company 'B' creates its own UI library for internal development that includes MUI X Pro components. The teams working on 'AppY' and 'AppZ' both adopt this new library. 'AppY' has five front-end developers, and 'AppZ' has three; additionally, there are two front-end developers on the company's UI development team. - Company 'B' must purchase ten seats. + Company 'B' must purchase ten licenses. This is [the relevant clause in the EULA.](https://mui.com/legal/mui-x-eula/#required-quantity-of-licenses) From 6a406a5823bf36d1a1c92319c31847bdd863e8f4 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 1 Sep 2024 19:49:18 +0200 Subject: [PATCH 890/912] [core] Fix changelog spelling https://en.wikipedia.org/wiki/Changelog. For consistency as we don't hav CHANGE_LOG.md files. --- CHANGELOG.md | 2 +- changelogOld/CHANGELOG.v4.md | 2 +- changelogOld/CHANGELOG.v5.md | 2 +- changelogOld/CHANGELOG.v6.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8373a3661fcb..72a65f252389 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Change Log +# Changelog All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. diff --git a/changelogOld/CHANGELOG.v4.md b/changelogOld/CHANGELOG.v4.md index c54c6f19d175..756445e851a6 100644 --- a/changelogOld/CHANGELOG.v4.md +++ b/changelogOld/CHANGELOG.v4.md @@ -1,4 +1,4 @@ -# Change Log for v4 releases +# Changelog for v4 releases ## 4.0.0 diff --git a/changelogOld/CHANGELOG.v5.md b/changelogOld/CHANGELOG.v5.md index 553feccf78fd..324ef65bc5fe 100644 --- a/changelogOld/CHANGELOG.v5.md +++ b/changelogOld/CHANGELOG.v5.md @@ -1,4 +1,4 @@ -# Change Log for v5 releases +# Changelog for v5 releases ## 5.17.25 diff --git a/changelogOld/CHANGELOG.v6.md b/changelogOld/CHANGELOG.v6.md index a2f1b629a898..df1260fa0d65 100644 --- a/changelogOld/CHANGELOG.v6.md +++ b/changelogOld/CHANGELOG.v6.md @@ -1,4 +1,4 @@ -# Change Log for v6 releases +# Changelog for v6 releases ## 6.19.12 From 8ed64847a0c7ecbbb1bf73912f9098bf7ea3ae57 Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Sun, 1 Sep 2024 22:17:52 +0200 Subject: [PATCH 891/912] [core] Reset permissions for codspeed GitHub Action (#14420) --- .github/workflows/codspeed.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index 3f56d206a17d..e05f761ab302 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -17,6 +17,8 @@ on: - 'master' - 'next' +permissions: {} + jobs: benchmarks: name: Benchmarks Charts @@ -26,10 +28,10 @@ jobs: # L3: Run the benchmarks for pull requests with the label 'component: charts' # Yaml syntax looks a little weird, but it is correct. if: >- - ${{ - (github.event_name == 'push') || - (github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'component: charts') || - (github.event_name == 'pull_request' && github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'component: charts')) + ${{ + (github.event_name == 'push') || + (github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'component: charts') || + (github.event_name == 'pull_request' && github.event.action != 'labeled' && contains(github.event.pull_request.labels.*.name, 'component: charts')) }} steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 From a32e9d518480584436dfe30b78524ce96a95321f Mon Sep 17 00:00:00 2001 From: Michel Engelen <32863416+michelengelen@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:13:51 +0200 Subject: [PATCH 892/912] [infra] Added `secrets: inherit` to workflow call (#14454) --- .github/workflows/new-issue-triage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/new-issue-triage.yml b/.github/workflows/new-issue-triage.yml index 8dc6fbf16324..42f94ff7987b 100644 --- a/.github/workflows/new-issue-triage.yml +++ b/.github/workflows/new-issue-triage.yml @@ -18,6 +18,7 @@ jobs: needs: issue_cleanup if: needs.issue_cleanup.outputs.orderId != '' uses: mui/mui-public/.github/workflows/issues_order-id-validation.yml@master + secrets: inherit with: orderId: ${{ needs.issue_cleanup.outputs.orderId }} permissions: From 315ffa1e163a0bdd54a89909cf1dd7ffa582cd3a Mon Sep 17 00:00:00 2001 From: Olivier Tassinari Date: Mon, 2 Sep 2024 13:57:50 +0200 Subject: [PATCH 893/912] [DataGrid] Remove cell min-width / max-width styles (#14448) --- .../components/headerFiltering/GridHeaderFilterCell.tsx | 2 -- .../columnHeaders/GridGenericColumnHeaderItem.tsx | 2 -- .../src/components/containers/GridRootStyles.ts | 3 +-- .../hooks/features/columnResize/useGridColumnResize.tsx | 8 -------- 4 files changed, 1 insertion(+), 14 deletions(-) diff --git a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx index 68360d2c7203..1d22e8793958 100644 --- a/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx +++ b/packages/x-data-grid-pro/src/components/headerFiltering/GridHeaderFilterCell.tsx @@ -313,8 +313,6 @@ const GridHeaderFilterCell = React.forwardRef { @@ -335,8 +331,6 @@ export const useGridColumnResize = ( } div.style.width = finalWidth; - div.style.minWidth = finalWidth; - div.style.maxWidth = finalWidth; }); refs.cellElements!.forEach((element) => { @@ -427,8 +421,6 @@ export const useGridColumnResize = ( const finalWidth: `${number}px` = `${newWidth}px`; div.style.width = finalWidth; - div.style.minWidth = finalWidth; - div.style.maxWidth = finalWidth; }); } From 662df95f44fdf82f1a1960e9fded16c17b0b449e Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 2 Sep 2024 15:42:50 +0200 Subject: [PATCH 894/912] [core] Fix failing tests on the pickers (#14457) --- .../src/DateCalendar/tests/DateCalendar.test.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx index bf13515b44c8..8332954d9937 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.test.tsx @@ -259,7 +259,7 @@ describe('', () => { it('should complete weeks when showDaysOutsideCurrentMonth=true', () => { render( , @@ -270,7 +270,7 @@ describe('', () => { it('should complete weeks up to match `fixedWeekNumber`', () => { render( Date: Mon, 2 Sep 2024 15:46:06 +0200 Subject: [PATCH 895/912] [charts] Use real world data for `PieChart` examples (#14297) Signed-off-by: Jose C Quintas Jr Co-authored-by: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> --- docs/data/charts/pie/PieActiveArc.js | 10 +-- docs/data/charts/pie/PieActiveArc.tsx | 10 +-- docs/data/charts/pie/PieActiveArc.tsx.preview | 3 +- docs/data/charts/pie/PieAnimation.js | 29 ++------ docs/data/charts/pie/PieAnimation.tsx | 28 ++------ docs/data/charts/pie/PieArcLabel.js | 31 ++++---- docs/data/charts/pie/PieArcLabel.tsx | 31 ++++---- docs/data/charts/pie/PieArcLabel.tsx.preview | 8 +-- docs/data/charts/pie/PieClickNoSnap.js | 55 +++++---------- docs/data/charts/pie/PieColor.js | 31 ++++++-- docs/data/charts/pie/PieColor.tsx | 31 ++++++-- docs/data/charts/pie/PieShapeNoSnap.js | 15 ++-- docs/data/charts/pie/webUsageStats.ts | 70 +++++++++++++++++++ 13 files changed, 198 insertions(+), 154 deletions(-) create mode 100644 docs/data/charts/pie/webUsageStats.ts diff --git a/docs/data/charts/pie/PieActiveArc.js b/docs/data/charts/pie/PieActiveArc.js index df49ae3bd67f..4e151e983c04 100644 --- a/docs/data/charts/pie/PieActiveArc.js +++ b/docs/data/charts/pie/PieActiveArc.js @@ -1,20 +1,16 @@ import * as React from 'react'; import { PieChart } from '@mui/x-charts/PieChart'; - -const data = [ - { id: 0, value: 10, label: 'series A' }, - { id: 1, value: 15, label: 'series B' }, - { id: 2, value: 20, label: 'series C' }, -]; +import { desktopOS, valueFormatter } from './webUsageStats'; export default function PieActiveArc() { return ( params.label ?? '', + arcLabelMinAngle: 20, + valueFormatter, }, ]} skipAnimation={skipAnimation} @@ -75,7 +56,7 @@ export default function PieAnimation() { onChange={handleItemNbChange} valueLabelDisplay="auto" min={1} - max={10} + max={8} aria-labelledby="input-item-number" /> diff --git a/docs/data/charts/pie/PieAnimation.tsx b/docs/data/charts/pie/PieAnimation.tsx index f25df849a2ad..15da4f8a4708 100644 --- a/docs/data/charts/pie/PieAnimation.tsx +++ b/docs/data/charts/pie/PieAnimation.tsx @@ -5,26 +5,7 @@ import Slider from '@mui/material/Slider'; import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; import { PieChart } from '@mui/x-charts/PieChart'; - -const data1 = [ - { label: 'Group A', value: 400 }, - { label: 'Group B', value: 300 }, - { label: 'Group C', value: 300 }, - { label: 'Group D', value: 200 }, -]; -const data2 = [ - { label: '1', value: 100 }, - { label: '2', value: 300 }, - { label: '3', value: 100 }, - { label: '4', value: 80 }, - { label: '5', value: 40 }, - { label: '6', value: 30 }, - { label: '7', value: 50 }, - { label: '8', value: 100 }, - { label: '9', value: 200 }, - { label: '10', value: 150 }, - { label: '11', value: 50 }, -]; +import { mobileAndDesktopOS, valueFormatter } from './webUsageStats'; export default function PieAnimation() { const [radius, setRadius] = React.useState(50); @@ -49,11 +30,12 @@ export default function PieAnimation() { params.label ?? '', + arcLabelMinAngle: 20, + valueFormatter, }, ]} skipAnimation={skipAnimation} @@ -74,7 +56,7 @@ export default function PieAnimation() { onChange={handleItemNbChange} valueLabelDisplay="auto" min={1} - max={10} + max={8} aria-labelledby="input-item-number" /> diff --git a/docs/data/charts/pie/PieArcLabel.js b/docs/data/charts/pie/PieArcLabel.js index b61a7e91d014..0555cc2d964e 100644 --- a/docs/data/charts/pie/PieArcLabel.js +++ b/docs/data/charts/pie/PieArcLabel.js @@ -1,31 +1,20 @@ import * as React from 'react'; import { PieChart, pieArcLabelClasses } from '@mui/x-charts/PieChart'; - -const data = [ - { value: 5, label: 'A' }, - { value: 10, label: 'B' }, - { value: 15, label: 'C' }, - { value: 20, label: 'D' }, -]; - -const size = { - width: 400, - height: 200, -}; +import { desktopOS, valueFormatter } from './webUsageStats'; export default function PieArcLabel() { return ( `${item.label} (${item.value})`, - arcLabelMinAngle: 45, - data, + arcLabel: (item) => `${item.value}%`, + arcLabelMinAngle: 35, + arcLabelRadius: '60%', + ...data, }, ]} sx={{ [`& .${pieArcLabelClasses.root}`]: { - fill: 'white', fontWeight: 'bold', }, }} @@ -33,3 +22,13 @@ export default function PieArcLabel() { /> ); } + +const size = { + width: 400, + height: 200, +}; + +const data = { + data: desktopOS, + valueFormatter, +}; diff --git a/docs/data/charts/pie/PieArcLabel.tsx b/docs/data/charts/pie/PieArcLabel.tsx index b61a7e91d014..0555cc2d964e 100644 --- a/docs/data/charts/pie/PieArcLabel.tsx +++ b/docs/data/charts/pie/PieArcLabel.tsx @@ -1,31 +1,20 @@ import * as React from 'react'; import { PieChart, pieArcLabelClasses } from '@mui/x-charts/PieChart'; - -const data = [ - { value: 5, label: 'A' }, - { value: 10, label: 'B' }, - { value: 15, label: 'C' }, - { value: 20, label: 'D' }, -]; - -const size = { - width: 400, - height: 200, -}; +import { desktopOS, valueFormatter } from './webUsageStats'; export default function PieArcLabel() { return ( `${item.label} (${item.value})`, - arcLabelMinAngle: 45, - data, + arcLabel: (item) => `${item.value}%`, + arcLabelMinAngle: 35, + arcLabelRadius: '60%', + ...data, }, ]} sx={{ [`& .${pieArcLabelClasses.root}`]: { - fill: 'white', fontWeight: 'bold', }, }} @@ -33,3 +22,13 @@ export default function PieArcLabel() { /> ); } + +const size = { + width: 400, + height: 200, +}; + +const data = { + data: desktopOS, + valueFormatter, +}; diff --git a/docs/data/charts/pie/PieArcLabel.tsx.preview b/docs/data/charts/pie/PieArcLabel.tsx.preview index dac686d77a44..0f617bfbd6f2 100644 --- a/docs/data/charts/pie/PieArcLabel.tsx.preview +++ b/docs/data/charts/pie/PieArcLabel.tsx.preview @@ -1,14 +1,14 @@ `${item.label} (${item.value})`, - arcLabelMinAngle: 45, - data, + arcLabel: (item) => `${item.value}%`, + arcLabelMinAngle: 35, + arcLabelRadius: '60%', + ...data, }, ]} sx={{ [`& .${pieArcLabelClasses.root}`]: { - fill: 'white', fontWeight: 'bold', }, }} diff --git a/docs/data/charts/pie/PieClickNoSnap.js b/docs/data/charts/pie/PieClickNoSnap.js index de00ca705a95..8b13dfb3d48b 100644 --- a/docs/data/charts/pie/PieClickNoSnap.js +++ b/docs/data/charts/pie/PieClickNoSnap.js @@ -4,45 +4,9 @@ import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import IconButton from '@mui/material/IconButton'; import UndoOutlinedIcon from '@mui/icons-material/UndoOutlined'; - import { PieChart } from '@mui/x-charts/PieChart'; - import { HighlightedCode } from '@mui/docs/HighlightedCode'; - -const data1 = [ - { label: 'Group A', value: 400 }, - { label: 'Group B', value: 300 }, - { label: 'Group C', value: 300 }, - { label: 'Group D', value: 200 }, -]; - -const data2 = [ - { label: 'A1', value: 100 }, - { label: 'A2', value: 300 }, - { label: 'B1', value: 100 }, - { label: 'B2', value: 80 }, - { label: 'B3', value: 40 }, - { label: 'B4', value: 30 }, - { label: 'B5', value: 50 }, - { label: 'C1', value: 100 }, - { label: 'C2', value: 200 }, - { label: 'D1', value: 150 }, - { label: 'D2', value: 50 }, -]; -const series = [ - { - innerRadius: 0, - outerRadius: 80, - id: 'series-1', - data: data1, - }, - { - innerRadius: 100, - outerRadius: 120, - id: 'series-2', - data: data2, - }, -]; +import { mobileAndDesktopOS, platforms, valueFormatter } from './webUsageStats'; export default function PieClickNoSnap() { const [itemData, setItemData] = React.useState(); @@ -95,3 +59,20 @@ ${itemData ? JSON.stringify(itemData, null, 2) : '// The data will appear here'} ); } + +const series = [ + { + innerRadius: 0, + outerRadius: 80, + id: 'platform-series', + data: platforms, + valueFormatter, + }, + { + innerRadius: 100, + outerRadius: 120, + id: 'OS-series', + data: mobileAndDesktopOS, + valueFormatter, + }, +]; diff --git a/docs/data/charts/pie/PieColor.js b/docs/data/charts/pie/PieColor.js index d12e6dfab6d7..447224cbb194 100644 --- a/docs/data/charts/pie/PieColor.js +++ b/docs/data/charts/pie/PieColor.js @@ -3,9 +3,14 @@ import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import { PieChart } from '@mui/x-charts/PieChart'; +import { platforms } from './webUsageStats'; -const pieParams = { height: 200, margin: { right: 5 } }; -const palette = ['red', 'blue', 'green']; +const palette = ['lightcoral', 'slateblue']; + +const colorPerItem = [ + { ...platforms[0], color: 'orange' }, + { ...platforms[1], color: 'gray' }, +]; export default function PieColor() { return ( @@ -13,7 +18,11 @@ export default function PieColor() { Default @@ -21,7 +30,11 @@ export default function PieColor() { Palette @@ -29,7 +42,9 @@ export default function PieColor() { Item @@ -37,3 +52,9 @@ export default function PieColor() { ); } + +const pieParams = { + height: 200, + margin: { right: 5 }, + slotProps: { legend: { hidden: true } }, +}; diff --git a/docs/data/charts/pie/PieColor.tsx b/docs/data/charts/pie/PieColor.tsx index d12e6dfab6d7..447224cbb194 100644 --- a/docs/data/charts/pie/PieColor.tsx +++ b/docs/data/charts/pie/PieColor.tsx @@ -3,9 +3,14 @@ import Box from '@mui/material/Box'; import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import { PieChart } from '@mui/x-charts/PieChart'; +import { platforms } from './webUsageStats'; -const pieParams = { height: 200, margin: { right: 5 } }; -const palette = ['red', 'blue', 'green']; +const palette = ['lightcoral', 'slateblue']; + +const colorPerItem = [ + { ...platforms[0], color: 'orange' }, + { ...platforms[1], color: 'gray' }, +]; export default function PieColor() { return ( @@ -13,7 +18,11 @@ export default function PieColor() { Default @@ -21,7 +30,11 @@ export default function PieColor() { Palette @@ -29,7 +42,9 @@ export default function PieColor() { Item @@ -37,3 +52,9 @@ export default function PieColor() { ); } + +const pieParams = { + height: 200, + margin: { right: 5 }, + slotProps: { legend: { hidden: true } }, +}; diff --git a/docs/data/charts/pie/PieShapeNoSnap.js b/docs/data/charts/pie/PieShapeNoSnap.js index 9952d0c2a3fe..b36ace970cfb 100644 --- a/docs/data/charts/pie/PieShapeNoSnap.js +++ b/docs/data/charts/pie/PieShapeNoSnap.js @@ -1,6 +1,7 @@ import * as React from 'react'; import ChartsUsageDemo from 'docsx/src/modules/components/ChartsUsageDemo'; import { PieChart } from '@mui/x-charts/PieChart'; +import { desktopOS, valueFormatter } from './webUsageStats'; export default function PieShapeNoSnap() { return ( @@ -11,8 +12,8 @@ export default function PieShapeNoSnap() { { propName: `outerRadius`, knob: 'number', defaultValue: 100 }, { propName: `paddingAngle`, knob: 'number', defaultValue: 5 }, { propName: `cornerRadius`, knob: 'number', defaultValue: 5 }, - { propName: `startAngle`, knob: 'number', defaultValue: -90 }, - { propName: `endAngle`, knob: 'number', defaultValue: 180 }, + { propName: `startAngle`, knob: 'number', defaultValue: -45 }, + { propName: `endAngle`, knob: 'number', defaultValue: 225 }, { propName: `cx`, knob: 'number', defaultValue: 150 }, { propName: `cy`, knob: 'number', defaultValue: 150 }, ]} @@ -21,18 +22,14 @@ export default function PieShapeNoSnap() { series={[ { ...props, - data: [ - { value: 5 }, - { value: 5 }, - { value: 10 }, - { value: 15 }, - { value: 30 }, - ], + data: desktopOS, + valueFormatter, }, ]} width={300} height={300} margin={{ right: 5 }} + slotProps={{ legend: { hidden: true } }} /> )} getCode={({ props }) => { diff --git a/docs/data/charts/pie/webUsageStats.ts b/docs/data/charts/pie/webUsageStats.ts new file mode 100644 index 000000000000..98d3642865cf --- /dev/null +++ b/docs/data/charts/pie/webUsageStats.ts @@ -0,0 +1,70 @@ +// Data derived from https://gs.statcounter.com/os-market-share/desktop/worldwide/2023 +// And https://gs.statcounter.com/os-market-share/mobile/worldwide/2023 +// And https://gs.statcounter.com/platform-market-share/desktop-mobile-tablet/worldwide/2023 +// For the month of December 2023 + +export const desktopOS = [ + { + label: 'Windows', + value: 72.72, + }, + { + label: 'OS X', + value: 16.38, + }, + { + label: 'Linux', + value: 3.83, + }, + { + label: 'Chrome OS', + value: 2.42, + }, + { + label: 'Other', + value: 4.65, + }, +]; + +export const mobileOS = [ + { + label: 'Android', + value: 70.48, + }, + { + label: 'iOS', + value: 28.8, + }, + { + label: 'Other', + value: 0.71, + }, +]; + +export const platforms = [ + { + label: 'Mobile', + value: 59.12, + }, + { + label: 'Desktop', + value: 40.88, + }, +]; + +const normalize = (v: number, v2: number) => Number.parseFloat(((v * v2) / 100).toFixed(2)); + +export const mobileAndDesktopOS = [ + ...mobileOS.map((v) => ({ + ...v, + label: v.label === 'Other' ? 'Other (Mobile)' : v.label, + value: normalize(v.value, platforms[0].value), + })), + ...desktopOS.map((v) => ({ + ...v, + label: v.label === 'Other' ? 'Other (Desktop)' : v.label, + value: normalize(v.value, platforms[1].value), + })), +]; + +export const valueFormatter = (item: { value: number }) => `${item.value}%`; From aff6ddbb57253bfe062da4b080d441f6b1aeb91e Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 2 Sep 2024 16:17:44 +0200 Subject: [PATCH 896/912] [docs] Add RTL documentation for the pickers (#13855) --- .../adapters-locale/PickersRTL.js | 51 +++++++++++++++++ .../adapters-locale/PickersRTL.tsx | 51 +++++++++++++++++ .../adapters-locale/adapters-locale.md | 9 +++ .../calendar-systems/AdapterHijri.js | 55 +++++++++++++------ .../calendar-systems/AdapterHijri.tsx | 55 +++++++++++++------ .../calendar-systems/AdapterHijri.tsx.preview | 13 ----- .../calendar-systems/AdapterJalali.js | 49 ++++++++++++----- .../calendar-systems/AdapterJalali.tsx | 49 ++++++++++++----- .../AdapterJalali.tsx.preview | 10 ---- .../calendar-systems/AdapterMomentJalali.js | 51 ++++++++++++----- .../calendar-systems/AdapterMomentJalali.tsx | 51 ++++++++++++----- .../AdapterMomentJalali.tsx.preview | 10 ---- .../MultiSectionDigitalClock.tsx | 8 +-- 13 files changed, 337 insertions(+), 125 deletions(-) create mode 100644 docs/data/date-pickers/adapters-locale/PickersRTL.js create mode 100644 docs/data/date-pickers/adapters-locale/PickersRTL.tsx delete mode 100644 docs/data/date-pickers/calendar-systems/AdapterHijri.tsx.preview delete mode 100644 docs/data/date-pickers/calendar-systems/AdapterJalali.tsx.preview delete mode 100644 docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx.preview diff --git a/docs/data/date-pickers/adapters-locale/PickersRTL.js b/docs/data/date-pickers/adapters-locale/PickersRTL.js new file mode 100644 index 000000000000..6372a1c7a21f --- /dev/null +++ b/docs/data/date-pickers/adapters-locale/PickersRTL.js @@ -0,0 +1,51 @@ +import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; +import dayjs from 'dayjs'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'pickers-rtl-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); + +export default function PickersRTL() { + // Inherit the theme from the docs site (dark/light mode) + const existingTheme = useTheme(); + + const theme = React.useMemo( + () => createTheme(existingTheme, { direction: 'rtl' }), + [existingTheme], + ); + + return ( + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    + ); +} diff --git a/docs/data/date-pickers/adapters-locale/PickersRTL.tsx b/docs/data/date-pickers/adapters-locale/PickersRTL.tsx new file mode 100644 index 000000000000..6372a1c7a21f --- /dev/null +++ b/docs/data/date-pickers/adapters-locale/PickersRTL.tsx @@ -0,0 +1,51 @@ +import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; +import dayjs from 'dayjs'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'pickers-rtl-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); + +export default function PickersRTL() { + // Inherit the theme from the docs site (dark/light mode) + const existingTheme = useTheme(); + + const theme = React.useMemo( + () => createTheme(existingTheme, { direction: 'rtl' }), + [existingTheme], + ); + + return ( + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    + ); +} diff --git a/docs/data/date-pickers/adapters-locale/adapters-locale.md b/docs/data/date-pickers/adapters-locale/adapters-locale.md index bf62a4b35c07..99f5e44e7ace 100644 --- a/docs/data/date-pickers/adapters-locale/adapters-locale.md +++ b/docs/data/date-pickers/adapters-locale/adapters-locale.md @@ -369,3 +369,12 @@ moment.updateLocale('en', { }, }); ``` + +## RTL Support + +Right-to-left languages such as Arabic, Persian, or Hebrew are supported. +Follow [this guide](/material-ui/customization/right-to-left/) to use them. + +The example below demonstrates how to use an RTL language (Arabic) with some of the Date and Time Pickers components. + +{{"demo": "PickersRTL.js"}} diff --git a/docs/data/date-pickers/calendar-systems/AdapterHijri.js b/docs/data/date-pickers/calendar-systems/AdapterHijri.js index d867e75aa65e..7e32466b4814 100644 --- a/docs/data/date-pickers/calendar-systems/AdapterHijri.js +++ b/docs/data/date-pickers/calendar-systems/AdapterHijri.js @@ -1,31 +1,54 @@ import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; import moment from 'moment-hijri'; import { AdapterMomentHijri } from '@mui/x-date-pickers/AdapterMomentHijri'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import useTheme from '@mui/system/useTheme'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'adapter-moment-hijri-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); export default function AdapterHijri() { + // Inherit the theme from the docs site (dark/light mode) const existingTheme = useTheme(); + const theme = React.useMemo( - () => createTheme({ direction: 'rtl' }, existingTheme), + () => createTheme(existingTheme, { direction: 'rtl' }), [existingTheme], ); return ( - -
    - - - -
    -
    + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    ); } diff --git a/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx b/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx index d867e75aa65e..7e32466b4814 100644 --- a/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx +++ b/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx @@ -1,31 +1,54 @@ import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; import moment from 'moment-hijri'; import { AdapterMomentHijri } from '@mui/x-date-pickers/AdapterMomentHijri'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import useTheme from '@mui/system/useTheme'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'adapter-moment-hijri-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); export default function AdapterHijri() { + // Inherit the theme from the docs site (dark/light mode) const existingTheme = useTheme(); + const theme = React.useMemo( - () => createTheme({ direction: 'rtl' }, existingTheme), + () => createTheme(existingTheme, { direction: 'rtl' }), [existingTheme], ); return ( - -
    - - - -
    -
    + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    ); } diff --git a/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx.preview b/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx.preview deleted file mode 100644 index 4c401c580fd9..000000000000 --- a/docs/data/date-pickers/calendar-systems/AdapterHijri.tsx.preview +++ /dev/null @@ -1,13 +0,0 @@ - -
    - - - -
    -
    \ No newline at end of file diff --git a/docs/data/date-pickers/calendar-systems/AdapterJalali.js b/docs/data/date-pickers/calendar-systems/AdapterJalali.js index 0f5994a1dddb..4265db92ef69 100644 --- a/docs/data/date-pickers/calendar-systems/AdapterJalali.js +++ b/docs/data/date-pickers/calendar-systems/AdapterJalali.js @@ -1,27 +1,50 @@ import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalali'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import useTheme from '@mui/system/useTheme'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'adapter-date-fns-jalali-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); export default function AdapterJalali() { + // Inherit the theme from the docs site (dark/light mode) const existingTheme = useTheme(); + const theme = React.useMemo( - () => createTheme({ direction: 'rtl' }, existingTheme), + () => createTheme(existingTheme, { direction: 'rtl' }), [existingTheme], ); return ( - -
    - - - -
    -
    + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    ); } diff --git a/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx b/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx index 0f5994a1dddb..4265db92ef69 100644 --- a/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx +++ b/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx @@ -1,27 +1,50 @@ import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalali'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import useTheme from '@mui/system/useTheme'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; + +// Create rtl cache +const cacheRtl = createCache({ + key: 'adapter-date-fns-jalali-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); export default function AdapterJalali() { + // Inherit the theme from the docs site (dark/light mode) const existingTheme = useTheme(); + const theme = React.useMemo( - () => createTheme({ direction: 'rtl' }, existingTheme), + () => createTheme(existingTheme, { direction: 'rtl' }), [existingTheme], ); return ( - -
    - - - -
    -
    + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    ); } diff --git a/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx.preview b/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx.preview deleted file mode 100644 index f6861e10a633..000000000000 --- a/docs/data/date-pickers/calendar-systems/AdapterJalali.tsx.preview +++ /dev/null @@ -1,10 +0,0 @@ - -
    - - - -
    -
    \ No newline at end of file diff --git a/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.js b/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.js index 45295e2a1879..26c27f04ac2d 100644 --- a/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.js +++ b/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.js @@ -1,30 +1,51 @@ import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; import moment from 'moment-jalaali'; import { AdapterMomentJalaali } from '@mui/x-date-pickers/AdapterMomentJalaali'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import useTheme from '@mui/system/useTheme'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; -export default function AdapterMomentJalali() { - moment.loadPersian({ dialect: 'persian-modern' }); +// Create rtl cache +const cacheRtl = createCache({ + key: 'adapter-moment-jalali-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); +export default function AdapterMomentJalali() { + // Inherit the theme from the docs site (dark/light mode) const existingTheme = useTheme(); + const theme = React.useMemo( - () => createTheme({ direction: 'rtl' }, existingTheme), + () => createTheme(existingTheme, { direction: 'rtl' }), [existingTheme], ); return ( - -
    - - - -
    -
    + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    ); } diff --git a/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx b/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx index 45295e2a1879..26c27f04ac2d 100644 --- a/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx +++ b/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx @@ -1,30 +1,51 @@ import * as React from 'react'; +import { prefixer } from 'stylis'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; import moment from 'moment-jalaali'; import { AdapterMomentJalaali } from '@mui/x-date-pickers/AdapterMomentJalaali'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; -import useTheme from '@mui/system/useTheme'; -import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { createTheme, ThemeProvider, useTheme } from '@mui/material/styles'; -export default function AdapterMomentJalali() { - moment.loadPersian({ dialect: 'persian-modern' }); +// Create rtl cache +const cacheRtl = createCache({ + key: 'adapter-moment-jalali-demo', + stylisPlugins: [prefixer, rtlPlugin], +}); +export default function AdapterMomentJalali() { + // Inherit the theme from the docs site (dark/light mode) const existingTheme = useTheme(); + const theme = React.useMemo( - () => createTheme({ direction: 'rtl' }, existingTheme), + () => createTheme(existingTheme, { direction: 'rtl' }), [existingTheme], ); return ( - -
    - - - -
    -
    + + +
    + + `, you can skip it. + slotProps={{ + desktopPaper: { + dir: 'rtl', + }, + mobilePaper: { + dir: 'rtl', + }, + }} + /> + +
    +
    +
    ); } diff --git a/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx.preview b/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx.preview deleted file mode 100644 index 4c0ffdf96c37..000000000000 --- a/docs/data/date-pickers/calendar-systems/AdapterMomentJalali.tsx.preview +++ /dev/null @@ -1,10 +0,0 @@ - -
    - - - -
    -
    \ No newline at end of file diff --git a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx index bf30b978c580..39a8b2495660 100644 --- a/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx +++ b/packages/x-date-pickers/src/MultiSectionDigitalClock/MultiSectionDigitalClock.tsx @@ -396,12 +396,12 @@ export const MultiSectionDigitalClock = React.forwardRef(function MultiSectionDi if (!isRtl) { return views; } - const digitViews = views.filter((v) => v !== 'meridiem'); - const result: TimeViewWithMeridiem[] = digitViews.toReversed(); + const digitViews: TimeViewWithMeridiem[] = views.filter((v) => v !== 'meridiem'); + digitViews.reverse(); if (views.includes('meridiem')) { - result.push('meridiem'); + digitViews.push('meridiem'); } - return result; + return digitViews; }, [isRtl, views]); const viewTimeOptions = React.useMemo(() => { From 033f897c2f600bb788bd3a74461f0ad642b139c6 Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 2 Sep 2024 16:18:01 +0200 Subject: [PATCH 897/912] [pickers] Keep the calendar header and content in sync when switching locale (#14125) --- .../src/AdapterDayjs/AdapterDayjs.ts | 9 +++-- .../src/AdapterLuxon/AdapterLuxon.ts | 9 +++-- .../src/AdapterMoment/AdapterMoment.ts | 9 +++-- .../src/DateCalendar/DateCalendar.spec.tsx | 13 -------- .../src/DateCalendar/DayCalendar.tsx | 3 +- .../DateCalendar/tests/DateCalendar.spec.tsx | 11 +++++++ .../tests/localization.DateCalendar.test.tsx | 33 ++++++++++++++++--- 7 files changed, 53 insertions(+), 34 deletions(-) delete mode 100644 packages/x-date-pickers/src/DateCalendar/DateCalendar.spec.tsx diff --git a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts index 1245f256ea80..cf564eb4e6ac 100644 --- a/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts +++ b/packages/x-date-pickers/src/AdapterDayjs/AdapterDayjs.ts @@ -513,7 +513,7 @@ export class AdapterDayjs implements MuiPickersAdapter { }; public startOfWeek = (value: Dayjs) => { - return this.adjustOffset(value.startOf('week')); + return this.adjustOffset(this.setLocaleToValue(value).startOf('week')); }; public startOfDay = (value: Dayjs) => { @@ -529,7 +529,7 @@ export class AdapterDayjs implements MuiPickersAdapter { }; public endOfWeek = (value: Dayjs) => { - return this.adjustOffset(value.endOf('week')); + return this.adjustOffset(this.setLocaleToValue(value).endOf('week')); }; public endOfDay = (value: Dayjs) => { @@ -639,9 +639,8 @@ export class AdapterDayjs implements MuiPickersAdapter { }; public getWeekArray = (value: Dayjs) => { - const cleanValue = this.setLocaleToValue(value); - const start = this.startOfWeek(this.startOfMonth(cleanValue)); - const end = this.endOfWeek(this.endOfMonth(cleanValue)); + const start = this.startOfWeek(this.startOfMonth(value)); + const end = this.endOfWeek(this.endOfMonth(value)); let count = 0; let current = start; diff --git a/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts b/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts index 3fd21f704315..edaee013c9be 100644 --- a/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts +++ b/packages/x-date-pickers/src/AdapterLuxon/AdapterLuxon.ts @@ -348,7 +348,7 @@ export class AdapterLuxon implements MuiPickersAdapter { }; public startOfWeek = (value: DateTime) => { - return value.startOf('week', { useLocaleWeeks: true }); + return this.setLocaleToValue(value).startOf('week', { useLocaleWeeks: true }); }; public startOfDay = (value: DateTime) => { @@ -364,7 +364,7 @@ export class AdapterLuxon implements MuiPickersAdapter { }; public endOfWeek = (value: DateTime) => { - return value.endOf('week', { useLocaleWeeks: true }); + return this.setLocaleToValue(value).endOf('week', { useLocaleWeeks: true }); }; public endOfDay = (value: DateTime) => { @@ -461,9 +461,8 @@ export class AdapterLuxon implements MuiPickersAdapter { }; public getWeekArray = (value: DateTime) => { - const cleanValue = this.setLocaleToValue(value); - const firstDay = this.startOfWeek(this.startOfMonth(cleanValue)); - const lastDay = this.endOfWeek(this.endOfMonth(cleanValue)); + const firstDay = this.startOfWeek(this.startOfMonth(value)); + const lastDay = this.endOfWeek(this.endOfMonth(value)); const { days } = lastDay.diff(firstDay, 'days').toObject(); diff --git a/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts b/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts index 57ba9986e51f..a6e5288f2ed9 100644 --- a/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts +++ b/packages/x-date-pickers/src/AdapterMoment/AdapterMoment.ts @@ -390,7 +390,7 @@ export class AdapterMoment implements MuiPickersAdapter { }; public startOfWeek = (value: Moment) => { - return value.clone().startOf('week'); + return this.setLocaleToValue(value.clone()).startOf('week'); }; public startOfDay = (value: Moment) => { @@ -406,7 +406,7 @@ export class AdapterMoment implements MuiPickersAdapter { }; public endOfWeek = (value: Moment) => { - return value.clone().endOf('week'); + return this.setLocaleToValue(value.clone()).endOf('week'); }; public endOfDay = (value: Moment) => { @@ -516,9 +516,8 @@ export class AdapterMoment implements MuiPickersAdapter { }; public getWeekArray = (value: Moment) => { - const cleanValue = this.setLocaleToValue(value); - const start = this.startOfWeek(this.startOfMonth(cleanValue)); - const end = this.endOfWeek(this.endOfMonth(cleanValue)); + const start = this.startOfWeek(this.startOfMonth(value)); + const end = this.endOfWeek(this.endOfMonth(value)); let count = 0; let current = start; diff --git a/packages/x-date-pickers/src/DateCalendar/DateCalendar.spec.tsx b/packages/x-date-pickers/src/DateCalendar/DateCalendar.spec.tsx deleted file mode 100644 index 7fbd799e2208..000000000000 --- a/packages/x-date-pickers/src/DateCalendar/DateCalendar.spec.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react'; -import moment, { Moment } from 'moment'; -import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; - -// External components are generic as well - - view="day" - views={['day']} - value={moment()} - minDate={moment()} - maxDate={moment()} - onChange={(date) => date?.format()} -/>; diff --git a/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx b/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx index f1a173e45249..31d01710d5bf 100644 --- a/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx +++ b/packages/x-date-pickers/src/DateCalendar/DayCalendar.tsx @@ -502,7 +502,6 @@ export function DayCalendar(inProps: DayCalendarP const transitionKey = `${currentYearNumber}-${currentMonthNumber}`; // eslint-disable-next-line react-hooks/exhaustive-deps const slideNodeRef = React.useMemo(() => React.createRef(), [transitionKey]); - const startOfCurrentWeek = utils.startOfWeek(now); const focusableDay = React.useMemo(() => { const startOfMonth = utils.startOfMonth(currentMonth); @@ -574,7 +573,7 @@ export function DayCalendar(inProps: DayCalendarP key={i.toString()} variant="caption" role="columnheader" - aria-label={utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday')} + aria-label={utils.format(weekday, 'weekday')} className={classes.weekDayLabel} > {dayOfWeekFormatter(weekday)} diff --git a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.spec.tsx b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.spec.tsx index bd049cba6fd9..53ff42ee719a 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.spec.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/DateCalendar.spec.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import moment, { Moment } from 'moment'; import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; ; @@ -8,3 +9,13 @@ import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; ; ; + +// External components are generic as well + + view="day" + views={['day']} + value={moment()} + minDate={moment()} + maxDate={moment()} + onChange={(date) => date?.format()} +/>; diff --git a/packages/x-date-pickers/src/DateCalendar/tests/localization.DateCalendar.test.tsx b/packages/x-date-pickers/src/DateCalendar/tests/localization.DateCalendar.test.tsx index 6b4105506de2..90d8c9bc6040 100644 --- a/packages/x-date-pickers/src/DateCalendar/tests/localization.DateCalendar.test.tsx +++ b/packages/x-date-pickers/src/DateCalendar/tests/localization.DateCalendar.test.tsx @@ -1,11 +1,14 @@ import * as React from 'react'; import { expect } from 'chai'; -import { screen } from '@mui/internal-test-utils'; -import { DateCalendar } from '@mui/x-date-pickers/DateCalendar'; -import { createPickerRenderer, AdapterName } from 'test/utils/pickers'; -import { he } from 'date-fns/locale'; +import { screen, createRenderer } from '@mui/internal-test-utils'; +import { DateCalendar, dayCalendarClasses } from '@mui/x-date-pickers/DateCalendar'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { createPickerRenderer, AdapterName, availableAdapters } from 'test/utils/pickers'; +import { he, fr } from 'date-fns/locale'; import 'dayjs/locale/he'; +import 'dayjs/locale/fr'; import 'moment/locale/he'; +import 'moment/locale/fr'; const ADAPTERS_TO_USE: AdapterName[] = ['date-fns', 'dayjs', 'luxon', 'moment']; @@ -17,11 +20,33 @@ describe(' - localization', () => { adapterName, }); + const { render: renderWithoutWrapper } = createRenderer(); + it('should display correct week day labels in Hebrew locale ', () => { render(); expect(screen.getByText('א')).toBeVisible(); }); + + it('should correctly switch between locale with week starting in Monday and week starting in Sunday', () => { + const { setProps } = renderWithoutWrapper( + + + , + ); + + expect(document.querySelector(`.${dayCalendarClasses.weekDayLabel}`)!.ariaLabel).to.equal( + 'Sunday', + ); + + setProps({ + adapterLocale: adapterName === 'date-fns' ? fr : 'fr', + }); + + expect(document.querySelector(`.${dayCalendarClasses.weekDayLabel}`)!.ariaLabel).to.equal( + 'lundi', + ); + }); }); }); }); From 904efc407da46c73022577b3967300811950ed5a Mon Sep 17 00:00:00 2001 From: Flavien DELANGLE Date: Mon, 2 Sep 2024 16:18:14 +0200 Subject: [PATCH 898/912] [TreeView] Clean label editing code (#14264) --- .../x-tree-view/src/TreeItem/TreeItem.tsx | 34 ++++++--- .../src/TreeItem/TreeItemContent.tsx | 45 +++--------- .../TreeItem2LabelInput.types.ts | 11 ++- .../useTreeItem2Utils/useTreeItem2Utils.tsx | 2 +- .../src/internals/models/itemPlugin.ts | 6 ++ .../useTreeViewLabel.itemPlugin.ts | 38 ++++++++-- .../useTreeViewLabel.types.ts | 9 ++- .../src/useTreeItem2/useTreeItem2.ts | 70 ++++++------------- .../src/useTreeItem2/useTreeItem2.types.ts | 5 +- scripts/x-tree-view-pro.exports.json | 2 +- scripts/x-tree-view.exports.json | 2 +- 11 files changed, 115 insertions(+), 109 deletions(-) diff --git a/packages/x-tree-view/src/TreeItem/TreeItem.tsx b/packages/x-tree-view/src/TreeItem/TreeItem.tsx index 2be1daaa83f5..6831bcee8055 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItem.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItem.tsx @@ -27,6 +27,7 @@ import { TreeItem2Provider } from '../TreeItem2Provider'; import { TreeViewItemDepthContext } from '../internals/TreeViewItemDepthContext'; import { useTreeItemState } from './useTreeItemState'; import { isTargetInDescendants } from '../internals/utils/tree'; +import { TreeViewItemPluginSlotPropsEnhancerParams } from '../internals/models'; const useThemeProps = createUseThemeProps('MuiTreeItem'); @@ -221,8 +222,16 @@ export const TreeItem = React.forwardRef(function TreeItem( ...other } = props; - const { expanded, focused, selected, disabled, editing, handleExpansion } = - useTreeItemState(itemId); + const { + expanded, + focused, + selected, + disabled, + editing, + handleExpansion, + handleCancelItemLabelEditing, + handleSaveItemLabel, + } = useTreeItemState(itemId); const { contentRef, rootRef, propsEnhancers } = runItemPlugins(props); const rootRefObject = React.useRef(null); @@ -375,28 +384,33 @@ export const TreeItem = React.forwardRef(function TreeItem( const idAttribute = instance.getTreeItemIdAttribute(itemId, id); const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1; + const sharedPropsEnhancerParams: Omit< + TreeViewItemPluginSlotPropsEnhancerParams, + 'externalEventHandlers' + > = { + rootRefObject, + contentRefObject, + interactions: { handleSaveItemLabel, handleCancelItemLabelEditing }, + }; + const enhancedRootProps = propsEnhancers.root?.({ - rootRefObject, - contentRefObject, + ...sharedPropsEnhancerParams, externalEventHandlers: extractEventHandlers(other), }) ?? {}; const enhancedContentProps = propsEnhancers.content?.({ - rootRefObject, - contentRefObject, + ...sharedPropsEnhancerParams, externalEventHandlers: extractEventHandlers(ContentProps), }) ?? {}; const enhancedDragAndDropOverlayProps = propsEnhancers.dragAndDropOverlay?.({ - rootRefObject, - contentRefObject, + ...sharedPropsEnhancerParams, externalEventHandlers: {}, }) ?? {}; const enhancedLabelInputProps = propsEnhancers.labelInput?.({ - rootRefObject, - contentRefObject, + ...sharedPropsEnhancerParams, externalEventHandlers: {}, }) ?? {}; diff --git a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx index 2c62bd29c452..247c593f687d 100644 --- a/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx +++ b/packages/x-tree-view/src/TreeItem/TreeItemContent.tsx @@ -103,8 +103,6 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( preventSelection, expansionTrigger, toggleItemEditing, - handleSaveItemLabel, - handleCancelItemLabelEditing, } = useTreeItemState(itemId); const icon = iconProp || expansionIcon || displayIcon; @@ -144,32 +142,6 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( } toggleItemEditing(); }; - const handleLabelInputBlur = ( - event: React.FocusEvent & MuiCancellableEvent, - ) => { - if (event.defaultMuiPrevented) { - return; - } - - if (event.target.value) { - handleSaveItemLabel(event, event.target.value); - } - }; - - const handleLabelInputKeydown = ( - event: React.KeyboardEvent & MuiCancellableEvent, - ) => { - if (event.defaultMuiPrevented) { - return; - } - - const target = event.target as HTMLInputElement; - if (event.key === 'Enter' && target.value) { - handleSaveItemLabel(event, target.value); - } else if (event.key === 'Escape') { - handleCancelItemLabelEditing(event); - } - }; return ( /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */ @@ -200,12 +172,7 @@ const TreeItemContent = React.forwardRef(function TreeItemContent( )} {editing ? ( - + ) : (
    {label} @@ -251,7 +218,15 @@ TreeItemContent.propTypes = { * The tree item label. */ label: PropTypes.node, - labelInputProps: PropTypes.object, + labelInputProps: PropTypes.shape({ + autoFocus: PropTypes.oneOf([true]), + 'data-element': PropTypes.oneOf(['labelInput']), + onBlur: PropTypes.func, + onChange: PropTypes.func, + onKeyDown: PropTypes.func, + type: PropTypes.oneOf(['text']), + value: PropTypes.string, + }), } as any; export { TreeItemContent }; diff --git a/packages/x-tree-view/src/TreeItem2LabelInput/TreeItem2LabelInput.types.ts b/packages/x-tree-view/src/TreeItem2LabelInput/TreeItem2LabelInput.types.ts index 03e2414054e9..099b8c5b2b5e 100644 --- a/packages/x-tree-view/src/TreeItem2LabelInput/TreeItem2LabelInput.types.ts +++ b/packages/x-tree-view/src/TreeItem2LabelInput/TreeItem2LabelInput.types.ts @@ -1,8 +1,15 @@ -export interface TreeItem2LabelInputProps extends React.InputHTMLAttributes { +import * as React from 'react'; +import { MuiCancellableEventHandler } from '../internals/models/MuiCancellableEvent'; + +export interface TreeItem2LabelInputProps { value?: string; - onChange?: React.ChangeEventHandler; /** * Used to determine if the target of keydown or blur events is the input and prevent the event from propagating to the root. */ 'data-element'?: 'labelInput'; + onChange?: React.ChangeEventHandler; + onKeyDown?: MuiCancellableEventHandler>; + onBlur?: MuiCancellableEventHandler>; + autoFocus?: true; + type?: 'text'; } diff --git a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx index fb2d994d28c6..245633ecf95e 100644 --- a/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx +++ b/packages/x-tree-view/src/hooks/useTreeItem2Utils/useTreeItem2Utils.tsx @@ -12,7 +12,7 @@ import { import type { UseTreeItem2Status } from '../../useTreeItem2'; import { hasPlugin } from '../../internals/utils/plugins'; -interface UseTreeItem2Interactions { +export interface UseTreeItem2Interactions { handleExpansion: (event: React.MouseEvent) => void; handleSelection: (event: React.MouseEvent) => void; handleCheckboxSelection: (event: React.ChangeEvent) => void; diff --git a/packages/x-tree-view/src/internals/models/itemPlugin.ts b/packages/x-tree-view/src/internals/models/itemPlugin.ts index ad02c708dcff..c0858f84d960 100644 --- a/packages/x-tree-view/src/internals/models/itemPlugin.ts +++ b/packages/x-tree-view/src/internals/models/itemPlugin.ts @@ -6,11 +6,17 @@ import type { UseTreeItem2LabelInputSlotOwnProps, UseTreeItem2RootSlotOwnProps, } from '../../useTreeItem2'; +import type { UseTreeItem2Interactions } from '../../hooks/useTreeItem2Utils/useTreeItem2Utils'; export interface TreeViewItemPluginSlotPropsEnhancerParams { rootRefObject: React.MutableRefObject; contentRefObject: React.MutableRefObject; externalEventHandlers: EventHandlers; + // TODO v9: Remove "Pick" once the old TreeItem is removed. + interactions: Pick< + UseTreeItem2Interactions, + 'handleSaveItemLabel' | 'handleCancelItemLabelEditing' + >; } type TreeViewItemPluginSlotPropsEnhancer = ( diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.ts index 96e143e02dbf..3a663be337b8 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.ts @@ -1,14 +1,12 @@ import * as React from 'react'; import { useTreeViewContext } from '../../TreeViewProvider'; -import { TreeViewItemPlugin } from '../../models'; +import { MuiCancellableEvent, TreeViewItemPlugin } from '../../models'; import { UseTreeViewItemsSignature } from '../useTreeViewItems'; import { - UseTreeItem2LabelInputSlotPropsFromItemsReordering, + UseTreeItem2LabelInputSlotPropsFromLabelEditing, UseTreeViewLabelSignature, } from './useTreeViewLabel.types'; -export const isAndroid = () => navigator.userAgent.toLowerCase().includes('android'); - export const useTreeViewLabelItemPlugin: TreeViewItemPlugin = ({ props }) => { const { instance } = useTreeViewContext<[UseTreeViewItemsSignature, UseTreeViewLabelSignature]>(); const { label, itemId } = props; @@ -27,13 +25,41 @@ export const useTreeViewLabelItemPlugin: TreeViewItemPlugin = ({ props }) = propsEnhancers: { labelInput: ({ externalEventHandlers, - }): UseTreeItem2LabelInputSlotPropsFromItemsReordering => { + interactions, + }): UseTreeItem2LabelInputSlotPropsFromLabelEditing => { const editable = instance.isItemEditable(itemId); if (!editable) { return {}; } + const handleKeydown = ( + event: React.KeyboardEvent & MuiCancellableEvent, + ) => { + externalEventHandlers.onKeyDown?.(event); + if (event.defaultMuiPrevented) { + return; + } + const target = event.target as HTMLInputElement; + + if (event.key === 'Enter' && target.value) { + interactions.handleSaveItemLabel(event, target.value); + } else if (event.key === 'Escape') { + interactions.handleCancelItemLabelEditing(event); + } + }; + + const handleBlur = (event: React.FocusEvent & MuiCancellableEvent) => { + externalEventHandlers.onBlur?.(event); + if (event.defaultMuiPrevented) { + return; + } + + if (event.target.value) { + interactions.handleSaveItemLabel(event, event.target.value); + } + }; + const handleInputChange = (event: React.ChangeEvent) => { externalEventHandlers.onChange?.(event); setLabelInputValue(event.target.value); @@ -43,6 +69,8 @@ export const useTreeViewLabelItemPlugin: TreeViewItemPlugin = ({ props }) = value: labelInputValue ?? '', 'data-element': 'labelInput', onChange: handleInputChange, + onKeyDown: handleKeydown, + onBlur: handleBlur, autoFocus: true, type: 'text', }; diff --git a/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.ts b/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.ts index 37a348a2da61..12f5296ef61a 100644 --- a/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.ts +++ b/packages/x-tree-view/src/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.ts @@ -76,5 +76,10 @@ export type UseTreeViewLabelSignature = TreeViewPluginSignature<{ experimentalFeatures: 'labelEditing'; dependencies: [UseTreeViewItemsSignature]; }>; -export interface UseTreeItem2LabelInputSlotPropsFromItemsReordering - extends TreeItem2LabelInputProps {} + +export interface UseTreeItem2LabelInputSlotPropsFromLabelEditing extends TreeItem2LabelInputProps {} + +declare module '@mui/x-tree-view/useTreeItem2' { + interface UseTreeItem2LabelInputSlotOwnProps + extends UseTreeItem2LabelInputSlotPropsFromLabelEditing {} +} diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts index e9424c9d28f1..64c696d245f0 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.ts @@ -19,7 +19,10 @@ import { UseTreeItem2ContentSlotPropsFromUseTreeItem, } from './useTreeItem2.types'; import { useTreeViewContext } from '../internals/TreeViewProvider'; -import { MuiCancellableEvent } from '../internals/models'; +import { + MuiCancellableEvent, + TreeViewItemPluginSlotPropsEnhancerParams, +} from '../internals/models'; import { useTreeItem2Utils } from '../hooks/useTreeItem2Utils'; import { TreeViewItemDepthContext } from '../internals/TreeViewItemDepthContext'; import { isTargetInDescendants } from '../internals/utils/tree'; @@ -52,6 +55,11 @@ export const useTreeItem2 = < const checkboxRef = React.useRef(null); const rootTabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1; + const sharedPropsEnhancerParams: Omit< + TreeViewItemPluginSlotPropsEnhancerParams, + 'externalEventHandlers' + > = { rootRefObject, contentRefObject, interactions }; + const createRootHandleFocus = (otherHandlers: EventHandlers) => (event: React.FocusEvent & MuiCancellableEvent) => { @@ -164,35 +172,6 @@ export const useTreeItem2 = < interactions.handleCheckboxSelection(event); }; - const createInputHandleKeydown = - (otherHandlers: EventHandlers) => - (event: React.KeyboardEvent & MuiCancellableEvent) => { - otherHandlers.onKeyDown?.(event); - if (event.defaultMuiPrevented) { - return; - } - const target = event.target as HTMLInputElement; - - if (event.key === 'Enter' && target.value) { - interactions.handleSaveItemLabel(event, target.value); - } else if (event.key === 'Escape') { - interactions.handleCancelItemLabelEditing(event); - } - }; - - const createInputHandleBlur = - (otherHandlers: EventHandlers) => - (event: React.FocusEvent & MuiCancellableEvent) => { - otherHandlers.onBlur?.(event); - if (event.defaultMuiPrevented) { - return; - } - - if (event.target.value) { - interactions.handleSaveItemLabel(event, event.target.value); - } - }; - const createIconContainerHandleClick = (otherHandlers: EventHandlers) => (event: React.MouseEvent & MuiCancellableEvent) => { otherHandlers.onClick?.(event); @@ -248,7 +227,7 @@ export const useTreeItem2 = < } const enhancedRootProps = - propsEnhancers.root?.({ rootRefObject, contentRefObject, externalEventHandlers }) ?? {}; + propsEnhancers.root?.({ ...sharedPropsEnhancerParams, externalEventHandlers }) ?? {}; return { ...props, @@ -275,7 +254,7 @@ export const useTreeItem2 = < } const enhancedContentProps = - propsEnhancers.content?.({ rootRefObject, contentRefObject, externalEventHandlers }) ?? {}; + propsEnhancers.content?.({ ...sharedPropsEnhancerParams, externalEventHandlers }) ?? {}; return { ...props, @@ -326,19 +305,17 @@ export const useTreeItem2 = < ): UseTreeItem2LabelInputSlotProps => { const externalEventHandlers = extractEventHandlers(externalProps); - const props = { - ...externalEventHandlers, - ...externalProps, - onKeyDown: createInputHandleKeydown(externalEventHandlers), - onBlur: createInputHandleBlur(externalEventHandlers), - }; - - const enhancedlabelInputProps = - propsEnhancers.labelInput?.({ rootRefObject, contentRefObject, externalEventHandlers }) ?? {}; + const enhancedLabelInputProps = + propsEnhancers.labelInput?.({ + rootRefObject, + contentRefObject, + externalEventHandlers, + interactions, + }) ?? {}; return { - ...props, - ...enhancedlabelInputProps, + ...externalProps, + ...enhancedLabelInputProps, } as UseTreeItem2LabelInputSlotProps; }; @@ -379,14 +356,11 @@ export const useTreeItem2 = < const getDragAndDropOverlayProps = = {}>( externalProps: ExternalProps = {} as ExternalProps, ): UseTreeItem2DragAndDropOverlaySlotProps => { - const externalEventHandlers = { - ...extractEventHandlers(externalProps), - }; + const externalEventHandlers = extractEventHandlers(externalProps); const enhancedDragAndDropOverlayProps = propsEnhancers.dragAndDropOverlay?.({ - rootRefObject, - contentRefObject, + ...sharedPropsEnhancerParams, externalEventHandlers, }) ?? {}; diff --git a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts index e59f98ab285a..9457cc157250 100644 --- a/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts +++ b/packages/x-tree-view/src/useTreeItem2/useTreeItem2.types.ts @@ -92,10 +92,7 @@ export interface UseTreeItem2LabelSlotOwnProps { export type UseTreeItem2LabelSlotProps = ExternalProps & UseTreeItem2LabelSlotOwnProps; -export type UseTreeItem2LabelInputSlotOwnProps = { - onBlur: MuiCancellableEventHandler>; - onKeyDown: MuiCancellableEventHandler>; -}; +export interface UseTreeItem2LabelInputSlotOwnProps {} export type UseTreeItem2LabelInputSlotProps = ExternalProps & UseTreeItem2LabelInputSlotOwnProps; diff --git a/scripts/x-tree-view-pro.exports.json b/scripts/x-tree-view-pro.exports.json index 1db2fafc7962..16f61d3c4727 100644 --- a/scripts/x-tree-view-pro.exports.json +++ b/scripts/x-tree-view-pro.exports.json @@ -66,7 +66,7 @@ { "name": "UseTreeItem2DragAndDropOverlaySlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2GroupTransitionSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2IconContainerSlotOwnProps", "kind": "Interface" }, - { "name": "UseTreeItem2LabelInputSlotOwnProps", "kind": "TypeAlias" }, + { "name": "UseTreeItem2LabelInputSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2LabelSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2Parameters", "kind": "Interface" }, { "name": "UseTreeItem2ReturnValue", "kind": "Interface" }, diff --git a/scripts/x-tree-view.exports.json b/scripts/x-tree-view.exports.json index 7599088f3010..49a0d1ae5a7b 100644 --- a/scripts/x-tree-view.exports.json +++ b/scripts/x-tree-view.exports.json @@ -70,7 +70,7 @@ { "name": "UseTreeItem2DragAndDropOverlaySlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2GroupTransitionSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2IconContainerSlotOwnProps", "kind": "Interface" }, - { "name": "UseTreeItem2LabelInputSlotOwnProps", "kind": "TypeAlias" }, + { "name": "UseTreeItem2LabelInputSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2LabelSlotOwnProps", "kind": "Interface" }, { "name": "UseTreeItem2Parameters", "kind": "Interface" }, { "name": "UseTreeItem2ReturnValue", "kind": "Interface" }, From 2cb93f48795b650025c65c43d359c9373130068f Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Mon, 2 Sep 2024 16:48:50 +0200 Subject: [PATCH 899/912] [charts] Pass all props to legend (#14392) --- docs/pages/x/api/charts/charts-legend.json | 12 ++++ .../x/api/charts/default-charts-legend.json | 24 ++++++- docs/pages/x/api/charts/pie-chart.json | 2 +- .../x/api/charts/piecewise-color-legend.json | 25 +++++-- .../charts/charts-legend/charts-legend.json | 8 +++ .../default-charts-legend.json | 15 +++- .../piecewise-color-legend.json | 16 +++-- .../src/BarChartPro/BarChartPro.tsx | 14 ++++ .../src/LineChartPro/LineChartPro.tsx | 14 ++++ .../src/ScatterChartPro/ScatterChartPro.tsx | 14 ++++ packages/x-charts/src/BarChart/BarChart.tsx | 14 ++++ .../src/ChartsLegend/ChartsLegend.tsx | 68 ++++++++++++++----- .../src/ChartsLegend/DefaultChartsLegend.tsx | 11 ++- .../src/ChartsLegend/LegendPerItem.tsx | 21 +++--- .../src/ChartsLegend/PiecewiseColorLegend.tsx | 5 -- packages/x-charts/src/LineChart/LineChart.tsx | 14 ++++ packages/x-charts/src/PieChart/PieChart.tsx | 14 ++++ .../src/ScatterChart/ScatterChart.tsx | 14 ++++ scripts/x-charts-pro.exports.json | 1 + scripts/x-charts.exports.json | 1 + 20 files changed, 256 insertions(+), 51 deletions(-) diff --git a/docs/pages/x/api/charts/charts-legend.json b/docs/pages/x/api/charts/charts-legend.json index c11a1cc616f9..ce69858fcc06 100644 --- a/docs/pages/x/api/charts/charts-legend.json +++ b/docs/pages/x/api/charts/charts-legend.json @@ -3,6 +3,18 @@ "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, "direction": { "type": { "name": "enum", "description": "'column'
    | 'row'" } }, "hidden": { "type": { "name": "bool" }, "default": "false" }, + "itemGap": { "type": { "name": "number" }, "default": "10" }, + "itemMarkHeight": { "type": { "name": "number" }, "default": "20" }, + "itemMarkWidth": { "type": { "name": "number" }, "default": "20" }, + "labelStyle": { "type": { "name": "object" }, "default": "theme.typography.subtitle1" }, + "markGap": { "type": { "name": "number" }, "default": "5" }, + "padding": { + "type": { + "name": "union", + "description": "number
    | { bottom?: number, left?: number, right?: number, top?: number }" + }, + "default": "10" + }, "position": { "type": { "name": "shape", diff --git a/docs/pages/x/api/charts/default-charts-legend.json b/docs/pages/x/api/charts/default-charts-legend.json index be48bf222e73..084948ec6dfe 100644 --- a/docs/pages/x/api/charts/default-charts-legend.json +++ b/docs/pages/x/api/charts/default-charts-legend.json @@ -33,22 +33,40 @@ "import { DefaultChartsLegend } from '@mui/x-charts-pro';" ], "classes": [ + { + "key": "column", + "className": "MuiDefaultChartsLegend-column", + "description": "Styles applied to the legend with column layout.", + "isGlobal": false + }, + { + "key": "label", + "className": "MuiDefaultChartsLegend-label", + "description": "Styles applied to the series label.", + "isGlobal": false + }, { "key": "mark", "className": "MuiDefaultChartsLegend-mark", - "description": "", + "description": "Styles applied to series mark element.", "isGlobal": false }, { "key": "root", "className": "MuiDefaultChartsLegend-root", - "description": "", + "description": "Styles applied to the root element.", + "isGlobal": false + }, + { + "key": "row", + "className": "MuiDefaultChartsLegend-row", + "description": "Styles applied to the legend with row layout.", "isGlobal": false }, { "key": "series", "className": "MuiDefaultChartsLegend-series", - "description": "", + "description": "Styles applied to a series element.", "isGlobal": false } ], diff --git a/docs/pages/x/api/charts/pie-chart.json b/docs/pages/x/api/charts/pie-chart.json index cc208bd3f97c..fa14397997df 100644 --- a/docs/pages/x/api/charts/pie-chart.json +++ b/docs/pages/x/api/charts/pie-chart.json @@ -39,7 +39,7 @@ "legend": { "type": { "name": "shape", - "description": "{ classes?: object, direction?: 'column'
    | 'row', hidden?: bool, position?: { horizontal: 'left'
    | 'middle'
    | 'right', vertical: 'bottom'
    | 'middle'
    | 'top' }, slotProps?: object, slots?: object }" + "description": "{ classes?: object, direction?: 'column'
    | 'row', hidden?: bool, itemGap?: number, itemMarkHeight?: number, itemMarkWidth?: number, labelStyle?: object, markGap?: number, padding?: number
    | { bottom?: number, left?: number, right?: number, top?: number }, position?: { horizontal: 'left'
    | 'middle'
    | 'right', vertical: 'bottom'
    | 'middle'
    | 'top' }, slotProps?: object, slots?: object }" }, "default": "{ direction: 'column', position: { vertical: 'middle', horizontal: 'right' } }", "deprecated": true, diff --git a/docs/pages/x/api/charts/piecewise-color-legend.json b/docs/pages/x/api/charts/piecewise-color-legend.json index cd19020d0cd5..40a8462375db 100644 --- a/docs/pages/x/api/charts/piecewise-color-legend.json +++ b/docs/pages/x/api/charts/piecewise-color-legend.json @@ -20,7 +20,6 @@ "default": "The first axis item." }, "classes": { "type": { "name": "object" }, "additionalInfo": { "cssApi": true } }, - "hidden": { "type": { "name": "bool" }, "default": "false" }, "hideFirst": { "type": { "name": "bool" }, "default": "false" }, "hideLast": { "type": { "name": "bool" }, "default": "false" }, "itemGap": { "type": { "name": "number" }, "default": "10" }, @@ -51,22 +50,40 @@ "import { PiecewiseColorLegend } from '@mui/x-charts-pro';" ], "classes": [ + { + "key": "column", + "className": "MuiPiecewiseColorLegend-column", + "description": "Styles applied to the legend with column layout.", + "isGlobal": false + }, + { + "key": "label", + "className": "MuiPiecewiseColorLegend-label", + "description": "Styles applied to the series label.", + "isGlobal": false + }, { "key": "mark", "className": "MuiPiecewiseColorLegend-mark", - "description": "", + "description": "Styles applied to series mark element.", "isGlobal": false }, { "key": "root", "className": "MuiPiecewiseColorLegend-root", - "description": "", + "description": "Styles applied to the root element.", + "isGlobal": false + }, + { + "key": "row", + "className": "MuiPiecewiseColorLegend-row", + "description": "Styles applied to the legend with row layout.", "isGlobal": false }, { "key": "series", "className": "MuiPiecewiseColorLegend-series", - "description": "", + "description": "Styles applied to a series element.", "isGlobal": false } ], diff --git a/docs/translations/api-docs/charts/charts-legend/charts-legend.json b/docs/translations/api-docs/charts/charts-legend/charts-legend.json index f48685ad6338..91893688a7a6 100644 --- a/docs/translations/api-docs/charts/charts-legend/charts-legend.json +++ b/docs/translations/api-docs/charts/charts-legend/charts-legend.json @@ -6,6 +6,14 @@ "description": "The direction of the legend layout. The default depends on the chart." }, "hidden": { "description": "Set to true to hide the legend." }, + "itemGap": { "description": "Space between two legend items (in px)." }, + "itemMarkHeight": { "description": "Height of the item mark (in px)." }, + "itemMarkWidth": { "description": "Width of the item mark (in px)." }, + "labelStyle": { "description": "Style applied to legend labels." }, + "markGap": { "description": "Space between the mark and the label (in px)." }, + "padding": { + "description": "Legend padding (in px). Can either be a single number, or an object with top, left, bottom, right properties." + }, "position": { "description": "The position of the legend." }, "slotProps": { "description": "The props used for each component slot." }, "slots": { "description": "Overridable component slots." } diff --git a/docs/translations/api-docs/charts/default-charts-legend/default-charts-legend.json b/docs/translations/api-docs/charts/default-charts-legend/default-charts-legend.json index 4f48245b770e..3d15cae316d1 100644 --- a/docs/translations/api-docs/charts/default-charts-legend/default-charts-legend.json +++ b/docs/translations/api-docs/charts/default-charts-legend/default-charts-legend.json @@ -17,8 +17,17 @@ "position": { "description": "The position of the legend." } }, "classDescriptions": { - "mark": { "description": "" }, - "root": { "description": "" }, - "series": { "description": "" } + "column": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the legend with column layout" + }, + "label": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the series label" }, + "mark": { "description": "Styles applied to {{nodeName}}.", "nodeName": "series mark element" }, + "root": { "description": "Styles applied to the root element." }, + "row": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the legend with row layout" + }, + "series": { "description": "Styles applied to {{nodeName}}.", "nodeName": "a series element" } } } diff --git a/docs/translations/api-docs/charts/piecewise-color-legend/piecewise-color-legend.json b/docs/translations/api-docs/charts/piecewise-color-legend/piecewise-color-legend.json index e240ffb1f7e9..5937eed5266a 100644 --- a/docs/translations/api-docs/charts/piecewise-color-legend/piecewise-color-legend.json +++ b/docs/translations/api-docs/charts/piecewise-color-legend/piecewise-color-legend.json @@ -11,7 +11,6 @@ "direction": { "description": "The direction of the legend layout. The default depends on the chart." }, - "hidden": { "description": "Set to true to hide the legend." }, "hideFirst": { "description": "Hide the first item of the legend, corresponding to the [-infinity, min] piece." }, @@ -36,8 +35,17 @@ "position": { "description": "The position of the legend." } }, "classDescriptions": { - "mark": { "description": "" }, - "root": { "description": "" }, - "series": { "description": "" } + "column": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the legend with column layout" + }, + "label": { "description": "Styles applied to {{nodeName}}.", "nodeName": "the series label" }, + "mark": { "description": "Styles applied to {{nodeName}}.", "nodeName": "series mark element" }, + "root": { "description": "Styles applied to the root element." }, + "row": { + "description": "Styles applied to {{nodeName}}.", + "nodeName": "the legend with row layout" + }, + "series": { "description": "Styles applied to {{nodeName}}.", "nodeName": "a series element" } } } diff --git a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx index e7c1e3c3cac0..b99bb5f4b49a 100644 --- a/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx +++ b/packages/x-charts-pro/src/BarChartPro/BarChartPro.tsx @@ -165,6 +165,20 @@ BarChartPro.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx index a85dbc3121e5..455c93e70a4f 100644 --- a/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx +++ b/packages/x-charts-pro/src/LineChartPro/LineChartPro.tsx @@ -176,6 +176,20 @@ LineChartPro.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx index cf9a928faa73..756ca6c207ac 100644 --- a/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx +++ b/packages/x-charts-pro/src/ScatterChartPro/ScatterChartPro.tsx @@ -147,6 +147,20 @@ ScatterChartPro.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/packages/x-charts/src/BarChart/BarChart.tsx b/packages/x-charts/src/BarChart/BarChart.tsx index ffb89e8494d4..8e418a819efb 100644 --- a/packages/x-charts/src/BarChart/BarChart.tsx +++ b/packages/x-charts/src/BarChart/BarChart.tsx @@ -232,6 +232,20 @@ BarChart.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx index f2b8d964d7da..ccd77cb2f2d8 100644 --- a/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/ChartsLegend.tsx @@ -4,35 +4,32 @@ import useSlotProps from '@mui/utils/useSlotProps'; import composeClasses from '@mui/utils/composeClasses'; import { useThemeProps, useTheme, Theme } from '@mui/material/styles'; import { getSeriesToDisplay } from './utils'; -import { ChartsLegendClasses, getLegendUtilityClass } from './chartsLegendClasses'; +import { getLegendUtilityClass } from './chartsLegendClasses'; import { DefaultizedProps } from '../models/helpers'; import { DefaultChartsLegend, LegendRendererProps } from './DefaultChartsLegend'; import { useDrawingArea } from '../hooks'; import { useSeries } from '../hooks/useSeries'; import { LegendPlacement } from './legend.types'; +export type ChartsLegendPropsBase = Omit< + LegendRendererProps, + keyof LegendPlacement | 'series' | 'seriesToDisplay' | 'drawingArea' +> & + LegendPlacement; + export interface ChartsLegendSlots { /** * Custom rendering of the legend. * @default DefaultChartsLegend */ - legend?: React.JSXElementConstructor; + legend?: React.JSXElementConstructor; } export interface ChartsLegendSlotProps { - legend?: Partial; + legend?: Partial; } -export interface ChartsLegendProps extends LegendPlacement { - /** - * Override or extend the styles applied to the component. - */ - classes?: Partial; - /** - * Set to true to hide the legend. - * @default false - */ - hidden?: boolean; +export interface ChartsLegendProps extends ChartsLegendPropsBase { /** * Overridable component slots. * @default {} @@ -70,7 +67,7 @@ function ChartsLegend(inProps: ChartsLegendProps) { ...props, position: { horizontal: 'middle', vertical: 'top', ...props.position }, }; - const { position, direction, hidden, slots, slotProps } = defaultizedProps; + const { slots, slotProps, ...other } = defaultizedProps; const theme = useTheme(); const classes = useUtilityClasses({ ...defaultizedProps, theme }); @@ -85,12 +82,10 @@ function ChartsLegend(inProps: ChartsLegendProps) { elementType: ChartLegendRender, externalSlotProps: slotProps?.legend, additionalProps: { - position, - direction, + ...other, classes, drawingArea, series, - hidden, seriesToDisplay, }, ownerState: {}, @@ -118,6 +113,45 @@ ChartsLegend.propTypes = { * @default false */ hidden: PropTypes.bool, + /** + * Space between two legend items (in px). + * @default 10 + */ + itemGap: PropTypes.number, + /** + * Height of the item mark (in px). + * @default 20 + */ + itemMarkHeight: PropTypes.number, + /** + * Width of the item mark (in px). + * @default 20 + */ + itemMarkWidth: PropTypes.number, + /** + * Style applied to legend labels. + * @default theme.typography.subtitle1 + */ + labelStyle: PropTypes.object, + /** + * Space between the mark and the label (in px). + * @default 5 + */ + markGap: PropTypes.number, + /** + * Legend padding (in px). + * Can either be a single number, or an object with top, left, bottom, right properties. + * @default 10 + */ + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), /** * The position of the legend. */ diff --git a/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx b/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx index 2c485452fd04..0ecf4677b103 100644 --- a/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/DefaultChartsLegend.tsx @@ -11,10 +11,19 @@ export interface LegendRendererProps extends Omit; + /** + * Set to true to hide the legend. + * @default false + */ + hidden?: boolean; } function DefaultChartsLegend(props: LegendRendererProps) { - const { drawingArea, seriesToDisplay, ...other } = props; + const { drawingArea, seriesToDisplay, hidden, ...other } = props; + + if (hidden) { + return null; + } return ; } diff --git a/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx b/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx index da5ef97569b5..ca5d41222a09 100644 --- a/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx +++ b/packages/x-charts/src/ChartsLegend/LegendPerItem.tsx @@ -3,15 +3,15 @@ import NoSsr from '@mui/material/NoSsr'; import { useTheme, styled } from '@mui/material/styles'; import { useRtl } from '@mui/system/RtlProvider'; import { DrawingArea } from '../context/DrawingProvider'; -import { DefaultizedProps } from '../models/helpers'; import { ChartsText, ChartsTextStyle } from '../ChartsText'; import { CardinalDirections } from '../models/layout'; import { getWordsByLines } from '../internals/getWordsByLines'; -import type { ChartsLegendProps } from './ChartsLegend'; import { GetItemSpaceType, LegendItemParams } from './chartsLegend.types'; import { legendItemPlacements } from './legendItemsPlacement'; import { useDrawingArea } from '../hooks/useDrawingArea'; -import { AnchorPosition, Direction } from './legend.types'; +import { AnchorPosition, Direction, LegendPlacement } from './legend.types'; +import { ChartsLegendClasses } from './chartsLegendClasses'; +import { DefaultizedProps } from '../models/helpers'; export type ChartsLegendRootOwnerState = { position: AnchorPosition; @@ -29,15 +29,15 @@ export const ChartsLegendRoot = styled('g', { })({}); export interface LegendPerItemProps - extends DefaultizedProps< - Omit, - 'direction' | 'position' - > { + extends DefaultizedProps { /** * The ordered array of item to display in the legend. */ itemsToDisplay: LegendItemParams[]; - classes?: Record<'mark' | 'series' | 'root', string>; + /** + * Override or extend the styles applied to the component. + */ + classes?: Partial; /** * Style applied to legend labels. * @default theme.typography.subtitle1 @@ -99,7 +99,6 @@ const getStandardizedPadding = (padding: LegendPerItemProps['padding']) => { */ export function LegendPerItem(props: LegendPerItemProps) { const { - hidden, position, direction, itemsToDisplay, @@ -190,10 +189,6 @@ export function LegendPerItem(props: LegendPerItemProps) { } }, [position.vertical, padding.top, padding.bottom, totalHeight, legendHeight]); - if (hidden) { - return null; - } - return ( diff --git a/packages/x-charts/src/ChartsLegend/PiecewiseColorLegend.tsx b/packages/x-charts/src/ChartsLegend/PiecewiseColorLegend.tsx index bfbda6698503..2515d22590ab 100644 --- a/packages/x-charts/src/ChartsLegend/PiecewiseColorLegend.tsx +++ b/packages/x-charts/src/ChartsLegend/PiecewiseColorLegend.tsx @@ -111,11 +111,6 @@ PiecewiseColorLegend.propTypes = { * The default depends on the chart. */ direction: PropTypes.oneOf(['column', 'row']).isRequired, - /** - * Set to true to hide the legend. - * @default false - */ - hidden: PropTypes.bool, /** * Hide the first item of the legend, corresponding to the [-infinity, min] piece. * @default false diff --git a/packages/x-charts/src/LineChart/LineChart.tsx b/packages/x-charts/src/LineChart/LineChart.tsx index 94235ce0c79d..6cb98ffb2d42 100644 --- a/packages/x-charts/src/LineChart/LineChart.tsx +++ b/packages/x-charts/src/LineChart/LineChart.tsx @@ -253,6 +253,20 @@ LineChart.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/packages/x-charts/src/PieChart/PieChart.tsx b/packages/x-charts/src/PieChart/PieChart.tsx index 51fe9e0d87a3..ecf72fbe4758 100644 --- a/packages/x-charts/src/PieChart/PieChart.tsx +++ b/packages/x-charts/src/PieChart/PieChart.tsx @@ -278,6 +278,20 @@ PieChart.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/packages/x-charts/src/ScatterChart/ScatterChart.tsx b/packages/x-charts/src/ScatterChart/ScatterChart.tsx index d8ae6735b52b..c0f6eae56d25 100644 --- a/packages/x-charts/src/ScatterChart/ScatterChart.tsx +++ b/packages/x-charts/src/ScatterChart/ScatterChart.tsx @@ -228,6 +228,20 @@ ScatterChart.propTypes = { classes: PropTypes.object, direction: PropTypes.oneOf(['column', 'row']), hidden: PropTypes.bool, + itemGap: PropTypes.number, + itemMarkHeight: PropTypes.number, + itemMarkWidth: PropTypes.number, + labelStyle: PropTypes.object, + markGap: PropTypes.number, + padding: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + bottom: PropTypes.number, + left: PropTypes.number, + right: PropTypes.number, + top: PropTypes.number, + }), + ]), position: PropTypes.shape({ horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired, vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired, diff --git a/scripts/x-charts-pro.exports.json b/scripts/x-charts-pro.exports.json index b4aba91475fb..5a6002d4f448 100644 --- a/scripts/x-charts-pro.exports.json +++ b/scripts/x-charts-pro.exports.json @@ -85,6 +85,7 @@ { "name": "ChartsLegendClasses", "kind": "Interface" }, { "name": "ChartsLegendClassKey", "kind": "TypeAlias" }, { "name": "ChartsLegendProps", "kind": "Interface" }, + { "name": "ChartsLegendPropsBase", "kind": "TypeAlias" }, { "name": "ChartsLegendSlotProps", "kind": "Interface" }, { "name": "ChartsLegendSlots", "kind": "Interface" }, { "name": "ChartsOnAxisClickHandler", "kind": "Function" }, diff --git a/scripts/x-charts.exports.json b/scripts/x-charts.exports.json index 0db09b39d5bd..77e4e3e29edc 100644 --- a/scripts/x-charts.exports.json +++ b/scripts/x-charts.exports.json @@ -83,6 +83,7 @@ { "name": "ChartsLegendClasses", "kind": "Interface" }, { "name": "ChartsLegendClassKey", "kind": "TypeAlias" }, { "name": "ChartsLegendProps", "kind": "Interface" }, + { "name": "ChartsLegendPropsBase", "kind": "TypeAlias" }, { "name": "ChartsLegendSlotProps", "kind": "Interface" }, { "name": "ChartsLegendSlots", "kind": "Interface" }, { "name": "ChartsOnAxisClickHandler", "kind": "Function" }, From f7f58b34ba7dac4b24077490a1fd83e26ec0eef2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 19:50:41 +0200 Subject: [PATCH 900/912] Bump stylis to ^4.3.4 (#14323) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- pnpm-lock.yaml | 21 +++++++++++++-------- test/package.json | 2 +- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/docs/package.json b/docs/package.json index 9ff42848c707..63d9d526b6d9 100644 --- a/docs/package.json +++ b/docs/package.json @@ -94,7 +94,7 @@ "rimraf": "^5.0.10", "rxjs": "^7.8.1", "styled-components": "^6.1.12", - "stylis": "^4.3.2", + "stylis": "^4.3.4", "stylis-plugin-rtl": "^2.1.1", "webpack-bundle-analyzer": "^4.10.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e4a8b3282f86..f42f53d73f43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -630,11 +630,11 @@ importers: specifier: ^6.1.12 version: 6.1.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) stylis: - specifier: ^4.3.2 - version: 4.3.2 + specifier: ^4.3.4 + version: 4.3.4 stylis-plugin-rtl: specifier: ^2.1.1 - version: 2.1.1(stylis@4.3.2) + version: 2.1.1(stylis@4.3.4) webpack-bundle-analyzer: specifier: ^4.10.2 version: 4.10.2 @@ -1579,11 +1579,11 @@ importers: specifier: ^7.6.3 version: 7.6.3 stylis: - specifier: ^4.3.2 - version: 4.3.2 + specifier: ^4.3.4 + version: 4.3.4 stylis-plugin-rtl: specifier: ^2.1.1 - version: 2.1.1(stylis@4.3.2) + version: 2.1.1(stylis@4.3.4) test/performance-charts: devDependencies: @@ -9353,6 +9353,9 @@ packages: stylis@4.3.2: resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} + stylis@4.3.4: + resolution: {integrity: sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -19369,15 +19372,17 @@ snapshots: '@babel/core': 7.25.2 babel-plugin-macros: 3.1.0 - stylis-plugin-rtl@2.1.1(stylis@4.3.2): + stylis-plugin-rtl@2.1.1(stylis@4.3.4): dependencies: cssjanus: 2.1.0 - stylis: 4.3.2 + stylis: 4.3.4 stylis@4.2.0: {} stylis@4.3.2: {} + stylis@4.3.4: {} + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 diff --git a/test/package.json b/test/package.json index bdd99925b20a..3351f88826de 100644 --- a/test/package.json +++ b/test/package.json @@ -35,7 +35,7 @@ "react-dom": "^18.3.1", "react-router-dom": "^6.26.1", "semver": "^7.6.3", - "stylis": "^4.3.2", + "stylis": "^4.3.4", "stylis-plugin-rtl": "^2.1.1" } } From 153d3815398330aee824b9db375202d37241875d Mon Sep 17 00:00:00 2001 From: Andrew Cherniavskii Date: Mon, 2 Sep 2024 20:36:22 +0200 Subject: [PATCH 901/912] [DataGrid] Fix error on simultaneous `columns` and `columnGroupingModel` update (#14368) --- .../columnHeaders/useGridColumnHeaders.tsx | 9 ++-- .../tests/columnGrouping.DataGrid.test.tsx | 53 ++++++++++++++++++- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx index ff711ab42c48..1b8d2a88a567 100644 --- a/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx +++ b/packages/x-data-grid/src/hooks/features/columnHeaders/useGridColumnHeaders.tsx @@ -28,6 +28,7 @@ import { GridColumnVisibilityModel, gridColumnPositionsSelector, gridVisiblePinnedColumnDefinitionsSelector, + gridColumnLookupSelector, } from '../columns'; import { GridGroupingStructure } from '../columnGrouping/gridColumnGroupsInterfaces'; import { gridColumnGroupsUnwrappedModelSelector } from '../columnGrouping/gridColumnGroupsSelector'; @@ -106,6 +107,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector); const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector); const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector); + const columnsLookup = useGridSelector(apiRef, gridColumnLookupSelector); const offsetLeft = computeOffsetLeft( columnPositions, renderContext, @@ -392,7 +394,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { firstVisibleColumnIndex, ); const leftOverflow = hiddenGroupColumns.reduce((acc, field) => { - const column = apiRef.current.getColumn(field); + const column = columnsLookup[field]; return acc + (column.computedWidth ?? 0); }, 0); @@ -411,10 +413,7 @@ export const useGridColumnHeaders = (props: UseGridColumnHeadersProps) => { const headerInfo: HeaderInfo = { groupId, - width: columnFields.reduce( - (acc, field) => acc + apiRef.current.getColumn(field).computedWidth, - 0, - ), + width: columnFields.reduce((acc, field) => acc + columnsLookup[field].computedWidth, 0), fields: columnFields, colIndex: columnIndex, hasFocus, diff --git a/packages/x-data-grid/src/tests/columnGrouping.DataGrid.test.tsx b/packages/x-data-grid/src/tests/columnGrouping.DataGrid.test.tsx index d3ee1dd081c5..7d0a1002e2c4 100644 --- a/packages/x-data-grid/src/tests/columnGrouping.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/columnGrouping.DataGrid.test.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; +import * as ReactDOM from 'react-dom'; import { expect } from 'chai'; -import { createRenderer, ErrorBoundary, screen } from '@mui/internal-test-utils'; +import { createRenderer, ErrorBoundary, fireEvent, screen } from '@mui/internal-test-utils'; import { DataGrid, DataGridProps, GridRowModel, GridColDef } from '@mui/x-data-grid'; const isJSDOM = /jsdom/.test(window.navigator.userAgent); @@ -325,6 +326,56 @@ describe(' - Column grouping', () => { Array.from(row2Headers).map((header) => header.getAttribute('aria-colindex')), ).to.deep.equal(['1', '2', '3']); }); + + // https://github.com/mui/mui-x/issues/13985 + it('should not throw when both `columns` and `columnGroupingModel` are updated twice', () => { + function Demo() { + const [props, setProps] = React.useState< + Pick + >({ + columns: [], + columnGroupingModel: [], + }); + + const handleClick = () => { + ReactDOM.flushSync(() => { + setProps({ + columns: [{ field: `field_0` }], + columnGroupingModel: [{ groupId: 'Group', children: [{ field: `field_0` }] }], + }); + }); + + setProps({ + columns: [{ field: `field_1` }], + columnGroupingModel: [{ groupId: 'Group', children: [{ field: `field_1` }] }], + }); + }; + + return ( +
    + + +
    + ); + } + render(); + + fireEvent.click(screen.getByRole('button', { name: /Update columns/ })); + + const row1Headers = document.querySelectorAll( + '[aria-rowindex="1"] [role="columnheader"]', + ); + const row2Headers = document.querySelectorAll( + '[aria-rowindex="2"] [role="columnheader"]', + ); + + expect( + Array.from(row1Headers).map((header) => header.getAttribute('aria-label')), + ).to.deep.equal(['Group']); + expect( + Array.from(row2Headers).map((header) => header.getAttribute('aria-label')), + ).to.deep.equal(['field_1']); + }); }); // TODO: remove the skip. I failed to test if an error is thrown From 24943b0ec7e94b148dfdbbe828d07c9a9c31d853 Mon Sep 17 00:00:00 2001 From: Jan Potoms <2109932+Janpot@users.noreply.github.com> Date: Tue, 3 Sep 2024 09:30:55 +0200 Subject: [PATCH 902/912] [l10n] Improve Dutch (nl-NL) locale (#14398) Signed-off-by: Jan Potoms <2109932+Janpot@users.noreply.github.com> --- docs/data/data-grid/localization/data.json | 2 +- packages/x-data-grid/src/locales/nlNL.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/data/data-grid/localization/data.json b/docs/data/data-grid/localization/data.json index f8ddeba53851..fab29456d103 100644 --- a/docs/data/data-grid/localization/data.json +++ b/docs/data/data-grid/localization/data.json @@ -75,7 +75,7 @@ "languageTag": "nl-NL", "importName": "nlNL", "localeName": "Dutch", - "missingKeysCount": 4, + "missingKeysCount": 0, "totalKeysCount": 118, "githubLink": "https://github.com/mui/mui-x/blob/master/packages/x-data-grid/src/locales/nlNL.ts" }, diff --git a/packages/x-data-grid/src/locales/nlNL.ts b/packages/x-data-grid/src/locales/nlNL.ts index c1d65e9cc0db..d60dd87015c1 100644 --- a/packages/x-data-grid/src/locales/nlNL.ts +++ b/packages/x-data-grid/src/locales/nlNL.ts @@ -39,10 +39,10 @@ const nlNLGrid: Partial = { toolbarExportExcel: 'Downloaden als Excel-bestand', // Columns management text - // columnsManagementSearchTitle: 'Search', - // columnsManagementNoColumns: 'No columns', - // columnsManagementShowHideAllText: 'Show/Hide All', - // columnsManagementReset: 'Reset', + columnsManagementSearchTitle: 'Zoeken', + columnsManagementNoColumns: 'Geen kolommen', + columnsManagementShowHideAllText: 'Toon/Verberg Alle', + columnsManagementReset: 'Reset', // Filter panel text filterPanelAddFilter: 'Filter toevoegen', From 8138f667be10ed5475b13b0f06f8e02a192c5b89 Mon Sep 17 00:00:00 2001 From: Rajat Date: Tue, 3 Sep 2024 14:58:25 +0530 Subject: [PATCH 903/912] [docs] Remove TypeScript v3 outdated version mentions (#14443) Co-authored-by: Lukas --- docs/data/data-grid/getting-started/getting-started.md | 1 - docs/data/data-grid/style/style.md | 1 + docs/data/date-pickers/base-concepts/base-concepts.md | 4 ---- docs/data/tree-view/getting-started/getting-started.md | 3 --- 4 files changed, 1 insertion(+), 8 deletions(-) diff --git a/docs/data/data-grid/getting-started/getting-started.md b/docs/data/data-grid/getting-started/getting-started.md index 696a9da03c95..f3820ef2c15e 100644 --- a/docs/data/data-grid/getting-started/getting-started.md +++ b/docs/data/data-grid/getting-started/getting-started.md @@ -138,7 +138,6 @@ In order to benefit from the [CSS overrides](/material-ui/customization/theme-co Internally, it uses module augmentation to extend the default theme structure. ```tsx -// When using TypeScript 4.x and above import type {} from '@mui/x-data-grid/themeAugmentation'; import type {} from '@mui/x-data-grid-pro/themeAugmentation'; import type {} from '@mui/x-data-grid-premium/themeAugmentation'; diff --git a/docs/data/data-grid/style/style.md b/docs/data/data-grid/style/style.md index 71ee02e6f58e..a08114ae6385 100644 --- a/docs/data/data-grid/style/style.md +++ b/docs/data/data-grid/style/style.md @@ -122,6 +122,7 @@ By default, the Data Grid uses the Material UI `theme.palette.background.defaul ```tsx import { createTheme } from '@mui/material/styles'; +import type {} from '@mui/x-data-grid/themeAugmentation'; const theme = createTheme({ mixins: { diff --git a/docs/data/date-pickers/base-concepts/base-concepts.md b/docs/data/date-pickers/base-concepts/base-concepts.md index 636aa7f934ca..82590c92d376 100644 --- a/docs/data/date-pickers/base-concepts/base-concepts.md +++ b/docs/data/date-pickers/base-concepts/base-concepts.md @@ -155,12 +155,8 @@ To benefit from the [CSS overrides](/material-ui/customization/theme-components/ Internally, it uses module augmentation to extend the default theme structure. ```tsx -// When using TypeScript 4.x and above import type {} from '@mui/x-date-pickers/themeAugmentation'; import type {} from '@mui/x-date-pickers-pro/themeAugmentation'; -// When using TypeScript 3.x and below -import '@mui/x-date-pickers/themeAugmentation'; -import '@mui/x-date-pickers-pro/themeAugmentation'; const theme = createTheme({ components: { diff --git a/docs/data/tree-view/getting-started/getting-started.md b/docs/data/tree-view/getting-started/getting-started.md index 75eb6936f8b0..79dc191bdc92 100644 --- a/docs/data/tree-view/getting-started/getting-started.md +++ b/docs/data/tree-view/getting-started/getting-started.md @@ -92,10 +92,7 @@ In order to benefit from the [CSS overrides](/material-ui/customization/theme-co Internally, it uses module augmentation to extend the default theme structure. ```tsx -// When using TypeScript 4.x and above import type {} from '@mui/x-tree-view/themeAugmentation'; -// When using TypeScript 3.x and below -import '@mui/x-tree-view/themeAugmentation'; const theme = createTheme({ components: { From bb26d25eb018907b2850c7d6eeef8d6c3d256da1 Mon Sep 17 00:00:00 2001 From: Kenan Yusuf Date: Tue, 3 Sep 2024 10:37:25 +0100 Subject: [PATCH 904/912] [DataGrid] Column header design updates (#14293) --- .../data-grid-premium/data-grid-premium.json | 4 +- .../data-grid-pro/data-grid-pro.json | 4 +- .../data-grid/data-grid/data-grid.json | 4 +- .../src/DataGridPremium/DataGridPremium.tsx | 4 +- .../src/components/GridAggregationHeader.tsx | 9 +- .../src/DataGridPro/DataGridPro.tsx | 4 +- .../src/tests/columns.DataGridPro.test.tsx | 16 +-- .../x-data-grid/src/DataGrid/DataGrid.tsx | 4 +- .../columnHeaders/ColumnHeaderMenuIcon.tsx | 2 +- .../columnHeaders/GridColumnGroupHeader.tsx | 2 +- .../columnHeaders/GridColumnHeaderItem.tsx | 2 +- .../GridColumnHeaderSeparator.tsx | 7 +- .../columnHeaders/GridColumnHeaderTitle.tsx | 1 + .../components/containers/GridRootStyles.ts | 116 ++++++++++++------ .../virtualization/GridVirtualScroller.tsx | 3 +- .../x-data-grid/src/constants/gridClasses.ts | 6 + .../x-data-grid/src/material/icons/index.tsx | 5 +- .../src/models/props/DataGridProps.ts | 4 +- 18 files changed, 117 insertions(+), 80 deletions(-) diff --git a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json index baba2f9ae004..14ba9f92d761 100644 --- a/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json +++ b/docs/translations/api-docs/data-grid/data-grid-premium/data-grid-premium.json @@ -620,10 +620,10 @@ "description": "Set the area in px at the bottom of the grid viewport where onRowsScrollEnd is called." }, "showCellVerticalBorder": { - "description": "If true, the vertical borders of the cells are displayed." + "description": "If true, vertical borders will be displayed between cells." }, "showColumnVerticalBorder": { - "description": "If true, the right border of the column headers are displayed." + "description": "If true, vertical borders will be displayed between column header items." }, "slotProps": { "description": "Overridable components props dynamically passed to the component at rendering." diff --git a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json index 91cce7101fd8..48b01e763008 100644 --- a/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json +++ b/docs/translations/api-docs/data-grid/data-grid-pro/data-grid-pro.json @@ -562,10 +562,10 @@ "description": "Set the area in px at the bottom of the grid viewport where onRowsScrollEnd is called." }, "showCellVerticalBorder": { - "description": "If true, the vertical borders of the cells are displayed." + "description": "If true, vertical borders will be displayed between cells." }, "showColumnVerticalBorder": { - "description": "If true, the right border of the column headers are displayed." + "description": "If true, vertical borders will be displayed between column header items." }, "slotProps": { "description": "Overridable components props dynamically passed to the component at rendering." diff --git a/docs/translations/api-docs/data-grid/data-grid/data-grid.json b/docs/translations/api-docs/data-grid/data-grid/data-grid.json index b799ebbc7206..2dbdafe6a594 100644 --- a/docs/translations/api-docs/data-grid/data-grid/data-grid.json +++ b/docs/translations/api-docs/data-grid/data-grid/data-grid.json @@ -457,10 +457,10 @@ "description": "Override the height/width of the Data Grid inner scrollbar." }, "showCellVerticalBorder": { - "description": "If true, the vertical borders of the cells are displayed." + "description": "If true, vertical borders will be displayed between cells." }, "showColumnVerticalBorder": { - "description": "If true, the right border of the column headers are displayed." + "description": "If true, vertical borders will be displayed between column header items." }, "slotProps": { "description": "Overridable components props dynamically passed to the component at rendering." diff --git a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx index 459496e6f745..a12cc70e9e52 100644 --- a/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx +++ b/packages/x-data-grid-premium/src/DataGridPremium/DataGridPremium.tsx @@ -997,12 +997,12 @@ DataGridPremiumRaw.propTypes = { */ scrollEndThreshold: PropTypes.number, /** - * If `true`, the vertical borders of the cells are displayed. + * If `true`, vertical borders will be displayed between cells. * @default false */ showCellVerticalBorder: PropTypes.bool, /** - * If `true`, the right border of the column headers are displayed. + * If `true`, vertical borders will be displayed between column header items. * @default false */ showColumnVerticalBorder: PropTypes.bool, diff --git a/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx b/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx index 45048fa89147..0dd68ca313e7 100644 --- a/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx +++ b/packages/x-data-grid-premium/src/components/GridAggregationHeader.tsx @@ -41,12 +41,9 @@ const GridAggregationFunctionLabel = styled('div', { })<{ ownerState: OwnerState }>(({ theme }) => { return { fontSize: theme.typography.caption.fontSize, - lineHeight: theme.typography.caption.fontSize, - position: 'absolute', - bottom: 4, - fontWeight: theme.typography.fontWeightMedium, - color: (theme.vars || theme).palette.primary.dark, - textTransform: 'uppercase', + lineHeight: 'normal', + color: theme.palette.text.secondary, + marginTop: -1, }; }); diff --git a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx index ec3feaa5f00f..915fede52e67 100644 --- a/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx +++ b/packages/x-data-grid-pro/src/DataGridPro/DataGridPro.tsx @@ -903,12 +903,12 @@ DataGridProRaw.propTypes = { */ scrollEndThreshold: PropTypes.number, /** - * If `true`, the vertical borders of the cells are displayed. + * If `true`, vertical borders will be displayed between cells. * @default false */ showCellVerticalBorder: PropTypes.bool, /** - * If `true`, the right border of the column headers are displayed. + * If `true`, vertical borders will be displayed between column header items. * @default false */ showColumnVerticalBorder: PropTypes.bool, diff --git a/packages/x-data-grid-pro/src/tests/columns.DataGridPro.test.tsx b/packages/x-data-grid-pro/src/tests/columns.DataGridPro.test.tsx index ec2f96b1ac44..3d6e0567771d 100644 --- a/packages/x-data-grid-pro/src/tests/columns.DataGridPro.test.tsx +++ b/packages/x-data-grid-pro/src/tests/columns.DataGridPro.test.tsx @@ -166,11 +166,11 @@ describe(' - Columns', () => { await microtasks(); expect(onColumnWidthChange.callCount).to.be.at.least(2); const widthArgs = onColumnWidthChange.args.map((arg) => arg[0].width); - const isWidth116Present = widthArgs.some((width) => width === 116); - expect(isWidth116Present).to.equal(true); + const isWidth114Present = widthArgs.some((width) => width === 114); + expect(isWidth114Present).to.equal(true); const colDefWidthArgs = onColumnWidthChange.args.map((arg) => arg[0].colDef.width); - const isColDefWidth116Present = colDefWidthArgs.some((width) => width === 116); - expect(isColDefWidth116Present).to.equal(true); + const isColDefWidth114Present = colDefWidthArgs.some((width) => width === 114); + expect(isColDefWidth114Present).to.equal(true); }); it('should not affect other cell elements that are not part of the main DataGrid instance', () => { @@ -473,7 +473,7 @@ describe(' - Columns', () => { render(); await apiRef.current.autosizeColumns(); await microtasks(); - expect(getWidths()).to.deep.equal([213, 235]); + expect(getWidths()).to.deep.equal([211, 233]); }); it('should work through double-clicking the separator', async () => { @@ -483,14 +483,14 @@ describe(' - Columns', () => { )[1]; fireEvent.doubleClick(separator); await microtasks(); - expect(getWidths()).to.deep.equal([100, 235]); + expect(getWidths()).to.deep.equal([100, 233]); }); it('should work on mount', async () => { render(); await microtasks(); /* first effect after render */ await microtasks(); /* async autosize operation */ - expect(getWidths()).to.deep.equal([213, 235]); + expect(getWidths()).to.deep.equal([211, 233]); }); describe('options', () => { @@ -506,7 +506,7 @@ describe(' - Columns', () => { }); it('.includeHeaders works', async () => { - await autosize({ includeHeaders: true }, [213, 235]); + await autosize({ includeHeaders: true }, [211, 233]); }); it('.includeOutliers works', async () => { diff --git a/packages/x-data-grid/src/DataGrid/DataGrid.tsx b/packages/x-data-grid/src/DataGrid/DataGrid.tsx index d428bf358b41..771ebed3e7c5 100644 --- a/packages/x-data-grid/src/DataGrid/DataGrid.tsx +++ b/packages/x-data-grid/src/DataGrid/DataGrid.tsx @@ -752,12 +752,12 @@ DataGridRaw.propTypes = { */ scrollbarSize: PropTypes.number, /** - * If `true`, the vertical borders of the cells are displayed. + * If `true`, vertical borders will be displayed between cells. * @default false */ showCellVerticalBorder: PropTypes.bool, /** - * If `true`, the right border of the column headers are displayed. + * If `true`, vertical borders will be displayed between column header items. * @default false */ showColumnVerticalBorder: PropTypes.bool, diff --git a/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx b/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx index 20d7527388ab..82f61061a22e 100644 --- a/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/ColumnHeaderMenuIcon.tsx @@ -65,7 +65,7 @@ export const ColumnHeaderMenuIcon = React.memo((props: ColumnHeaderMenuIconProps id={columnMenuButtonId} {...rootProps.slotProps?.baseIconButton} > - +
    diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx index b734b750b04e..d603c91772ad 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnGroupHeader.tsx @@ -133,7 +133,7 @@ function GridColumnGroupHeader(props: GridColumnGroupHeaderProps) { pinnedPosition, indexInSection, sectionLength, - rootProps.showCellVerticalBorder, + rootProps.showColumnVerticalBorder, gridHasFiller, ); diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx index a0746768bdd6..ca3ed2a60b8a 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderItem.tsx @@ -132,7 +132,7 @@ function GridColumnHeaderItem(props: GridColumnHeaderItemProps) { pinnedPosition, indexInSection, sectionLength, - rootProps.showCellVerticalBorder, + rootProps.showColumnVerticalBorder, gridHasFiller, ); diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx index 43957b0eaba7..6ae336ca166d 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderSeparator.tsx @@ -59,12 +59,7 @@ function GridColumnHeaderSeparatorRaw(props: GridColumnHeaderSeparatorProps) { return ( // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -
    +
    ); diff --git a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx index cf70450d7643..11f99b8ac0c3 100644 --- a/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx +++ b/packages/x-data-grid/src/components/columnHeaders/GridColumnHeaderTitle.tsx @@ -29,6 +29,7 @@ const GridColumnHeaderTitleRoot = styled('div', { overflow: 'hidden', whiteSpace: 'nowrap', fontWeight: 'var(--unstable_DataGrid-headWeight)', + lineHeight: 'normal', }); const ColumnHeaderInnerTitle = React.forwardRef< diff --git a/packages/x-data-grid/src/components/containers/GridRootStyles.ts b/packages/x-data-grid/src/components/containers/GridRootStyles.ts index c6af3509ec89..ccb1624f0d2a 100644 --- a/packages/x-data-grid/src/components/containers/GridRootStyles.ts +++ b/packages/x-data-grid/src/components/containers/GridRootStyles.ts @@ -27,13 +27,6 @@ function getBorderColor(theme: Theme) { return darken(alpha(theme.palette.divider, 1), 0.68); } -const columnHeadersStyles = { - [`.${c.columnSeparator}, .${c['columnSeparator--resizing']}`]: { - visibility: 'visible', - width: 'auto', - }, -}; - const columnHeaderStyles = { [`& .${c.iconButtonContainer}`]: { visibility: 'visible', @@ -45,6 +38,17 @@ const columnHeaderStyles = { }, }; +const columnSeparatorTargetSize = 10; +const columnSeparatorOffset = -5; + +const focusOutlineWidth = 1; + +const separatorIconDragStyles = { + width: 3, + rx: 1.5, + x: 10.5, +}; + // Emotion thinks it knows better than us which selector we should use. // https://github.com/emotion-js/emotion/issues/1105#issuecomment-1722524968 const ignoreSsrWarning = @@ -264,7 +268,6 @@ export const GridRootStyles = styled('div', { }, [`& .${c.columnHeader}, & .${c.cell}`]: { WebkitTapHighlightColor: 'transparent', - lineHeight: null, padding: '0 10px', boxSizing: 'border-box', }, @@ -273,19 +276,45 @@ export const GridRootStyles = styled('div', { t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / 0.5)` : alpha(t.palette.primary.main, 0.5) - } 1px`, - outlineWidth: 1, - outlineOffset: -1, + } ${focusOutlineWidth}px`, + outlineOffset: focusOutlineWidth * -1, }, [`& .${c.columnHeader}:focus, & .${c.cell}:focus`]: { - outline: `solid ${t.palette.primary.main} 1px`, + outline: `solid ${t.palette.primary.main} ${focusOutlineWidth}px`, + outlineOffset: focusOutlineWidth * -1, + }, + // Hide the column separator when: + // - the column is focused and has an outline + // - the next column is focused and has an outline + // - the column has a left or right border + // - the next column is pinned right and has a left border + [`& .${c.columnHeader}:focus, + & .${c.columnHeader}:focus-within, + & .${c.columnHeader}:has(+ .${c.columnHeader}:focus), + & .${c.columnHeader}:has(+ .${c.columnHeader}:focus-within), + & .${c['columnHeader--withLeftBorder']}, + & .${c['columnHeader--withRightBorder']}, + & .${c.columnHeader}:has(+ .${c.filler} + .${c['columnHeader--withLeftBorder']}), + & .${c['virtualScroller--hasScrollX']} .${c['columnHeader--last']} + `]: { + [`& .${c.columnSeparator}`]: { + opacity: 0, + '@media (hover: none)': { + opacity: 1, + color: (t.vars || t).palette.primary.main, + }, + }, + // Show resizable separators again when the column is hovered + [`& .${c['columnSeparator--resizable']}:hover`]: { + opacity: 1, + }, }, [`&.${c['root--noToolbar']} [aria-rowindex="1"] [aria-colindex="1"]`]: { borderTopLeftRadius: 'calc(var(--unstable_DataGrid-radius) - 1px)', }, [`&.${c['root--noToolbar']} [aria-rowindex="1"] .${c['columnHeader--last']}`]: { borderTopRightRadius: - !dimensions.hasScrollY || dimensions.scrollbarSize === 0 + dimensions.hasScrollX && (!dimensions.hasScrollY || dimensions.scrollbarSize === 0) ? 'calc(var(--unstable_DataGrid-radius) - 1px)' : undefined, }, @@ -299,7 +328,7 @@ export const GridRootStyles = styled('div', { display: 'flex', alignItems: 'center', }, - [`& .${c['columnHeader--last']}`]: { + [`& .${c['virtualScroller--hasScrollX']} .${c['columnHeader--last']}`]: { overflow: 'hidden', }, [`& .${c['columnHeader--sorted']} .${c.iconButtonContainer}, & .${c['columnHeader--filtered']} .${c.iconButtonContainer}`]: @@ -316,12 +345,11 @@ export const GridRootStyles = styled('div', { [`& .${c.columnHeaderTitleContainer}`]: { display: 'flex', alignItems: 'center', + gap: t.spacing(0.25), minWidth: 0, flex: 1, whiteSpace: 'nowrap', overflow: 'hidden', - // to anchor the aggregation label - position: 'relative', }, [`& .${c.columnHeaderTitleContainerContent}`]: { overflow: 'hidden', @@ -346,16 +374,13 @@ export const GridRootStyles = styled('div', { { flexDirection: 'row-reverse', }, - [`& .${c['columnHeader--alignCenter']} .${c.menuIcon}, & .${c['columnHeader--alignRight']} .${c.menuIcon}`]: - { - marginRight: 'auto', - marginLeft: -6, - }, - [`& .${c['columnHeader--alignRight']} .${c.menuIcon}, & .${c['columnHeader--alignRight']} .${c.menuIcon}`]: - { - marginRight: 'auto', - marginLeft: -10, - }, + [`& .${c['columnHeader--alignCenter']} .${c.menuIcon}`]: { + marginLeft: 'auto', + }, + [`& .${c['columnHeader--alignRight']} .${c.menuIcon}`]: { + marginRight: 'auto', + marginLeft: -5, + }, [`& .${c['columnHeader--moving']}`]: { backgroundColor: (t.vars || t).palette.action.hover, }, @@ -365,59 +390,70 @@ export const GridRootStyles = styled('div', { background: 'var(--DataGrid-pinnedBackground)', }, [`& .${c.columnSeparator}`]: { - visibility: 'hidden', position: 'absolute', + overflow: 'hidden', zIndex: 3, display: 'flex', flexDirection: 'column', justifyContent: 'center', + alignItems: 'center', + maxWidth: columnSeparatorTargetSize, color: borderColor, }, [`& .${c.columnHeaders}`]: { width: 'var(--DataGrid-rowWidth)', }, '@media (hover: hover)': { - [`& .${c.columnHeaders}:hover`]: columnHeadersStyles, [`& .${c.columnHeader}:hover`]: columnHeaderStyles, [`& .${c.columnHeader}:not(.${c['columnHeader--sorted']}):hover .${c.sortIcon}`]: { opacity: 0.5, }, }, '@media (hover: none)': { - [`& .${c.columnHeaders}`]: columnHeadersStyles, [`& .${c.columnHeader}`]: columnHeaderStyles, }, [`& .${c['columnSeparator--sideLeft']}`]: { - left: -12, + left: columnSeparatorOffset, }, [`& .${c['columnSeparator--sideRight']}`]: { - right: -12, + right: columnSeparatorOffset, + }, + [`& .${c['columnHeader--withRightBorder']} .${c['columnSeparator--sideLeft']}`]: { + left: columnSeparatorOffset - 0.5, + }, + [`& .${c['columnHeader--withRightBorder']} .${c['columnSeparator--sideRight']}`]: { + right: columnSeparatorOffset - 0.5, }, [`& .${c['columnSeparator--resizable']}`]: { cursor: 'col-resize', touchAction: 'none', - '&:hover': { - color: (t.vars || t).palette.text.primary, - // Reset on touch devices, it doesn't add specificity + // Always appear as draggable on touch devices + '@media (hover: none)': { + [`& .${c.iconSeparator} rect`]: separatorIconDragStyles, + color: borderColor, + }, + [`&:hover, &.${c['columnSeparator--resizing']}`]: { + color: (t.vars || t).palette.primary.main, + [`& .${c.iconSeparator} rect`]: separatorIconDragStyles, '@media (hover: none)': { color: borderColor, }, }, - [`&.${c['columnSeparator--resizing']}`]: { - color: (t.vars || t).palette.text.primary, - }, '& svg': { pointerEvents: 'none', }, }, [`& .${c.iconSeparator}`]: { color: 'inherit', + transition: t.transitions.create(['color', 'width'], { + duration: t.transitions.duration.shortest, + }), }, [`& .${c.menuIcon}`]: { width: 0, visibility: 'hidden', fontSize: 20, - marginRight: -10, + marginRight: -5, display: 'flex', alignItems: 'center', }, @@ -515,8 +551,8 @@ export const GridRootStyles = styled('div', { boxShadow: t.shadows[2], backgroundColor: (t.vars || t).palette.background.paper, '&:focus-within': { - outline: `solid ${(t.vars || t).palette.primary.main} 1px`, - outlineOffset: '-1px', + outline: `${focusOutlineWidth}px solid ${(t.vars || t).palette.primary.main}`, + outlineOffset: focusOutlineWidth * -1, }, }, [`& .${c['row--editing']}`]: { diff --git a/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx b/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx index 875d1e2b80e5..923fe0502e20 100644 --- a/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx +++ b/packages/x-data-grid/src/components/virtualization/GridVirtualScroller.tsx @@ -29,14 +29,13 @@ const useUtilityClasses = ( loadingOverlayVariant: GridLoadingOverlayVariant | null, ) => { const { classes } = ownerState; - const slots = { root: [ 'main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight', loadingOverlayVariant === 'skeleton' && 'main--hasSkeletonLoadingOverlay', ], - scroller: ['virtualScroller'], + scroller: ['virtualScroller', dimensions.hasScrollX && 'virtualScroller--hasScrollX'], }; return composeClasses(slots, getDataGridUtilityClass, classes); diff --git a/packages/x-data-grid/src/constants/gridClasses.ts b/packages/x-data-grid/src/constants/gridClasses.ts index 5d74433329a8..330723133d73 100644 --- a/packages/x-data-grid/src/constants/gridClasses.ts +++ b/packages/x-data-grid/src/constants/gridClasses.ts @@ -408,6 +408,11 @@ export interface GridClasses { * Styles applied to the virtualization container. */ virtualScroller: string; + /** + * Styles applied to the virtualization container when it is scrollable in the horizontal direction. + * @ignore - do not document. + */ + 'virtualScroller--hasScrollX': string; /** * Styles applied to the virtualization content. */ @@ -776,6 +781,7 @@ export const gridClasses = generateUtilityClasses('MuiDataGrid', [ 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', + 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', diff --git a/packages/x-data-grid/src/material/icons/index.tsx b/packages/x-data-grid/src/material/icons/index.tsx index bd0e790fc728..0f3c0946bf97 100644 --- a/packages/x-data-grid/src/material/icons/index.tsx +++ b/packages/x-data-grid/src/material/icons/index.tsx @@ -50,7 +50,10 @@ export const GridColumnIcon = createSvgIcon( 'ColumnIcon', ); -export const GridSeparatorIcon = createSvgIcon(, 'Separator'); +export const GridSeparatorIcon = createSvgIcon( + , + 'Separator', +); export const GridViewHeadlineIcon = createSvgIcon( , diff --git a/packages/x-data-grid/src/models/props/DataGridProps.ts b/packages/x-data-grid/src/models/props/DataGridProps.ts index 0943252da8d3..a507eaaf5d4f 100644 --- a/packages/x-data-grid/src/models/props/DataGridProps.ts +++ b/packages/x-data-grid/src/models/props/DataGridProps.ts @@ -307,12 +307,12 @@ export interface DataGridPropsWithDefaultValues Date: Tue, 3 Sep 2024 12:56:35 +0200 Subject: [PATCH 905/912] Bump @argos-ci/core to ^2.8.0 (#14430) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index ea094081d8f0..24cd4e91e6d1 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "devDependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "@argos-ci/core": "^2.5.1", + "@argos-ci/core": "^2.8.0", "@babel/cli": "^7.24.8", "@babel/core": "^7.25.2", "@babel/node": "^7.25.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f42f53d73f43..07c15300c6ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^6.0.0 version: 6.0.0 '@argos-ci/core': - specifier: ^2.5.1 - version: 2.5.1 + specifier: ^2.8.0 + version: 2.8.0 '@babel/cli': specifier: ^7.24.8 version: 7.24.8(@babel/core@7.25.2) @@ -1714,12 +1714,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@argos-ci/api-client@0.2.0': - resolution: {integrity: sha512-stqugeAtbHjD2MwezvgJ4hU0HvlEGwGDVsJvUUD4YoRS0putS8yFjXuempkc90XGeHDEfYZgvG372rcK7/FClA==} + '@argos-ci/api-client@0.5.0': + resolution: {integrity: sha512-syJJmvLtJKQYXDmGYRb+ZKpzpSk/dReqhZZm2tnWn7ThxHaJRJ7Wu3J5nqDpCP3LxoYCVfvV/dmfoJO0v8+PbQ==} engines: {node: '>=18.0.0'} - '@argos-ci/core@2.5.1': - resolution: {integrity: sha512-tgao3GqREG6A6E6LwEVbSTyVrChtb21nbcNGg69BS7DmqPY8pff/UV61QDoX+3Z9Kw8Cn4cI6YpLvhL77xRmCg==} + '@argos-ci/core@2.8.0': + resolution: {integrity: sha512-n7WUnlK+QI9L/bbPrg88xrxojGdEe//+RIJKx1iIUEqgIMp5K8f9ANcpYGSS/d9BWASg7eFoXm5d6iRCz0Mrgw==} engines: {node: '>=18.0.0'} '@argos-ci/util@2.1.1': @@ -10304,13 +10304,13 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@argos-ci/api-client@0.2.0': + '@argos-ci/api-client@0.5.0': dependencies: openapi-fetch: 0.11.2 - '@argos-ci/core@2.5.1': + '@argos-ci/core@2.8.0': dependencies: - '@argos-ci/api-client': 0.2.0 + '@argos-ci/api-client': 0.5.0 '@argos-ci/util': 2.1.1 axios: 1.7.5(debug@4.3.6) convict: 6.2.4 From 8b5f6608b1586fb9f32e8e513c8d2d6da6d0df8c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:57:55 +0200 Subject: [PATCH 906/912] Bump pnpm to 9.9.0 (#14432) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jose Quintas --- package.json | 4 ++-- pnpm-lock.yaml | 45 +-------------------------------------------- 2 files changed, 3 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index 24cd4e91e6d1..a1a6a5066ee1 100644 --- a/package.json +++ b/package.json @@ -200,9 +200,9 @@ "react-is": "^18.3.1", "@types/node": "^18.19.47" }, - "packageManager": "pnpm@9.8.0", + "packageManager": "pnpm@9.9.0", "engines": { - "pnpm": "9.8.0" + "pnpm": "9.9.0" }, "pnpm": { "patchedDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07c15300c6ef..589d1580ffc8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13216,7 +13216,7 @@ snapshots: dependencies: '@types/node': 18.19.47 tapable: 2.2.1 - webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19451,17 +19451,6 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.6.3 - terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.27.0 - webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)) - optionalDependencies: - '@swc/core': 1.6.13(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -19984,38 +19973,6 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0)): - dependencies: - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.3 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - webpack@5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.5 From 4d59b3600321890dbfaaccbf19f9d429d5a45c13 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 18:13:36 +0700 Subject: [PATCH 907/912] Bump jscodeshift to 17.0.0 (#14435) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 2 +- packages/x-codemod/package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/package.json b/docs/package.json index 63d9d526b6d9..d6c9fa34d92f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -67,7 +67,7 @@ "doctrine": "^3.0.0", "exceljs": "^4.4.0", "fg-loadcss": "^3.1.0", - "jscodeshift": "0.16.1", + "jscodeshift": "17.0.0", "lodash": "^4.17.21", "luxon": "^3.5.0", "lz-string": "^1.5.0", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index aeec4871a480..9af227eb3833 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -35,7 +35,7 @@ "@babel/core": "^7.25.2", "@babel/runtime": "^7.25.4", "@babel/traverse": "^7.25.4", - "jscodeshift": "0.16.1", + "jscodeshift": "17.0.0", "yargs": "^17.7.2" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 589d1580ffc8..85463571dd7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -549,8 +549,8 @@ importers: specifier: ^3.1.0 version: 3.1.0 jscodeshift: - specifier: 0.16.1 - version: 0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)) + specifier: 17.0.0 + version: 17.0.0(@babel/preset-env@7.25.4(@babel/core@7.25.2)) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -933,8 +933,8 @@ importers: specifier: ^7.25.4 version: 7.25.6 jscodeshift: - specifier: 0.16.1 - version: 0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)) + specifier: 17.0.0 + version: 17.0.0(@babel/preset-env@7.25.4(@babel/core@7.25.2)) yargs: specifier: ^17.7.2 version: 17.7.2 @@ -7134,8 +7134,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jscodeshift@0.16.1: - resolution: {integrity: sha512-oMQXySazy63awNBzMpXbbVv73u3irdxTeX2L5ueRyFRxi32qb9uzdZdOY5fTBYADBG19l5M/wnGknZSV1dzCdA==} + jscodeshift@17.0.0: + resolution: {integrity: sha512-Af+MFsNwLSVO+t4kKjJdJKh6iNbNHfDfFGdyltJ2wUFN3furgbvHguJmB85iou+fY7wbHgI8eiEKpp6doGgtKg==} + engines: {node: '>=16'} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 @@ -16716,7 +16717,7 @@ snapshots: dependencies: argparse: 2.0.1 - jscodeshift@0.16.1(@babel/preset-env@7.25.4(@babel/core@7.25.2)): + jscodeshift@17.0.0(@babel/preset-env@7.25.4(@babel/core@7.25.2)): dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.6 @@ -16728,12 +16729,11 @@ snapshots: '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) '@babel/register': 7.24.6(@babel/core@7.25.2) - chalk: 4.1.2 flow-parser: 0.227.0 graceful-fs: 4.2.11 micromatch: 4.0.7 neo-async: 2.6.2 - node-dir: 0.1.17 + picocolors: 1.0.1 recast: 0.23.9 temp: 0.9.4 write-file-atomic: 5.0.1 From 92f566a0d8bfe62faad22ea634152328feb45aa7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 14:45:50 +0300 Subject: [PATCH 908/912] Bump babel to ^7.25.6 (#14431) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- docs/package.json | 4 +- package.json | 6 +- packages/x-charts-pro/package.json | 2 +- packages/x-charts-vendor/package.json | 2 +- packages/x-charts/package.json | 2 +- packages/x-codemod/package.json | 4 +- packages/x-data-grid-generator/package.json | 2 +- packages/x-data-grid-premium/package.json | 2 +- packages/x-data-grid-pro/package.json | 2 +- packages/x-data-grid/package.json | 2 +- packages/x-date-pickers-pro/package.json | 2 +- packages/x-date-pickers/package.json | 2 +- packages/x-internals/package.json | 2 +- packages/x-license/package.json | 2 +- packages/x-tree-view-pro/package.json | 2 +- packages/x-tree-view/package.json | 2 +- pnpm-lock.yaml | 62 ++++++++++----------- test/package.json | 2 +- 18 files changed, 52 insertions(+), 52 deletions(-) diff --git a/docs/package.json b/docs/package.json index d6c9fa34d92f..354bbbf5f160 100644 --- a/docs/package.json +++ b/docs/package.json @@ -20,8 +20,8 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@babel/runtime": "^7.25.4", - "@babel/runtime-corejs2": "^7.25.4", + "@babel/runtime": "^7.25.6", + "@babel/runtime-corejs2": "^7.25.6", "@docsearch/react": "^3.6.1", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", diff --git a/package.json b/package.json index a1a6a5066ee1..b86e7fc2dc82 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", "@argos-ci/core": "^2.8.0", - "@babel/cli": "^7.24.8", + "@babel/cli": "^7.25.6", "@babel/core": "^7.25.2", "@babel/node": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", @@ -84,8 +84,8 @@ "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "@babel/register": "^7.24.6", - "@babel/traverse": "^7.25.4", - "@babel/types": "^7.25.4", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index 00d4063a8ae8..cceb2b2915e6 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -39,7 +39,7 @@ "directory": "packages/x-charts-pro" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-charts": "workspace:*", "@mui/x-charts-vendor": "workspace:*", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 59fef856b36d..c4d865c609d7 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -24,7 +24,7 @@ } }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@types/d3-color": "^3.1.3", "@types/d3-delaunay": "^6.0.4", "@types/d3-interpolate": "^3.0.4", diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index 751bb5f1ec07..f11292365784 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -39,7 +39,7 @@ "directory": "packages/x-charts" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-charts-vendor": "workspace:*", "@react-spring/rafz": "^9.7.4", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 9af227eb3833..bac5d2322c37 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -33,8 +33,8 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@babel/runtime": "^7.25.4", - "@babel/traverse": "^7.25.4", + "@babel/runtime": "^7.25.6", + "@babel/traverse": "^7.25.6", "jscodeshift": "17.0.0", "yargs": "^17.7.2" }, diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index e826b812f28b..8522cd2b980f 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -33,7 +33,7 @@ "directory": "packages/x-data-grid-generator" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/x-data-grid-premium": "workspace:*", "chance": "^1.1.12", "clsx": "^2.1.1", diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index a372866fc33b..73534e27b251 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-data-grid-premium" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", "@mui/x-data-grid-pro": "workspace:*", diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index 87b0fe6ca6a3..9320a943cff6 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-data-grid-pro" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-data-grid": "workspace:*", "@mui/x-internals": "workspace:*", diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 317df3d87c56..8566b23f1c3f 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -47,7 +47,7 @@ "directory": "packages/x-data-grid" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "clsx": "^2.1.1", diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 3ee69b37aed9..c93e75124ef1 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -42,7 +42,7 @@ "directory": "packages/x-date-pickers-pro" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-date-pickers": "workspace:*", "@mui/x-license": "workspace:*", diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index ff4acff4b728..05688ddbfe25 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -45,7 +45,7 @@ "directory": "packages/x-date-pickers" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", diff --git a/packages/x-internals/package.json b/packages/x-internals/package.json index 8bb3b2a1c80e..01698392beb3 100644 --- a/packages/x-internals/package.json +++ b/packages/x-internals/package.json @@ -41,7 +41,7 @@ "directory": "packages/x-internals" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6" }, "peerDependencies": { diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 04f463940f08..06a95c06bd22 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -34,7 +34,7 @@ "directory": "packages/x-license" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6" }, "peerDependencies": { diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 5a418238512a..c5cb8e6d646f 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-tree-view-pro" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "@mui/x-license": "workspace:*", diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 9d7d74a98d46..523fa9657609 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -43,7 +43,7 @@ "directory": "packages/x-tree-view" }, "dependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", "@mui/x-internals": "workspace:*", "@types/react-transition-group": "^4.4.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85463571dd7a..65a8a88d5d42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ^2.8.0 version: 2.8.0 '@babel/cli': - specifier: ^7.24.8 - version: 7.24.8(@babel/core@7.25.2) + specifier: ^7.25.6 + version: 7.25.6(@babel/core@7.25.2) '@babel/core': specifier: ^7.25.2 version: 7.25.2 @@ -69,10 +69,10 @@ importers: specifier: ^7.24.6 version: 7.24.6(@babel/core@7.25.2) '@babel/traverse': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@babel/types': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/cache': specifier: ^11.13.1 @@ -408,10 +408,10 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@babel/runtime-corejs2': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@docsearch/react': specifier: ^3.6.1 @@ -712,7 +712,7 @@ importers: packages/x-charts: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -774,7 +774,7 @@ importers: packages/x-charts-pro: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -839,7 +839,7 @@ importers: packages/x-charts-vendor: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@types/d3-color': specifier: ^3.1.3 @@ -927,10 +927,10 @@ importers: specifier: ^7.25.2 version: 7.25.2 '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@babel/traverse': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 jscodeshift: specifier: 17.0.0 @@ -956,7 +956,7 @@ importers: packages/x-data-grid: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1012,7 +1012,7 @@ importers: packages/x-data-grid-generator: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1053,7 +1053,7 @@ importers: packages/x-data-grid-premium: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1121,7 +1121,7 @@ importers: packages/x-data-grid-pro: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1180,7 +1180,7 @@ importers: packages/x-date-pickers: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1263,7 +1263,7 @@ importers: packages/x-date-pickers-pro: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1340,7 +1340,7 @@ importers: packages/x-internals: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@mui/utils': specifier: ^5.16.6 @@ -1360,7 +1360,7 @@ importers: packages/x-license: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@mui/utils': specifier: ^5.16.6 @@ -1380,7 +1380,7 @@ importers: packages/x-tree-view: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1433,7 +1433,7 @@ importers: packages/x-tree-view-pro: dependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/react': specifier: ^11.9.0 @@ -1492,7 +1492,7 @@ importers: test: devDependencies: '@babel/runtime': - specifier: ^7.25.4 + specifier: ^7.25.6 version: 7.25.6 '@emotion/cache': specifier: ^11.13.1 @@ -1726,8 +1726,8 @@ packages: resolution: {integrity: sha512-UyACLQe9rvCPbo9muhrLte1AD75kQlcGBuecjmaotaF9MBMj+9Yz+TYs1jJrlLMgqowfIgbXjBYmkXRUn36tCg==} engines: {node: '>=18.0.0'} - '@babel/cli@7.24.8': - resolution: {integrity: sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==} + '@babel/cli@7.25.6': + resolution: {integrity: sha512-Z+Doemr4VtvSD2SNHTrkiFZ1LX+JI6tyRXAAOb4N9khIuPyoEPmTPJarPm8ljJV1D6bnMQjyHMWTT9NeKbQuXA==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: @@ -5055,8 +5055,8 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chownr@2.0.0: @@ -10324,7 +10324,7 @@ snapshots: '@argos-ci/util@2.1.1': {} - '@babel/cli@7.24.8(@babel/core@7.25.2)': + '@babel/cli@7.25.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@jridgewell/trace-mapping': 0.3.25 @@ -10336,7 +10336,7 @@ snapshots: slash: 2.0.0 optionalDependencies: '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 + chokidar: 3.6.0 '@babel/code-frame@7.24.7': dependencies: @@ -14245,7 +14245,7 @@ snapshots: check-error@2.1.1: {} - chokidar@3.5.3: + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -16966,7 +16966,7 @@ snapshots: '@colors/colors': 1.5.0 body-parser: 1.20.2 braces: 3.0.3 - chokidar: 3.5.3 + chokidar: 3.6.0 connect: 3.7.0 di: 0.0.1 dom-serialize: 2.2.1 @@ -17564,7 +17564,7 @@ snapshots: dependencies: ansi-colors: 4.1.3 browser-stdout: 1.3.1 - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.6(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 diff --git a/test/package.json b/test/package.json index 3351f88826de..b46acbb59d2d 100644 --- a/test/package.json +++ b/test/package.json @@ -6,7 +6,7 @@ "typescript": "tsc -p tsconfig.json" }, "devDependencies": { - "@babel/runtime": "^7.25.4", + "@babel/runtime": "^7.25.6", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.3", "@mui/material": "^5.16.7", From 06527da4e0ccbf065741d0aef4eca09ea35d35ec Mon Sep 17 00:00:00 2001 From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:16:14 +0200 Subject: [PATCH 909/912] [charts] Update `package.json` for vendor package (#14465) --- packages/x-charts-vendor/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index c4d865c609d7..0da2f9aa3fd0 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -3,7 +3,6 @@ "version": "7.15.0", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", - "main": "./index.js", "keywords": [ "data visualization", "React", @@ -12,7 +11,8 @@ ], "repository": { "type": "git", - "url": "https://github.com/mui/mui-x" + "url": "https://github.com/mui/mui-x.git", + "directory": "packages/x-charts-vendor" }, "license": "MIT AND ISC", "exports": { From fcaf07247689df8c1656b5491b60338bd413706a Mon Sep 17 00:00:00 2001 From: Bilal Shafi Date: Tue, 3 Sep 2024 18:47:27 +0500 Subject: [PATCH 910/912] [codemod] Fix `experimentalFeatures` codemod for typescript parser (#14150) --- .../src/util/removeObjectProperty.ts | 25 +++++++++---- ...ve-stabilized-experimentalFeatures.test.ts | 25 +++++++++++-- .../ts-actual.spec.tsx | 36 +++++++++++++++++++ .../ts-expected.spec.tsx | 19 ++++++++++ 4 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-actual.spec.tsx create mode 100644 packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-expected.spec.tsx diff --git a/packages/x-codemod/src/util/removeObjectProperty.ts b/packages/x-codemod/src/util/removeObjectProperty.ts index b93cbfb3682a..676846fec7f7 100644 --- a/packages/x-codemod/src/util/removeObjectProperty.ts +++ b/packages/x-codemod/src/util/removeObjectProperty.ts @@ -1,4 +1,4 @@ -import type { Collection, JSCodeshift, JSXAttribute } from 'jscodeshift'; +import type { Collection, JSCodeshift, JSXAttribute, Identifier } from 'jscodeshift'; const getAttributeName = (attribute: JSXAttribute): string => attribute.name.type === 'JSXIdentifier' ? attribute.name.name : attribute.name.name.name; @@ -48,11 +48,21 @@ export default function removeObjectProperty({ return; } const definedKeys: any[] = []; - const objectProperties = j(targetAttribute).find(j.Property); - objectProperties.forEach((path) => { - const objectKey = (path.value.key as any).name as any; - definedKeys.push(objectKey); + const properties = j(targetAttribute).find(j.Property); + const objectProperties = j(targetAttribute).find(j.ObjectProperty); + + const propertiesToProcess = properties.length > 0 ? properties : objectProperties; + if (propertiesToProcess.length === 0) { + return; + } + + propertiesToProcess.forEach((path) => { + const keyName = (path.value.key as Identifier).name; + if (keyName) { + definedKeys.push(keyName); + } }); + if (definedKeys.length === 1 && definedKeys[0] === propKey) { // only that property is defined, remove the whole prop j(element) @@ -62,8 +72,9 @@ export default function removeObjectProperty({ j(path).remove(); }); } else { - objectProperties.forEach((path) => { - if ((path.value.key as any).name === propKey) { + propertiesToProcess.forEach((path) => { + const name = (path.value.key as Identifier).name; + if (name === propKey) { j(path).remove(); } }); diff --git a/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/remove-stabilized-experimentalFeatures.test.ts b/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/remove-stabilized-experimentalFeatures.test.ts index d5610209aafd..f0e8726f28e5 100644 --- a/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/remove-stabilized-experimentalFeatures.test.ts +++ b/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/remove-stabilized-experimentalFeatures.test.ts @@ -10,18 +10,39 @@ function read(fileName) { describe('v7.0.0/data-grid', () => { describe('remove-stabilized-experimentalFeatures', () => { - it('transforms props as needed', () => { + it('transforms props as needed - js', () => { const actual = transform({ source: read('./actual.spec.js') }, { jscodeshift }, {}); const expected = read('./expected.spec.js'); expect(actual).to.equal(expected, 'The transformed version should be correct'); }); - it('should be idempotent', () => { + it('should be idempotent - js', () => { const actual = transform({ source: read('./expected.spec.js') }, { jscodeshift }, {}); const expected = read('./expected.spec.js'); expect(actual).to.equal(expected, 'The transformed version should be correct'); }); + + it('transforms props as needed - ts', () => { + const actual = transform( + { source: read('./ts-actual.spec.tsx') }, + { jscodeshift: jscodeshift.withParser('tsx') }, + {}, + ); + const expected = read('./ts-expected.spec.tsx'); + expect(actual).to.equal(expected, 'The transformed version should be correct'); + }); + + it('should be idempotent - ts', () => { + const actual = transform( + { source: read('./ts-expected.spec.tsx') }, + { jscodeshift: jscodeshift.withParser('tsx') }, + {}, + ); + + const expected = read('./ts-expected.spec.tsx'); + expect(actual).to.equal(expected, 'The transformed version should be correct'); + }); }); }); diff --git a/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-actual.spec.tsx b/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-actual.spec.tsx new file mode 100644 index 000000000000..f1ca420a0da5 --- /dev/null +++ b/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-actual.spec.tsx @@ -0,0 +1,36 @@ +// @ts-nocheck +import * as React from 'react'; +import { DataGrid } from '@mui/x-data-grid'; +import { DataGridPro } from '@mui/x-data-grid-pro'; +import { DataGridPremium } from '@mui/x-data-grid-premium'; + +// prettier-ignore +function App() { + return ( + + + + + + + ); +} + +export default App; diff --git a/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-expected.spec.tsx b/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-expected.spec.tsx new file mode 100644 index 000000000000..708f642b2973 --- /dev/null +++ b/packages/x-codemod/src/v7.0.0/data-grid/remove-stabilized-experimentalFeatures/ts-expected.spec.tsx @@ -0,0 +1,19 @@ +// @ts-nocheck +import * as React from 'react'; +import { DataGrid } from '@mui/x-data-grid'; +import { DataGridPro } from '@mui/x-data-grid-pro'; +import { DataGridPremium } from '@mui/x-data-grid-premium'; + +// prettier-ignore +function App() { + return ( + ( + + + + + ) + ); +} + +export default App; From 48b1714b8b8cc85d24295862886668d22beca6ca Mon Sep 17 00:00:00 2001 From: Jose C Quintas Jr Date: Tue, 3 Sep 2024 17:04:25 +0200 Subject: [PATCH 911/912] [code-infra] Update runners from node 18 to 20 (#14466) --- .circleci/config.yml | 2 +- .codesandbox/ci.json | 2 +- netlify.toml | 2 +- package.json | 4 +- pnpm-lock.yaml | 108 +++++++++++++++++++++---------------------- renovate.json | 2 +- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 72bff75bfe51..5ef43ce3e635 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,7 +36,7 @@ default-job: &default-job REACT_VERSION: << parameters.react-version >> working_directory: /tmp/mui docker: - - image: cimg/node:18.20 + - image: cimg/node:20.17 # CircleCI has disabled the cache across forks for security reasons. # Following their official statement, it was a quick solution, they # are working on providing this feature back with appropriate security measures. diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json index f46a89cf5698..91008eca7dc2 100644 --- a/.codesandbox/ci.json +++ b/.codesandbox/ci.json @@ -1,7 +1,7 @@ { "buildCommand": "build:codesandbox", "installCommand": "install:codesandbox", - "node": "18", + "node": "20", "packages": [ "packages/x-license", "packages/x-data-grid", diff --git a/netlify.toml b/netlify.toml index 4d663716bd27..7fbe2e7babad 100644 --- a/netlify.toml +++ b/netlify.toml @@ -8,7 +8,7 @@ command = "pnpm docs:build" [build.environment] - NODE_VERSION = "18" + NODE_VERSION = "20" NODE_OPTIONS = "--max_old_space_size=4096" [[plugins]] diff --git a/package.json b/package.json index b86e7fc2dc82..5b33fe8d2b7e 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@types/karma": "^6.3.8", "@types/lodash": "^4.17.7", "@types/mocha": "^10.0.7", - "@types/node": "^18.19.47", + "@types/node": "^20.14.8", "@types/react": "^18.3.4", "@types/react-dom": "^18.3.0", "@types/react-test-renderer": "^18.3.0", @@ -198,7 +198,7 @@ }, "resolutions": { "react-is": "^18.3.1", - "@types/node": "^18.19.47" + "@types/node": "^20.14.8" }, "packageManager": "pnpm@9.9.0", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65a8a88d5d42..3a7d599a9669 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: react-is: ^18.3.1 - '@types/node': ^18.19.47 + '@types/node': ^20.14.8 patchedDependencies: babel-plugin-replace-imports@1.0.2: @@ -141,8 +141,8 @@ importers: specifier: ^10.0.7 version: 10.0.7 '@types/node': - specifier: ^18.19.47 - version: 18.19.47 + specifier: ^20.14.8 + version: 20.16.3 '@types/react': specifier: ^18.3.4 version: 18.3.4 @@ -1589,7 +1589,7 @@ importers: devDependencies: '@codspeed/vitest-plugin': specifier: ^3.1.1 - version: 3.1.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0)) + version: 3.1.1(vite@5.3.4(@types/node@20.16.3)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.3)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0)) '@emotion/react': specifier: ^11.13.3 version: 11.13.3(@types/react@18.3.4)(react@18.3.1) @@ -1610,10 +1610,10 @@ importers: version: 14.5.2(@testing-library/dom@10.4.0) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0)) + version: 4.3.1(vite@5.3.4(@types/node@20.16.3)(terser@5.27.0)) '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0)) + version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@20.16.3)(terser@5.27.0)) '@vitest/ui': specifier: 2.0.5 version: 2.0.5(vitest@2.0.5) @@ -1628,7 +1628,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) + version: 2.0.5(@types/node@20.16.3)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) packages: @@ -4167,8 +4167,8 @@ packages: '@types/moment-jalaali@0.7.9': resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} - '@types/node@18.19.47': - resolution: {integrity: sha512-1f7dB3BL/bpd9tnDJrrHb66Y+cVrhxSOTGorRNdHwYTUlTay3HuTDPKo9a/4vX9pMQkhYBcAbL4jQdNlhCFP9A==} + '@types/node@20.16.3': + resolution: {integrity: sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -9673,8 +9673,8 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} undici@5.28.4: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} @@ -9837,7 +9837,7 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': ^18.19.47 + '@types/node': ^20.14.8 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -9866,7 +9866,7 @@ packages: hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.19.47 + '@types/node': ^20.14.8 '@vitest/browser': 2.0.5 '@vitest/ui': 2.0.5 happy-dom: '*' @@ -11259,11 +11259,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))(vitest@2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0))': + '@codspeed/vitest-plugin@3.1.1(vite@5.3.4(@types/node@20.16.3)(terser@5.27.0))(vitest@2.0.5(@types/node@20.16.3)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0))': dependencies: '@codspeed/core': 3.1.1 - vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) - vitest: 2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) + vite: 5.3.4(@types/node@20.16.3)(terser@5.27.0) + vitest: 2.0.5(@types/node@20.16.3)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) transitivePeerDependencies: - debug @@ -11562,7 +11562,7 @@ snapshots: '@fast-csv/format@4.3.5': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 lodash.escaperegexp: 4.1.2 lodash.isboolean: 3.0.3 lodash.isequal: 4.5.0 @@ -11571,7 +11571,7 @@ snapshots: '@fast-csv/parse@4.3.6': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 lodash.escaperegexp: 4.1.2 lodash.groupby: 4.6.0 lodash.isfunction: 3.0.9 @@ -12813,18 +12813,18 @@ snapshots: '@slack/logger@3.0.0': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@slack/logger@4.0.0': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@slack/oauth@2.6.3': dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.1 '@types/jsonwebtoken': 8.5.9 - '@types/node': 18.19.47 + '@types/node': 20.16.3 jsonwebtoken: 9.0.2 lodash.isstring: 4.0.1 transitivePeerDependencies: @@ -12834,7 +12834,7 @@ snapshots: dependencies: '@slack/logger': 3.0.0 '@slack/web-api': 6.12.1 - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/ws': 7.4.7 eventemitter3: 5.0.1 finity: 0.5.4 @@ -12851,7 +12851,7 @@ snapshots: '@slack/logger': 3.0.0 '@slack/types': 2.11.0 '@types/is-stream': 1.1.0 - '@types/node': 18.19.47 + '@types/node': 20.16.3 axios: 1.7.5(debug@4.3.6) eventemitter3: 3.1.2 form-data: 2.5.1 @@ -12994,7 +12994,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/chai-dom@1.11.3': dependencies: @@ -13006,13 +13006,13 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/cookie@0.4.1': {} '@types/cors@2.8.17': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/d3-array@3.2.1': {} @@ -13053,7 +13053,7 @@ snapshots: '@types/express-serve-static-core@4.17.42': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13070,7 +13070,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/gtag.js@0.0.20': {} @@ -13082,7 +13082,7 @@ snapshots: '@types/is-stream@1.1.0': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/istanbul-lib-coverage@2.0.6': {} @@ -13097,15 +13097,15 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/jsonwebtoken@8.5.9': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/karma@6.3.8': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 log4js: 6.9.1 transitivePeerDependencies: - supports-color @@ -13136,9 +13136,9 @@ snapshots: dependencies: moment: 2.30.1 - '@types/node@18.19.47': + '@types/node@20.16.3': dependencies: - undici-types: 5.26.5 + undici-types: 6.19.8 '@types/normalize-package-data@2.4.4': {} @@ -13189,13 +13189,13 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/sinon@17.0.3': dependencies: @@ -13215,7 +13215,7 @@ snapshots: '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 tapable: 2.2.1 webpack: 5.94.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4) transitivePeerDependencies: @@ -13226,7 +13226,7 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@types/yargs-parser@21.0.3': {} @@ -13358,21 +13358,21 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))': + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.4(@types/node@20.16.3)(terser@5.27.0))': dependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) - vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) + vite: 5.3.4(@types/node@20.16.3)(terser@5.27.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@18.19.47)(terser@5.27.0))': + '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@20.16.3)(terser@5.27.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) + vite: 5.3.4(@types/node@20.16.3)(terser@5.27.0) transitivePeerDependencies: - supports-color @@ -13411,7 +13411,7 @@ snapshots: pathe: 1.1.2 sirv: 2.0.4 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) + vitest: 2.0.5(@types/node@20.16.3)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0) '@vitest/utils@2.0.5': dependencies: @@ -14987,7 +14987,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 18.19.47 + '@types/node': 20.16.3 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -16702,7 +16702,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -19682,7 +19682,7 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - undici-types@5.26.5: {} + undici-types@6.19.8: {} undici@5.28.4: dependencies: @@ -19842,13 +19842,13 @@ snapshots: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 - vite-node@2.0.5(@types/node@18.19.47)(terser@5.27.0): + vite-node@2.0.5(@types/node@20.16.3)(terser@5.27.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@8.1.1) pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) + vite: 5.3.4(@types/node@20.16.3)(terser@5.27.0) transitivePeerDependencies: - '@types/node' - less @@ -19859,17 +19859,17 @@ snapshots: - supports-color - terser - vite@5.3.4(@types/node@18.19.47)(terser@5.27.0): + vite@5.3.4(@types/node@20.16.3)(terser@5.27.0): dependencies: esbuild: 0.21.5 postcss: 8.4.41 rollup: 4.18.1 optionalDependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 fsevents: 2.3.3 terser: 5.27.0 - vitest@2.0.5(@types/node@18.19.47)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0): + vitest@2.0.5(@types/node@20.16.3)(@vitest/ui@2.0.5)(jsdom@24.1.3)(terser@5.27.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -19887,11 +19887,11 @@ snapshots: tinybench: 2.8.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.3.4(@types/node@18.19.47)(terser@5.27.0) - vite-node: 2.0.5(@types/node@18.19.47)(terser@5.27.0) + vite: 5.3.4(@types/node@20.16.3)(terser@5.27.0) + vite-node: 2.0.5(@types/node@20.16.3)(terser@5.27.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 18.19.47 + '@types/node': 20.16.3 '@vitest/ui': 2.0.5(vitest@2.0.5) jsdom: 24.1.3 transitivePeerDependencies: diff --git a/renovate.json b/renovate.json index 4196a9df8eda..c4538fc5b9f7 100644 --- a/renovate.json +++ b/renovate.json @@ -56,7 +56,7 @@ { "groupName": "@types/node", "matchPackageNames": ["@types/node"], - "allowedVersions": "< 19.0.0" + "allowedVersions": "< 21.0.0" }, { "groupName": "bundling fixtures", From e69c08d06dad48bf28a9f18ee1c658b854ea974a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:18:00 +0000 Subject: [PATCH 912/912] Bump remark to ^15.0.1 --- package.json | 2 +- pnpm-lock.yaml | 465 +++++++++++++++++++++++++++++++++---------------- 2 files changed, 320 insertions(+), 147 deletions(-) diff --git a/package.json b/package.json index 5b33fe8d2b7e..4e9cb6fdb4ca 100644 --- a/package.json +++ b/package.json @@ -180,7 +180,7 @@ "process": "^0.11.10", "react": "^18.3.1", "react-dom": "^18.3.1", - "remark": "^13.0.0", + "remark": "^15.0.1", "rimraf": "^5.0.10", "serve": "^14.2.3", "sinon": "^16.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a7d599a9669..08a17864fe2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -357,8 +357,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) remark: - specifier: ^13.0.0 - version: 13.0.0 + specifier: ^15.0.1 + version: 15.0.1 rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -4080,6 +4080,9 @@ packages: '@types/d3-time@3.0.3': resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} @@ -4143,8 +4146,8 @@ packages: '@types/luxon@3.4.2': resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} @@ -4167,6 +4170,9 @@ packages: '@types/moment-jalaali@0.7.9': resolution: {integrity: sha512-gsDOoAzRnCfQTbfdlUrCvX6R0wIto6CvwfvV2C3j4qJLK+DEiTK8Rl/xlOCBO9C6qeUfX8oyZ2UfjnXJTOvHSA==} + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/node@20.16.3': resolution: {integrity: sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==} @@ -4236,9 +4242,6 @@ packages: '@types/tsscmp@1.0.2': resolution: {integrity: sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g==} - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -4817,8 +4820,8 @@ packages: babel-plugin-transform-react-remove-prop-types@0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} - bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5036,14 +5039,8 @@ packages: chance@1.1.12: resolution: {integrity: sha512-vVBIGQVnwtUG+SYe0ge+3MvF78cvSpuCOEUJr7sVEk2vSBuMW6OXNJjSzdtzrlxNUEaoqH2GBd5Y/+18BEB01Q==} - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -5567,6 +5564,9 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dedent@1.5.3: resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: @@ -5643,6 +5643,9 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} @@ -6797,12 +6800,6 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -6832,10 +6829,6 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -6855,9 +6848,6 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -6889,9 +6879,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - is-in-browser@1.1.3: resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} @@ -7527,8 +7514,8 @@ packages: resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} engines: {node: '>=8.0'} - longest-streak@2.0.4: - resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -7628,14 +7615,17 @@ packages: engines: {node: '>= 18'} hasBin: true - mdast-util-from-markdown@0.8.5: - resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-markdown@0.6.5: - resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - mdast-util-to-string@2.0.0: - resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -7672,8 +7662,68 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromark@2.11.4: - resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -8268,9 +8318,6 @@ packages: parse-diff@0.7.1: resolution: {integrity: sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==} - parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - parse-git-config@2.0.3: resolution: {integrity: sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==} engines: {node: '>=6'} @@ -8828,22 +8875,18 @@ packages: resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} engines: {node: '>=4'} - remark-parse@9.0.0: - resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-stringify@9.0.1: - resolution: {integrity: sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==} + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - remark@13.0.0: - resolution: {integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==} + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -9536,8 +9579,8 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -9700,8 +9743,8 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unified@9.2.2: - resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} @@ -9714,8 +9757,8 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} @@ -9821,11 +9864,11 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} vite-node@2.0.5: resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} @@ -10184,8 +10227,8 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zwitch@1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: @@ -13042,6 +13085,10 @@ snapshots: '@types/d3-time@3.0.3': {} + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + '@types/doctrine@0.0.9': {} '@types/eslint@8.56.12': @@ -13114,9 +13161,9 @@ snapshots: '@types/luxon@3.4.2': {} - '@types/mdast@3.0.15': + '@types/mdast@4.0.4': dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 '@types/mime@1.3.5': {} @@ -13136,6 +13183,8 @@ snapshots: dependencies: moment: 2.30.1 + '@types/ms@0.7.34': {} + '@types/node@20.16.3': dependencies: undici-types: 6.19.8 @@ -13209,8 +13258,6 @@ snapshots: '@types/tsscmp@1.0.2': {} - '@types/unist@2.0.10': {} - '@types/unist@3.0.3': {} '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.6.13(@swc/helpers@0.5.5))(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack@5.94.0))': @@ -13966,7 +14013,7 @@ snapshots: babel-plugin-transform-react-remove-prop-types@0.4.24: {} - bail@1.0.5: {} + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -14231,11 +14278,7 @@ snapshots: chance@1.1.12: {} - character-entities-legacy@1.1.4: {} - - character-entities@1.2.4: {} - - character-reference-invalid@1.1.4: {} + character-entities@2.0.2: {} chardet@0.7.0: {} @@ -14798,6 +14841,10 @@ snapshots: decimal.js@10.4.3: {} + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + dedent@1.5.3(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 @@ -14873,6 +14920,10 @@ snapshots: detect-libc@2.0.3: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + di@0.0.1: {} diff-sequences@29.6.3: {} @@ -16402,13 +16453,6 @@ snapshots: ipaddr.js@1.9.1: {} - is-alphabetical@1.0.4: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-arguments@1.1.1: dependencies: call-bind: 1.0.7 @@ -16440,8 +16484,6 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-buffer@2.0.5: {} - is-callable@1.2.7: {} is-ci@3.0.1: @@ -16460,8 +16502,6 @@ snapshots: dependencies: has-tostringtag: 1.0.2 - is-decimal@1.0.4: {} - is-docker@2.2.1: {} is-electron@2.2.2: {} @@ -16484,8 +16524,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-hexadecimal@1.0.4: {} - is-in-browser@1.1.3: {} is-interactive@1.0.0: {} @@ -17276,7 +17314,7 @@ snapshots: transitivePeerDependencies: - supports-color - longest-streak@2.0.4: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: @@ -17387,26 +17425,42 @@ snapshots: marked@13.0.3: {} - mdast-util-from-markdown@0.8.5: + mdast-util-from-markdown@2.0.1: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string: 2.0.0 - micromark: 2.11.4 - parse-entities: 2.0.0 - unist-util-stringify-position: 2.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - mdast-util-to-markdown@0.6.5: + mdast-util-phrasing@4.1.0: dependencies: - '@types/unist': 2.0.10 - longest-streak: 2.0.4 - mdast-util-to-string: 2.0.0 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - zwitch: 1.0.5 + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 - mdast-util-to-string@2.0.0: {} + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 mdurl@2.0.0: {} @@ -17444,10 +17498,136 @@ snapshots: methods@1.1.2: {} - micromark@2.11.4: + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-space@2.0.0: dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 debug: 4.3.6(supports-color@8.1.1) - parse-entities: 2.0.0 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color @@ -18181,15 +18361,6 @@ snapshots: parse-diff@0.7.1: {} - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - parse-git-config@2.0.3: dependencies: expand-tilde: 2.0.2 @@ -18742,21 +18913,27 @@ snapshots: dependencies: es6-error: 4.1.1 - remark-parse@9.0.0: + remark-parse@11.0.0: dependencies: - mdast-util-from-markdown: 0.8.5 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-stringify@9.0.1: + remark-stringify@11.0.0: dependencies: - mdast-util-to-markdown: 0.6.5 + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 - remark@13.0.0: + remark@15.0.1: dependencies: - remark-parse: 9.0.0 - remark-stringify: 9.0.1 - unified: 9.2.2 + '@types/mdast': 4.0.4 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -18768,8 +18945,6 @@ snapshots: lodash: 4.17.21 strip-ansi: 6.0.1 - repeat-string@1.6.1: {} - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -19548,7 +19723,7 @@ snapshots: trim-newlines@3.0.1: {} - trough@1.0.5: {} + trough@2.2.0: {} ts-api-utils@1.3.0(typescript@5.5.4): dependencies: @@ -19701,15 +19876,15 @@ snapshots: unicorn-magic@0.1.0: {} - unified@9.2.2: + unified@11.0.5: dependencies: - '@types/unist': 2.0.10 - bail: 1.0.5 + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 unique-filename@3.0.0: dependencies: @@ -19723,9 +19898,9 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-stringify-position@2.0.3: + unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 3.0.3 unist-util-visit-parents@6.0.1: dependencies: @@ -19830,17 +20005,15 @@ snapshots: vary@1.1.2: {} - vfile-message@2.0.4: + vfile-message@4.0.2: dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 2.0.3 + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 - vfile@4.2.1: + vfile@6.0.3: dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 + '@types/unist': 3.0.3 + vfile-message: 4.0.2 vite-node@2.0.5(@types/node@20.16.3)(terser@5.27.0): dependencies: @@ -20245,4 +20418,4 @@ snapshots: zod@3.23.8: {} - zwitch@1.0.5: {} + zwitch@2.0.4: {}